Cloud Datastore is a database platform from Google which is used directly from applications using API calls – typically the Google App Engine.

Data is replicated across multiple data centers and queries scale with the size of the result – basically it doesnt slow down even if there is extreme volumes of date in the database.

Cloud Datastore is now a strongly consistent product which can be replicated to regional or multi-regional configurations.

When would you use Cloud Datastore

  • Scheme can be changed
  • Database is adaptable
  • Can scale down to zero
  • Fairly cheap – first 1gb is free
  • Fully transactional DB
ConceptCloud DatastoreCloud FirestoreRelational database
Category of objectKindCollection groupTable
One objectEntityDocumentRow
Individual data for an objectPropertyFieldColumn
Unique ID for an objectKeyDocument IDPrimary key
  • Cloud Datastore is designed to automatically scale to very large data sets, allowing applications to maintain high performance as they receive more traffic:
    • Cloud Datastore writes scale by automatically distributing data as necessary.
    • Cloud Datastore reads scale because the only queries supported are those whose performance scales with the size of the result set (as opposed to the data set). This means that a query whose result set contains 100 entities performs the same whether it searches over a hundred entities or a million. This property is the key reason some types of queries are not supported.
  • Because all queries are served by previously built indexes, the types of queries that can be executed are more restrictive than those allowed on a relational database with SQL. In particular, Cloud Datastore does not include support for join operations, inequality filtering on multiple properties, or filtering on data based on results of a subquery.
  • Unlike traditional relational databases which enforce a schema, Cloud Datastore is schemaless. It doesn’t require entities of the same kind to have a consistent set of properties (although you can choose to enforce such a requirement in your own application code).