mysql nosql sqlite_自己做了一个轻量级的 NoSQL 数据库
給大家介紹一個(gè)個(gè)人作品,叫 PoloDB,一個(gè)非常輕量級(jí)的 NoSQL 數(shù)據(jù)庫(kù),有著類似 MongoDB 的 API,主打幾個(gè)特性:
輕量級(jí)
沒有像 MySQL 那樣的獨(dú)立進(jìn)程,它可以編譯成靜態(tài)庫(kù)或者動(dòng)態(tài)庫(kù),集成在你的應(yīng)用里面,像 SQLite 一樣。
只需要很少資源就能夠啟動(dòng),不像 MongoDB,需要很強(qiáng)大的電腦,很適合分發(fā)到用戶的設(shè)備上去。一般來說,用戶的設(shè)備的配置不像服務(wù)器那么強(qiáng)大。比如你想在普通用戶的 PC 甚至手機(jī)上運(yùn)行一個(gè)重量級(jí)數(shù)據(jù)庫(kù),幾乎不可能。如果一個(gè)客戶端需要一個(gè)數(shù)據(jù)庫(kù),那么就需要這種輕量級(jí)的數(shù)據(jù)庫(kù)。
在磁盤上就只有一個(gè)文件,很容易傳輸、分發(fā)、備份。不需要再打包,導(dǎo)出。
可移植性
PoloDB 是用 Rust 寫的,可以運(yùn)行在大多數(shù)平臺(tái)上。目前來說,我已經(jīng)讓它支持了 X86 上的 macOS,Linux 和 Windows 。之后,支持移動(dòng)平臺(tái)( iOS/Android )也在計(jì)劃之中。像樹莓派、龍芯、M1,應(yīng)該也沒問題。
PoloDB 還支持非常豐富的語言綁定。C/C++ 和 Rust 可以直接使用。現(xiàn)在已經(jīng)可以通過 Python 和 Node.js 來使用 PoloDB 了,適配層已經(jīng)開發(fā)完。以后越來越多語言可以接入。
靈活性
NoSQL 數(shù)據(jù)庫(kù),可以像 MongoDB 一樣使用,很靈活。數(shù)據(jù)操作讀寫都是通過 JSON,不需要?jiǎng)?chuàng)建 schema,打開數(shù)據(jù)庫(kù)直接可以插入數(shù)據(jù)。
現(xiàn)在的應(yīng)用都迭代非常快,如果需要一種非常靈活,可以快速支持各種需求的數(shù)據(jù)庫(kù),像 PoloDB 這種 NoSQL 就很合適。
功能齊全
雖然說是輕量級(jí)的數(shù)據(jù)庫(kù),但是一個(gè)數(shù)據(jù)庫(kù)該有的功能,PoloDB 也不會(huì)落下。比如說,現(xiàn)在已經(jīng)支持原子提交(事務(wù))。以后像數(shù)據(jù)索引這一類數(shù)據(jù)庫(kù)該有的功能也會(huì)慢慢提供。之后通過拓展 API,會(huì)有越來越多的功能加進(jìn)來,比如數(shù)據(jù)加密、數(shù)據(jù)備份、數(shù)據(jù)處理等等,有很大的想象空間。當(dāng)然這些拓展功能都是可選的,因?yàn)橐3謹(jǐn)?shù)據(jù)庫(kù)本身是輕量級(jí)的。
我現(xiàn)在看到很多人,很多應(yīng)用喜歡把數(shù)據(jù)存到 JSON 文件里面。有了 PoloDB 之后,可能就會(huì)更加優(yōu)雅。除了可以用上數(shù)據(jù)庫(kù)的功能,也可以防止一下子把大量數(shù)據(jù)讀到內(nèi)存。因?yàn)?PoloDB 里面通過自身結(jié)構(gòu)可以只讀取你需要的那一部分?jǐn)?shù)據(jù),對(duì)性能大有益處。寫入也是同理的。
開源
現(xiàn)在來說這是我的一個(gè)業(yè)余的個(gè)人項(xiàng)目,我都是用下班時(shí)間來寫的。代碼都開源在 Github 上面。大家喜歡的話,可以自行下載、review 里面的實(shí)現(xiàn)細(xì)節(jié)。我感覺 PoloDB 還是一個(gè)蠻有意思的項(xiàng)目,所以源碼也和大家分享。最重要的,還是希望和大家交流。
當(dāng)然了,這是我?guī)讉€(gè)月前開始開發(fā)的項(xiàng)目,現(xiàn)在還是一個(gè)很早期的階段,但是也已經(jīng)基本可以跑起來了。這個(gè)項(xiàng)目看起來很精簡(jiǎn)、很輕量,但是里面實(shí)現(xiàn)的細(xì)節(jié)并不簡(jiǎn)單。接下來還有非常多的工作要做,比如寫一些解釋它工作原理的文檔,寫很多嚴(yán)格的單元測(cè)試,給各種平臺(tái)、語言做適配。歡迎大家試用,提 issue 和 MR 。
總結(jié)
以上是生活随笔為你收集整理的mysql nosql sqlite_自己做了一个轻量级的 NoSQL 数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: echarts 折线图悬停拐点大小不变_
- 下一篇: python实现矢量分级渲染_用 Pyt