事务监控场景下MongoDB选型适用性及替代存储数据库推荐咨询
选型评估与推荐
MongoDB适配性结论
MongoDB是该场景非常合适的存储选型,理由如下:
- 原生支持JSON/BSON文档存储,和你设计的数据结构完全匹配,嵌套的
error异常字段无需做表拆分、关联,开发成本远低于关系型数据库 - 你要求的三类查询都可以低成本实现,配合索引可以达到很高的查询性能:
- 按用户名查询事务:给
user字段建立普通索引即可 - 查询耗时超过5秒的事务:建议写入时预计算并存储
costTime(耗时毫秒/秒数)字段,给costTime建立索引即可快速查询,也可以用MongoDB的$expr运算符直接计算endTime和startTime的差值过滤,性能稍差一些 - 查询异常事务:直接过滤
error字段非空的记录即可,也可以给error字段建立稀疏索引进一步提升查询效率
- 按用户名查询事务:给
- 整体存储、运维成本远低于商用关系型数据库,支持分片横向扩展,应对监控类数据的海量写入、存储需求非常友好。
其他可选存储推荐
你也可以根据后续的扩展需求选择更适配的数据库:
- 时序数据库:比如InfluxDB、VictoriaMetrics,天生为时间序列类监控数据设计,写入吞吐量、时间范围查询、指标聚合性能都优于MongoDB,如果你后续需要按时间维度统计调用量、平均耗时、错误率等指标,这类数据库是更优选择
- 列存分析型数据库:比如ClickHouse,海量数据下的多维度聚合查询性能极强,如果你的业务需要经常按服务名、节点IP、用户等多维度做统计分析,ClickHouse的表现会更好
- 全文检索数据库:比如Elasticsearch,如果你的业务有搜索异常堆栈关键词的需求,Elasticsearch可以同时支持你需要的三类查询和全文检索需求。
内容的提问来源于stack exchange,提问作者lives
相关产品推荐
相关产品推荐

