Local development with cloud-spanner

CockroachDB should behave similarly to Cloud Spanner for reads and you can run it natively on Mac OS X and Linux, and on Windows using Docker. For local development, the lack of TrueTime will not make a difference as everything is running on one machine.

For writes you're out of luck right now. Spanner has a custom API for writes while CockroachDB supports standard INSERT/UPDATE/DELETE statements. The upshot of this is that CockroachDB is more likely to work with your ORM of choice and we're working hard to extend that support.


As Dan said, the currently supported way is to have multiple instances (dev, staging, prod) or you can put multiple databases in a single instance so share resource costs across the environments.

We know that a local mock server is high on the list of productivity features that developers need.


There is now an emulator offered from Google for local development. As of 5/2020, it's in beta.

https://cloud.google.com/spanner/docs/emulator

It only stores data in memory, but you may be able to use the gcloud command line to backup and restore your development data to and from disk as needed.

https://cloud.google.com/spanner/docs/backup/gcloud


There is currently no local development option for Cloud Spanner. Your current option would be to start a single node instance on GCP.

There currently isn't another database that operates like Cloud Spanner, however CockroachDB operates on similar principles. Since they don't have access to atomic clocks and GPS units, they do make different trade-offs. In particular around reads & writes and lacking 'stale reads'. You can read more on the Jepsen blog:

Where Spanner waits after every write to ensure linearizability, CockroachDB blocks only on contested reads. As a consequence, its consistency guarantees are slightly weaker.