消息存储数据库选型调研

亿级别消息存储(可以通过分库分表支持)
单条消息查询
根据用户/组/模板/时间/其他业务字段 分页查询消息✔(有查询限制)
消息更新(更新确认时间/消息状态/发送结果)
根据用户/组/模板/时间/其他业务字段 统计各个维度的消息发送情况(支持简单的全文检索)(不支持全文检索会有性能瓶颈)✔(会有性能瓶颈,不支持全文检索)
事务原子性保证(多条写入/更新场景)✔(仅支持批量事务)✔(支持完整的事务)
支持并发查询单节点上万QPS单节点上万QPS单节点上万QPS单节点上万QPS
可扩展性✔(支持前端/后端分别扩展)
查询响应时间通过优化可达到亚秒级通过优化可达到亚秒级通过优化可达到亚秒级通过优化可达到亚秒级
实时写入性能通过优化可达数十万每秒通过优化可达十万每秒优化后可达上百万每秒优化后可达十万每秒比较拉胯,优化后勉强能达万级别
后端使用难度兼容mysql协议,入门简单,使用难度较低简单,后端很多项目都在使用没有尝试过作为数据库来用,使用经验少,难度较高简单,后端很多项目都在用简单,后端很多项目都在用
学习成本兼容mysql协议,入门简单,简单使用学习成本较低极低简单使用学习成本较低简单使用学习成本较低简单使用学习成本较低

kafka用于消息队列是合适的,但是对于数据的查询分析和修改场景支持都比较弱,无法满足业务场景

Elasticsearch和mongo都无法保证事务原子性,对于多条数据批量新增和更新场景无法保证一起成功,Elasticsearch的写入性能拉胯但可以通过延迟批量写入来弥补,mongo对数据分析场景支持比较弱

mysql是比较全面的且后端对mysql的掌握都很好,缺点就在于在单表数据量较大时性能会急剧下降,且对数据分析场景支持一般

doris对全文检索支持不是很好且不支持完整的事务,但是相较而言比较全面,特别是在数据分析场景比较出色,从长远考虑未来应用程序与大数据结合使用的场景还是很多的,用消息中心来试水风险比较小

方案一:mysql+doris组合存储,mysql存储配置信息(渠道、模板、策略、发送人、组信息等),doris存储发送的消息信息(发送请求、发送结果)用于查询和分析,doris单表可支持亿级别数据,且写入性能查询性能各方面都不错,比较均衡,与mysql互补很合适

方案二:mysql+elasticsearch也可以满足所有业务场景,只不过mysql在单表数据量达到五百万级别后性能会急剧下降,需要额外设计一套分库分表方案来保证性能,架构的复杂度较高;Elasticsearch的查询性能很好,后端对es的使用也很熟练,写入性能可以通过延迟批量写入来弥补,二者可作为互补

倾向用第一种方案组合存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jet-W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值