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