Si j'ai un cas d'utilisation pour le stockage de données énorme et la recherche, pourquoi devrais-je choisir Google Cloud Bigtable plutôt que Google Cloud Datastore?
J'ai vu quelques questions sur SO et d'autres côtés "comparant" Bigtable et Datastore, mais cela semble se résumer aux mêmes réponses non spécifiques.
Voici mes connaissances actuelles et mes pensées:
Le magasin de données est plus cher.
Dans le cadre de cette question, oublions entièrement la tarification.
Bigtable est bon pour d'énormes ensembles de données.
Il semble que Datastore l'est aussi? Je ne vois pas ce qui rend Bigtable objectivement supérieur ici.
Bigtable est meilleur que Datastore pour l'analyse.
Comment? Pourquoi? Il semble que je puisse également faire des analyses dans Datastore, pas de problème. Pourquoi Bigtable est-il apparemment la décision unanime de l'industrie pour l'analyse? Quelle valeur GMail, eBay, etc. tirent-ils de Bigtable que Datastore ne peut pas fournir?
Bigtable est intégré à Hadoop, Spark, etc.
Datastore n'est-il pas aussi bien, étant donné qu'il est construit sur Bigtable?
De cette question , cette déclaration a été faite dans une réponse:
Bigtable et Datastore sont extrêmement différents. Oui, le magasin de données est construit au-dessus de Bigtable, mais cela ne le fait pas du tout. C'est un peu comme dire qu'une voiture est construite sur des roues [de voiture], et donc une voiture n'est pas très différente des roues.
Cependant, cette analogie semble absurde, car la voiture (y compris les roues) offre intrinsèquement plus de valeur que les seules roues d'une voiture en elles-mêmes.
Il semble à première vue que Bigtable est strictement pire que Datastore, ne fournissant qu'un seul index et limitant la recherche rapide. Qu'est-ce que je rate?
Bigtable et Datastore sont optimisés pour des cas d'utilisation légèrement différents et offrent des compromis différents. Les principaux sont:
Modèle de données:
- Bigtable est une base de données à colonnes étendues - pensez HBase et Cassandra
- Datastore est une base de données de documents - pensez MongoDB
- Notez que les deux peuvent être utilisés pour les cas d'utilisation valeur-clé
Modèle de coût:
- Frais Bigtable par nœuds provisionnés
- La banque de données est sans serveur et facture par opération
En général, Bigtable est un bon choix si vous avez besoin de:
- Lectures de points et analyses de portée rapides (en particulier à l'échelle). Bigtable offrira une latence plus faible pour les recherches de valeurs-clés, ainsi que des analyses rapides des lignes contiguës - un outil puissant car les lignes sont stockées dans l'ordre lexicographique. Si vous avez des modèles de requête simples et prévisibles et que vous concevez bien votre schéma, la lecture à partir de Bigtable peut être incroyablement efficace.
- Écrits à haut débit (encore une fois, surtout à grande échelle). Cela est possible en partie parce que Bigtable est finalement cohérent - en échange, vous pouvez voir de grandes victoires en termes de prix/performances.
Des exemples de cas d'utilisation qui sont parfaits pour Bigtable incluent des données de séries chronologiques (pour l'IoT, la surveillance, etc.) - pensez à écrire des charges de travail extrêmement lourdes et des quantités massives de données générées sur x unités de temps), des analyses (pensez à la détection de fraude, à la personnalisation, aux recommandations) et la diffusion d'annonces (chaque microseconde compte).
Datastore (ou Firestore) est un bon choix si vous avez besoin de:
- Flexibilité des requêtes: Datastore offre une prise en charge des documents et des index secondaires.
- Forte cohérence et/ou transactions: Bigtable a finalement une réplication cohérente et ne prend pas en charge les transactions à plusieurs lignes.
- SDK mobiles: Datastore et Firestore sont incroyablement bien intégrés à l'écosystème Firebase.
Les exemples d'utilisation incluent les applications mobiles et Web, l'état du jeu, les profils utilisateur et les catalogues de produits.
Pour répondre explicitement à quelques-unes de vos questions:
- Pourquoi Bigtable est-il utilisé pour l'analyse? Il s'agit principalement de performances: les cas d'utilisation de l'analyse sont plus susceptibles d'avoir de grands ensembles de données et nécessitent un débit d'écriture élevé. Il est beaucoup plus facile de courir dans les limites d'une base de données si vous stockez des données de flux de clics, par opposition à quelque chose comme les informations de compte d'utilisateur. Les analyses rapides sont également importantes pour les cas d'utilisation de l'analyse: Bigtable vous permet de récupérer toutes les informations dont vous avez besoin sur un utilisateur ou un appareil extrêmement rapidement, que vous pouvez traiter dans un travail par lots ou utiliser pour créer des recommandations et des analyses à la volée.
- Bigtable est-il strictement pire que Datastore? Datastore fournit définitivement plus de fonctionnalités intégrées comme les index secondaires et le support de documents, et si vous avez besoin de ces fonctionnalités, Datastore est un choix fantastique. Mais cette fonctionnalité s'accompagne de compromis. Bigtable fournit des API peut-être de niveau inférieur, mais incroyablement performantes qui permettent aux utilisateurs de faire ces compromis pour eux-mêmes: si un utilisateur valorise, par exemple, les performances d'écriture sur des index secondaires, Bigtable est une excellente option. Vous pouvez le considérer comme un bloc de construction d'infrastructure extrêmement polyvalent et puissant. J'aime vraiment l'analogie roue/voiture: parfois, vous ne voulez pas de la voiture - si ce dont vous avez vraiment besoin est un vélo de saleté, un ensemble de roues solides est beaucoup plus utile :)