数据位置和根表不是MySQL或PostgreSQL中的概念,所以为什么它们在Cloud Spanner中很重要。
在Cloud Spanner的架构设计中,选择主键似乎非常重要。
答案 0 :(得分:1)
我认为数据位置和根表在MySQL或PostreSQL中与在Cloud Spanner中一样重要,但它们的调用方式不同。
了解Cloud Spanner是专为非常大的数据库而设计的,这些数据库只能使用许多传统的数据库服务器来实现。当您使用MySQL或PostreSQL时,解决此问题的常用方法是创建分片。您必须将数据拆分成许多较小的部分,并将每个这样的部分放在不同的服务器上。当然,这种解决方案的实施和维护非常复杂。
Google Cloud Spanner会自动为您完成此操作,但了解如何管理此分片非常重要。 Spanner中的每个分片称为分割。规则是在Spanner中,拆分必须包含根表中的行及其所有子项。通过决定根表,您可以定义潜在分割边界,Spanner在他认为合适时使用。您不必担心分割的数量,分割在增长或缩小时的数据迁移等。
如果你将所有表都设为root,那么Spanner将在其分片中具有完全的灵活性,但是有代价。很难保持整个分片的一致性。您可以想象这与在多个MySQL或PostreSQL服务器上同时执行事务类似。这是可能的,但并不容易。 Spanner也会自动为您完成,但性能会受到影响。
您可以在Schema and Data Model documentation
中详细了解此模型主键在Spanner架构中也很重要。它根据主键将根表行分配给拆分。连续的密钥可以去 同样的分裂。如果您在短时间内对这些行执行了大量事务,则可能希望将它们分布在更多分割上。您可以在Best practices
中阅读更多内容当然,如果您可以在单个服务器上放置数据,那么您在MySQL或PostgreSQL中看不到所有这些概念;)