新聞中心
這篇文章本來是昨天要發(fā)的,因?yàn)樯习嗦飞嫌兴迹缘焦竞笈R時(shí)寫了一篇發(fā)出了。這兩天經(jīng)常有朋友問我,兒子高考怎么不回家陪陪。十分感謝這些熱心的朋友,說實(shí)在的,兒子高考還真沒啥可陪的,上周日返校后今天考完才離開學(xué)校。不過今天怎么都得在化學(xué)考試結(jié)束前趕到校門口去接一下,所以今天上午我就回深圳了。

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供網(wǎng)站制作、成都網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)公司將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
AWS Aurora的出現(xiàn)讓人眼前一亮,這種云原生生態(tài)的數(shù)據(jù)庫產(chǎn)品大大簡化了用戶數(shù)據(jù)庫使用門檻,只不過Aurora沒有線下版本,因此也很難進(jìn)入尋常百姓家了。前陣子我一個(gè)客戶也和我討論了Serverless Database的問題,他們企業(yè)中存在數(shù)百個(gè)規(guī)模不大,重要性也不高的系統(tǒng),數(shù)據(jù)庫系統(tǒng)的建設(shè)與運(yùn)維管理一直占用了大量的企業(yè)IT資源,能不能想個(gè)辦法,用Serverless Database來替代現(xiàn)在的云上的大量的小型MYSQL RDS實(shí)例。最好是計(jì)算可以放到k8s里,數(shù)據(jù)可以持久化到S3的。
正好前幾天群里有個(gè)朋友提到Neon Database這個(gè)開源數(shù)據(jù)庫,我就簡單地研究了一下。
從Neon的官網(wǎng)上我們可以看到Neon是一個(gè)serverless的開源數(shù)據(jù)庫,可以作為AWS Aurora Postgres的替代。它對PG進(jìn)行了存算分離改造,將PG的存儲層改造為一個(gè)分布式的集群。
經(jīng)過對PG的架構(gòu)進(jìn)行重構(gòu)后,Neon的計(jì)算單元是部署在k8s pods中的postgresql兼容SQL引擎,應(yīng)用可以通過PG客戶端或者PG兼容的JDBC/ODBC引擎連接計(jì)算單元來訪問數(shù)據(jù)庫。Neon可以為每個(gè)租戶創(chuàng)建一個(gè)獨(dú)立的數(shù)據(jù)庫實(shí)例,其SQL引擎跑在K8S pods里,當(dāng)有會話訪問數(shù)據(jù)庫實(shí)例的時(shí)候,容器被激活,向外提供服務(wù)。當(dāng)一段時(shí)間內(nèi)沒有會話訪問數(shù)據(jù)庫的時(shí)候,POD會被清理,從而回收資源。Neon目前支持PG 14/PG15,與原生態(tài)的PG保持極高的兼容性,支持大量的PG插件。
Safekeeper集群:負(fù)責(zé)數(shù)據(jù)庫的持久化。PostgreSQL將預(yù)寫日志(WAL)流式傳輸?shù)絊afekeepers,Safekeepers持久地存儲WAL,直到它被Pageserver處理并上傳到云存儲。同時(shí)WAL也可以在對象存儲中持久化保存。如果Safekeeper可以把數(shù)據(jù)存儲在高性能SSD上,那么數(shù)據(jù)修改可以快速落盤,實(shí)現(xiàn)較大并發(fā)的數(shù)據(jù)寫入。
Pageserver:負(fù)責(zé)處理讀取請求。為此, Pageserver將傳入的 WAL 流處理為自定義存儲格式,使所有page版本都易于訪問。Pageserver還將數(shù)據(jù)上傳到云對象存儲,并按需下載數(shù)據(jù)。同時(shí),Pageserver還承擔(dān)了一個(gè)緩沖層,存儲了經(jīng)常會被數(shù)據(jù)庫訪問的較熱的PAGE。
Neon 使用 S3 等云對象存儲進(jìn)行長期數(shù)據(jù)存儲。存儲的數(shù)據(jù)是靜態(tài)加密的。持久化的數(shù)據(jù)和不怎么訪問的數(shù)據(jù)頁存儲在S3中,價(jià)格低廉,容量巨大,擴(kuò)展方便的對象存儲為持久化數(shù)據(jù)提供了有效的存儲。
在這個(gè)架構(gòu)中,Safekeepers可以被認(rèn)為是一個(gè)超可靠的寫入緩沖區(qū),它保存最新的數(shù)據(jù),直到它被處理并上傳到云存儲。Safekeepers通過Paxos協(xié)議以確保可靠性。Pageserver還用作云存儲的讀緩存,提供對數(shù)據(jù)頁面的快速隨機(jī)訪問。在這個(gè)架構(gòu)中,已經(jīng)消除了bgwriter,因?yàn)槲锢鞵AGE已經(jīng)不需要寫入,而是完全通過WAL異步回放。
目前Neon已經(jīng)開放了公有云服務(wù),并且提供免費(fèi)試用,于是我在新加坡的Neon公有云免費(fèi)申請了一個(gè)數(shù)據(jù)庫。申請完畢后,就可以通過本地的psql客戶端連上去使用了。
我在上面創(chuàng)建了一個(gè)測試PG表連接的DEMO。然后測試一下幾個(gè)表連接的語句。
EXPLAIN ANALYZE SELECT count(*) FROM join1 j1 INNER JOIN join2 j2 ON j1.id = j2.id WHERE J1.ID>1 AND J1.ID<10;
128毫秒執(zhí)行時(shí)間,性能一般,不過還不算壞。
Neon 允許以與分支代碼相同的方式即時(shí)對數(shù)據(jù)進(jìn)行分支??梢钥焖偾医?jīng)濟(jì)高效地對數(shù)據(jù)進(jìn)行分支,用于開發(fā)、測試和各種其他目的,從而提高開發(fā)人員的工作效率并優(yōu)化持續(xù)集成和交付 (CI/CD) 管道。分支數(shù)據(jù)可以方便地通過云存儲的復(fù)制克隆來實(shí)現(xiàn)??梢詮漠?dāng)前或過去的狀態(tài)創(chuàng)建分支。例如,您可以創(chuàng)建一個(gè)分支,其中包含截至當(dāng)前時(shí)間點(diǎn)或更早時(shí)間點(diǎn)的所有數(shù)據(jù)。
分支與其原始數(shù)據(jù)隔離,因此您可以自由地使用它,修改它,或者在不再需要它時(shí)刪除它。對分支的更改是獨(dú)立的。分支及其父分支共享相同的歷史記錄,但在分支創(chuàng)建時(shí)會有所不同。對分支的寫入將另存為增量。創(chuàng)建分支不會增加父分支上的負(fù)載或以任何方式影響它,這意味著您可以隨時(shí)創(chuàng)建分支,而不會影響生產(chǎn)系統(tǒng)的性能。每個(gè) Neon 項(xiàng)目都是使用一個(gè)名為 的主分支創(chuàng)建的。您創(chuàng)建的第一個(gè)分支是從項(xiàng)目的主分支分支。后續(xù)分支可以從主分支或以前創(chuàng)建的分支上進(jìn)行。
我可以在管控臺上快速創(chuàng)建一個(gè)分支。如果創(chuàng)建一個(gè)branch僅僅為了備份,可以不創(chuàng)建compute endpoint,否則需要?jiǎng)?chuàng)建一個(gè)compute endpoint。我創(chuàng)建了一個(gè)分支,就可以用它來做一些其他的應(yīng)用了,比如用于測試或者研發(fā),亦或是交給審計(jì)部門去使用。每個(gè)compute endpoint都有一個(gè)獨(dú)立的pod來承載,可以作為一個(gè)獨(dú)立數(shù)據(jù)庫使用,系統(tǒng)會生成一個(gè)訪問連接串。
Neon總體來說看上去不錯(cuò),后續(xù)我們團(tuán)隊(duì)會進(jìn)行本地化部署和驗(yàn)證。不過Neon的歷史還比較短,功能也還比較簡單,可靠性也欲待驗(yàn)證。
目前Neon對備份和災(zāi)備的支持還比較簡單,數(shù)據(jù)的安全完全依靠云平臺和對象存儲來保障。這決定了Neon還很難承載關(guān)鍵性的大型應(yīng)用,不過企業(yè)中的一些小型數(shù)據(jù)庫應(yīng)用使用還是足夠的,其最大的好處是方便。
Neon是以Apache V2開源的,我們目前可以到GITHUB上去下載,項(xiàng)目名稱為NervanaSystems/neon。整個(gè)項(xiàng)目是用Rust開發(fā)的,其易讀性不錯(cuò),作為數(shù)據(jù)庫產(chǎn)品,性能應(yīng)該也沒問題。Neon使用Postgresql作為嵌入項(xiàng)目,目前Neon支持PG14/PG15兩個(gè)版本,有興趣的朋友可以去試試。Neon的出現(xiàn),將會大大豐富PG數(shù)據(jù)庫生態(tài),以此為基礎(chǔ)開發(fā)一個(gè)云原生數(shù)據(jù)庫產(chǎn)品也是可行的。
分享題目:Neondb-窮人的Aurora,你看明白了嗎?
網(wǎng)頁地址:http://www.dlmjj.cn/article/copjhes.html


咨詢
建站咨詢
