2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

完全可以使用 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:341952
用户头像

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

关注

评论

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

openGauss数据库源码解析系列文章——SQL引擎源码解析(一)

HuggingGPT 强势来袭,LLM+ 专家模型,迈向更通用的AI

Zilliz

Zilliz Towhee ChatGPT LLM huggingface

大数据学习培训机构该怎么去选择

小谷哥

云数据库技术沙龙4月22日在杭州举办!

数据库小组

MySQL 阿里云 字节跳动 Clickhouse 玖章算术

openGauss社区用户委员会工作会议顺利召开

华中科技大学网络空间安全学院正式加入openGauss社区

openGauss社区三月运作报告

江苏智慧公厕:让厕所成为城市新名片

光明源智慧厕所

智慧园区

MobTech ShareSDK|如何从分享到回流

MobTech袤博科技

软件测试/测试开发丨基于 JMeter 完成 Dubbo 接口的测试

测试人

dubbo 软件测试 Jmeter 自动化测试 测试开发

车企外卷:一个关于智能手机的“围城故事”

脑极体

手机 车企

REST API 设计规范:最佳实践和示例

Apifox

程序员 协议 API 接口开发 REST API

不会吧?该不会还有企业没实现员工赋能吧!绝对是你没选低代码的问题!

加入高科技仿生人

知识管理 低代码 系统开发 员工赋能

除了价格降70%,关于对象存储预留空间你还需要了解这些

云布道师

云存储

别再吐槽公厕了!杭州智慧公厕解决方案带来惊喜

光明源智慧厕所

智慧城市

艾融软件正式加入openGauss社区

Node.js实现JWT应用到服务器

格斗家不爱在外太空沉思

node.js 三周年连更

艾融软件正式加入openGauss社区

openGauss都做了哪些算子优化工作?

DevOps系列之 —— 持续规划与设计(三)敏捷项目管理的方法【Kanban 与 Scrum】

若尘

DevOps #DevOps 三周年连更

一文读懂域名注册

火山引擎边缘云

证书 域名 域名服务器

慌了?ChatGPT吃我的饭,还要掀我碗

引迈信息

AI 低代码 ChatGPT JNPF

云原生时代全链路观测体系构建

嘉为蓝鲸

AI黑云压城,程序员真的没有未来了吗?| 社区征文

bug菌

三周年征文

openGauss 5.0.0版本正式发布!

前端开发培训机构怎么样

小谷哥

加速文件传输协议如何工作

镭速

云和恩墨大讲堂 x 长江鲲鹏 x openGauss Meetup(武汉站)圆满落幕!

便捷高效,Notion AI比ChatGPT更加香!

南城FE

人工智能 AI 前端 ChatGPT

盘点 8 款好用的 API 接口文档管理工具

Liam

程序员 接口文档 API 接口规范 接口编写

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