使用 cloud-spanner 进行本地开发

Local development with cloud-spanner

有什么方法可以用cloud spanner做本地开发吗?我查看了文档和 CLI 工具,但似乎什么也没有。或者,有人可以建议一个 SQL 数据库,其读取行为相似(不确定如何处理写入)?

编辑:澄清一下,我正在寻找一个与 Cloud Spanner 具有相同 SQL 风格的数据库,以便我可以在本地进行开发。确切的性能特征不如 API 和一致性行为重要。我认为 Cockroach 不符合这些要求?

Cloud Spanner 目前没有本地开发选项。您当前的选择是在 GCP 上启动单节点实例。

目前没有其他数据库像 Cloud Spanner 一样运行,但是 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.

CockroachDB 的读取行为应该与 Cloud Spanner 类似,您可以 运行 在 Mac OS X 和 Linux 上原生 运行,在 Windows 使用 Docker。对于本地开发,缺少 TrueTime 不会有什么不同,因为一切都在一台机器上 运行ning。

对于写作,你现在运气不好。 Spanner 有一个自定义 API 用于写入,而 CockroachDB 支持标准 INSERT/UPDATE/DELETE 语句。这样做的结果是 CockroachDB 更有可能与您选择的 ORM 一起工作,我们正在努力扩展这种支持。

正如 Dan 所说,目前支持的方式是拥有多个实例(dev、staging、prod),或者您可以将多个数据库放在一个实例中,以便跨环境共享资源成本。

我们知道本地模拟服务器在开发人员需要的生产力功能列表中名列前茅。

现在 Google 提供了一个用于本地开发的模拟器。截至 5/2020,它处于测试阶段。

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

它仅将数据存储在内存中,但您可以根据需要使用 gcloud 命令行将开发数据备份到磁盘或从磁盘恢复。

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