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:341961
用户头像

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

关注

评论

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

Screen Wonders 3D壁纸屏保软件 提供了多种不同的动态壁纸和屏保

Rose

Markdown预览工具Marked 2 for mac

Rose

MacOS平台上好用的虚拟音频设备Loopback for Mac v2.4.1激活版

Rose

磁盘空间分析工具Disk Graph for Mac v3.0.4激活版

Rose

Dynamic Wallpaper for Mac 臻选高清4K动态壁纸 苹果电脑壁纸素材

Rose

测试开发比,能代表质效平衡吗?

老张

软件测试 研发效能 质量保障

和平台融合做套件,是SaaS厂商掘金的新趋势吗

ToB行业头条

优秀的个人理财管理软件 CheckBook Pro for mac

Rose

IconJar Mac 图标素材管理工具

Rose

AI系统:未来科技的驱动力

天津汇柏科技有限公司

人工智能 未来以来

邀请函 | 极限科技全新搜索引擎 INFINI Pizza 亮相 2024 可信数据库发展大会!

极限实验室

极限科技 TDBC 搜索型数据库 Pizza 2024可信数据库发展大会

Microsoft Outlook 2021 LTSC mac永久激活版

Rose

基于STM32的智能粮仓系统设计

DS小龙哥

7月月更

探秘数据库中的并行计算技术应用

华为云开发者联盟

MySQL 数据库 华为云 华为云开发者联盟 企业号2024年7月PK榜

功能强大的RAW图像处理和转换应用Iridient Developer for Mac

Rose

专为苹果电脑打造的浏览器缓存清理工具Cookie for Mac

Rose

Git客户端 Fork for Mac v2.44激活版

Rose

IAM中的“跨生态纳管”

芯盾时代

身份安全 iam 生态链 统一身份管理平台

解决卡顿发热,超帧技术焕发中重载游戏动力

HarmonyOS SDK

HarmonyOS

Outlook 2021 LTSC for Mac v16.86.2中文正式版

你的猪会飞吗

mac软件下载 mac破解软件下载

Gin 教程:构建优雅的 Web 应用(一)

Felix

golang gin框架

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