跨地域并且支持事務的開源數據存儲項目:CockroachDB
CockroachDB是一個開源的數據存儲項目。受到Google的Spanner 項目的啟發,CockroachDB旨在打造一個開源的、可擴展、跨地域復制且兼容ACID的數據庫,這在當前的開源社區中還是非常少見的。
一直以來,NoSQL數據存儲都通過在多個數據中心之間進行異步復制來支持多數據中心的配置。這是在 MongoDB中所推崇的方式,這同樣也是 Riak, Cassandra 和 HBase中唯一可用的方式。然而,異步復制阻礙了在多個數據中心之間的一致性保證。此外,大多數第一代NoSQL數據存儲都無法支持任何跨鍵(key)的事務。近來,像FoundationDB 和 HyperDex這些新系統在一開始就被設計用來支持跨鍵的事務。然而,這些系統并不能很好地支持多數據中心的配置。
在這樣的背景下,Google在2012年公開了他們的Spanner系統,這是一個同時支持事務和多數據中心一致性的系統,該系統為這一領域打開了新的局面。Spanner的論文給大家帶來了啟發,但是一直都沒有人對其進行實現。直到CockroachDB團隊開啟了他們的開源項目,他們嘗試實現并復制Spanner中的那些富有挑戰的混合特性。
在規范的草案中,在Google參與 Colossus文件系統開發工作的 Spencer Kimball對 CockroachDB進行了描述,CockroachDB支持ACID的事務語義和版本化的值,并將其作為頭等特性。其主要的設計目標便是全局的一致性和生存能力,所以該數據存儲也由此得名(譯者注:Cockroach是蟑螂的意思,即打不死的小強)。… Cockroach實現了一個單一的、整體排序的map(鍵值映射),并且鍵和值都是字節字符串。
CockroachDB的事務特性由兩種方式提供。Kimball解釋說
如果邏輯上的一次變化所影響的鍵全部落在同一范圍(range)內,那么原子性和一致性可以由Raft算法來保障,這是最快的提交路徑。否則,會在受影響的范圍之間使用一個非阻塞的分布式提交協議。Cockroach提供了快照隔離(snapshot isolation,簡稱SI)和順序的快照隔離(SSI)語義…SSI是默認的隔離級別;客戶端必須有意識地在正確性和性能之間做出選擇。
該非阻塞分布式提交協議仍然處于發展之中,而Kimball則引用了悉尼大學和耶魯大學的論文,并且特別關注來自Yahoo! 的一篇論文,并將其作為實現SSI語義的潛在選擇。
當前的alpha版本提供了一個所需功能的非常小的子集。集群的初始化和加入、gossip網絡和一個基礎鍵值的REST API目前已經得到了支持。但是raft一致性算法、范圍的分裂或事務功能目前還沒有得到支持。該項目是由Go語言編寫的,而他們目前正在尋找代碼貢獻者。
來自:http://www.infoq.com/cn/news/2014/08/CockroachDB