【发布时间】:2018-08-08 16:27:16
【问题描述】:
我正在将一个应用从 Oracle 迁移到 Google Spanner。 我们遇到的一种情况是同一张表中的行之间的关系。
这些关系具有树状结构,始终具有层次结构的一个父级和一个根。自下而上和自上而下的查询模式都是可能的。
在某些情况下,我们希望有效地访问整个记录树。这种数据访问模式对延迟至关重要。
该应用程序以前使用 Oracle 及其分层查询 (connect by),并针对该供应商进行了高度优化。
一次树提取中的行数将在 1-2000 之间。 表将有数百万个 sych 行。
该表的行中确实有交错的子表行。
通过非规范化模型和冗余添加根记录的 id 来优化表以获得更好的数据局部性是否有意义? 作为该表的主键的第一列以实现更快的自上而下查询?
应该是这样的: root_id | own_id | parent_id
1 | 1 | 1
1 | 2 | 1
1 | 3 | 2
4 | 4 | 4
4 | 5 | 4
4 | 5 | 4
即。我们正在考虑在这里使 PK 由 (root_id, own_id) 组成。 (数值是肤浅的,我们可以在实际场景中展开)。
包含相同 PK 的第一个元素的此类行进入相同拆分的机会是多少?这样做会有实际好处吗?
【问题讨论】:
标签: google-cloud-platform google-cloud-spanner