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

mysql nosql sqlite_自己做了一个轻量级的 NoSQL 数据库相关推荐

  1. mysql 队列存储_GitHub - hongliangbest/QueueTask: 一个轻量级可拓展的队列任务、暂时支持mysql、redis等存储方式...

    QueueTask 一个轻量级可拓展的队列任务.暂时支持mysql.redis等存储方式 目录结构 |--Config/ 配置文件目录 |--Config.php 配置文件 |--Connection ...

  2. 用MySQl创建供应商标_建立一个供应商、零件数据库。其中供应商表S(Sno,Sname,Zip - 问答库...

    问题: [单选,共用题干题] 建立一个供应商.零件数据库.其中"供应商"表S(Sno,Sname,Zip,City)中的属性分别表示供应商代码.供应商名.供应商邮编.供应商所在城市 ...

  3. php mysql 框架_Medoo 轻量级的 PHP 数据库框架 - 文章

    Medoo 是一个轻量级的PHP数据库框架,提高开发效率,Medoo 需要 PHP 支持 PDO 扩展,请在配置文件中开启 PDO 扩展. 为什么选择 Medoo 非常的轻量 未压缩只有 34KB. ...

  4. linux c mysql 封装_本人对MYSQL C API做的一个封装,希望对linux C++程序员有点帮助,同时欢迎拍砖!...

    本人对MYSQL  C API做的一个封装,使用很简单,构造一个对象,就可直接执行SQL,但对于需返回结果的查询语句,对其数据集没做封装,仍需直接调用mysql c api对其进行处理,本人将下次完成 ...

  5. java做一个数据库网站,用javaSwing和mysql数据库做的一个登录页面

    用javaSwing和mysql数据库做的一个登录页面 用javaSwing和mysql数据库做的一个登录页面 一:首先在eclipse中新建一个java工程 二:然后新建一个包,并且在包中新建两个类 ...

  6. INNODB自增主键的一些问题 vs mysql获得自增字段下一个值

    今天发现 批量插入下,自增主键不连续了....... InnoDB AUTO_INCREMENT Lock Modes This section describes the behavior of A ...

  7. hadoop 依赖式job_每天一学:一个轻量级分布式任务调度框架 XXL-JOB

    概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 官方地址中文版:http://www.xux ...

  8. 如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库!

    作者 | 黄东旭 责编 | 郭   芮 我还清楚记得,五年前的这个时候,当时还在豌豆荚,午后与刘奇和崔秋的闲聊关于未来数据库的想象,就像一粒种子一样,到了今天看起来也竟枝繁叶茂郁郁葱葱,有点感慨.按照 ...

  9. bestpay学习 - - 一个轻量级的完全开源项目

    NUTZ  一个轻量级的完全开源项目 * 讲义:bestpay * 讲义创建:2018年6月13日10:49:22 设计背景 随着脚本语言所刮起的开发热潮,Java在Web开发领域逐渐露出疲态,而Ja ...

最新文章

  1. 精选Python开源项目Top10!
  2. java restfulapi 返回文件base64_Java反序列化:一次构造后Ysoserial Payload
  3. html怎么将旋转定位在中心,html – 定位旋转的div元素
  4. Linux学习笔记:touch新建文件、修改访问、改动时间
  5. linux内核编译及系统裁减
  6. 全球与中国光电通信芯片市场数据专项调研及竞争格局分析报告2022-2028年版
  7. tcl mysql_MySQL·TCL语言
  8. spring mvc学习(44):springMVC运行原理
  9. 关于C#序列化结果的长度获取
  10. 计算机应用基础案例实训教程,计算机应用基础案例式实训教程
  11. Android学习之布局管理器嵌套
  12. 中国基因工程行业市场供需与战略研究报告
  13. 根据输入参数创建xml模板
  14. 静态反编译工具IDA Pro 7 for Mac
  15. wap实现手机充话费
  16. [裴礼文数学分析中的典型问题与方法习题参考解答]4.5.1
  17. python小游戏井字棋(人机对战)
  18. kubeadm High availability cluster
  19. Java Telephony
  20. pyinstaller64位windows电脑打包32位exe 5500字超详细教程

热门文章

  1. MySQL事务的提交
  2. 透彻,在SpringBoot项目中使用Netty实现远程调用
  3. 一天搞定HTML----标签的嵌套规则06
  4. php单词出现频率,PHP编程计算文件或数组中单词出现频率的方法
  5. 实例分析C语言中strlen和sizeof的区别
  6. Java里的数组介绍
  7. esp32 micropython web服务器_ESP32 Arduino教程:Websocket server(服务器)
  8. java的model层实例_Struts 2.1.6 精简实例系列教程(3):新闻管理Model层的开发(整合iBatis)...
  9. php数组只保留键值,php合并数组并保留键值的实现方法
  10. 如何用RHEL System Role把Postfix安装和配置自动化?