Amazon SimpleDB fournit une interface de services Web simplifiée vous permettant de créer et de stocker plusieurs ensembles de données, d'interroger facilement vos données et de retourner les résultats obtenus. Vos données sont automatiquement indexées, facilitant une localisation rapide de l'information dont vous avez besoin. Il n'y a pas besoin de prédéfinir un schéma ou de changer un schéma lors de l'ajout d'une nouvelle base de données par la suite. Et un scale-out devient aussi simple que la création de nouveaux domaines, sans avoir besoin de construire de nouveaux serveurs.

Pour utiliser Amazon SimpleDB vous :

  • Construisez votre ensemble de données
    • Choisissez une région pour votre/vos domaine(s) afin d'optimiser la latence, de minimiser les coûts ou de prendre en compte des exigences réglementaires. Amazon SimpleDB est actuellement disponible dans les régions USA Est (Virginie du Nord), USA Ouest (Oregon), USA Ouest (Californie du Nord), UE (Irlande), Asie-Pacifique (Singapour), Asie-Pacifique (Tokyo), Asie-Pacifique (Sydney) et Amérique du Sud (Sao Paulo).
    • Utilisez CreateDomain, DeleteDomain, ListDomains, DomainMetadata pour créer et gérer des domaines d'interrogation.
    • Utilisez Put, Batch Put et Delete pour créer et gérer l'ensemble de données dans chaque domaine d'interrogation.
  • Lancez l'extraction de vos données
    • Utilisez la commande GetAttributes pour extraire une entrée spécifique.
    • Utilisez Select pour rechercher des entrées de votre ensemble de données qui répondent à certains critères déterminés.
  • Ne payez que pour les ressources que vous utilisez


Le modèle de données utilisé par Amazon SimpleDB facilite le stockage, la gestion et l'interrogation de vos données structurées. Les développeurs organisent leurs ensembles de données en domaines et peuvent envoyer des requêtes dans toutes les données stockées dans un domaine particulier. Les domaines sont des collections d'articles décrites par des paires attributs-valeurs.

Pensez à ces termes comme analogues aux concepts dans une feuille de calcul traditionnelle. Par exemple, prenez les détails d'une base de données de gestion client montrée dans le tableau ci-dessous et déterminez comment ils seraient représentés dans Amazon SimpleDB. Le tableau entier serait votre nom de domaine "clients." Les clients seraient des lignes dans votre tableau ou des objets dans votre domaine. Les informations de contact seraient décrits par en-têtes de colonne (attributs). Les valeurs sont dans des cellules individuelles. Maintenant imaginez que les fichiers ci-dessous sont des nouveaux clients que vous voulez ajouter à votre domaine.

Id client Prénom Nom Adresse Ville Etat Code postal Téléphone
123 Bob Smith 123 Main St Springfield MO 65801 222-333-4444
456 James Johnson 456 Front St Seattle WA 98104 333-444-5555

Dans Amazon SimpleDB, pour ajouter les informations ci-dessus, vous devez mettre les Id clients dans votre domaine avec les paires attribut-valeur pour chaque client. Sans la syntaxe spécifique, cela ressemblerait à quelque chose comme :

PUT (objet, 123), (Prénom, Bob), (Nom, Smith), (Adresse, 123 Main St.), (Ville, Springfield), (État, MO), (Code postal, 65801), (Téléphone, 222-333-4444) PUT (objet, 456), (Prénom, James), (Nom, Johnson), (Adresse, 456 Front St.), (Ville, Seattle), (État, WA), (Code postal, 98104), (Téléphone, 333-444-5555)

Amazon SimpleDB diffère totalement des tables de données traditionnelles. Vous avez la flexibilité de revenir plus tard et d'ajouter des attributs qui ne s'appliquent qu'à certains fichiers. Par exemple, imaginez que vous commenciez à capturer les adresses emails de vos clients afin de permettre des alertes en temps réel sur les statuts de commandes. Plutôt que de reconstruire votre tableau "clients", réécrire vos requêtes, reconstruire vos indexes et ainsi de suite, vous n'aurez plus qu'à ajouter les nouveaux fichiers et tous les attributs additionnels à votre domaine "clients" existant. Par conséquent, le domaine devrait ressembler à ça :

Id client Prénom Nom Adresse Ville Etat Code postal Téléphone E-mail
123 Bob Smith 123 Main St Springfield MO 65801 222-333-4444  
456 James Johnson 456 Front St Seattle WA 98104 333-444-5555  
789 Deborah Thomas 789 Garfield New York NY 10001 444-555-6666 [email protected]

Amazon SimpleDB fournit un petit nombre d'appels API simples qui implémentent l'écriture, l'indexation, et l'interrogation des données. L'interface et l'ensemble des caractéristiques sont intentionnellement focalisés sur une fonctionnalité centrale, fournissant une API de base sur laquelle les développeurs peuvent construire, et rendant le service simple à maîtriser et facile à utiliser.

  • CreateDomain – Crée un domaine qui contient votre ensemble de données.
  • DeleteDomain – Supprime un domaine.
  • ListDomains – Liste tous les domaines.
  • DomainMetadata – Récupère les informations à propos du temps de création du domaine, d'information de stockage comme le décompte du nom d'objets et d'attributs, ainsi que la taille totale en octets.
  • PutAttributes – Ajoute ou met à jour un objet et ses attributs, ou ajoute une paire attribut-valeur à des objets déjà existant. Les objets sont automatiquement indexés à leur réception.
  • BatchPutAttributes – Pour un plus grand débit global d'écriture en bloc, exécute jusqu'à 25 opérations PutAttribute en un seul appel.
  • DeleteAttributes – Supprime un objet, un attribut ou un attribut valeur.
  • BatchDeleteAttributes – Pour un plus grand débit global de suppression en bloc, exécute jusqu'à 25 opérations DeleteAttributes en un seul appel.
  • GetAttributes – Extrait un objet, et tout ou un sous-ensemble de ses attributs et valeurs.
  • Select – Interroge l'ensemble de données avec la syntaxe courante « select target from domain_name where query_expression ». Les tests de valeur pris en charge sont : =, !=, =, like, not like, between, is null, is not null et every (). Exemple : select * from mydomain where every(keyword) = ‘Book’. Organisez les résultats en utilisant l'opérateur SORT, et dénombrez les objets qui remplissent la ou les conditions spécifiées par le ou les prédicats dans une requête utilisant l'opérateur Count.

Remarque : Amazon SimpleDB a été intégré à AWS Identity and Access Management pour permettre un contrôle complet des ressources d'Amazon SimpleDB. Grâce à l'intégration à AWS Identity and Access Management, un compte AWS ayant souscrit SimpleDB peut créer plusieurs Utilisateurs. A leur tour, ces Utilisateurs peuvent se voir autoriser les niveaux de permission de l'API SimpleDB pour accéder aux domaines SimpleDB appartenant au compte AWS. Consultez la page détails d'AWS Identity and Access Management pour plus de détails.

Amazon SimpleDB stocke plusieurs copies, distribuées géographiquement, de chaque domaine pour permettre une haute disponibilité et la durabilité des données. Une écriture réussie (en utilisant PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes, CreateDomain ou DeleteDomain) signifie que toutes les copies du domaine persisteront durablement. Amazon SimpleDB prend en charge deux options de lectures cohérentes : lectures finalement cohérentes et lectures cohérentes.

  • Lectures finalement cohérentes (par défaut) – l'option de cohérence finale maximise la performance en lecture (en termes de faible latence et de grand débit). Cependant, une lecture finalement cohérente (en utilisant Select ou GetAttributes) peut ne pas traduire les résultats d'une écriture récemment terminée (en utilisant PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes). La consistance à travers toutes les copies de données est généralement atteinte en une seconde ; répéter une lecture après un court moment devrait retourner les données mises à jour.
  • Lectures cohérentes – en plus de l'option de cohérence finale, Amazon SimpleDB vous donne aussi la flexibilité et le contrôle de demander une lecture cohérente si votre application, ou un élément de votre application, en a besoin. Une lecture cohérente (en utilisant Select ou GetAttributes avec ConsistentRead=true) renvoie un résultat qui reflète toutes les écritures qui reçoivent une réponse positive avant la lecture.

Par défaut, GetAttributes et Select exécute une lecture finalement cohérente. Puisque une lecture cohérente peut potentiellement subir une latence plus importante et un débit de lecture plus faible, il vaut mieux l'utiliser seulement lorsqu'un scénario de l'application dicte qu'une opération de lecture nécessite de lire toutes les écritures qui ont reçu une réponse positive avant la lecture. Pour tous les autres scénarios, la lecture finalement cohérente, par défaut, produira la meilleure performance. Notez également qu'Amazon SimpleDB vous permet de spécifier les paramètres de cohérence pour chaque requête de lecture individuelle, de sorte que la même requête pourrait avoir des parties disparates suivant différents paramètres de cohérence.

Amazon SimpleDB n'est pas une base de données relationnelle et sacrifie des transactions et relations complexes (par exemple, relie) afin de fournir des caractéristiques de fonctionnalité et de performance uniques. Cependant, Amazon SimpleDB offre des sémantiques transactionnelles comme :

  • Méthode Put/Delete conditionnelle – vous permet d'insérer, remplacer ou supprimer des valeurs d'un ou plusieurs attributs d'un élément, si la valeur existante d'un attribut correspond à la valeur que vous indiquez. Si la valeur ne correspond pas ou n'est pas présente, la mise à jour est rejetée. Puts/Deletes conditionnelles sont souvent utilisées pour prévenir la perte de mises à jour lorsque différentes sources écrivent en même temps sur le même objet.

Puts/Deletes conditionnelles sont exposées via les APIs PutAttributes et DeleteAttributes en spécifiant une condition facultative avec une valeur attendue. Par exemple, si votre application avait réservé des sièges ou vendu des billets pour un évènement, vous ne pouvez autoriser un achat (c'est-à-dire, écrire une mise à jour) que si le siège spécifié est toujours disponible (la condition facultative). Ces sémantiques peuvent aussi être utilisées pour implémenter des fonctionnalités comme des décomptes, l'insertion d'un objet seulement s'il n'existe pas déjà, et un contrôle de concurrence optimiste (OCC). Une application peut implémenter un OCC en maintenant un numéro de version (ou un timestamp) en tant qu'attribut d'un objet et en réalisant une Put/Delete conditionnelle basée sur la valeur de ce numéro de version.

Pour en savoir plus sur la sémantique transactionnelle ou la cohérence avec Amazon SimpleDB, référez-vous au Guide du développeur Amazon SimpleDB ou au livre blanc Consistency Enhancements.

Amazon Web Services propose aux développeurs plusieurs solutions de bases de données. Vous pouvez exécuter des services de base de données relationnelle et NoSQL entièrement gérés, ou exploiter votre propre base de données dans le cloud sur Amazon EC2 et Amazon EBS.

Amazon RDS permet de gérer une base de données relationnelle riche en fonctionnalités tout en allégeant son administration. Amazon DynamoDB est un service de base de données NoSQL intégralement géré offrant des performances prévisibles et extrêmement élevées ainsi qu'un dimensionnement transparent. Amazon SimpleDB fournit un service de base de données non relationnelle conçu pour les ensembles de données de petite taille. En utilisant l'une des nombreuses AMI sur Amazon EC2 et EBS, vous disposez d'un contrôle total sur votre base de données tout en vous épargnant le fardeau que constituent le provisionnement et l'installation du matériel.

Il y a des différences importantes entre ces alternatives ; selon votre utilisation, l'une peut s'avérer plus adaptée.

Rendez-vous sur la page Faire fonctionner des bases de données sur AWS pour des informations plus détaillées sur les diverses alternatives de base de données pour vos applications.

Contrairement à Amazon S3, Amazon SimpleDB ne stocke pas de données brutes. Amazon SimpleDB traite plutôt vos données comme une entrée et les développe pour créer des indexes multiples, vous permettant ainsi de rapidement interroger cette donnée. De plus, Amazon S3 et Amazon SimpleDB utilisent différents types de stockage physique. Amazon S3 utilise des lecteurs de stockage denses optimisés pour le stockage d'objets lourds à moindre coût. Amazon SimpleDB stocke des bits de données plus légers et utilise moins de lecteurs denses optimisés pour la rapidité d'accès aux données.

Afin d'optimiser les coûts à travers les services AWS, il faudrait stocker les objets ou fichiers lourds sur Amazon S3, et les plus petits éléments ou les fichiers pointeurs (possiblement vers des objets sur Amazon S3) sur Amazon SimpleDB. En raison de l'intégration étroite entre les services et le libre transfert des données dans l'environnement AWS, les développeurs peuvent facilement bénéficier des capacités de rapidité et d'interrogation d'Amazon SimpleDB, ainsi que le faible coût de stockage des données dans Amazon S3, en intégrant les deux services dans leurs applications.

Amazon SimpleDB permet actuellement une augmentation de chaque domaine jusqu'à 10 Go. Si votre ensemble de données est plus important que 10 Go, tirez simplement avantage de l'architecture évolutive d'Amazon SimpleDB et répartissez vos données sur plusieurs domaines. Puisque Amazon SimpleDB est conçu sur une idée de parallélisme, la répartition de vos données sur plusieurs domaines augmentera aussi votre potentiel de débit d'écriture et de lecture. Initialement il vous sera alloué un maximum de 250 domaines ; veuillez remplir ce formulaire si vous avez besoin de domaines supplémentaires.

Pour plus d'informations sur les avantages pour les développeurs à utiliser Amazon SimpleDB en conjonction avec Amazon S3, cliquez ici.

Avec Amazon SimpleDB, la meilleure façon de prédire la taille de votre espace de stockage de données structurées est la suivante :

La taille brute en octets (Go) de tous les ID d'éléments + 45 octets par élément + la taille brute en octets (Go) de tous les noms d'attribut + 45 octets par nom d'attribut + la taille brute en octets (Go) de toutes les paires attribut-valeur + 45 octets par paire attribut-valeur

Pour estimer votre coût de stockage mensuel pour la région USA Est (Virginie du Nord) ou USA Ouest (Oregon), prenez la taille résultante en Go et multipliez-la par 0,25 USD. Pour les régions UE (Irlande), Asie-Pacifique (Singapour), Asie-Pacifique (Sydney) ou USA Ouest (Californie du Nord), prenez la taille résultante en Go et multipliez-la par 0,275 USD. Pour la région Asie-Pacifique (Tokyo), prenez la taille résultante en Go et multipliez-la par 0.276 USD. Pour la région Amérique du Sud (Sao Paulo), prenez la taille résultant en Go et multipliez-la par 0,34 USD.

Amazon SimpleDB calcule le taux d'utilisation machine de chaque demande et facture selon la quantité de la capacité machine utilisée pour réaliser la demande spécifique (SELECT, GET, PUT, etc.), normalisée sur la capacité horaire semblable à un processeur 2007 1,7 GHz Xeon. L'utilisation de la machine est induite par la quantité de données (# d'attributs, la longueur des attributs) traitée par chaque demande. Une opération GET qui récupère 256 attributs utilisera plus de ressources qu'une opération GET qui récupère 1 seul attribut. Une opération SELECT à plusieurs prédicats qui examine 100 000 attributs coûtera plus cher qu'une requête à un prédicat qui examine 250 attributs.

Dans le message de réponse à chaque demande, Amazon SimpleDB renvoie un champ appelé Box Usage. Box Usage est la mesure de ressources machine consommées par chaque demande. Elle n'inclut pas la bande passante ou le stockage. Box Usage est signalée en portions d'heure machine utilisée pour accomplir une demande particulière. Pour les régions USA Est (Virginie du Nord) et USA Ouest (Oregon), le coût d'une demande individuelle est : Box Usage (exprimée en heure) * 0,14 USD par heure machine d'Amazon SimpleDB. Le coût de toutes vos demandes est dans la somme de Box Usage (exprimée en heures) x 0,14 USD.

Par exemple, si au cours d'un mois, la somme de Box Usage pour vos demandes utilise l'équivalent de un processeur Xeon 1.7 GHz pendant 9 heures, votre facture sera :

9 heures x 0,14 USD par heure machine Amazon SimpleDB = 1,26 USD.

Si vos domaines d'interrogation sont situés dans les régions UE (Irlande), Asie-Pacifique (Tokyo), Asie-Pacifique (Singapour), Asie-Pacifique (Sydney) ou USA Ouest (Californie du Nord), l'utilisation d'Amazon SimpleDB est tarifée à 0,154 USD par heure-machine. Si vos domaines d'interrogation sont situés dans la région Amérique du Sud (Sao Paulo), les heures machines Amazon SimpleDB sont tarifées à 0,19 USD par heure machine. Tous les calculs de coûts doivent être ajustés pour tenir compte du tarif applicable dans la région concernée.

Votre utilisation de ce service est soumise au Contrat client Amazon Web Services.