一、有沒有什么基于postgresql的newsql
只關(guān)心外部接口的話:CockroachDB, YugaByte DB。降低點(diǎn)要求的話,比如MPP數(shù)據(jù)庫(kù):開源的Greenplum,擴(kuò)容可以在線進(jìn)行,但是需要人工介入。最“官方”的的版本應(yīng)該是 PostgreSQL-XL,也是更新的比較及時(shí)的橫向擴(kuò)展版本,基本能跟上主流版本升級(jí)。
重點(diǎn)介紹一下CockroachDB:
說明:
構(gòu)建于事務(wù)處理及強(qiáng)一致性KV存儲(chǔ)上的分布式SQL數(shù)據(jù)庫(kù),支持水平擴(kuò)展、自動(dòng)容錯(cuò)處理、強(qiáng)一致性事務(wù),并且提供SQL接口用于數(shù)據(jù)處理,是Google?Spanner/F1的開源實(shí)現(xiàn)。?CockroachDB適用于應(yīng)用對(duì)數(shù)據(jù)要求精確、可靠、完全正確的場(chǎng)景,支持自動(dòng)復(fù)制、均勻分布、基于極小配置的數(shù)據(jù)恢復(fù),可用于分布式的、可復(fù)制的聯(lián)機(jī)事務(wù)處理(OLTP),多數(shù)據(jù)中心的部署,私有云的基礎(chǔ)構(gòu)建,它不適用于讀少寫多的場(chǎng)景,可以用內(nèi)存數(shù)據(jù)庫(kù)來代替,也不適用于復(fù)雜的join查詢,重量級(jí)的數(shù)據(jù)分析及聯(lián)機(jī)分析處理(OLAP)。
特性:
支持PostgreSQL
對(duì)標(biāo)準(zhǔn)SQL支持較完善
較穩(wěn)定
延伸閱讀:
二、TiDB和Cockroach之間的區(qū)別
1.用戶界面和生態(tài)系統(tǒng)盡管TiDB和CockroachDB都支持SQL,但TiDB與MySQL協(xié)議兼容,而Cockroach選擇PostgreSQL。您可以使用任何MySQL客戶端直接連接到TiDB服務(wù)器。
2.體系結(jié)構(gòu)整個(gè)TiDB項(xiàng)目在邏輯上分為兩部分:無狀態(tài)SQL層(TiDB)和分布式存儲(chǔ)層(TiKV)。由于TiDB建立在TiKV之上,開發(fā)人員可以根據(jù)自己的業(yè)務(wù)自由選擇使用TiDB或TiKV。如果您只需要分布式鍵值數(shù)據(jù)庫(kù),則可以單獨(dú)使用TiKV以獲得更高的性能和更低的延遲。
總之,我們的系統(tǒng)是高度分層和模塊化的,而CockroachDB是一個(gè)P2P系統(tǒng)。我們系統(tǒng)的設(shè)計(jì)導(dǎo)致我們使用兩種編程語言:Go?for?TiDB和Rust?for?TiKV以提高存儲(chǔ)性能。
并且受益于高度分層的架構(gòu),我們構(gòu)建了另一個(gè)項(xiàng)目[1],以便在TiDB?/?TiKV之上運(yùn)行Apache?Spark來回答復(fù)雜的OLAP查詢。它利用了Spark平臺(tái)和分布式TiKV集群的優(yōu)勢(shì)。
3.事務(wù)模型盡管CockroachDB和TiDB都支持ACID事務(wù),但TiDB使用了Google的Percolator引入的模型。該模型的關(guān)鍵特性是它需要一個(gè)獨(dú)立的時(shí)間戳分配器。與Spanner一樣,TiDB中的每個(gè)事務(wù)都有一個(gè)時(shí)間戳來隔離不同的事務(wù)。
CockroachDB使用的模型類似于Google在其論文中描述的TrueTime?API。然而,與Google不同,CockroachDB沒有構(gòu)建原子鐘和GPS接收器來保持不同數(shù)據(jù)中心的時(shí)間一致。相反,它使用NTP進(jìn)行時(shí)鐘同步,這導(dǎo)致了不確定錯(cuò)誤的問題。為了解決這個(gè)問題,CockroachDB采用了混合邏輯時(shí)鐘(HLC)算法。
4.編程語言TiDB使用Go作為SQL層,使用Rust作為存儲(chǔ)引擎層。由于Go具有垃圾收集器(GC)和運(yùn)行時(shí),我們認(rèn)為調(diào)整性能將花費(fèi)我們幾天的時(shí)間。因此,我們對(duì)TiKV使用Rust,一種靜態(tài)語言。它的表現(xiàn)要好得多。CockroachDB只使用Go。