【问题标题】:What is data locality and why does it matter in Cloud Spanner vs. MySQL?什么是数据局部性,为什么它在 Cloud Spanner 与 MySQL 中很重要?
【发布时间】:2017-07-11 10:57:35
【问题描述】:

数据局部性和根表在 MySQL 或 PostgreSQL 中不是一个概念,那么为什么它们在 Cloud Spanner 中很重要。

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

【问题讨论】:

    标签: mysql google-cloud-platform google-cloud-spanner


    【解决方案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 中看到所有这些概念;)

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 2010-11-02
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 2021-05-11
      相关资源
      最近更新 更多