本文來源:https://www.v2ex.com/t/727979
給你們介紹一個我的做品,叫 PoloDB,一個很是輕量級的 NoSQL 數據庫,有着相似 MongoDB 的 API,主打幾個特性:
輕量級
沒有像 MySQL 那樣的獨立進程,它能夠編譯成靜態庫或者動態庫,集成在你的應用裏面,像 SQLite 同樣。
只須要不多資源就可以啓動,不像 MongoDB,須要很強大的電腦,很適合分發到用戶的設備上去。通常來講,用戶的設備的配置不像服務器那麼強大。好比你想在普通用戶的 PC 甚至手機上運行一個重量級數據庫,幾乎不可能。若是一個客戶端須要一個數據庫,那麼就須要這種輕量級的數據庫。
在磁盤上就只有一個文件,很容易傳輸、分發、備份。不須要再打包,導出。
可移植性
PoloDB 是用 Rust 寫的,能夠運行在大多數平臺上。目前來講,我已經讓它支持了 X86 上的 macOS,Linux 和 Windows 。以後,支持移動平臺( iOS/Android )也在計劃之中。像樹莓派、龍芯、M1,應該也沒問題。
PoloDB 還支持很是豐富的語言綁定。C/C++ 和 Rust 能夠直接使用。如今已經能夠經過 Python 和 Node.js 來使用 PoloDB 了,適配層已經開發完。之後愈來愈多語言能夠接入。
靈活性
NoSQL 數據庫,能夠像 MongoDB 同樣使用,很靈活。數據操做讀寫都是經過 JSON,不須要建立 schema,打開數據庫直接能夠插入數據。
如今的應用都迭代很是快,若是須要一種很是靈活,能夠快速支持各類需求的數據庫,像 PoloDB 這種 NoSQL 就很合適。
功能齊全
雖說是輕量級的數據庫,可是一個數據庫該有的功能,PoloDB 也不會落下。好比說,如今已經支持原子提交(事務)。之後像數據索引這一類數據庫該有的功能也會慢慢提供。以後經過拓展 API,會有愈來愈多的功能加進來,好比數據加密、數據備份、數據處理等等,有很大的想象空間。固然這些拓展功能都是可選的,由於要保持數據庫自己是輕量級的。
我如今看到不少人,不少應用喜歡把數據存到 JSON 文件裏面。有了 PoloDB 以後,可能就會更加優雅。除了能夠用上數據庫的功能,也能夠防止一會兒把大量數據讀到內存。由於 PoloDB 裏面經過自身結構能夠只讀取你須要的那一部分數據,對性能大有益處。寫入也是同理的。
開源
如今來講這是個人一個業餘的我的項目,我都是用下班時間來寫的。代碼都開源在 Github 上面。你們喜歡的話,能夠自行下載、review 裏面的實現細節。我感受 PoloDB 仍是一個蠻有意思的項目,因此源碼也和你們分享。最重要的,仍是但願和你們交流。
固然了,這是我幾個月前開始開發的項目,如今仍是一個很早期的階段,可是也已經基本能夠跑起來了。這個項目看起來很精簡、很輕量,可是裏面實現的細節並不簡單。接下來還有很是多的工做要作,好比寫一些解釋它工做原理的文檔,寫不少嚴格的單元測試,給各類平臺、語言作適配。歡迎你們試用,提 issue 和 MR 。
Github 地址:
https://github.com/vincentdchan/PoloDB
本文分享自微信公衆號 - Rust語言中文社區(rust-china)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。git