DuckDB 是一个 C++ 编写的单机版嵌入式分析型数据库。它刚开源的时候是对标 SQLite 的列存数据库,并提供与 SQLite 一样的易用性,编译成一个头文件和一个 cpp 文件就可以在程序中使用,甚至提供与 SQLite 兼容的接口,因此受到了很多人的关注。
我很久之前就开始关注 DuckDB,并在 2021-06-07 开始写第一行 duckdb-rs 的代码,在 一个多月后写了一篇博客介绍了构建这个库的过程,算是实现了第一个版本。到今天差不多2年的时间,前后发布了19个版本,收获了 200 多个star。
最近一年其实还有很多需求和想法去做优化,但是发现自己并没有那么多时间,收到的 issue 也越来越多。经过沟通,我会把这个库转给 DuckDB 官方来维护,相信 duckdb-rs 一定会发展得越来越好。同时也非常感谢 Mark 和 Hannes 愿意接手这个仓库并把它作为官方的 rust 客户端。
这篇博客总结下我维护的这段时间主要做的事,以及我认为可以改善的点,算是对过去的总结和对未来的憧憬。
这个库是 duckdb 的 rust 客户端,所以关注这个库的群体首先是认可 duckdb 的用户,其次因为他们是 rust 技术栈。下面我列举一些我认为是让这个库“成功”的一些关键点。
下面我挑选几个我认为比较关键的,并且不是我贡献的 MR:
我自己除了日常维护之外,实际上大的功能开发比较少,Support table function 算是一个,并且我认为基于 rust 写扩展远比基于 c/c++ 来写更简单,更安全!
因为精力有限,这个库还有一些问题需要解决:
从文档和接口上,要达到和 duckdb 一样的水准,还有不少工作要做。
这篇文章发布的时候,意味着我不再是 duckdb-rs 的维护者。但是这不代表着后续我不再给 duckdb-rs 贡献代码,我还是会继续关注 duckdb 和 duckdb-rs,并且在闲暇的时候贡献一些代码。
如果有时间还可以基于 duckdb-rs 做一些其他的项目,比如用 rust 给 duckdb 做一个向量数据库的扩展,或者基于 duckdb-rs 搭建一个存储的 server,主要是基于 arrow-flight 协议,如果再有时间还可以加上 raft 支持分布式。不知道有什么用,但是感觉是个很好玩的项目。也可以考虑做一个分布式数据处理的工具,用 duckdb 做中间数据的存储或者计算加速等。
DuckDB 是一个 C++ 编写的单机版嵌入式分析型数据库。它刚开源的时候是对标 SQLite 的列存数据库,并提供与 SQLite 一样的易用性,编译成一个头文件和一个 cpp 文件就可以在程序中使用,甚至提供与 SQLite 兼容的接口,因此受到了很多人的关注。
我很久之前就开始关注 DuckDB,并在 2021-06-07 开始写第一行 duckdb-rs 的代码,在 一个多月后写了一篇博客介绍了构建这个库的过程,算是实现了第一个版本。到今天差不多2年的时间,前后发布了19个版本,收获了 200 多个star。
最近一年其实还有很多需求和想法去做优化,但是发现自己并没有那么多时间,收到的 issue 也越来越多。经过沟通,我会把这个库转给 DuckDB 官方来维护,相信 duckdb-rs 一定会发展得越来越好。同时也非常感谢 Mark 和 Hannes 愿意接手这个仓库并把它作为官方的 rust 客户端。
这篇博客总结下我维护的这段时间主要做的事,以及我认为可以改善的点,算是对过去的总结和对未来的憧憬。
这个库是 duckdb 的 rust 客户端,所以关注这个库的群体首先是认可 duckdb 的用户,其次因为他们是 rust 技术栈。下面我列举一些我认为是让这个库“成功”的一些关键点。
下面我挑选几个我认为比较关键的,并且不是我贡献的 MR:
我自己除了日常维护之外,实际上大的功能开发比较少,Support table function 算是一个,并且我认为基于 rust 写扩展远比基于 c/c++ 来写更简单,更安全!
因为精力有限,这个库还有一些问题需要解决:
从文档和接口上,要达到和 duckdb 一样的水准,还有不少工作要做。
这篇文章发布的时候,意味着我不再是 duckdb-rs 的维护者。但是这不代表着后续我不再给 duckdb-rs 贡献代码,我还是会继续关注 duckdb 和 duckdb-rs,并且在闲暇的时候贡献一些代码。
如果有时间还可以基于 duckdb-rs 做一些其他的项目,比如用 rust 给 duckdb 做一个向量数据库的扩展,或者基于 duckdb-rs 搭建一个存储的 server,主要是基于 arrow-flight 协议,如果再有时间还可以加上 raft 支持分布式。不知道有什么用,但是感觉是个很好玩的项目。也可以考虑做一个分布式数据处理的工具,用 duckdb 做中间数据的存储或者计算加速等。