Acid

Google Cloud Spanner 唯一索引一致性

  • February 17, 2017

據我了解,Google Cloud Spanner 是全球一致的,而且速度也很快。

假設我有一個帶有唯一username欄位的表。

  • 美國的使用者 A 將使用者插入johndoe到美國 Spanner 節點
  • 中國使用者 B 將使用者插入johndoe中國 Spanner 節點

其中一個失敗了嗎?如果不是,查詢速度有多快?還是他們都成功了,但後來決定其中一個是重複的?還是使用 UNIQUE 欄位寫入到 1 個伺服器?

謝謝!

首先,目前沒有跨大陸執行 Cloud Spanner 的選項,儘管 Google 的內部 Spanner 可以。然而,答案仍然相同,只是寫入延遲等在區域(多區域)和全球(多大陸)配置中有所不同。

這裡的訣竅是 Spanner 不會插入“節點”,而是嘗試在大多數節點之間達成共識。由於我們總是執行奇數個節點,因此其中一個將首先達成共識並阻止另一個。該事務將被送出,然後另一個事務將失敗,因為該行已經存在。

Eric Brewer 在最近的這篇文章中很好地概述了在這種情況下如何實現一致性:Spanner、TrueTime 和 CAP 定理

引用自:https://dba.stackexchange.com/questions/164726