沒有物理時鐘的WAN全域性高一致性資料庫:FaunaDB
事務很難,分散式事務更難,WAN上的分散式事務是最終的老闆硬度。- 安迪帕夫洛
FaunaDB是一個分散式資料庫平臺,支援可序列化,外部一致(也稱為嚴格可序列化)事務。與Google Spanner或類似系統不同,FaunaDB不依賴物理時鐘同步來保持一致性。此外,與Google Percolator,FoundationDB或類似系統不同,FaunaDB不會對副本距離施加任何限制,並且在全球網際網路延遲時部署是實用的。
這篇文章描述瞭如何在FaunaDB中實現事務。我們將從一些背景開始,然後解釋核心協議如何保持跨地理距離的一致性。然後,我們討論FaunaDB架構的效能影響。
背景
FaunaDB更具體地說是一個Relational NoSQL資料庫平臺。術語“NoSQL”僅指介面; FaunaDB目前支援執行透明的過程介面,而不是宣告性SQL。
術語“關係”指的是資料模型,但FaunaDB除支援關係外還支援圖形和文件模型。它還呼叫了RDBMS的慣例保證:
具有可序列化隔離的ACID事務
跨副本的可線性化,一致的操作
與傳統的RDBMS不同,FaunaDB即使在地理上分佈也能保持這些保證。
可序列化隔離
可序列化隔離意味著系統可以並行處理許多事務,但最終結果相當於一個接一個地處理它們。對於大多數資料庫系統,訂單不是事先確定的。相反,事務是並行執行的,並且一些鎖定變體用於確保最終結果等同於某些序列順序。
FaunaDB中的預處理
FaunaDB的協議受到Calvin的啟發,在執行對資料庫的任何寫入之前決定此序列順序。對於每批並行事務,它們被插入到分散式預寫事務日誌中,並且FaunaDB執行引擎確保處理此批事務的順序等同於它們出現在這個預先生成的日誌中順序。
日誌中的每個事務都與實際時間相關聯。但是,與其他分散式資料庫不同,物理實時不是FaunaDB協議的核心元件,FaunaDB不依賴於跨伺服器的時鐘全域性同步。“FaunaDB時間”與實時之間的粗略對應僅僅是開發人員的事情,但不是自身操作約束。相反,“之前”和“之後”的概念完全取決於事務在分散式日誌中出現的順序。
FaunaDB可以從分散式日誌中的任何一點獲取“快照”,其中包括在該點之前出現在日誌中的所有事務的寫入,並且在此之後則不會寫入。例如,T4處的快照將包含事務T0-T4,但不包括之後的。
為了在日誌中的任意點快速生成快照,FaunaDB會保留每個記錄的多個版本。每個版本都使用timestamp進行註釋 - 時間戳。
客戶端可以將事務傳送到任何複製節點 - 包括只讀事務和更新資料庫中資料的事務。但是,整個FaunaDB部署只有一個事務日誌(banq注:類似區塊鏈哦)。複製節點必須就如何將新事務插入日誌達成共識,FaunaDB使用最佳化的Raft實現來達成共識。
相關文章
- 資料庫大牛李海翔詳解全域性讀一致性技術資料庫
- Redis與資料庫資料一致性Redis資料庫
- Golang 全域性sql資料庫連線GolangSQL資料庫
- 快取與資料庫的一致性快取資料庫
- 聊聊雲原生資料庫的一致性資料庫
- Redis和資料庫的資料一致性問題Redis資料庫
- 2.6.2 確定全域性資料庫名稱資料庫
- 保證Redis和資料庫資料一致性的方法Redis資料庫
- 快取與資料庫一致性快取資料庫
- 快速檢查資料庫一致性資料庫
- 如何在分散式架構下完美實現“全域性資料一致性”?分散式架構
- MySQL資料庫資料一致性比對的方案的探討MySql資料庫
- 快取與資料庫的雙寫一致性快取資料庫
- 如何實現資料庫讀一致性資料庫
- mysqldump備份時如何保持資料的一致性MySql
- 資料庫事務,原子性、一致性、隔離性、永續性資料庫
- 資料庫與快取資料一致性解決方案資料庫快取
- 圖資料庫——大資料時代的高鐵資料庫大資料
- 如何保證快取和資料庫的一致性?快取資料庫
- 資料庫和快取的一致性如何保證資料庫快取
- 資料庫與快取雙寫一致性資料庫快取
- 幽默:沒有資料庫的架構來了資料庫架構
- 如何保證mongodb和資料庫雙寫資料一致性?MongoDB資料庫
- 資料一致性(一) - 介面呼叫一致性
- 5、pgpool-II高可用性(一)資料庫的高可用性資料庫
- 資料庫高可用性簡史資料庫
- 寫資料庫同時發mq訊息事務一致性的一種解決方案資料庫MQ
- MySQL資料一致性MySql
- 有沒有完全自主的國產化資料庫技術資料庫
- [Redis] 02-快取和資料庫資料一致性問題Redis快取資料庫
- MySQL資料庫SYS CPU高的可能性分析MySql資料庫
- 高併發下的資料一致性保障(圖文全面總結)
- 資料庫沒有完美的儲存引擎資料庫儲存引擎
- 如何解決資料庫與快取的一致性問題資料庫快取
- 如何保證快取與資料庫的雙寫一致性?快取資料庫
- 使用 MaxScale 實現資料庫的高可用性和彈性資料庫
- 快取與資料庫一致性問題深度剖析快取資料庫
- 快取與資料庫雙寫一致性 深度分析快取資料庫