当前位置: 首页 > 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等纯时序数据库。

相关文章:

数据库 | 时序数据库选型

选型目标 高性能与低延迟:满足高频率数据写入与即时查询的需求。资源效率:优化存储空间使用,减少计算资源消耗。可扩展架构:支持数据量增长带来的扩展需求,易于维护。社区活跃度:有活跃的开发者社区&#…...

网络拓扑如何跨网段访问

最近领导让研究下跟甲方合同里的,跨网段访问怎么实现,之前不都是运维网工干的活么,看来裁员裁到动脉上了碰到用人的时候找不到人了, 只能赶鸭子上架让我来搞 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…...

Windows系统下 NVM 安装 Node.js 及版本切换实战指南

以下是 Windows 11 系统下使用 NVM 安装 Node.js 并实现版本自由切换的详细步骤&#xff1a; 一、安装 NVM&#xff08;Node Version Manager&#xff09; 1. 卸载已有 Node.js 如果已安装 Node.js&#xff0c;请先卸载&#xff1a; 控制面板 ➔ 程序与功能 ➔ 找到 Node.js…...

基于热力学熵增原理的EM-GAM

简介 简介:提出基于热力学熵增原理的EM-GAN,通过生成器熵最大化约束增强输出多样性。引入熵敏感激活函数与特征空间熵计算模块,在MNIST/CelebA等数据集上实现FID分数提升23.6%,有效缓解模式崩溃问题。 论文题目:Entropy-Maximized Generative Adversarial Network (EM-G…...

2025.05.28-华为暑期实习第一题-100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. K小姐的网络信号优化方案 问题描述 K小姐在负责一个智慧城市项目,该项目需要在一条主干道上部署无线信号发射器。这条主干道有 n n...

鸿蒙OSUniApp滑动锁屏实战:打造流畅优雅的移动端解锁体验#三方框架 #Uniapp

UniApp滑动锁屏实战&#xff1a;打造流畅优雅的移动端解锁体验 引言 移动应用的安全性和用户体验是开发中不可忽视的重要环节。滑动锁屏作为一种直观、安全且用户友好的解锁方式&#xff0c;在移动应用中得到广泛应用。本文将深入探讨如何使用UniApp框架实现一个功能完备、动…...

数据库中 用一个值实现类似linux中的读 写执行以及理解安卓杂用的按位或运算

数据库定义了一个字段叫 allow, 4 读2 写 1 执行 如果是 7 就代表是可读可写 可执行 &#xff0c;如果是5 就是可读 可执行 &#xff0c; 那具体代码咋写呢 [Flags] public enum Permission {None 0,Execute 1,Write 2,Read 4 }// 假设你从数据库取到的 allow 值是一个整数…...

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

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

opencv(C++) 图像滤波

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

【线上故障排查】缓存热点Key导致Redis性能下降的排查与优化(面试题 + 3 步追问应对 + 案例分析)

一、高频面试题 问题1:什么是缓存热点Key?它对Redis性能有什么影响? 参考答案: 缓存热点Key指的是短时间内被大量请求访问的缓存键。因为Redis是单线程处理请求的,一旦某个Key被高频访问,会导致线程长时间忙于处理它,其他请求只能排队等待,这会让Redis整体响应变慢、…...

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;它描述了在软件设计过程中一些不断重复出现的问题以及该问题的解决方案。设计模式是在特定环境下解决软件设计问题…...

网络安全基础--第九天

动态路由&#xff1a; 所有路由器上运行同一种动态路由协议&#xff0c;之后通过路由器协商沟通&#xff0c;最终计算生成 路由条目。 静态路由的优点&#xff1a; 1.选路是由管理员选择&#xff0c;相对更好控制&#xff0c;更加合理 2.无需占用额外资源 3.更加安全 缺点…...

鸿蒙如何引入crypto-js

import CryptoJS from ohos/crypto-js 报错。 需要先安装ohom&#xff1a;打开DevEco&#xff0c;点击底部标签组&#xff08;有Run, Build, Log等&#xff09;中的Terminal&#xff0c;在Terminal下执行&#xff1a; ohpm install 提示 install completed in 0s 119ms&…...

通过HIVE SQL获取每个用户的最大连续登录时常

样本数据导入&#xff1a; drop table if exists user_login; create table user_login ( user_id bigint ,login_date string ) ;insert into table user_login values (1,2025-04-01) ,(1,2025-04-02) ,(1,2025-04-03) ,(1,2025-04-05) ,(1,2025-04-06) ,(2,2025-04-01) …...

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

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

Matlab数据类型

本篇介绍我在南农matlab课程上的所学&#xff0c;我对老师ppt上的内容重新进行了整理并且给出代码案例。主要内容在矩阵。如果真的想学matlab&#xff0c;我不认为有任何文档能够超过官方文档&#xff0c;请移步至官网&#xff0c;本篇说实话只是写出来给自己和学弟学妹作期末复…...

痉挛性斜颈带来的困扰

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

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

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

Flask项目进管理后台之后自动跳回登录页面,后台接口报错422,权限问题

今天准备部署一个python项目&#xff0c;先从代码仓down下来本地测了一下&#xff0c;发现登录成功后又自动跳回登录页了&#xff0c;然后后台接口报错422显示没权限&#xff0c;应该是token解析时出错&#xff0c;但是开发这个项目的同事是没问题的。 本来以为是浏览器或者配…...

HarmonyOS如何优化鸿蒙Uniapp的性能?

针对鸿蒙Uniapp应用的性能优化&#xff0c;可以围绕渲染效率、资源管理、代码逻辑等核心方向展开&#xff0c;结合鸿蒙系统特性和ArkUI框架能力进行针对性调整 一、滚动与动画性能优化 帧率优化 使用requestAnimationFrame替代setTimeout/setInterval处理滚动和动画&#xff0…...

使用逆强化学习对网络攻击者的行为偏好进行建模

摘要 本文提出了一种整体方法&#xff0c;利用逆强化学习&#xff08;IRL&#xff09;从系统级审计日志中对攻击者偏好进行建模。对抗建模是网络安全中的一项重要能力&#xff0c;它使防御者能够描述潜在攻击者的行为特征&#xff0c;从而能够归因于已知的网络对抗团体。现有方…...

青少年编程与数学 02-020 C#程序设计基础 12课题、使用控件

青少年编程与数学 02-020 C#程序设计基础 12课题、使用控件 一、控件二、控件的分类1. 按功能分类2. 按可见性分类 三、控件的核心特性(一) 属性(Properties) - 控件的"状态描述"1. 外观属性2. 布局属性3. 行为属性4. 数据绑定属性 (二) 方法(Methods) - 控件的"…...

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

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

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

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

java导入excel

这样读取excel时&#xff0c;得到的是结果值&#xff0c;而不是单元格的公式 import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil;InputStream inputStream file.getInputStream(); ExcelReader reader ExcelUtil.getReader(inputStream, 1); L…...