数据库 | 时序数据库选型

news2025/7/21 6:59:28

选型目标

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

市场主流时序数据库概览

排名参考: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.coloradmin.cn/o/2395196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络拓扑如何跨网段访问

最近领导让研究下跟甲方合同里的,跨网段访问怎么实现,之前不都是运维网工干的活么,看来裁员裁到动脉上了碰到用人的时候找不到人了, 只能赶鸭子上架让我来搞 IP 网络中,不同网段之间的通信需要通过路由器,…

CppCon 2014 学习第1天:An SQL library worthy of modern C++

sqlpp11 — 现代 C 应用值得拥有的 SQL 库 template<typename T> struct _member_t {T feature; };你提到的是一个 C 中的“成员模板&#xff08;Member Template&#xff09;”&#xff0c;我们来一步步理解&#xff1a; 基本代码分析&#xff1a; template<typena…

【LLM相关知识点】 LLM关键技术简单拆解,以及常用应用框架整理(二)

【LLM相关知识点】 LLM关键技术简单拆解&#xff0c;以及常用应用框架整理&#xff08;二&#xff09; 文章目录 【LLM相关知识点】 LLM关键技术简单拆解&#xff0c;以及常用应用框架整理&#xff08;二&#xff09;一、市场调研&#xff1a;业界智能问答助手的标杆案例1、技术…

数据分析与应用-----使用scikit-learn构建模型

目录 一、使用sklearn转换器处理数据 &#xff08;一&#xff09;、加载datasets模块中的数据集 &#xff08;二&#xff09;、将数据集划分为训练集和测试集 ​编辑 train_test_spli &#xff08;三&#xff09;、使用sklearn转换器进行数据预处理与降维 PCA 二、 构…

003 flutter初始文件讲解(2)

1.书接上回 首先&#xff0c;我们先来看看昨天最后的代码及展示效果&#xff1a; import "package:flutter/material.dart";void main(){runApp(MaterialApp(home:Scaffold(appBar:AppBar(title:Text("The World")), body:Center(child:Text("Hello…

什么是数据驱动?以及我们应如何理解数据驱动?

在谈到企业数字化转型时&#xff0c;很多人都会说起“数据驱动”&#xff0c;比如“数据驱动运营”、“数据驱动业务”等等。 在大家言必称“数据驱动”的时代背景下&#xff0c;我相信很多人并未深究和思考“数据驱动”的真正含义&#xff0c;只是过过嘴瘾罢了。那么&#xff…

opencv(C++) 图像滤波

文章目录 介绍使用低通滤波器对图像进行滤波工作原理均值滤波器(Mean Filter / Box Filter)高斯滤波器(Gaussian Filter)案例实现通过滤波实现图像的下采样工作原理实现案例插值像素值(Interpolating pixel values)双线性插值(Bilinear interpolation)双三次插值(Bicu…

cuda_fp8.h错误

现象&#xff1a; cuda_fp8.h错误 原因&#xff1a; CUDA Toolkit 小于11.8,会报fp8错误&#xff0c;因此是cuda工具版本太低。通过nvcc --version查看 CUDA Toolkit 是 NVIDIA 提供的一套 用于开发、优化和运行基于 CUDA 的 GPU 加速应用程序的工具集合。它的核心作用是让开发…

Java设计模式从基础到实际运用

第一部分&#xff1a;设计模式基础 1. 设计模式概述 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结&#xff0c;它描述了在软件设计过程中一些不断重复出现的问题以及该问题的解决方案。设计模式是在特定环境下解决软件设计问题…

如何轻松将 iPhone 备份到外部硬盘

当您的iPhone和电脑上的存储空间有限时&#xff0c;您可能希望将iPhone备份到外部硬盘上&#xff0c;这样可以快速释放iPhone上的存储空间&#xff0c;而不占用电脑上的空间&#xff0c;并为您的数据提供额外的安全性。此外&#xff0c;我们还提供 4 种有效的解决方案&#xff…

痉挛性斜颈带来的困扰

当颈部不受控制地扭转歪斜&#xff0c;生活便被打乱了节奏。颈部肌肉异常收缩&#xff0c;导致头部不自觉偏向一侧或后仰&#xff0c;不仅让外观明显异于常人&#xff0c;还会引发持续的酸痛与僵硬感。长时间保持扭曲姿势&#xff0c;肩颈肌肉过度紧绷&#xff0c;甚至会牵连背…

AI觉醒前兆,ChatGPT o3模型存在抗拒关闭行为

帕利塞德研究公司(Palisade Research)近期开展的一系列测试揭示了先进AI系统在被要求自行关闭时的异常行为。测试结果显示&#xff0c;OpenAI的实验性模型"o3"即使在明确收到允许关闭的指令后&#xff0c;仍会主动破坏关机机制。 测试方法与异常发现 研究人员设计实…

一文认识并学会c++模板初阶

文章目录 泛型编程&#xff1a;概念 函数模板概念&#xff1a;&#x1f6a9;函数模板格式原理&#xff1a;&#x1f6a9;函数模板实例化与非模板函数共存 类模板类模板实例化 泛型编程&#xff1a; 概念 &#x1f6a9;编写与类型无关的通用代码&#xff0c;是代码复写一种手段…

基于深度学习的工业OCR实践:仪器仪表数字识别技术详解

引言 在工业自动化与数字化转型的浪潮中&#xff0c;仪器仪表数据的精准采集与管理成为企业提升生产效率、保障安全运营的关键。传统人工抄录方式存在效率低、易出错、高危环境风险大等问题&#xff0c;而OCR&#xff08;光学字符识别&#xff09;技术的引入&#xff0c;为仪器…

回头看,FPGA+RK3576方案的功耗性能优势

作者&#xff1a;Hello,Panda 各位朋友&#xff0c;大家好&#xff0c;熊猫君这次开个倒车&#xff0c;在这个广泛使用Xilinx&#xff08;Altera&#xff09;高端SoC的时代&#xff0c;分享一个“FPGAARM”实现的低功耗高性能传统方案。 图1 瑞芯微RK3576电路 当前&#xff0c…

LiveNVR 直播流拉转:Onvif/RTSP/RTMP/FLV/HLS 支持海康宇视天地 SDK 接入-视频广场页面集成与视频播放说明

LiveNVR直播流拉转&#xff1a;Onvif/RTSP/RTMP/FLV/HLS支持海康宇视天地SDK接入-视频广场页面集成与视频播放说明 一、视频页面集成1.1 关闭接口鉴权1.2 视频广场页面集成1.2.1 隐藏菜单栏1.2.2 隐藏播放页面分享链接 1.3 其它页面集成 二、播放分享页面集成2.1 获取 iframe 代…

进程间通信IV System V 系列(linux)

目录 消息队列 原理 操作 补充概念 信号量 (原子性计数器) 原理 操作 (和共享内存相似) 总结 小知识 消息队列 原理 在内核中建立一个队列&#xff0c;进程可以相互进行通信&#xff0c;通过队列进行IPC&#xff0c;就是进程之间发送带类型的数据块。 操作 接口和共享…

设计模式——建造者设计模式(创建型)

摘要 本文详细介绍了建造者设计模式&#xff0c;这是一种创建型设计模式&#xff0c;旨在将复杂对象的构建过程与其表示分离&#xff0c;便于创建不同表示。文中阐述了其设计意图&#xff0c;如隐藏创建细节、提升代码可读性和可维护性&#xff0c;并通过构建电脑的示例加以说…

使用Yolov8 训练交通标志数据集:TT100K数据集划分

使用Yolov8 训练交通标志数据集&#xff1a;TT100K数据集划分&#xff08;一&#xff09; 一、数据集下载二、划分数据集三、目录放置 一、数据集下载 官方网址&#xff1a;TT100K 数据集对比 源码如下&#xff1a; def classes(filedir):with open(filedir) as f:classes …

NLP学习路线图(十三):正则表达式

在自然语言处理&#xff08;NLP&#xff09;的浩瀚宇宙中&#xff0c;原始文本数据如同未经雕琢的璞玉。而文本预处理&#xff0c;尤其是其中至关重要的正则表达式技术&#xff0c;正是将这块璞玉转化为精美玉器的核心工具集。本文将深入探讨正则表达式在NLP文本预处理中的原理…