飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

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

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

关注

评论

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

袋鼠云数据资产平台:数据模型标准化建表重构升级

袋鼠云数栈

京东金融APP的鸿蒙之旅:技术、挑战与实践

京东科技开发者

主动元数据,让数据管理“看得清、管得住、治得动”

Aloudata

元数据 全链路数据血缘 数据血缘 数据链路

面试官:谈谈你对IO多路复用的理解?

王磊

为什么投递简历已读不回?

老张

面试 简历优化 求职面试

10分钟了解Golang集合类型数据操作

俞凡

golang

再获殊荣!MIAOYUN获评“2024新一代信息技术应用优秀案例”

MIAOYUN

云计算 云原生 超融合 新一代信息技术 优秀案例

望繁信科技CTO李进峰受邀在上海外国语大学开展流程挖掘专题讲座

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能

解读 Story Protocol:IP 与区块链的潜力与障碍

TechubNews

“AI+Security”系列第3期(五):AI技术在网络安全领域的本地化应用与挑战

云起无垠

在Bamboo上怎么使用iOS的单元测试

京东科技开发者

Meta公布首款AR眼镜Orion,成本1万美元;OpenAI CTO Mira Murati离职丨RTE开发者日报

声网

HAP官方力作:MEGA进销存应用正式上线

明道云

【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包

YashanDB

yashandb 崖山数据库 yashandb知识库

天命人,如何轻松利用仿真技术打造出属于你的“金箍棒”?

Altair RapidMiner

人工智能 设计 仿真 altair 黑神话悟空

推荐一款Python接口自动化测试数据提取分析神器!

不在线第一只蜗牛

Python

精准测试之探索

京东科技开发者

office系列全套装:Office LTSC 2021 (Win&Mac) 特别版

你的猪会飞吗

Office LTSC 2021 office ltsc 2021中文版

TikTok多账号运营:云手机的选择与注意事项

Ogcloud

云手机 海外云手机 tiktok云手机 矩阵运营 TikTok矩阵运营

华为云分布式缓存服务Redis®版9月企业版、灵活的购买方式全新上市

华为云PaaS服务小智

分布式缓存 华为云

【YashanDB知识库】decode函数中的子查询被不必要地多次执行

YashanDB

yashandb 崖山数据库 yashandb知识库

澳鹏大模型数据服务,赋能AGI智能涌现

澳鹏Appen

数据标注 大模型 数据服务 AGI AI 智能体

TikTok云手机:实现多账号矩阵运营

Ogcloud

云手机 海外云手机 tiktok云手机 矩阵运营 TikTok矩阵运营

探索 Snowflake 与 Databend 的云原生数仓技术与应用实践

Databend

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