【问题标题】:Are commit timestamps in a Google Spanner index always added in order?Google Spanner 索引中的提交时间戳是否总是按顺序添加?
【发布时间】:2018-12-05 16:54:31
【问题描述】:

Spanner 的魔力似乎基于https://cloud.google.com/spanner/docs/true-time-external-consistency 中描述的全局单调递增时钟的概念。我有兴趣具体了解这与索引的关系。

如果我有一张桌子

| Stream Id | Category | Timestamp |

…其中时间戳创建为提交时间戳,并带有二级索引(Category,Timestamp DESC):

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

此外,如果索引被读取一次,其中包含最新条目的时间戳 100,是否有可能稍后添加另一个条目,时间戳正好为 100?

【问题讨论】:

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


    【解决方案1】:

    索引在底层实现为表,因此它们具有与表相同的一致性保证。当被引用的表更新时,索引也会同步更新,所以这种索引视图不一致的情况不应该出现。

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

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

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

    【讨论】:

    • 谢谢。我对这两个语句的交集特别感兴趣,例如即使以后不可能观察到 earler 时间戳,以后是否可以观察到 same 时间戳的更多行。为了清楚起见,我已将其分解为一个单独的问题,请参阅stackoverflow.com/questions/53649010/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2019-05-08
    • 2018-06-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多