【问题标题】:High replication datastore consistency across instances跨实例的高复制数据存储一致性
【发布时间】:2011-11-23 04:36:15
【问题描述】:

真的是一个非常简单的问题。跨实例的查询是否一致?

我了解到,通过以下查询,我可能会错过一些新的put 实体。

messages = Message.all().filter('user =', current_user).fetch(20)

但是,是否可以安全地假设一旦从该查询返回一个实体,它总是会被它返回(忽略它可能不在前 20 个中的事实)

如果是,它是否扩展到同一实体的其他查询(使用不同的索引)

messages = Message.all().filter('user =', current_user)
                        .filter('posted >', old_date) .fetch(20)

【问题讨论】:

    标签: google-app-engine google-cloud-datastore


    【解决方案1】:

    您从哪个实例执行操作对结果绝对没有影响 - 所有实例都查询同一组数据存储服务器。

    一旦新实体(或对实体的修改)出现在查询结果中,您可以假设它将在该查询的所有未来执行中这样做。不过,这并不意味着实体会出现在应该包含它的不同查询中。

    【讨论】:

    • 我感觉可能是这样,不过最好确定一下;)​​
    • @Nick 你们用什么来写 HRD?量子物理学 !? ;-)。任何人都不能在任何时候都无法相信他看到的数据是最受数据影响的数据的可持续模型?我想它对于 MASSIVE 搜索索引来说是可以的,但对于日常数据应用程序来说这是非常有问题的。
    • 这不是量子火箭手术,而是与大规模分布式系统相关的警告之一。一个事件(例如数据存储更新)不可能同时在所有地方发生,因此会有一些地方比其他地方更晚得到通知。更新将最终到达网络中的所有节点,这是构建一致性模型的假设。
    • @ShayErlichmen 您始终可以通过执行一致的获取或在事务中工作来获取记录的最新副本。但请注意,在事务之外,即使使用高度一致的数据库,您也不能保证您拥有最新的数据 - 因为一旦您完成获取它,就可能有人对其进行修改。
    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多