Dom*_*uss 5 mysql google-cloud-platform google-cloud-spanner
数据局部性和根表不是 MySQL 或 PostgreSQL 中的概念,那么为什么它们在 Cloud Spanner 中很重要。
看来,选择主键对于 Cloud Spanner 的架构设计非常重要。
我认为数据局部性和根表在 MySQL 或 PostreSQL 中与在 Cloud Spanner 中一样重要,但它们的调用方式不同。
重要的是要了解 Cloud Spanner 是为非常大的数据库设计的,而这些数据库只能使用大量传统数据库服务器来实现。当您使用 MySQL 或 PostreSQL 时,解决此问题的常用方法是创建分片。您必须将数据分成许多较小的部分,并将每个这样的部分放在不同的服务器上。当然,这种解决方案的实施和维护相当复杂。
Google Cloud Spanner 会自动为您完成此操作,但了解如何管理此分片非常重要。Spanner 中的每个分片都称为分片。规则是在 Spanner 中,拆分必须包含根表中的行及其所有子表。通过确定根表,您可以定义潜在的拆分边界,Spanner 根据需要使用该边界。您不必担心分片的数量、分片之间的数据迁移(随着它们的增长或缩小)等。
如果您将所有表设置为根,那么 Spanner 将在其分片方面具有完全的灵活性,但这是有代价的。维持分片之间的一致性很困难。您可以将其想象为类似于同时在多个 MySQL 或 PostreSQL 服务器上执行事务。这是可能的,但并不容易。Spanner 也会自动为您完成此操作,但会降低性能。
您可以在架构和数据模型文档中阅读有关此模型的更多信息
主键在 Spanner 架构中也很重要。它根据主键将根表行分配给拆分。连续的键可以进入同一个分区。如果您在短时间内对这些行执行大量事务,您可能希望将它们分布在更多的分区上。您可以在最佳实践中阅读更多内容
当然,如果您可以将数据放在单个服务器上,那么您就不会在 MySQL 或 PostgreSQL 中看到所有这些概念;)