写点什么

完全可以使用 RDBMS 作为消息队列

  • 2014-10-09
  • 本文字数:779 字

    阅读完需:约 3 分钟

Lukas Eder JOOQ 母公司的创始人兼 CEO。近日,他针对《将数据库作为消息队列是一种反模式》一文的观点及其在 reddit 上引发的争论表达了看法。他认为,使用数据库作为消息队列不是一种反模式,理由如下:

  1. KISS 和 YAGNI 原则——如果使用 RDBMS 可以满足消息传递的需求,那么就不必花费时间和金钱引入一款复杂的消息队列工具;
  2. 事务性队列——即使使用成熟的消息队列工具,要实现事务性队列依然很复杂,而使用基于 RDBMS 的队列则可以避免事务处理的复杂性;
  3. 无需额外的运维工作——引入新的外部系统会增加运维成本;
  4. 如果已经使用了 Oracle 数据库,则可以直接使用其内置的队列 API Oracle AQ
  5. 以 RDBMS 为中心的应用程序更简单——数据的存在时间大于应用程序,比如, Paypal 从 Java 切换到 JavaScript ,但他们并没有替换掉所有的数据库。因此,如果 RDBMS 是系统的中心,那么在 RDBMS 中运行消息队列是一种选择。

但有位自称见过多个此类案例的读者列举了这种做法面临的几项挑战:

  1. 数据库没有有丢弃和限流策略,如果信息产生速度大于消费速度,那么消息表就会变得越来越大。
  2. 数据库表可以针对写优化,也可以针对读优化,但无法同时对两者进行优化。
  3. 数据库无法对一个数据项进行并发处理。
  4. 大批量的数据处理会产生长事务,事务越长锁的持有时间越长。

Lukas 承认,使用 RDBMS 作为消息队列有一些注意事项。但针对第三点,他提到,Oracle AQ 针对 FOR UPDATE 语句进行了扩展,提供了 FOR UPDATE SKIP LOCKED 语句。该语句允许对记录进行非阻塞式悲观锁定,提高了并发性。

另外,还有一位读者提到, Spring Integration 支持使用数据库存储队列消息,有兴趣的读者可以对此进行研究测试。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-09 03:341797
用户头像

发布了 1008 篇内容, 共 423.6 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

用友BIP,给软件插上AI翅膀,做实业务创新

用友BIP

智能体 ERP 数智化 用友BIP 业务创新

阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践

Apache Flink

大数据 实时计算 流式数仓 Apache Flink Apache Paimon

AI与人类合作:未来工作中最重要的技能是什么?

天津汇柏科技有限公司

人工智能 AI

提示词工程——AI应用必不可少的技术

不在线第一只蜗牛

人工智能 深度学习

“北京小茅台”华都酒业携手用友,开启数智营销新纪元

用友BIP

AI 智能体 用友BIP 数智营销

YDS重磅发布,用友BIP让开发者成就“十倍效能工程师”

用友BIP

AI 开发者 数智化 用友BIP YDS

YashanDB UNDO表空间管理

YashanDB

数据库 yashandb

阿里通义实验室语音团队负责人鄢志杰离职;苹果计划在 AirPods 上配备实时对话翻译功能丨日报

声网

直播精彩回顾 | DeepSeek驱动可观测性变革,解锁运维与AI融合新玩法

博睿数据

现代数据栈:秽土重生?——从 SAP x Databricks 看数据世界的轮回

tapdata

数据孤岛 现代数据栈 仓库原生 统一数据 SAP Databricks

YashanDB SWAP表空间管理

YashanDB

数据库 yashandb

用友与泰安市政府战略签约,打造数据产业合作新模式

用友BIP

智能体 数智化 用友BIP 数据产业合作

如何让你的应用在市场中脱颖而出?

HarmonyOS SDK

harmoyos

【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(链表)

码界西柚

数据库 redis Redis 核心技术与实战 redis 底层原理 挖掘底层原理

网站域名解析怎么更换DNS服务器?需要注意什么?

国科云

3FS系列(一):存储新纪元的开篇——3FS编译调优与部署的工程实践

九章云极DataCanvas

人工智能 DeepSeek 3FS

远控软件ToDesk收紧免费用户权益,免费使用时长再降33%

编程猫

鸿蒙WebSocket的使用竟如此简单

不在线第一只蜗牛

网络协议 websocket

DataKit APM 自动注入原理篇

观测云

APM

跨境贸易新领域:代购、反向海淘独立站与电商平台的竞争格局与战略抉择cssbuy

代码忍者

出海行动派 | 全球服务新征程!Bonree ONE海外版正式发布

博睿数据

从思考,到行动:由Manus爆火谈AI Agent

脑极体

AI

2025年,从全栈开发到低代码的生存博弈

秃头小帅oi

完全可以使用RDBMS作为消息队列_数据库_谢丽_InfoQ精选文章