写点什么

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

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

关注

评论

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

函数性能探测:更简单高效的 Serverless 规格选型方案

阿里巴巴云原生

阿里云 Serverless 云原生

mac电脑版Visio绘图文件阅读器 VSD Viewer for Mac

胖墩儿不胖y

Mac 软件推荐 Mac 软件

生成式AI助力小型企业发展

百度开发者中心

#人工智能 文心一言

Spring BeanDefinition 也分父子关系?

江南一点雨

Java spring

生成式AI:文本智能的未来发展方向

百度开发者中心

人工智能 文心一言

Vue 框架提升加载速度的优化思路

Onegun

Vue React

版本发布|Orillusion 0.6.7版本发布啦!

Orillusion

开源 渲染引擎 元宇宙 webgpu AIGC

关于 LLM 和图数据库、知识图谱的那些事

NebulaGraph

图数据库 知识图谱 LLM

Sketch for mac(矢量绘图UI设计软件) 97.2中文特别版

mac

Sketch 苹果mac Windows软件 矢量图设计软件

生成式AI:模拟人类智能的未来科技

百度开发者中心

人工智能 文心一言

阿里云蝉联 Forrester FaaS 领导者象限丨云原生 7 月产品技术动态

阿里巴巴云原生

阿里云 云原生

小灯塔系列-中小企业数字化转型系列研究——电子签名测评报告

向量智库

晋级名单公布!“域见杯”复赛今日火热开启

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 8 月 PK 榜

融入数据浪潮,KaiwuDB 期待与您共赴 DTCC 2023

KaiwuDB

KaiwuDB DTCC2023

生成式AI:开启全新的智能时代

百度开发者中心

人工智能 文心一言

生成式AI助力技术文章撰写

百度开发者中心

人工智能 大模型

08.25北京站|阿里云Serverless 技术实践营( AI 专场)开放报名

Serverless Devs

阿里云 Serverless 云原生

生成式AI技术发展趋势报告

百度开发者中心

人工智能 百度文心一言

LeetCode题解:2625. 扁平化嵌套数组,递归

Lee Chen

JavaScript LeetCode

生成式AI助力企业高效创新

百度开发者中心

人工智能 文心一言

一文吃透低代码开发平台

高端章鱼哥

系统架构 低代码 应用开发 JNPF

2023中国高校计算机大赛热度再刷新:2100+参赛队伍,获超480所国内知名高校关注!

云智慧AIOps社区

编程 算法 模型 中国大学生计算机设计大赛 计算机大赛

生成式AI:2023产业机遇与落地场景探索

百度开发者中心

人工智能 百度文心一言

关于跨国文件传输需要了解的5点

镭速

跨国文件传输

食品包装MES系统解决方案

万界星空科技

MES系统

使用 Docker 部署 etcd、启用身份验证

向东是大海

etcd

重新定义物化视图,你必须拥有的极速湖仓神器!

StarRocks

数据库 数据仓库 StarRocks 湖仓一体 物化视图

快手光合大会公开全模态大模型AIGC解决方案 人机协同助力创作全流程提效

Geek老T

AI 短视频

mac端矢量图编辑器 Boxy SVG 免激活

mac大玩家j

Mac 软件推荐 Mac软件

生成式AI:重新定义生产力

百度开发者中心

人工智能 文心一言

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