OrioleDB是PG的一個新存儲引擎,為世界上最受歡迎的數(shù)據(jù)庫平臺帶來一種現(xiàn)代化數(shù)據(jù)庫容量、功能和性能方法。
它以擴展的形式組成,建立在新的表訪問方法框架以及其他表中PG擴展接口之上。通過擴展和增強當(dāng)前的表訪問方法,OrioleDB為未來更強大的存儲模型打開了大門,這些模型對云和現(xiàn)代硬件架構(gòu)進行了優(yōu)化。目前是標(biāo)準(zhǔn)的PG許可。
1)專為現(xiàn)代硬件而設(shè)計。OrioleDB的設(shè)計針對數(shù)十個和上百CPU內(nèi)核現(xiàn)代服務(wù)器,避免CPU瓶頸,提供了針對現(xiàn)代存儲技術(shù),例如SSD和NVM,的使用方法。
2)減少維護需求。實現(xiàn)了undo log和page-mergins的概念,消除了對專用垃圾回收進程的需要。此外,還實現(xiàn)了默認的64位事務(wù)標(biāo)識符,從而消除了眾所周知的回卷問題
3)分布式設(shè)計。實現(xiàn)了一個支持并行回放的行級WAL日志。此日志架構(gòu)針對基于RAFT共識的復(fù)制進行優(yōu)化,允許active-active多主。
OrioleDB關(guān)鍵技術(shù)差異:
1)無緩沖區(qū)映射和無鎖page讀取。OrioleDB內(nèi)存中page直接連接到存儲層的頁。消除了對緩沖區(qū)映射及相關(guān)瓶頸。此外,內(nèi)存中頁面讀取不涉及原子操作。這些設(shè)計決策共同將PG的垂直擴展性提升到了一個全新的水平。
2)MVCC基于UNDO日志。舊版本的元組不會導(dǎo)致主存儲系統(tǒng)膨脹,而是將其放逐到undo鏈的undo日志中。頁級別的undo記錄允許系統(tǒng)很方便地盡快回收已刪除元組占用的空間。大多數(shù)情況下,這些機制與page-mergins一起消除了膨脹。也不需要對表進行專門的VACUUM,從而消除了系統(tǒng)性能下降和數(shù)據(jù)庫中斷的一個重要且常見的原因。
3)copy-on-write檢查點和行級WAL。OrioleDB利用copy-on-write檢查點,每時每刻都提供結(jié)構(gòu)上一致的數(shù)據(jù)快照。這對現(xiàn)代SSD很友好,并允許行級WAL日志記錄。反過來,行級WAL日志記錄很容易并行化(已做),緊湊且適合active-active多主(計劃)。
狀態(tài)
當(dāng)前僅alpha狀態(tài),僅推薦測試,不推薦生產(chǎn)環(huán)境使用。
安裝
需要PG14、libzstd和python3.5+及其testgres包。編譯安裝方法:

$ cd orioledb
$ make USE_PGXS=1
$ make USE_PGXS=1 install
$ make USE_PGXS=1 installcheck
啟動前,在postgresql.conf中配置庫文件:
shared_preload_libraries = 'orioledb.so'
也可以通過SQL:
CREATE EXTENSION orioledb;
創(chuàng)建表方法:
CREATE TABLE table_name (...) USING orioledb;
-
存儲
+關(guān)注
關(guān)注
13文章
4636瀏覽量
89159 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
10010瀏覽量
90319 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3982瀏覽量
67516
發(fā)布評論請先 登錄
K8s存儲類設(shè)計與Ceph集成實戰(zhàn)
云原生環(huán)境里Nginx的故障排查思路
從 Java 到 Go:面向?qū)ο蟮木奕伺c云原生的輕騎兵
云原生在汽車行業(yè)的優(yōu)勢
云原生AI服務(wù)怎么樣
云原生LLMOps平臺作用
如何選擇云原生機器學(xué)習(xí)平臺
東方通聯(lián)合openEuler社區(qū)即將開啟云原生開源中間件 Meetup北京站
構(gòu)建云原生機器學(xué)習(xí)平臺流程
什么是云原生MLOps平臺
梯度科技入選2024云原生企業(yè)TOP50榜單
軟通動力榮登2024云原生企業(yè)TOP50榜單
云原生和數(shù)據(jù)庫哪個好一些?
k8s微服務(wù)架構(gòu)就是云原生嗎?兩者是什么關(guān)系
k8s云原生開發(fā)要求

OrioleDB:構(gòu)建現(xiàn)代云原生存儲引擎
評論