App Engine 緩衝與資料一致性

來源:互聯網
上載者:User

資料一致性:

NDB由於是具有最終一致性特點的分布式資料存放區,因此在資料存放區時需要進行恰當的資料建模。在同一個實體集裡面,所有根實體(無 parent )的實體在 id 分配上保證不重複,具有相同 parent 的實體也保證不會出現重複 ID,換句話說 id 的相對唯一性是由 parent 決定的。同時,在使用 multi_get 時也必需是取同一 parent 的實體。

Ancestor 和按 id 查詢時保證一致性,但是對整個實體集的查詢不保證一致性,因為實體的寫入分兩個階段,提交階段和應用階段,第一階段中,CommitLog記錄成功即認為寫入成功,第二階段更新索引,在索引更新前非Ancestor或 id 查詢看不到結果,Ancestor 及 id 查詢即使索引未更新也能返回正確結果。

因此要正確使用 Ancestor 查詢,一個典型的情境:比如多個答案屬於一個問題,即可指定答案的 parent 為問題,添加新問題後立即查詢問題下的所有答案將總是能看到新答案,而使用索引的,針對全部回答的按時間排序的“最新答案”有可能看不到最新添加的答案(索引未更新)。

 

緩衝部分:

在新的NDB資料存放區中,GAE提代了兩級緩衝,1. InProcess 2. Memcache 一級緩衝只作用於當前請求過程,2級緩衝會在查詢時自動緩衝,並能在實體屬體改動後自動失效。但無論命中哪種緩衝,因為是按實體查詢次數計費的,因此對計費無影響,真黑 ~~~

因此有必要在程式中設計一層自己的 In-process 緩衝這樣可以省錢。在考慮以實體的類型+id 作為緩衝索引值時還應該考慮 parent 節點,以避免鍵衝突的可能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.