pablo 2

Comparaison : Amazon SimpleDB et les autres services

Mis à jours 23 septembre 2020

Ajout de puissance de calcul avec Amazon EC2

templeofec2doom

AWS vend la puissance de calcul à l’heure via Amazon Elastic Compute Cloud (Amazon EC2). Cette puissance de calcul prend la forme d’instances de serveur virtuel s’exécutant sur des serveurs physiques dans les centres de données Amazon. Ces instances de serveur ont différentes puissances processeur et mémoire, en fonction de vos besoins et de votre budget. Ce qui rend ce cloud élastique est le fait que les utilisateurs peuvent démarrer et fermer des douzaines d’instances virtuelles à tout moment.

Ces serveurs polyvalents peuvent remplir le rôle de n’importe quel serveur. Parmi les choix les plus courants figurent le serveur Web, le serveur de base de données, le serveur de traitement par lots et le serveur multimédia. L’utilisation de EC2 peut entraîner une réduction importante de la maintenance de l’infrastructure par rapport à la gestion des serveurs internes privés. Un autre grand avantage est l’élimination des dépenses d’investissement initiales sur le matériel en faveur du paiement de la seule puissance de calcul utilisée.

Le point de rencontre entre SimpleDB et EC2 concerne les applications à large bande passante. EC2 est la plate-forme de choix pour les applications nécessitant un accès rapide à de gros volumes de données. Le transfert de données gratuit dans la même région peut représenter une économie considérable pour les grands ensembles de données, mais la plus grande latence. AWS ne garantit aucun numéro de latence particulier, mais les temps de déclenchement sont généralement comprises entre 2 à 7 millisecondes entre les instances EC2 et SimpleDB dans la même région. Ces chiffres sont à égalité avec les latences signalées par les instances EC2 . Pour le contraste, des latences supplémentaires de 50 à 200 millisecondes ou plus sont courantes lors de l’utilisation de SimpleDB sur l’Internet ouvert. Lorsque vous avez besoin de SimpleDB rapide, EC2 a beaucoup à offrir.

Stockage de grands objets avec Amazon S3

s3

Amazon Simple Storage Service (Amazon S3) est un service Web qui vous permet de stocker un nombre illimité de fichiers et de facturer des frais (peu élevés) pour l’espace de stockage réel que vous utilisez et le transfert de données que vous utilisez. Comme vous pouvez vous y attendre, le transfert de données entre S3 et les autres Amazon Web Services est rapide et gratuit. S3 est facile à comprendre, facile à utiliser, et a une multitude d’utilisations. Vous pouvez garder les fichiers que vous stockez dans S3 en privé, mais vous pouvez également les rendre publiquement disponibles sur le Web. De nombreux sites Web utilisent S3 comme un service d’hébergement multimédia pour réduire la charge sur les serveurs Web.

Les images de machine virtuelle EC2 sont stockées et chargées à partir de S3. EC2 copie les volumes de stockage vers S3 et charge les volumes de stockage à partir de S3. Le réseau de diffusion de contenu Amazon CloudFront peut servir les fichiers Web fréquemment consultés dans S3. Le service Amazon Elastic MapReduce exécute les travaux MapReduce stockés dans S3. Les fichiers publiquement visibles dans S3 peuvent être servis via le protocole peer-to-peer de BitTorrent. La liste des utilisations continue encore et encore …. S3 est vraiment un service cloud à dénominateur commun.

Les utilisateurs de SimpleDB peuvent également trouver de bons usages pour S3. En raison de la vitesse élevée dans le cloud Amazon, S3 est un choix de stockage évident pour les données d’importation et d’exportation SimpleDB. C’est également un emplacement solide pour placer des fichiers de sauvegarde SimpleDB.

Mise en file d’attente des tâches avec Amazon SQS

Amazon SQS

Le service Amazon Simple Queue (Amazon SQS) est un service Web qui stocke de manière fiable les messages entre ordinateurs distribués. Placer une file d’attente robuste entre les ordinateurs leur permet de travailler de façon indépendante. Il ouvre également la porte à la mise à l’échelle dynamique du nombre de machines qui transmettent des messages et du nombre de messages récupérés. Bien qu’il n’y ait pas de connexion directe entre SQS et SimpleDB, SQS possède certaines fonctionnalités complémentaires qui peuvent être utiles dans les applications SimpleDB. La sémantique d’une messagerie fiable facilite la coordination de plusieurs clients simultanés par rapport à SimpleDB. Dans les cas où plusieurs clients SimpleDB sont présents, vous pouvez coordonner les clients à l’aide d’une file d’attente SQS fiable. Par exemple, vous pouvez avoir plusieurs serveurs qui encodent des fichiers vidéo et stockent des informations sur ces vidéos dans SimpleDB. SimpleDB est un excellent endroit pour stocker ces données, mais il pourrait être difficile à utiliser pour indiquer à chaque serveur quel fichier traiter ensuite. La livraison fiable de messages de SQS serait beaucoup plus appropriée pour cette tâche.

Comparaison de SimpleDB à d’autres produits et services

google cloud

De nombreux nouveaux types de produits et services sont maintenant disponibles ou seront bientôt disponibles dans l’espace de base de données / service de données. Certains d’entre eux sont similaires à SimpleDB, et d’autres sont tangentiels. Quelques-uns d’entre eux sont listés ici, avec une brève description et une comparaison avec SimpleDB.

Plate-forme de Windows Azure

7217.Windows Azure logo v 6556EF52

La Plate-forme Windows Azure est l’entrée de Microsoft dans le monde du cloud computing. Azure définit une série d’offres de services incluant l’informatique virtuelle, le stockage en nuage et la mise en file d’attente des messages. La plupart de ces services sont des homologues des services Amazon. Les services Azure sont disponibles sous la forme d’un Community Technology Preview. À ce jour, Microsoft a du mal à prendre pied dans l’arène des services de cloud computing.

Bien que la plate-forme cloud de Microsoft soit un peu à la traîne d’AWS, il semble que les commentaires des clients alimentent les récents changements d’Azure. Il y a tout lieu de penser qu’une fois qu’Azure devient généralement disponible, ce sera une alternative solide à AWS. Parmi les services tombant sous la parapluie Azure, il y a un (actuellement) un service nommé Windows AzureTable. AzureTable est un magasin de valeur-clé distribuée avec un support explicite pour le partitionnement entre les nœuds de stockage. Il est conçu pour l’évolutivité et est similaire à SimpleDB à de nombreux égards. Voici une liste de similarités entre AzureTable et SimpleDB :

  • Tout l’accès au service est sous la forme de demandes Web. Par conséquent, n’importe quel langage de programmation peut être utilisé.
  • Les demandes sont authentifiées avec des signatures cryptées.
  • La cohérence est relâchée dans une certaine mesure.
  • Des clés primaires uniques sont requises pour chaque entité de données.
  • Les données de chaque entité sont stockées sous la forme d’un ensemble de propriétés, chacune d’entre elles est une paire de valeurs de nom.
  • Il y a une limite de 256 propriétés par entité.
  • Un schéma flexible permet à différentes entités d’avoir des propriétés différentes.
  • Il y a une limite sur la quantité de données pouvant être stockée dans chaque entité.
  • Le nombre d’entités que vous pouvez récupérer à partir d’une requête est limité et un jeton de continuation de requête doit être utilisé pour obtenir la page de résultats suivante.
  • La gestion des versions du service est en place, de sorte que les anciennes versions de l’API de service peuvent toujours être utilisées après le déploiement de nouvelles versions.
  • L’évolutivité est obtenue grâce au partitionnement horizontal des données.

Il existe également des différences entre les services, comme indiqué ici :

  • Azure Table utilise une clé composite composée d’une clé de partition suivie d’une clé de ligne, tandis que SimpleDB utilise un seul nom d’élément.
  • Azure Table conserve toutes les données avec la même clé de partition sur un seul nœud de stockage. Les entités avec différentes clés de partition peuvent être réparties automatiquement sur des centaines de nœuds de stockage pour atteindre l’évolutivité. Avec SimpleDB, les éléments doivent être explicitement placés dans plusieurs domaines pour obtenir une mise à l’échelle horizontale.
  • Le seul index de la table Azure est basé sur la clé composite. Toutes les propriétés que vous souhaitez interroger ou trier doivent être incluses dans la clé de partition ou la clé de ligne. En revanche, SimpleDB crée un index pour chaque nom d’attribut, et un langage de requête de type SQL permet une requête et un tri sur n’importe quel attribut.
  • Pour résoudre les conflits résultant des mises à jour simultanées avec Azure Table, vous avez le choix entre last-write-wins ou résolution sur le client. Avec SimpleDB, last-write-wins est la seule option.
  • Les transactions sont prises en charge dans Azure Table au niveau de l’entité, ainsi que pour les groupes d’entités avec la même clé de partition. SimpleDB applique les mises à jour de manière atomique uniquement dans le cadre d’un seul élément.

Windows Azure Table est globalement très similaire à SimpleDB, avec quelques différences significatives dans l’approche de l’évolutivité. Aucun de ces deux services n’a encore atteint sa maturité, nous pouvons donc encore voir des améliorations visant à faciliter la transition des bases de données relationnelles. Il est à noter que Microsoft a également un autre service de base de données dans le pli de Windows Azure. Microsoft SQL Azure est un service de base de données cloud avec réplication complète sur des serveurs physiques, sauvegardes automatisées transparentes et prise en charge du modèle de données relationnel complet. Cette technologie est basée sur SQL Server et inclut la prise en charge de T-SQL, des procédures stockées, des vues et des index. Ce service est destiné à permettre le portage direct des applications SQL existantes vers le cloud Microsoft.

Google App Engine

Google App Engine install ssl certificate

App Engine est un service proposé par Google qui vous permet d’exécuter des applications Web, écrites en Java ou en Python, sur l’infrastructure de Google. En tant que plate-forme d’hébergement des applications, App Engine inclut de nombreuses fonctions autres que les bases de données, mais le magasin de données App Engine présente des similitudes avec SimpleDB. Les fonctions autres que la base de données incluent un certain nombre de services différents, tous disponibles via des appels d’API. Les APIs incluent les appels de service vers Memcached, email, XMPP et récupération d’URL.

App Engine inclut une API pour le stockage des données basée sur Google Big Table et, à certains égards, est comparable à SimpleDB. Bien que Big Table ne soit pas directement accessible aux applications App Engine, l’API du magasin de données prend en charge un certain nombre de fonctionnalités non disponibles dans SimpleDB. Ces fonctionnalités incluent des relations de données, un mappage d’objet, des transactions et un index défini par l’utilisateur pour chaque requête.

App Engine comporte également un certain nombre de restrictions, dont certaines sont similaires aux restrictions SimpleDB, telles que l’exécution de la requête. Par défaut, le magasin de données App Engine est fortement cohérent. Une fois qu’une transaction est validée, toutes les lectures suivantes reflètent les modifications de cette transaction. Cela signifie également que si le nœud de stockage principal que vous utilisez tombe en panne, App Engine échoue à toute tentative de mise à jour jusqu’à ce qu’un remplacement approprié prenne le relais. Pour résoudre ce problème, App Engine a récemment ajouté la prise en charge du même type de cohérence que SimpleDB a toujours utilisé. Cette évolution vers SimpleDB donne aux applications App Engine la même capacité que les applications SimpleDB à fonctionner avec une cohérence forte avec l’option de se rabattre sur la cohérence éventuelle pour continuer avec un niveau de service dégradé.

Apache CouchDB

Apache CouchDB

Apache CouchDB est une base de données de documents où un document autonome avec des métadonnées est l’unité de la base des données. Les documents CouchDB, comme les éléments SimpleDB, sont constitués d’un groupe de champs nommés. Chaque document a un identifiant unique de la même manière que chaque élément SimpleDB a un nom d’élément unique. CouchDB n’utilise pas de schéma pour définir ou valider les documents. Différents types de documents peuvent être stockés dans la même base de données. Pour l’interrogation, CouchDB utilise un système de vues JavaScript et de réduction de la carte. Les données peu structurées dans les documents CouchDB sont similaires aux données SimpleDB mais ne limitent pas la quantité de données que vous pouvez stocker dans chaque document ou la taille des données des champs.

CouchDB est un produit open-source que vous installez et gérez vous-même. Il permet la réplication distribuée parmi les serveurs homologues et prend en charge la mise en cluster robuste. CouchDB a été conçu dès le début pour gérer des niveaux élevés de concurrence et pour maintenir des niveaux de disponibilité élevés. Il cherche à résoudre plusieurs problèmes similaires à ceux du SimpleDB, mais du point de vue d’une offre de produits open-source plutôt que d’un service pay-as-you-go.

Produits similaires à des Dynamos

data 58a2b8e53df78c47583c2a46

Amazon Dynamo est un magasin de données utilisé en interne par Amazon qui n’est pas accessible au public. Amazon a publié des informations sur Dynamo qui incluent des objectifs de conception, des caractéristiques d’exécution et des exemples d’utilisation. D’après les informations publiées, nous savons que SimpleDB a des points communs avec Dynamo, notamment la cohérence éventuelle.

Depuis la publication des informations sur Dynamo, un certain nombre de magasins de valeurs-clés distribuées ont été développés dans le même esprit que Dynamo. Trois produits open-source entrant dans cette catégorie sont Project Voldemort, Dynomite et Cassandra. Chacun de ces projets adopte une approche différente de la technologie, mais lorsque vous les comparez à SimpleDB, ils se retrouvent généralement dans la même catégorie. Ils vous permettent de disposer d’un accès par valeur-clé hautement disponible réparti sur plusieurs machines. Vous obtenez plus de contrôle sur les serveurs et l’implémentation qui vient avec le coût de maintenance de la gestion de l’installation et des machines. Si vous cherchez quelque chose dans cette classe de stockage de données, SimpleDB est une option hébergée sans contact, et ces projets sont des alternatives pratiques auto-hébergées.

Cas d’utilisation convaincants pour SimpleDB

no sql performance volumetrie

SimpleDB ne remplace pas les bases de données relationnelles. Vous devez examiner attentivement le type de solution de stockage de données approprié pour une application donnée. Cette section inclut une discussion sur certains cas d’utilisation qui correspondent bien à SimpleDB. Services Web pour les Systèmes Connectés

Les départements informatiques de l’entreprise sont chargés de fournir de la valeur métier et du support de manière efficace. Au cours des dernières années, il y a eu un mouvement vers l’orientation de service et le cloud computing. L’un des moteurs de l’orientation vers le service est le désir d’utiliser plus efficacement les applications existantes. Le protocole Simple Object Access Protocol (SOAP) est devenu un standard important pour la transmission de messages entre ces systèmes connectés afin de permettre la compatibilité ascendante. Pour les nouveaux services déployés dans le cloud, SimpleDB est une option de stockage de données convaincante.

Le transfert de données entre les instances EC2 et le point de terminaison SimpleDB dans la même région est rapide et gratuit. La vitesse constante et la haute disponibilité de SimpleDB sont utiles lors de la définition d’un SLA (Service Level Agreement) entre les services informatiques et les unités commerciales. Tout cela correspond à la capacité de EC2 d’étendre des instances supplémentaires à la demande.

Application à faible utilisation

orthophonie

Il y a des applications dans l’entreprise et sur le Web ouvert qui ne voient pas une charge lourde cohérente. Elles peuvent être peu utilisées en général avec des pics périodiques ou saisonniers – par exemple, à la fin du mois ou pendant les vacances. Parfois, il y a peu d’utilisateurs en tout temps par conception ou simplement par manque de popularité.

Pour ces types d’applications, il peut être difficile de justifier un serveur de base de données complet pour une application. La réponse typique dans les organisations avec une infrastructure suffisante est d’héberger plusieurs bases de données sur le même serveur. Cela peut fonctionner mais peut ne pas paraître une option pour les petites organisations ou pour les entreprises individuelles. L’hébergement de base de données partagée est disponible auprès des sociétés d’hébergement, mais les niveaux de service sont notoirement imprévisibles. Avec SimpleDB, les applications à faible utilisation peuvent s’exécuter dans le niveau de service gratuit tout en conservant la possibilité de passer à des volumes de requêtes importants lorsque cela est nécessaire. Cela peut être une option même lorsque des options de partage de base de données sont disponibles.

Bases de données en cluster sans le Time-Sink

Cassandra Topology in AWS.9e54dad1f1273e5bef9bf915b031c276eff7d876

La mise en grappe (clustering) des bases de données pour l’évolutivité ou la disponibilité n’est pas une tâche facile. Si vous avez déjà un accès important aux données ou si vous avez besoin d’un temps de disponibilité quantifiable, c’est évidemment une tâche qui vaut la peine d’être entreprise. De plus, si vous avez déjà l’expertise nécessaire pour déployer et gérer des clusters de bases de données répliquées, SimpleDB n’est peut-être pas ce dont vous avez besoin. Cependant, si vous en avez l’expérience, vous connaissez également bien d’autres choses : vous connaissez le coût de mise en production des clusters, de déploiement des mises à jour du schéma et de gestion des pannes. Cette information peut en fait rendre facile de décider si de nouvelles applications fourniront suffisamment de revenus ou de valeur commerciale pour mériter le temps et le coût. Vous disposez également d’une excellente base de connaissances pour faire des comparaisons entre les solutions internes et SimpleDB pour les fonctionnalités qu’il fournit.

Vous pouvez avoir un réel besoin d’évolutivité ou de disponibilité, mais pas l’expertise. Dans ce cas, SimpleDB peut vous permettre d’externaliser les coûts de maintenance de la base de données en cours potentiellement coûteux.

Application à données dynamiques

platform illustration hero 0

Des modèles de données rigides et hautement structurés servent de base à de nombreuses applications, tandis que d’autres doivent être plus dynamiques. Il devient beaucoup plus important pour les nouvelles applications d’inclure une sorte de composant social que par le passé.

Parallèlement à ces aspects sociaux, il est nécessaire de prendre en charge différents types de saisie et de personnalisation, comme le balisage, le vote et le partage. De nombreux types d’applications sociales nécessitent la création de communautés et peuvent bénéficier d’une plate-forme qui permet de stocker les données de nouvelles façons, sans casser les anciennes données. Les applications destinées aux clients, même celles qui n’ont pas de composante sociale, doivent être attentives aux commentaires des utilisateurs.

Qu’il s’agisse de données dynamiques provenant d’utilisateurs ou de changements dynamiques apportés en réponse aux commentaires des utilisateurs, un magasin de données flexible peut permettre une innovation plus rapide.

Recherche de Contenu de Amazon S3

amazon s3 1920

Amazon S3 est devenu une solution populaire pour stocker des fichiers multimédia accessibles sur le Web. Les applications qui traitent de l’audio, de la vidéo ou des images peuvent accéder aux fichiers multimédias de EC2 sans frais de transfert et permettre aux utilisateurs finaux de les télécharger ou de les diffuser à grande échelle sans avoir à gérer la charge supplémentaire. Quand il y a un grand nombre de fichiers dans S3, et qu’il est nécessaire de rechercher le contenu selon divers attributs, SimpleDB peut être une excellente solution.

Il est facile de stocker des attributs dans SimpleDB, ainsi que des pointeurs vers l’emplacement où le média est stocké dans S3. SimpleDB crée un index pour chaque attribut pour une recherche rapide. Les différents types de fichiers peuvent avoir des attributs différents dans le même domaine SimpleDB. De nouveaux types de fichiers ou de nouveaux attributs sur les types de fichiers existants peuvent être ajoutés à tout moment sans avoir à mettre à jour les enregistrements existants.

Rendre puissant le pouvoir des utilisateurs

Pendant longtemps, les bases de données ont été juste au-delà de ce que les utilisateurs hautement techniques peuvent atteindre efficacement. De nombreux analystes métier, managers et informaticiens ont des aptitudes techniques mais pas les compétences d’un développeur ou d’un administrateur de base de données. Ces utilisateurs puissants utilisent des outils tels que des tableurs et des bases de données pour résoudre des problèmes. Malheureusement, ces outils fonctionnent mieux sur un seul poste de travail, et les tentatives de partage ou d’utilisation simultanée entraînent souvent des difficultés et de la frustration ; un logiciel de base de données adapté aux besoins de l’entreprise nécessite un niveau d’expertise et de temps au-delà de ce que ces utilisateurs sont prêts à dépenser.

La flexibilité et l’évolutivité de SimpleDB peuvent être un atout pour une nouvelle classe des applications conçues pour les utilisateurs expérimentés. SimpleDB lui-même nécessite toujours une programmation sur le client et n’est pas directement utilisable par les utilisateurs expérimentés. Cependant, la possibilité de stocker des données directement sans schéma prédéfini et de créer des requêtes est une fonctionnalité habilitante. Pour les applications qui cherchent à responsabiliser les utilisateurs avancés, en créant des applications simples et ouvertes avec des fonctionnalités dynamiques, SimpleDB peut constituer un excellent back-end.

Clients AWS existants

amazon web services aws

Cet article a souligné plus tôt les avantages de l’utilisation de EC2 pour les applications à large bande passante. Toutefois, si vous utilisez déjà un ou plusieurs Amazon Web Services, SimpleDB peut être un candidat idéal pour le stockage de données interrogeable sur un large éventail d’applications. Bien sûr, l’exécution d’une base de données relationnelle sur une instance EC2 est également un choix viable et populaire. De plus, vous feriez bien de considérer les deux options. SimpleDB vous oblige à faire certains compromis, mais si les choix apportent un bénéfice net à votre application, vous aurez gagné d’excellentes fonctionnalités d’AWS qui sont difficiles et longues à développer par vous-même.

Résumé

Amazon SimpleDB est un service Web qui vous permet de stocker des données semi-structurées dans les centres de données d’Amazon. Le service fournit une réplication de données automatique et géographiquement diversifiée ainsi qu’un routage interne autour des nœuds de stockage défaillants. Il offre une haute disponibilité et permet une évolutivité horizontale. Ce service vous permet de décharger les tâches de maintenance matérielle et de gestion de base de données.

Vous pouvez utiliser SimpleDB en tant que banque de valeurs-clés distribuées à l’aide des appels API GetAttributes, PutAttributes et DeleteAttributes. Vous avez également la possibilité d’interroger vos données sur l’un de ses attributs à l’aide de l’appel Select API. SimpleDB n’est pas une base de données relationnelle, il n’y a donc pas de jointures, de clés étrangères, de définitions de schéma ou de contraintes relationnelles que vous pouvez spécifier. SimpleDB a également un support limité pour les transactions, et les mises à jour se propagent entre les réplicas en arrière-plan. SimpleDB prend en charge une cohérence forte, dans laquelle les opérations de lecture reflètent immédiatement les résultats de toutes les consignes terminées et éventuelles, où les nœuds de stockage sont mis à jour de manière asynchrone en arrière-plan.

Aina Strauss

À lire aussi

equilibreur charge gcp

Équilibreur de charge sur Google Cloud Platform

Table de matièreAjout de puissance de calcul avec Amazon EC2Stockage de grands objets avec Amazon …