我尝试使用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
定义为B
和C
的父表吗?
我是否需要使用PK (C1)
创建虚拟表?
还有其他办法吗?
数据库将有大量读取,许多更新但插入很少。
任何建议都将受到高度赞赏。
由于
答案 0 :(得分:2)
为了定义子表,子表的主键必须包含父表的整个主键作为前缀。
在您的示例中,您需要创建一个包含主键C1的表。然后,您可以在此父表中交错表A,B和/或C.
父表不一定是虚表。要将值插入子表,父表中必须存在相应的行。因此,在您的示例中,您需要确保父表对于要添加到任何子表的C1的每个值都有一行。