是否始终按顺序添加Google Spanner索引中的提交时间戳记?

时间:2018-12-05 16:54:32

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

Spanner的魔力似乎是基于https://cloud.google.com/spanner/docs/true-time-external-consistency中所述的全局单调增加时钟的想法。我有兴趣专门了解它与索引之间的关系。

如果我有桌子

| Stream Id | Category | Timestamp |

...,其中时间戳创建为提交时间戳,并带有辅助索引(类别,时间戳DESC):

查询此索引的某人是否有可能看到“乱序”插入的时间戳,例如是否有可能查询返回毫秒数为100、110、120的时间戳的索引,但随后再次查询时,会出现一个较旧的值,例如100、110、115、120。

另外,如果索引一次被读取,其中包含最近条目的时间戳100,那么以后是否可能在另一个条目上添加确切的时间戳100?

1 个答案:

答案 0 :(得分:1)

索引在幕后被实现为表格,因此它们具有与表格相同的一致性保证。在更新引用表时,索引也会同步更新,因此不应出现这种不一致的索引视图。

提交时间戳值不能保证唯一。写入非重叠字段集的事务可能具有相同的时间戳。写入重叠字段集的事务具有唯一的时间戳。

有关更多信息,请参考以下文档: https://cloud.google.com/spanner/docs/commit-timestamp

https://cloud.google.com/spanner/docs/schema-design