当前位置: 首页 > article >正文

数据库 | 时序数据库选型

选型目标

  • 高性能与低延迟:满足高频率数据写入与即时查询的需求。
  • 资源效率:优化存储空间使用,减少计算资源消耗。
  • 可扩展架构:支持数据量增长带来的扩展需求,易于维护。
  • 社区活跃度:有活跃的开发者社区,确保问题快速响应和持续更新。
  • 生态集成:良好地与现有工具链、监控系统及可视化平台集成。

市场主流时序数据库概览

排名参考:DB-Engines Ranking - popularity ranking of time Series DBMS

image.png

国内排名参考:中国数据库排行 - 墨天轮
image.png

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的迁移成本相对较低。
  • 生产成本:同时支持关系表和时序表,不需要部署两套数据库。
    image.png
    image.png
    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 的性能对比测试
    image.png
    image.png

实施计划与风险评估

实施步骤

  1. 技术验证:在隔离环境中搭建时序数据库,进行功能与性能测试。
  2. 迁移策略:设计数据迁移计划,包括数据格式转换和验证。
  3. 系统集成:与现有监控、分析工具对接,确保数据流转无阻。
  4. 培训与文档:组织内部培训,编写操作指南和故障排查手册。

风险评估

  • 技术迁移风险:需关注数据迁移过程中可能出现的数据一致性问题。
  • 性能匹配风险:实际应用中的性能需经过充分测试验证。
  • 社区支持风险:社区活跃度,特定问题的解决速度仍需评估。

结论

鉴于现用数据库MariaDB迁移到TimescaleDB成本低(TimescaleDB扩展于PostgreSQL,而MariaDB和PostgreSQL大部分兼容),TimescaleDB在性能方面能够满足业务需求同时支持关系数据库的业务场景,选TimescaleDB作为当前时序数据库比较合适。后续如果有部分场景对性能有极致要求可以考虑IoTDB等纯时序数据库。

http://www.lryc.cn/news/2395196.html

相关文章:

  • 网络拓扑如何跨网段访问
  • CppCon 2014 学习第1天:An SQL library worthy of modern C++
  • 【LLM相关知识点】 LLM关键技术简单拆解,以及常用应用框架整理(二)
  • 数据分析与应用-----使用scikit-learn构建模型
  • 003 flutter初始文件讲解(2)
  • Windows系统下 NVM 安装 Node.js 及版本切换实战指南
  • 基于热力学熵增原理的EM-GAM
  • 2025.05.28-华为暑期实习第一题-100分
  • 鸿蒙OSUniApp滑动锁屏实战:打造流畅优雅的移动端解锁体验#三方框架 #Uniapp
  • 数据库中 用一个值实现类似linux中的读 写执行以及理解安卓杂用的按位或运算
  • 什么是数据驱动?以及我们应如何理解数据驱动?
  • opencv(C++) 图像滤波
  • 【线上故障排查】缓存热点Key导致Redis性能下降的排查与优化(面试题 + 3 步追问应对 + 案例分析)
  • cuda_fp8.h错误
  • Java设计模式从基础到实际运用
  • 网络安全基础--第九天
  • 鸿蒙如何引入crypto-js
  • 通过HIVE SQL获取每个用户的最大连续登录时常
  • 如何轻松将 iPhone 备份到外部硬盘
  • Matlab数据类型
  • 痉挛性斜颈带来的困扰
  • AI觉醒前兆,ChatGPT o3模型存在抗拒关闭行为
  • Flask项目进管理后台之后自动跳回登录页面,后台接口报错422,权限问题
  • HarmonyOS如何优化鸿蒙Uniapp的性能?
  • 使用逆强化学习对网络攻击者的行为偏好进行建模
  • 青少年编程与数学 02-020 C#程序设计基础 12课题、使用控件
  • 一文认识并学会c++模板初阶
  • 基于深度学习的工业OCR实践:仪器仪表数字识别技术详解
  • java导入excel
  • 回头看,FPGA+RK3576方案的功耗性能优势