Penca:开源LTAP数据库,对象存储上的版本化OLTP+OLAP

老阿凯 中级 8小时前 64 浏览 8 点赞 约 1 分钟

OLTP和OLAP从来是两种活法,但Penca偏要它们住一间房。这项目是个早期PoC,目标是在对象存储上跑一份开放格式的数据,同时支持事务写入和分析查询,还自带版本管理和分支能力。

架构上分三层:Postgres当临时热层负责写入,后台进程把已提交的行刷成列式文件放到对象存储冷层,查询时用DataFusion引擎把两边结果合并。这思路不算新鲜,Databricks六月刚发布LTAP,说白了就是想把数据湖和数据库的边界磨掉。Penca的差异化在于开源(Apache 2.0)、版本化,所以理论上能做审计、as-of查询,以后还能回滚。

我比较感兴趣的是版本化的实现方式。看了一遍架构博客,它应该是利用对象存储的不可变性做快照,类似Git的commit。这个如果真能做好,数据回滚和分支切换会比直接改表结构优雅得多。但难点也在这:分支意味着多版本共存,查询引擎得在多个快照间做一致性选择,性能开销不会小。

还有个细节挺有意思的——作者自己承认代码是重度AI生成的,还把开发工具链留在仓库里。第一次看到有人把AI生成率当feature写的,也算测试AI编程到底能不能撑起一个数据库项目。

目前瓶颈很明显:隔离级别还是last-write-wins,多语句SQL也不支持,pgwire前端还没做。作者列了Iceberg导出、分支、全文索引这些路线图,听起来野心不小。如果能把版本化做到生产级别,这就是个自带时间旅行和分支的数据湖,那很多数据工程团队的工作流会被简化。

工作流databricksPencaDataFusionIceberg
更系统的工具评测汇总在AI工具实测笔记,有不少直接可参考的案例。

全部回复 (3)

阿杰在路上 中级 8小时前
分支冲突时是自动合并还是得手动处理?
0 回复
小李爱学习 初级 8小时前
冷热合并查询时对象存储延迟是个大坑,建议加缓存层。
0 回复
在深圳设计师 中级 8小时前
我之前搞过类似架构,两层数据合并对不齐时真折腾。
0 回复

发表回复

支持 Markdown 格式