Google Spanner 索引中的提交时间戳是否始终按顺序添加?
Are commit timestamps in a Google Spanner index always added in order?
Spanner 的魔力似乎是基于 https://cloud.google.com/spanner/docs/true-time-external-consistency 中描述的全局单调递增时钟的想法。我有兴趣具体了解这与索引的关系。
如果我有 table
| Stream Id | Category | Timestamp |
…其中时间戳创建为提交时间戳,并带有二级索引(类别,时间戳 DESC):
查询此索引的人是否可能看到“乱序”插入的时间戳,例如是否有可能查询索引返回时间戳,毫秒为 100、110、120,但是当再次查询时,会出现一个较旧的值,例如100、110、115、120。
此外,如果索引被读取一次,其中包含最新条目的时间戳 100,是否有可能稍后添加的另一个条目正好具有时间戳 100?
索引在后台实现为 tables,因此它们具有与 tables 相同的一致性保证。引用的 table 更新时索引也会同步更新,所以应该不会出现这种不一致的索引视图。
不保证提交时间戳值是唯一的。写入非重叠字段集的事务可能具有相同的时间戳。写入重叠字段集的事务具有唯一的时间戳。
更多信息,请参考以下文档:
https://cloud.google.com/spanner/docs/commit-timestamp
Spanner 的魔力似乎是基于 https://cloud.google.com/spanner/docs/true-time-external-consistency 中描述的全局单调递增时钟的想法。我有兴趣具体了解这与索引的关系。
如果我有 table
| Stream Id | Category | Timestamp |
…其中时间戳创建为提交时间戳,并带有二级索引(类别,时间戳 DESC):
查询此索引的人是否可能看到“乱序”插入的时间戳,例如是否有可能查询索引返回时间戳,毫秒为 100、110、120,但是当再次查询时,会出现一个较旧的值,例如100、110、115、120。
此外,如果索引被读取一次,其中包含最新条目的时间戳 100,是否有可能稍后添加的另一个条目正好具有时间戳 100?
索引在后台实现为 tables,因此它们具有与 tables 相同的一致性保证。引用的 table 更新时索引也会同步更新,所以应该不会出现这种不一致的索引视图。
不保证提交时间戳值是唯一的。写入非重叠字段集的事务可能具有相同的时间戳。写入重叠字段集的事务具有唯一的时间戳。
更多信息,请参考以下文档: https://cloud.google.com/spanner/docs/commit-timestamp