什么是数据位置以及为什么在Cloud Spanner与MySQL中有关系?

数据位置和根表不是
MySQL或PostgreSQL中的概念,所以为什么它们在Cloud Spanner中很重要.

在Cloud Spanner的架构设计中,选择主键似乎非常重要.

最佳答案 我认为数据位置和根表在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中看到所有这些概念;)

点赞