CockroachDB 設計思想

翻譯自 design

關(guān)于

本文檔是 Spencer Kimball 早期(2014)寫的設計文檔的升級版本椿访】迕剑可能不是很完整。如果需要更加詳盡的CockroachDB工作原理的說明术浪,建議閱讀體系結(jié)構(gòu)相關(guān)文檔

概述

CockroachDB 是一個分布式的SQL數(shù)據(jù)庫寿酌。最初的設計目標包括可擴展性胰苏、強一致性生存性(就像它的名字一樣)。CockroachDB 致力于在最小的延遲時間和人為干預下容許硬盤醇疼、物理機硕并、機架甚至數(shù)據(jù)中心的災難。CockroachDB 節(jié)點是對稱的秧荆;一個設計目標是以最少的配置且無需外界依賴進行同源部署(即使用同一個二進制文件)倔毙。
數(shù)據(jù)庫的入口是SQL接口。CockroachDB 集群中每一個節(jié)點充當一個客戶端SQL網(wǎng)關(guān)乙濒。SQL網(wǎng)關(guān)將客戶端SQL語句變換并執(zhí)行到 key-value(KV)操作陕赃,并能在集群上按需分發(fā)和返回結(jié)果給客戶端。CockroachDB 實現(xiàn)了一個單一颁股、龐大的有序鍵值對映射么库,其鍵值都是byte字符。
KV映射在邏輯上是由叫做range的keyspace的小片段組成的豌蟋。每一個range都由存儲在本地KV存儲引擎中的數(shù)據(jù)作支持(我們使用 RocksDB廊散,LevelDB的一個變體)。Range 的數(shù)據(jù)會被復制到一個可配置數(shù)量的額外 CockroachDB 節(jié)點中梧疲。Range 會被合并或切分以維持在是設定的大小允睹,默認為 64M。相對較小的尺寸可以加快節(jié)點的錯誤修復和節(jié)點幌氮、容量甚至讀寫負載的再平衡缭受。但是,這個尺寸必須和系統(tǒng)壓力平衡该互,以便有更多range來管理米者。

CockroachDB 實現(xiàn)了水平可伸縮性

  • 增加更多節(jié)點并通過集群中每個節(jié)點的存儲量來增加集群的容量(由可配置的復制因子來切分),理論上可以擴大至4E字節(jié)的邏輯數(shù)據(jù)量宇智;
  • 客戶端查詢可以被發(fā)送到集群中任意的節(jié)點蔓搞,且查詢會被獨立操作(w/o 沖突),這意味著總吞吐量是影響集群中節(jié)點數(shù)量的線性因素随橘。
  • 查詢操作會被分發(fā)(參考:分布式 SQL),因此單次查詢操作的總吞吐量可以通過增加更多節(jié)點來擴大机蔗。

CockroachDB 實現(xiàn)了強一致性

  • 在每個鍵值range中同步復制數(shù)據(jù)時使用分布式一致性的協(xié)議蒲祈。我們選擇使用 Raft 一致性算法甘萧;所有的一致性狀態(tài)都存儲在 RocksDB 中。
  • 單一或批量地突變到單個 range 可以通過range的Raft實例進行調(diào)節(jié)梆掸。Raft保證了ACID語義扬卷。
  • 邏輯上的突變會影響多個range使用分布式事務的語義。CockroachDB 使用了一個高效的 non-locking distributed commit(非鎖定分布式提交) 協(xié)議酸钦。

CockroachDB 實現(xiàn)了強生存性

  • range 副本可以共同定位在一個單獨的數(shù)據(jù)中心以達到較低的延遲和降低磁盤或機器的故障率怪得。其可以進行分布式的部署以承受交換機的故障。
  • range 副本可以部署在跨越不同地域的數(shù)據(jù)中心以承受網(wǎng)絡钝鸽、電力甚至更大的災難場景帶來的后果汇恤,比如(e.g. { US-East-1a, US-East-1b, US-East-1c }, { US-East, US-West, Japan }, { Ireland, US-East, US-West}, { Ireland, US-East, US-West, Japan, Australia })。

CockroachDB 提供了快照隔離級別(snapshot isolation 簡稱SI)語義和序列化快照隔離級別(serializable snapshot isolation簡稱SSI)語義拔恰,容許外部一致性因谎、無鎖定讀寫—--從歷史快照時間戳和從當前系統(tǒng)時間讀寫(系統(tǒng)時間指從時間設備如:鐘表、電腦等計時設備等讀到的時間值颜懊,它是我們對真實時間的度量值财岔,但跟真實時間總是不可能完全一致)。SI隔離級別提供無鎖定讀寫但會產(chǎn)生寫偏序(譯注:因為每個事務在更新過程中看不到其他事務的更新結(jié)果河爹,所以可能造成各個事務提交之后的最終結(jié)果違反了一致性)匠璧。SSI隔離級別消除了寫偏序,但在競爭頻繁的系統(tǒng)中引起了性能的下降咸这。SSI 隔離級別是默認的隔離級別夷恍,用戶必須有意識地決定是否用性能換取正確性。CockroachDB 實現(xiàn)了嚴格一致性(線性一致性)的一種有限形式媳维,為任一觀察者或觀察者鏈提供有序化酿雪。類似于 Spanner 目錄,CockroachDB 允許對任意數(shù)據(jù)地域進行配置侄刽。允許配置復制因子指黎、存儲設備類型、數(shù)據(jù)中心位置州丹,以優(yōu)化性能或者提高可用性醋安。但與 Spanner 不同,地域是整體的墓毒,不允許在實體組層面進行更細粒度數(shù)據(jù)的移動吓揪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市所计,隨后出現(xiàn)的幾起案子磺芭,更是在濱河造成了極大的恐慌,老刑警劉巖醉箕,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钾腺,死亡現(xiàn)場離奇詭異,居然都是意外死亡讥裤,警方通過查閱死者的電腦和手機放棒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來己英,“玉大人间螟,你說我怎么就攤上這事∷鸶兀” “怎么了厢破?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長治拿。 經(jīng)常有香客問我摩泪,道長,這世上最難降的妖魔是什么劫谅? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任见坑,我火速辦了婚禮,結(jié)果婚禮上捏检,老公的妹妹穿的比我還像新娘荞驴。我一直安慰自己,他們只是感情好贯城,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布熊楼。 她就那樣靜靜地躺著,像睡著了一般能犯。 火紅的嫁衣襯著肌膚如雪鲫骗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天悲雳,我揣著相機與錄音挎峦,去河邊找鬼。 笑死合瓢,一個胖子當著我的面吹牛坦胶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晴楔,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼顿苇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了税弃?” 一聲冷哼從身側(cè)響起纪岁,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎则果,沒想到半個月后幔翰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漩氨,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年遗增,在試婚紗的時候發(fā)現(xiàn)自己被綠了叫惊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡做修,死狀恐怖霍狰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饰及,我是刑警寧澤蔗坯,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站燎含,受9級特大地震影響宾濒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘫镇,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一鼎兽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铣除,春花似錦谚咬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郎嫁,卻和暖如春秉继,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泽铛。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工尚辑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盔腔。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓杠茬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弛随。 傳聞我的和親對象是個殘疾皇子瓢喉,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容