在没有父子 table 关系的 Google Spanner 中使用交错行
Using interleaved rows in Google Spanner without parent-child table relationship
我正在尝试使用 Google Spanner 的交错方法来定义一种机制,使来自多个 table 的行在同一个拆分中。根据文档 (https://cloud.google.com/spanner/docs/schema-and-data-model#database-splits),共享相同主键前缀的行被放置在相同的拆分中。但是 "same primary key prefix" 的定义是什么?让我们举个例子。我有三个 table 主键:
table A has PK (C1, CA)
table B has PK (C1, CB)
table C has PK (C1, CC)
这三个 table 共享其主键的第一个元素,第 C1
列。我希望 C1
具有相同值的所有行都进行相同的拆分。
我可以将 table A
定义为 B
和 C
的父 table 吗?
我需要用 PK (C1)
创建一个虚拟 table 吗?
还有其他方法吗?
数据库将有很多读取、很多更新但很少插入。
任何建议将不胜感激。
谢谢
为了定义 child table,child table 的主键必须包含 parent 的整个主键作为一个前缀。
在您的示例中,您需要使用主键 C1 创建 table。然后你可以在这个 parent table.
中插入 tables A, B, and/or C
parent table 不能完全是一个虚拟 table。要将值插入 child table,相应的行必须存在于 parent table 中。因此,在您的示例中,您需要确保 parent table 对于要添加到任何 child table 的每个 C1 值都有一行.
我正在尝试使用 Google Spanner 的交错方法来定义一种机制,使来自多个 table 的行在同一个拆分中。根据文档 (https://cloud.google.com/spanner/docs/schema-and-data-model#database-splits),共享相同主键前缀的行被放置在相同的拆分中。但是 "same primary key prefix" 的定义是什么?让我们举个例子。我有三个 table 主键:
table A has PK (C1, CA)
table B has PK (C1, CB)
table C has PK (C1, CC)
这三个 table 共享其主键的第一个元素,第 C1
列。我希望 C1
具有相同值的所有行都进行相同的拆分。
我可以将 table A
定义为 B
和 C
的父 table 吗?
我需要用 PK (C1)
创建一个虚拟 table 吗?
还有其他方法吗?
数据库将有很多读取、很多更新但很少插入。
任何建议将不胜感激。
谢谢
为了定义 child table,child table 的主键必须包含 parent 的整个主键作为一个前缀。
在您的示例中,您需要使用主键 C1 创建 table。然后你可以在这个 parent table.
中插入 tables A, B, and/or Cparent table 不能完全是一个虚拟 table。要将值插入 child table,相应的行必须存在于 parent table 中。因此,在您的示例中,您需要确保 parent table 对于要添加到任何 child table 的每个 C1 值都有一行.