2011-11-23 42 views
3

真是一個非常簡單的問題。查詢在實例中是否一致?跨實例的高複製數據存儲一致性

我明白,以下查詢,我可能會錯過一些新的put實體。

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

但是,它是安全的假設,一旦實體從該查詢返回的,它總是會被它返回(忽略了一個事實,它可能不會在第20)

如果是這樣,它延伸到同一實體的其他查詢(使用不同的指數)

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

回答

3

你做手術什麼情況下,從對結果毫無影響 - 所有實例查詢相同一組數據存儲服務器。

一旦新的實體(或對實體的修改)出現在查詢結果中,就可以假定它將爲將來的所有查詢執行操作。這並不意味着該實體將出現不同的查詢,但應包括它。

+0

我有一種感覺,可能是這種情況,但最好能確定;) – Amerdrix

+0

@Nick你們用什麼來編寫HRD?量子物理學 !? ;-)。任何人如何寫一個可持續發展的模型,在任何時刻他都不能相信他所看到的數據是最符合數據的?我想它適用於大規模的搜索索引,但對於日常的數據應用程序,這是非常有問題的。 –

+0

這不是量子火箭手術,這是與大規模分佈式系統有關的警告之一。一個事件(比如數據存儲更新)不可能同時發生,因此會有比其他地方更晚通知的地方。該更新將最終**到達網絡中的所有節點,並且這是建立在一致性模型上的假設。 – Xion

相關問題