Google Cloud Bigtable とGoogle Cloud Datastore/App Engineデータストアの違いは何ですか?また、主な実用的な利点/欠点は何ですか? AFAIK Cloud DatastoreはBigtableの上に構築されています。
Datastoreの経験とBigtable docs の読み取りに基づいた主な違いは次のとおりです。
Cloud Bigtableは、大企業や、複雑なバックエンドワークロードを必要とする大規模なデータニーズを抱える企業向けに設計されています。
BigtableとDatastoreは大きく異なります。はい、データストアはBigtableの上に構築されていますが、そのようなものにはなりません。それは車が車輪の上に構築されていると言っているようなもので、車は車輪とそれほど違いはありません。
BigtableとDatastoreは、非常に異なるデータモデルと、データの変更方法における非常に異なるセマンティクスを提供します。
主な違いは、データストアがエンティティグループと呼ばれるデータのサブセットでSQLデータベースのようなACIDトランザクションを提供することです(ただし、クエリ言語GQLはSQLよりもはるかに制限的です)。 Bigtableは厳密にNoSQLであり、はるかに弱い保証が付いています。
上記のすべての答えに加えてCourseaで提供されるものを要約しようとするつもりです Google Cloud Platformのビッグデータと機械学習の基礎
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| 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 | |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
2016年11月現在、考慮すべき比較的マイナーな点は、bigtable python client library はまだAlphaであり、将来の変更には後方互換性がない可能性があることを意味します。また、bigtable pythonライブラリはApp Engineの標準環境と互換性がありません。柔軟なものを使用する必要があります。