web-dev-qa-db-fra.com

Microsoft Azure DocumentDB contre Azure Table Storage

Depuis plusieurs années, Microsoft propose un stockage clé/valeur "NoSQL", appelé "Table Storage" ( http://Azure.Microsoft.com/en-us/documentation/articles/storage-dotnet-how- to-use-tables / )

Le stockage de table offre des performances élevées, une évolutivité (via le partitionnement) et un coût relativement faible. Un inconvénient principal des tables que seules les clés de partition et de ligne peuvent être indexées - donc effectuer des requêtes sur les valeurs est très inefficace.

Récemment, Microsoft a annoncé un nouveau service "NoSQL", appelé "DocumentDB" ( http://Azure.Microsoft.com/en-us/documentation/services/documentdb/ )

Au lieu de stocker une liste de propriétés (comme le font les tableaux), DocumentDB stocke des objets JSON. L'objet entier étant indexé - des requêtes efficaces peuvent donc être créées en fonction de chaque propriété et de toute propriété imbriquée d'objets stockés.

Microsoft affirme que DocumentDB offre également des performances et une évolutivité élevées.

Si tel est le cas - pourquoi quelqu'un utiliserait le stockage de table sur DocumentDB? Il semble que DocumentDB offre les mêmes fonctionnalités que les tableaux, mais avec des capacités supplémentaires telles que la possibilité d'indexer n'importe quoi.

Je serais heureux si quelqu'un pouvait faire une comparaison entre DocumentDB et Table Storage, en soulignant les inconvénients et les avantages de chacun.

42
Illidan

Les deux sont des technologies NoSQL, mais elles sont très différentes. Azure Tables est un simple magasin de clés/valeurs et ne prend pas en charge des fonctionnalités complexes comme les requêtes complexes (la plupart d'entre elles nécessiteront de toute façon une analyse complète des partitions/tables, ce qui tuera vos performances et vos économies), une indexation personnalisée (l'indexation est basée sur PartitionKey et RowKey uniquement, vous ne pouvez actuellement pas indexer sur une autre propriété d'entité et la recherche d'autre chose que la combinaison PartitionKey/RowKey nécessitera une analyse partition/table) ou des procédures stockées. Vous ne pouvez pas non plus traiter les demandes de lecture par lots pour plusieurs entités (les demandes d'écriture par lots sont prises en charge si toutes les entités appartiennent à la même partition). Pour une application réelle des tables Azure, voir ICI .

Si vos besoins en données (en particulier pour les interroger) sont simples (comme dans l'exemple ci-dessus), alors Azure Tables fournit ce dont vous avez besoin, vous pourriez finir par l'utiliser en faveur de DocDB en raison de la tarification, des performances et de la capacité de stockage. Par exemple, Azure Tables objectif de performance correspond à 20 000 opérations par seconde. Essayer d'obtenir le même niveau de performances sur DocDB aura pour vous un coût nettement supérieur coût du service . En outre, les tables Azure sont limitées par la capacité de votre compte de stockage Azure ( 500 To ), tandis que le stockage DocDB est limité par les unités de capacité que vous achetez.

51
Luis Delgado

Table Services est principalement un type de valeur-clé NOSQL et DocumentDB est (comme son nom l'indique) un magasin NoSQL de type document. Ce que vous demandez, c'est essentiellement la différence entre ces deux types d'approches NOSQL. Si vous orientez vos recherches en fonction de cela, vous devriez être en mesure de mieux comprendre.

Juste pour garder les choses simples, je vous suggère de considérer les différences entre la tarification de DocumentDB et des services de table. Non seulement le coût de ces services varie beaucoup les uns des autres, mais le fait que DocumentDB fonctionne sur un modèle de "provision first" et que les services de table sont proposés sur une tarification basée sur la consommation pure peut vous donner quelques indices sur votre comparaison/contraste.

Permettez-moi de vous poser cette question; pourquoi devrais-je utiliser DocumentDB si les fonctionnalités de Table Services répondent bien à mes besoins? ;) Je vous suggère de regarder comment les outils de diagnostic Azure actuels utilisent Azure Storage Services, comment les métriques de stockage utilisent Azure Storage sur lui-même pour avoir une idée de l'utilité des services de table et de la surpuissance de DocumentDB dans certaines situations.

J'espère que cela t'aides.

18
daronyondem

Je pense que la comparaison est tous sur le prix de négociation pour la performance. Les services de table ne sont que des services de stockage, qui semblent plafonner à 20000 opérations/seconde, mais payer ce type de débit tout le temps (car le stockage nous le donne tout le temps) est de 1200 $/mois. De l'argent fou.

Les services de table ont des index simples, donc les requêtes sont très limitées. Bon pour tout ce qui est écrit et lu via des identifiants. DocumentDB indexe tout le document, de sorte qu'une requête peut être effectuée sur n'importe quelle propriété.

Et enfin, les services de table sont liés par la contrainte de stockage du compte de stockage sur lequel il se trouve (ce qui pourrait devenir fou vu la négociation avec Microsoft directement), où le stockage DocumentDB semble illimité.

C'est donc un équilibre. Avez-vous BEAUCOUP de données (centaines de concerts ou téraoctets) dont vous avez besoin au même endroit? DocumentDB. Avez-vous besoin de prendre en charge des requêtes complexes? DocumentDB. Avez-vous des données qui doivent aller et venir rapidement, mais basées sur une recherche de propriété 1 à 2? Services aux tables. Transféreriez-vous devoir coder autour d'un index simple afin d'éviter de payer par le nez pour le débit? Services aux tables.

Et Redis, quelqu'un a mentionné que ... mec, je ne sais pas. Même l'existence de persistance dans un cadre de mise en cache (que Redis propose) n'en fait pas une technologie de choix ... Il y a une énorme différence entre un magasin persistant qui contient des données "souvent utilisées, mais qui peuvent être manquantes ou ", comme le ferait un cache, et un magasin persistant qui garantit que vos données soient là.

6
Craig Brunetti

Un exemple réel:

Je dois stocker des jetons, les récupérer, les supprimer. Seule la requête jamais effectuée sera basée sur l'ID utilisateur.

J'utilise donc le stockage de table, car il répond parfaitement à mes exigences. J'enregistre le jeton contre l'ID utilisateur.

Le document DB semblait exagéré pour cela.

4
Bhavjot

Voici la réponse de Microsoft's official docs

Attributs communs de Cosmos DB, Azure Table Storage et Azure SQL Database:

  • Disponibilité à 99,99 SLA

  • Services de base de données entièrement gérés

  • Conforme aux clauses modèles ISO 27001, HIPAA et EU

  • Le tableau suivant montre les attributs rares d'Azure Cosmos DB, Azure Table Storage

enter image description here

3
Sajeetharan - MSFT