自己做了一个轻量级的 NoSQL 数据库

2020-11-22 09:55:18 +08:00
 okcdz

给大家介绍一个个人作品,叫 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

7002 次点击
所在节点    程序员
44 条回复
llsquaer
2020-11-23 10:44:17 +08:00
最近也是在找类似的裤子 ... 先支持..
mlxj
2020-11-23 11:30:45 +08:00
可以
abersheeran
2020-11-23 14:27:13 +08:00
好东西!已经 Star 。
2han9wen71an
2020-11-23 16:55:58 +08:00
先给个 star

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/727979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX