【问题标题】:Using interleaved rows in Google Spanner without parent-child table relationship在没有父子表关系的 Google Spanner 中使用交错行
【发布时间】:2018-08-07 13:15:27
【问题描述】:

我正在尝试使用 Google Spanner 的交错方法来定义一种机制,该机制将多个表中的行放在同一个拆分中。根据文档 (https://cloud.google.com/spanner/docs/schema-and-data-model#database-splits),共享相同主键前缀的行被放置在同一个拆分中。但是什么是定义“相同的主键前缀”?让我们举个例子。我有三个带有主键的表:

table A has PK (C1, CA)
table B has PK (C1, CB)
table C has PK (C1, CC)

这三个表共享它们的主键的第一个元素,列C1。我希望C1 具有相同值的所有行都进行相同的拆分。

我可以将表A 定义为BC 的父表吗? 我需要用PK (C1) 创建一个虚拟表吗?

还有其他方法吗?

数据库将有大量读取、大量更新但插入很少。

任何建议都将受到高度赞赏。

谢谢

【问题讨论】:

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


    【解决方案1】:

    为了定义子表,子表的主键必须包含父表的整个主键作为前缀。

    在您的示例中,您需要使用主键 C1 创建一个表。然后,您可以在此父表中交错表 A、B 和/或 C。

    父表不能完全是虚拟表。要将值插入到子表中,相应的行必须存在于父表中。因此,在您的示例中,您需要确保父表对于要添加到任何子表的每个 C1 值都有一行。

    【讨论】:

      猜你喜欢
      • 2022-09-24
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2023-02-18
      • 2018-04-04
      相关资源
      最近更新 更多