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?
答案 0 :(得分:1)
索引在幕后被实现为表格,因此它们具有与表格相同的一致性保证。在更新引用表时,索引也会同步更新,因此不应出现这种不一致的索引视图。
提交时间戳值不能保证唯一。写入非重叠字段集的事务可能具有相同的时间戳。写入重叠字段集的事务具有唯一的时间戳。
有关更多信息,请参考以下文档: https://cloud.google.com/spanner/docs/commit-timestamp