选型目标
- 高性能与低延迟:满足高频率数据写入与即时查询的需求。
- 资源效率:优化存储空间使用,减少计算资源消耗。
- 可扩展架构:支持数据量增长带来的扩展需求,易于维护。
- 社区活跃度:有活跃的开发者社区,确保问题快速响应和持续更新。
- 生态集成:良好地与现有工具链、监控系统及可视化平台集成。
市场主流时序数据库概览
排名参考:DB-Engines Ranking - popularity ranking of time Series DBMS
国内排名参考:中国数据库排行 - 墨天轮
1. InfluxDB(MIT)
- 特点:专为时序数据设计,InfluxQL提供类SQL查询语法,支持集群模式。
- 优势:写入与查询性能优秀,广泛应用于监控与IoT领域。
- 局限性:高级特性与企业级支持需InfluxDB Cloud或企业版。
2. Prometheus(Apache License 2.0)
- 特点:一套完整的监控与告警解决方案,PromQL查询语言强大。
- 优势:轻量级,适用于微服务架构,生态丰富,与Kubernetes集成紧密。
- 局限性:主要面向监控,复杂数据分析能力相对有限。
3. TimescaleDB(Apache License 2.0+TSL)
- 特点:基于PostgreSQL的扩展,提供全SQL支持,自动扩展分区,自动过期清理。
- 优势:强大的SQL查询分析能力,易于与关系型数据集成。
- 局限性:相比原生时序数据库如InfluxDB、TDengine大数据量时性能略低,存储占用空间更大。
4. TDengine(GNU AGPL v3.0)
- 特点:专为物联网优化,集成了数据库、缓存、流处理于一体。
- 优势:极高性能,存储效率高,支持SQL查询,易于部署与管理。
- 局限性:虽然生态在迅速成长,但相比一些成熟项目,社区规模和工具链可能较小。
5. IoTDB(Apache License 2.0)
- 特点:面向工业互联网,轻量级,支持复杂查询与存储优化。
- 优势:专为时序数据设计的存储模型,支持高效批量写入与查询。
- 局限性:相较于某些成熟数据库,文档和社区支持可能不够丰富。
6. OpenGemini(Apache License 2.0)
- 特点:华为开源的分布式时序数据库,聚焦海量数据存储与分析。
- 优势:针对时序数据优化,简化架构,降低成本,提升效率。
- 局限性:相对较新,社区与生态仍在发展中。
推荐方案
TimescaleDB(基础版Apache License 2.0协议,社区版Timescale License (TSL)协议,即可以企业内部部署用,不能作为云服务对外售卖。社区版比基础版多一些高级功能,比如分区压缩,集群部署功能。)
- 灵活性:TimescaleDB支持标准SQL,对于习惯SQL的团队来说更容易上手,且能更好地与现有的分析工具和框架集成(我们的业务存在多指标关联分析行转列等需求可以方便处理)。
- 扩展性:作为PostgreSQL的扩展,TimescaleDB继承了其强大的生态系统和可扩展性,适用于从小型到超大规模的数据集(比如大模型需要的向量数据库和搜索场景需要的倒排索引和相关性排序)。
- 运维与学习成本:如果团队对PostgreSQL或Mysql熟悉,转向TimescaleDB的迁移成本相对较低。
- 生产成本:同时支持关系表和时序表,不需要部署两套数据库。
timescaledb性能初步测试
国产备选方案
IoTDB(Apache License 2.0协议)
- **低成本、高性能:**数千万点写入吞吐量,压缩比高(官方数据1:10无损压缩,实测可以做到1:5),可大大节省服务器硬件成本。
- **易用性,跨平台部署:**仅依靠 JDK/JRE,开箱即用,比较方便集群部署,降低运维成本。
- **多样化的数据处理和分析方法:**与Apache PLC4X、Apache Pulsar、Apache Flink、Apache Spark、Apache Zeppelin、Grafana等集成,构建完整的开源软件生态,丰富的数据分析功能,如触发器、用户定义功能 (UDF)、选择进入、连续查询等。
- 低成本迁移:通过适配器与各种TSDB(InfluxDB,Prometheus,KairosDB等)兼容
- 相对比较新,文档比较少
- SQL支持能力比较弱,一下复杂查询支持有限(比如不支持group by作为子查询)
IotDB性能初步测试
TDengine(Apache License 2.0协议) - 性能:TDengine设计之初就针对物联网和大规模时序数据进行了优化,能提供极高的写入与查询性能。
- 集成度高:内置缓存、流处理功能减少了额外组件的部署与维护,简化架构。
- 成本效率:高效存储机制有助于降低长期的存储成本。
- 易用性:支持SQL查询,便于开发与维护,同时有较好的管理工具。
- 性能对比:基于 TSBS 标准数据集时序数据库 TimescaleDB、InfluxDB 与 TDengine 的性能对比测试
实施计划与风险评估
实施步骤
- 技术验证:在隔离环境中搭建时序数据库,进行功能与性能测试。
- 迁移策略:设计数据迁移计划,包括数据格式转换和验证。
- 系统集成:与现有监控、分析工具对接,确保数据流转无阻。
- 培训与文档:组织内部培训,编写操作指南和故障排查手册。
风险评估
- 技术迁移风险:需关注数据迁移过程中可能出现的数据一致性问题。
- 性能匹配风险:实际应用中的性能需经过充分测试验证。
- 社区支持风险:社区活跃度,特定问题的解决速度仍需评估。
结论
鉴于现用数据库MariaDB迁移到TimescaleDB成本低(TimescaleDB扩展于PostgreSQL,而MariaDB和PostgreSQL大部分兼容),TimescaleDB在性能方面能够满足业务需求同时支持关系数据库的业务场景,选TimescaleDB作为当前时序数据库比较合适。后续如果有部分场景对性能有极致要求可以考虑IoTDB等纯时序数据库。