Search code examples
google-app-enginegoogle-cloud-platformgoogle-cloud-datastoregoogle-cloud-bigtable

Google Cloud Bigtable vs Google Cloud Datastore


What is the difference between Google Cloud Bigtable and Google Cloud Datastore / App Engine datastore, and what are the main practical advantages/disadvantages? AFAIK Cloud Datastore is build on top of Bigtable.


Solution

  • Based on experience with Datastore and reading the Bigtable docs, the main differences are:

    • Bigtable was originally designed for HBase compatibility, but now has client libraries in multiple languages. Datastore was originally more geared towards Python/Java/Go web app developers (originally App Engine)
    • Bigtable is 'a bit more IaaS' than Datastore in that it's not 'just there' but requires a cluster to be configured.
    • Bigtable supports only one index - the 'row key' (the entity key in Datastore)
      • This means queries are on the Key, unlike Datastore's indexed properties
    • Bigtable supports atomicity only on a single row - there are no transactions
    • Mutations and deletions appear not to be atomic in Bigtable, whereas Datastore provides eventual and strong consistency, depending on the read/query method
    • The billing model is very different:
      • Datastore charges for read/write operations, storage and bandwidth
      • Bigtable charges for 'nodes', storage and bandwidth