有什么方法可以使用 Cloud Spanner 进行本地开发吗?我查看了文档和 CLI 工具,似乎没有任何内容。或者,有人可以建议一个读取行为相似的 SQL 数据库(不确定如何处理写入)?
编辑:澄清一下,我正在寻找一个与 Cloud Spanner 具有相同 SQL 风格的数据库,以便我可以在本地进行开发。确切的性能特征不如 API 和一致性行为重要。我认为蟑螂不符合这些要求?
有什么方法可以使用 Cloud Spanner 进行本地开发吗?我查看了文档和 CLI 工具,似乎没有任何内容。或者,有人可以建议一个读取行为相似的 SQL 数据库(不确定如何处理写入)?
编辑:澄清一下,我正在寻找一个与 Cloud Spanner 具有相同 SQL 风格的数据库,以便我可以在本地进行开发。确切的性能特征不如 API 和一致性行为重要。我认为蟑螂不符合这些要求?
Cloud Spanner 目前没有本地开发选项。您当前的选择是在 GCP 上启动单个节点实例。
目前还没有其他数据库可以像 Cloud Spanner 那样运行,但是CockroachDB的运行原理类似。由于他们无法使用原子钟和 GPS 单元,因此他们确实做出了不同的权衡。特别是在读写和缺乏“过时的读取”方面。您可以在Jepsen 博客上阅读更多信息:
Spanner 在每次写入后等待以确保线性化,而 CockroachDB 仅在有争议的读取时阻塞。因此,它的一致性保证稍弱。
正如 Dan 所说,目前支持的方式是拥有多个实例(dev、staging、prod),或者您可以将多个数据库放在一个实例中,以便跨环境分摊资源成本。
我们知道本地模拟服务器在开发人员需要的生产力功能列表中排名靠前。
CockroachDB的读取行为与 Cloud Spanner 类似,您可以在 Mac OS X 和 Linux 以及使用 Docker 的 Windows 上本地运行它。对于本地开发,缺少 TrueTime 不会产生影响,因为一切都在一台机器上运行。
对于写作,你现在不走运。Spanner 有一个用于写入的自定义 API,而 CockroachDB 支持标准的 INSERT/UPDATE/DELETE 语句。这样做的结果是 CockroachDB 更有可能与您选择的 ORM 一起工作,我们正在努力扩展这种支持。
现在谷歌提供了一个模拟器用于本地开发。截至 5/2020,它处于测试阶段。
https://cloud.google.com/spanner/docs/emulator
它仅将数据存储在内存中,但您可以根据需要使用 gcloud 命令行从磁盘备份和恢复您的开发数据。