沒有物理時鐘的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 確定全域性資料庫名稱資料庫
- 快取與資料庫一致性快取資料庫
- 快速檢查資料庫一致性資料庫
- 資料庫非一致性備份資料庫
- 如何在分散式架構下完美實現“全域性資料一致性”?分散式架構
- 沒有審計系統就沒有資料庫安全資料庫
- 鍵值資料庫與關聯式資料庫有沒有融合的可能?資料庫
- 資料庫事務,原子性、一致性、隔離性、永續性資料庫
- mysqldump備份時如何保持資料的一致性MySql
- navicat資料庫全域性關係視覺化資料庫視覺化
- 【全域性資料庫名、連線描述符】資料庫
- MySQL資料庫資料一致性比對的方案的探討MySql資料庫
- Oracle分散式系統中的全域性資料庫名Oracle分散式資料庫
- 如何實現資料庫讀一致性資料庫
- 快取與資料庫的雙寫一致性快取資料庫
- MySQL資料庫的高可用性分析MySql資料庫
- 資料一致性
- DBV,Analyze,Rman檢查資料檔案物理和邏輯一致性
- 有沒有完全自主的國產化資料庫技術資料庫
- 資料庫與快取資料一致性解決方案資料庫快取
- 什麼是備份資料庫?什麼是資料庫一致性備份和非一致性備份?資料庫
- 幽默:沒有資料庫的架構來了資料庫架構
- 資料庫與快取雙寫一致性資料庫快取
- python跨庫檢查資料一致性Python
- 資料庫和快取的一致性如何保證資料庫快取
- 如何保證快取和資料庫的一致性?快取資料庫
- 資料一致性(一) - 介面呼叫一致性
- 5、pgpool-II高可用性(一)資料庫的高可用性資料庫
- 資料庫高可用性簡史資料庫
- 資料庫名、例項名、資料庫域名、全域性資料庫名、服務名概念區分資料庫