Google Cloud Bigtable vs Google Cloud Datastore


124

Quelle est la différence entre Google Cloud Bigtable et Google Cloud Datastore / App Engine, et quels sont les principaux avantages / inconvénients pratiques? AFAIK Cloud Datastore repose sur Bigtable.


8
Veuillez ne pas fermer. il n'y a actuellement aucune documentation officielle à ce sujet et google fera probablement des commentaires ici.
Zig Mandel

Réponses:


97

Sur la base de l'expérience avec Datastore et de la lecture de la documentation Bigtable , les principales différences sont:

  • Bigtable a été conçu à l'origine pour la compatibilité HBase, mais dispose désormais de bibliothèques clientes en plusieurs langues . Datastore était à l'origine davantage orienté vers les développeurs d'applications Web Python / Java / Go (à l'origine App Engine)
  • Bigtable est «un peu plus IaaS» que Datastore en ce sens qu'il n'est pas «juste là» mais nécessite la configuration d' un cluster .
  • Bigtable prend en charge un seul index - la 'clé de ligne' (la clé d'entité dans Datastore)
    • Cela signifie que les requêtes sont sur la clé, contrairement aux propriétés indexées de Datastore
  • Bigtable prend en charge l'atomicité uniquement sur une seule ligne - il n'y a pas de transactions
  • Les mutations et les suppressions ne semblent pas être atomiques dans Bigtable, alors que Datastore fournit une cohérence éventuelle et forte, en fonction de la méthode de lecture / requête
  • Le modèle de facturation est très différent:
    • Frais de banque de données pour les opérations de lecture / écriture, le stockage et la bande passante
    • BigTable charges pour « nœuds » , le stockage et la bande passante

98

Bigtable est optimisé pour des volumes élevés de données et d'analyses

  • Cloud Bigtable ne réplique pas les données entre les zones ou les régions (les données au sein d'un seul cluster sont répliquées et durables), ce qui signifie que Bigtable est plus rapide et plus efficace et que les coûts sont beaucoup plus bas, bien qu'il soit moins durable et disponible dans la configuration par défaut
  • Il utilise l' API HBase - il n'y a aucun risque de verrouillage ou de nouveaux paradigmes à apprendre
  • Il est intégré aux outils Big Data open source, ce qui signifie que vous pouvez analyser les données stockées dans Bigtable dans la plupart des outils d'analyse que les clients utilisent (Hadoop, Spark, etc.)
  • Bigtable est indexé par une seule clé de ligne
  • Bigtable est dans une seule zone

Cloud Bigtable est conçu pour les grandes entreprises et les entreprises qui ont souvent des besoins de données plus importants avec des charges de travail backend complexes.

La banque de données est optimisée pour fournir des données transactionnelles de grande valeur aux applications

  • Cloud Datastore offre une disponibilité extrêmement élevée avec réplication et synchronisation des données
  • Le magasin de données, en raison de sa polyvalence et de sa haute disponibilité, est plus cher
  • La banque de données écrit des données plus lentement en raison de la réplication synchrone
  • Le magasin de données offre de bien meilleures fonctionnalités autour des transactions et des requêtes (car il existe des index secondaires)

3
Bigtable se réplique désormais dans toutes les zones pour fournir une disponibilité face à une panne de zone: cloudplatform.googleblog.com/2018/07
Brandon DuRette

Je pensais que la transaction n'était pas un argument de vente fort pour la banque de données. À partir de son [doc | cloud.google.com/datastore/docs/concepts/transactions] "Une transaction est un ensemble d'opérations Google Cloud Datastore sur une ou plusieurs entités dans un maximum de 25 groupes d'entités." De plus, le magasin de données est construit au-dessus de Bigtable, n'est-ce pas?
zyxue

19

Bigtable et Datastore sont extrêmement différents. Oui, le magasin de données est construit sur Bigtable, mais cela ne lui en fait rien. C'est un peu comme dire qu'une voiture est construite sur des roues, et qu'une voiture n'est donc pas très différente des roues.

Bigtable et Datastore fournissent des modèles de données très différents et une sémantique très différente sur la manière dont les données sont modifiées.

La principale différence est que le magasin de données fournit des transactions ACID de type base de données SQL sur des sous-ensembles de données appelés groupes d'entités (bien que le langage de requête GQL soit beaucoup plus restrictif que SQL). Bigtable est strictement NoSQL et est livré avec des garanties beaucoup plus faibles.


4
Vous alliez bien jusqu'au dernier paragraphe. Le magasin de données fournit des transactions, mais elles ne ressemblent en rien à SQL et certainement pas à ACID.
Daniel Roseman

4
@DanielRoseman En fait, c'est vraiment le cas. Voici une citation de l'article sur Megastore (sur lequel Datastore est construit): "Chaque groupe d'entités Megastore fonctionne comme une mini-base de données qui fournit une sémantique ACID sérialisable." "nous partitionnons la banque de données et répliquons chaque partition séparément, fournissant une sémantique ACID complète dans les partitions". (research.google.com/pubs/pub36971.html)
user2771609

Je pense que c'est trompeur de l'appeler Sql. Un sous-ensemble tout au plus. N'a pas de comptage / groupe efficace, toutes les requêtes doivent utiliser des index, etc.
Zig Mandel

4
Le langage des requêtes et l'isolation des transactions sont des choses différentes , vous semblez les mélanger. Je fais une réclamation à propos de ce dernier ( transactions ACID ). Dans votre commentaire, vous supposez que je parle du premier. Peut-être que certains traits d'union clarifieront? Je mentionne explicitement le problème du langage de requête pour lever tout doute.
user2771609

8

Si vous lisez des articles, BigTable est ceci et Datastore est MegaStore . Datastore est BigTable plus la réplication, la transaction et l'index. (et est beaucoup plus cher).


Est-ce vraiment plus cher? le minimum pour BigTable est de 3 nœuds, avec un disque dur de 10 Go, c'est 1400 $ / mois. Cela semble assez élevé non?
benji

@ben, dans mon expérience passée, c'était le cas. La banque de données est facturée par opération au lieu de l'heure. (Si vous ne l'utilisez pas beaucoup, alors oui, vous ne payez pas beaucoup Datastore. Mais si vous avez un trafic élevé et que je pense que bigtable est beaucoup moins cher.) Je pense que Bigtable réclame 10 000 opérations par seconde? En réalité, je l'ai trouvé plus bas, comme environ 1-2k, mais 3 nœuds sont encore> 5k / s. Si vous maintenez ce débit pendant un mois et que vous le mappez sur la tarification Datastore, il est probablement beaucoup plus élevé que 1,4k.
Justin Zhang

Le lien MegaStore est rompu
gstackoverflow le

7

Je vais essayer de résumer toutes les réponses ci-dessus ainsi que ce qui est donné dans Coursea Google Cloud Platform Big Data and Machine Learning Fundamentals

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      Category       |                             BigTable                             |                Datastore                 |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| Technology          | Based on HBase(uses HBase API)                                   | Uses BigTable itself                     |  |
| ----------------    |                                                                  |                                          |  |
| Access Mataphor     | Key/Value (column-families) like Hbase                           | Persistent hashmap                       |  |
| ----------------    |                                                                  |                                          |  |
| Read                | Scan Rows                                                        | Filter Objects on property               |  |
| ----------------    |                                                                  |                                          |  |
| Write               | Put Row                                                          | Put Object                               |  |
| ----------------    |                                                                  |                                          |  |
| Update Granularity  | can't update row ( you should write a new row, can't update one) | can update attribute                     |  |
| ----------------    |                                                                  |                                          |  |
| Capacity            | Petabytes                                                        | Terbytes                                 |  |
| ----------------    |                                                                  |                                          |  |
| Index               | Index key only (you should properly design the key)              | You can index any property of the object |  |
| Usage and use cases | High throughput, scalable flatten data                           | Structured data for Google App Engine    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Vérifiez également cette image: entrez la description de l'image ici

entrez la description de l'image ici


2

Un point relativement mineur à considérer, à partir de novembre 2016, la bibliothèque cliente python bigtable est toujours en Alpha, ce qui signifie que le changement futur pourrait ne pas être rétrocompatible. De plus, la bibliothèque python bigtable n'est pas compatible avec l'environnement standard d'App Engine. Vous devez utiliser le flexible.


Depuis novembre 2016, il en va de même pour Java
Aram Paronikyan

2

Cela pourrait être un autre ensemble de différences clés entre Google Cloud Bigtable et Google Cloud Datastore ainsi que d'autres services. Le contenu affiché dans l'image ci-dessous peut également vous aider à sélectionner le bon service.

entrez la description de l'image ici

entrez la description de l'image ici


1

entrez la description de l'image ici

Cloud Datastore is a highly-scalable NoSQL database for your applications.
Like Cloud Bigtable, there is no need for you to provision database instances.
Cloud Datastore uses a distributed architecture to automatically manage
scaling. Your queries scale with the size of your result set, not the size of your
data set.
Cloud Datastore runs in Google data centers, which use redundancy to
minimize impact from points of failure. Your application can still use Cloud
Datastore when the service receives a planned upgrade.

entrez la description de l'image ici

 Choose Bigtable if the data is:
Big
● Large quantities (>1 TB) of semi-structured or structured data
Fast
● Data is high throughput or rapidly changing
NoSQL
● Transactions, strong relational semantics not required
And especially if it is:
Time series
● Data is time-series or has natural semantic ordering
Big data
● You run asynchronous batch or real-time processing on the data
Machine learning
● You run machine learning algorithms on the data
Bigtable is designed to handle massive workloads at consistent low latency
and high throughput, so it's a great choice for both operational and analytical
applications, including IoT, user analytics, and financial data analysis.

0

Datastore est plus prêt pour les applications et adapté à une large gamme de services, en particulier pour les microservices.

La technologie sous-jacente de Datastore est Big Table, vous pouvez donc imaginer que Big Table est plus puissante.

La banque de données est livrée avec un fonctionnement gratuit de 20K par jour, vous pouvez vous attendre à héberger un serveur avec une base de données fiable avec un coût nul.

Vous pouvez également consulter cette bibliothèque ORM Datastore, elle est livrée avec de nombreuses fonctionnalités intéressantes https://www.npmjs.com/package/ts-datastore-orm

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.