其他笔记 – InfluxDB与MongoDB的对比
InfluxDB与MongoDB对比
文章来源:
本文将比较InfluxDB与MongoDB在常见时间序列工作负载下的性能和特性,特别是两者在数据传输率,磁盘上数据压缩率和查询性能上的差异。
InfluxDB是一个Go实现的开源时间序列数据库。它的核心由一个定制化的存储引擎设计而成,称为Time-Structured Merge (TSM)是时序结构合并树,它针对时间序列数据进行了优化。通过一个类似结构化查询风格的查询语言InfluxQL进行控制.InfluxDB为时间跨度下的数学和统计运算提供了一个开箱即用的
完美支持,非常适合于定制监控和指标收集,实时分析,以及物联网和传感器数据工作负载。
Mongodb是一个开源的面向文档的数据库,俗称为NoSQL的数据库,用Ç和C ++编写。虽然它本身并不是一个真正的时间序列数据库,但它的创建者通常会将其用于时间序列工作负载。它以时间戳和装桶(bucketing)的形式提供建模原语,使用户能够存储和查询时间序列数据。请注意,除了基于时间序列的工作负载外,本文没有研究InfluxDB对其他工作负载的适用性。InfluxDB不是为了满足文档存储用例而设计的,因此此处将不讨论这些用例。对于这些用例,我们建议使用MongoDB或类似的NoSQL数据库。
从另一个角度来看Mongodb其实和redis的工作领域有重叠,但各有优劣.Mongodb也在逐渐进步.
StackouverFlow上的投票:InfluxDB VS MongoDB
InfluxDB | MongoDB |
---|---|
Stacks 743 |
Stacks 47.1K |
Followers 729 |
Followers 36.7K |
Votes 148 |
Votes 4K |
可以看到MongoDB使用者远超InfluxDB,当然这纯粹是因为MongoDB在互联网等领域应用更广泛的原因.
InfluxDB与MongoDB:有何区别?
- InfluxDB:
一个没有外部依赖性的开源分布式时间序列数据库。 InfluxDB是用于指标,事件和实时分析的可扩展数据存储。它具有内置的HTTP API,因此您无需编写任何服务器端代码即可启动和运行InfluxDB具有可扩展性,易于安装和管理以及可快速获取和取出数据的功能。 - MongoDB:
伟大思想的数据库。 MongoDB将数据存储在类似JSON的文档中,这些文档的结构可能有所不同,从而提供了动态,灵活的架构。 MongoDB还具有内置复制和自动分片功能,旨在实现高可用性和可伸缩性。
InfluxDB和MongoDB可以归类为“数据库”工具。
“时间序列数据分析”是超过35个像InfluxDB这样的开发人员的主要原因,而超过788个开发人员提到“面向文档的存储”是选择MongoDB的主要原因。
InfluxDB和MongoDB都是开源工具。似乎在GitHub上具有16.6K GitHub star和2.37K派生的InfluxDB比在MongoDB上具有16.2K GitHub star和4.08K GitHub派生具有更多的采用率。
根据StackShare社区的说法,MongoDB获得了更广泛的认可,在2175个公司堆栈和2143个开发人员堆栈中都提到过。与InfluxDB(在116个公司堆栈和38个开发人员堆栈中列出)相比。
结语
查了一下资料, Mongodb的应用领域和InfluxDB差距很大,而且InfluxDB在过去工业界长期占有一席之地,然而因为当时工业环境对实时性\运算\查询速度要求不高,所以稳定的需求大于性能需求.
如今到了物联网时代,在大规模工厂设备加智能机器人等设备链接加入以后,大量冗余的数据会对查询和并发带来更高的要求,所以最终决定不使用InfluxDB.
还有一篇关于DolphinDB与InfluxDB对比测试报告 可供参考.