介绍一个叫PoloDB的个人作品。 一个非常轻量级的NoSQL数据库,具有类似于MongoDB的API,它以一些特性为中心:
轻量级
没有像MySQL这样的独立过程。 可以编译为静态库或动态库,并将其集成到APP应用程序中,就像SQLite一样。
可以用很少的资源启动。 需要功能强大的计算机,以便分发到用户的设备,如MongoDB。 一般来说,用户的设备不如服务器强大。 例如,尝试在普通用户的PC或手机上运行重量级数据库几乎是不可能的。 如果客户端需要数据库,则需要这样轻量级的数据库。
磁盘上只有一个文件,易于传输、分发和备份。 不需要重新包装、导出。
可移植性
PoloDB是用Rust编写的,可以在大多数平台上运行。 目前,我正在支持X86上的macOS、Linux和Windows。 此后,还计划支持移动平台(iOS/Android )。 像草莓馅饼、龙芯、M1,我觉得没问题。
PoloDB还支持非常丰富的语言绑定。 C/C和Rust可以直接使用。 Python和Node.js现在可以使用PoloDB,并开发了匹配层。 今后可以用越来越多的语言访问。
柔软性
NoSQL数据库可以像MongoDB一样使用,而且很灵活。 所有数据的读写都是通过JSON进行的。 不需要创建架构,打开数据库即可直接插入数据。
如果当前的APP应用程序需要一个迭代非常快、非常灵活、能够快速响应各种需求的数据库,则NoSQL (如PoloDB )就更好了。
功能齐全
虽说是轻量级数据库,但一个数据库中应该有的功能,PoloDB也不会掉下来。 例如,目前支持原子提交(事务)。 它还将逐渐提供数据库中应该存在的功能,如数据索引。 随后,API的扩展增加了越来越多的功能,包括数据加密、数据备份和数据处理,值得想象。 当然,为了保持数据库本身重量轻,这些扩展是可选的。
虽然现在看到很多人,但是很多APP喜欢将数据存储在JSON文件中。 如果有PoloDB的话,可能会更优雅。 不仅可以访问数据库,还可以防止将大量数据一口气读取到内存中。 PoloDB在性能方面有很大的优势,因为它可以在自己的结构中只读取部分必需的数据。 书写也是一样的。
开源
现在这是我业余的个人项目,我都是在下班时间写的。 代码是开源的,在Github上面。 如果大家喜欢,可以自己下载,查看review中的实现细节。 我觉得PoloDB还是一个相当有趣的项目,所以我也会和大家分享源代码。 最重要的是,我还是想和大家交流。
当然,这是我几个月前开始开发的项目,现在还处于初期阶段,但已经几乎可以跑了。 这个项目看起来合理轻便,但里面实现的细节并不简单。 今后有非常多的工作。 例如,编写说明其工作原理的文档,写很多严格的单元测试,适合各种平台和语言。 欢迎大家尝试。 列举issue和MR。