夜雨聆风学习资料网

ARTICLE · 1343656

只用 PostgreSQL,能同时把文档库、事件溯

只用 PostgreSQL,能同时把文档库、事件溯

只用 PostgreSQL,能同时把文档库、事件溯

最近做 .NET 选型,我盯上了个挺讨巧的组合:Marten + Wolverine。它能把文档库、事件溯源和消息队列全塞进 PostgreSQL。

起因是普通的下单接口。一上规模就变成写 MongoDB、事件库、关系库,再发 RabbitMQ。跨三套存储加一个消息中间件,麻烦全来了:前两步写完第三步失败怎么回滚?消息发了事务却回滚,下游收到“不存在的订单”;事务提交了消息没发出去,下游永远不知道有这单。为了补这些缝,团队写的补偿代码比业务逻辑还多。

解法很直接:别跨系统了,全写进同一个 PG 事务。Marten 不是 ORM,它靠 JSONB 和 GIN 索引,让 PG 同时当文档库和事件库。Wolverine 再把消息投递也拉进同一个事务——要么全成功,要么全回滚,那几道数据裂缝直接在数据库层消失。

这套组合最适合业务数据本来就在 PG、又需要完整历史回溯的系统。代价也很实在:绑定 PG、事件契约长期维护、投影重建吃资源、学习曲线更陡。纯 CRUD 后台管理系统硬上事件溯源,属于自己给自己加班。

想试的话,先挑个边界清晰的小模块,用“提交后杀进程”验证消息不丢,比读十篇介绍都管用。

原文只用 PostgreSQL,能同时把文档库、事件溯源和消息队列都做了吗?
作者提示: 个人观点,仅供参考
北京,1小时前,

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料