分布式SQL數據庫Cockroach DB遵循軟件產品以動物命名的模式。近日,該數據庫的第一個生產就緒版本1.0發布。
許多人將Cockroach DB視為Google Spanner的開源版本。后者是一個強一致性、橫向可擴展的RDBMS,它起初是一個服務于谷歌服務的內部項目,近日加入了谷歌云。和NuoDB一樣,這些數據庫都致力于解決同樣的問題,那個NoSQL數據庫在過去十年中設法從不同角度解決的問題。高可用性、線性可擴展性、強一致性、運行中復制技術以及快速響應和呈指數增長的數據集,所有這些問題都是數據庫供應商數十年來致力于解決的問題。
NoSQL供應商采用的一種方法是放松關系型數據庫強加的部分約束,一致性、可用性或分區容錯性,就像CAP理論所描述的那樣。SQL支持即使存在,大多數時候也是受限的。
另一方面,有時稱為“NewSQL”數據庫的方法是從頭設計一種完全兼容SQL的數據庫系統,并且仍然設法滿足上述所有需求。
構建分布式數據庫的其中一個最大的挑戰是事件順序。一個事務中的有序操作可以確保讀取者和寫入者有一致的數據視圖。
根據谷歌發表的論文,Google Spanner使用了TrueTime概念中的GPS和原子鐘在幾毫秒內實現不同節點之間的同步。Cockroach的全局排序方法使用了他們在博客中描述的混合邏輯時鐘。據稱,兩種方法都違背了CAP理論的定律,就是在一個分布式系統中,我們無法通過稍微不同的實現同時保證一致性、高可用性和分區容錯性。
Cockroach的第一個生產就緒版本還提供了零宕機(在線)模式修改、次級索引和外鍵支持。在提供高可用性的同時,Cockroach還重點強調了一致性,使用每個數據集三個或三個以上的活動副本,所有這些副本都可以同時讀/寫。除了增加高可用性外,地理上分散的客戶端可以連接到最近的服務器進行寫入,確保每個客戶端的狀態在全球范圍內都是一致的,在這種情況下,該“多活可用性”模型也很有用。Cockroach的其中一個客戶是一家大型游戲公司,他們正積極地在生產環境中使用這項特性。Cockroach的主要客戶還包括百度,他們積極地用它處理每秒23000多次的寫入操作。
Cockroach DB的一大賣點是,它不需要重寫MVC代碼或者使用一些中間層翻譯ORM和數據庫查詢,因為它提供了面向許多流行框架(如Ruby on Rails、Hibernate、Python和Node的Sequelize)的連接器及示例代碼。GitHub上提供了詳細的架構圖,企業客戶可以獲得商業支持。復雜SQL聯合查詢還不夠優化,它的名字也讓許多用戶心情復雜,但這沒有阻止Cockroach于月初在紅點創投領投的B輪融資中獲得了2700萬美元。
查看英文原文:Cockroach DB Reaches 1.0