2017-02-21 11 views

回答

1

我认为数据局部性和根表在MySQL或PostreSQL中与在Cloud Spanner中一样重要,但它们的调用方式不同。

Cloud Spanner是为非常大的数据库设计的,这些数据库只能使用大量传统的数据库服务器来实现,这一点很重要。当您使用MySQL或PostreSQL时,通常的解决方法是创建碎片。你必须将你的数据分成许多小块,并把每个这样的块放在不同的服务器上。当然,这种解决方案的实施和维护相当复杂。

Google Cloud Spanner会自动为您提供帮助,但了解如何管理此分片很重要。扳手中的每个碎片都称为分裂。规则是,在Spanner中,split必须包含来自根表的行以及所有它的子元素。通过决定根表,您可以定义潜在的分界线,Spanner使用他认为合适的分界线。你不必担心分裂的数量,分裂之间的数据迁移,因为他们的增长或收缩,等等。

如果你让所有的表为root,那么Spanner将在其分片中有充分的灵活性,但有这个价格。很难保持整个碎片的一致性。您可以将其想象为同时在多个MySQL或PostreSQL服务器上执行事务。这是可能的,但并不容易。扳手也会自动为你做,但会有性能损失。

可以在Schema and Data Model documentation

主键阅读更多关于这款机型也是扳手架构重要。它根据其主键将根表行分配给拆分。连续的键可以到 相同的分割。如果你在很短的时间内在这样的行上做了很多事务,你可能希望它们被分配到更多的分支上。你可以阅读更多的Best practices

当然,你没有看到MySQL或PostgreSQL所有这些概念,如果你能适应单个服务器上的数据;)

相关问题