物联网行业中,我们如何选择数据库?

在当今数字化潮流中,我们面对的不仅是海量数据,更是时间的涟漪。从生产线的传感器到金融市场的交易记录,时间序列数据成为了理解事物演变和趋势的关键。在面对这样庞大而动态的数据流时,我们需要深入了解一种强大的工具——时序数据库。时序数据库的崛起不仅是技术发展的产物,更是对时间维度数据挖掘需求的响应。

时序数据库广泛应用于物联网、工业监控、能源管理、量化金融等领域,是数字化转型的关键组成部分。本文将着眼于物联网行业,为大家介绍时序数据库的核心概念、优势及应用场景等。我们将揭开时序数据库的技术奥秘,探讨它对于数据管理和分析的深远影响,提供一种物联网数据库选型的新思路。

什么是时序数据?

时序数据是一种按时间顺序排列的数据,其主要特征是数据随时间变化而变化。时序数据往往具有时间依赖性、连续性、周期性、实时性、大规模性、异步性、多维性、不确定性等特点。时序数据的处理和分析需要专门的数据库管理系统,即时序数据库。

时序数据的应用场景有哪些?

  • 生产制造与工业自动化

  • 能源电力与石油化工

  • 车联网与轨道交通

  • 航空航天

  • 物联网传感器测量(水冷、高温、地震...)

  • 服务器监控(CPU、内存、磁盘...)

  • 资源消耗(能源、电力...)

  • 医疗健康监测(心率、血氧浓度...)

  • 网络流量分析

  • 零售与电子商务

  • 金融市场交易

什么是时序数据库?

时序数据库全称是时间序列数据库(Time series database,TSDB),主要用于存储和处理带时间标签的时序数据。时序数据库的存储结构往往具有列式存储、索引结构和压缩算法等特点,能够最大程度地提高数据存储和检索的效率。

在时序数据库成为热点之前,时序数据通常使用 MySQL 或 PostgreSQL 等关系数据库进行处理。但随着互联网和通信技术的发展,网络中产生的时间序列数据量有了爆炸式的增长,传统的数据库已经无法处理这种万亿级的海量数据。不仅如此,现代业务对数据价值挖掘的需求已不仅停留在简单计算和绘制图表的层面上,而是需要更多精细、复杂的计算分析。

如何以一种高性能的方式记录、查询和分析如此大规模的数据,成为了一个难题。时序数据库(time-series database)应运而生。

时序数据库与传统数据库在技术上有哪些区别呢?

1. 首先,大部分时序数据库的查询场景可以认为是 OLAP(Online Analytical Processing )分析型数据库场景。具体地说,时序数据库的读取负载主要可以分为两种,一种是对指定时间序列在指定时间段内数据的查询,如查询某个设备或某支股票最新一小时的数据等;另一种是对大量数据进行统计分析,如分析某支股票、甚至是所有股票在过去一周内的平均价格。这两种场景都是典型的 OLAP 读取场景。因此,时序数据库具有大部分 OLAP 数据库的特点,如列存会对数据做压缩支持复杂的查询语句等,并更加注重时序数据的查询,特别是对于按时间范围的查询和聚合操作的性能。

2. 从写入负载来分析,时序数据库的场景有大量数据的实时写入,而非单行数据的写入与修改。由于时序数据库的写入负载通常很高,如每秒几百万甚至几千万条数据,所以时序数据库的存储引擎往往是基于对大量写入更加友好的 LSM Tree(Log Structured Merge Tree)。

3. 时序数据库支持很多时序场景特有的分析语句与函数。一些常见的语句与函数有:降采样、插值、滑动平均、时间滑动平均、累积和、window join、context by、pivot by 等。要高效地(往往是向量化地)支持这些查询语句并不是一件非常容易的事情。

4. 流数据的处理。对时序数据的离线分析属于批处理的范畴,而还有许多时序数据场景则可以抽象成另外一个称之为流数据的计算场景:有数据不停地产生,且需要低延时地对这些数据做即时的响应与计算。在时序领域,对于流数据的处理,以往的做法是使用 flink 等单独的流数据处理平台,这当然也能够解决问题,但会导致至少两个问题,第一是需要维护时序数据库与 flink 两套系统,使得运维成本大大提升;第二个问题则可能更加致命,那就是流数据的处理是否能够与批数据处理一致,而如果产生不一致,则可能会对业务场景带来负面影响。如果时序数据库能够推出针对时序场景的特殊流数据处理子系统,并且能够达到 “流批一体”,就可以保证批数据与流数据处理的结果完全一致。

5. 另外,时序数据库对于多变、动态的数据模型更为灵活,能够容纳不同类型和结构的时序数据,在设计上更加注重满足时序数据的特殊需求,以提供更高效灵活的存储和查询方案。传统数据库则更多面向一般性的数据存储和查询需求。

作为一种针对时序数据高度优化的垂直型数据库,时序数据库在物联网行业有广泛的应用场景(如工业制造、能源电力、航空航天、智慧交通、设备健康、智能运维、医疗保健、零售业等),通过对海量时序数据进行分析预测,企业可以获得有价值的信息,从而做出更明智的决策,获得独特的竞争优势。

物联网大数据平台数据库选型的考量因素:

物联网大数据平台在进行时序数据库选型时,会考虑哪些性能特征呢?以下为一些常见的考量因素,供大家参考~

1. 高效的分布式系统与存储功能。物联网产生的数据量巨大,因此处理系统必须是分布式的、水平扩展的。为降低成本,一个节点的处理性能必须是高效的,需要支持数据的快速写入和快速查询。

2. 数据持续稳定写入。对于物联网系统,通常数据流量呈平稳状态,因此我们可以相对准确地估算数据写入所需的资源。然而,挑战在于查询和分析阶段,尤其是即席查询,可能对系统资源造成巨大压力。因此,系统必须确保分配足够的资源,以保障数据能够顺利写入系统而不至丢失。具体而言,这要求系统采取写优先的策略,以确保对写入操作的优先满足。

3. 实时处理的框架。对于物联网场景,需要基于采集的数据做实时预警、决策,延时要控制在秒级以内。物联网数据的实时性要求数据库具备快速的数据摄取和处理能力,以支持实时监控、预警和其他实时应用场景。

4. 实时流式计算功能。支持流式数据处理,能够对连续流入的数据进行实时处理和分析,以满足物联网环境中快速变化的数据需求。实时预警或预测已经不再简单地基于单一阈值进行,而是需要对多个设备生成的数据流进行实时聚合计算。这种计算不再仅限于单一时间点,而是基于时间窗口进行,考虑了更广泛的时间范围。

5. 快速且灵活的查询能力。时序数据库提供了专门用于时序数据分析的查询能力。它包括了经过优化的函数、运算符和索引技术,通过其处理涉及时间间隔、滑动窗口和聚合等复杂查询的能力,使用户能够迅速准确地从物联网海量数据中提取有价值的指标。

6. 持续聚合。允许用户预先计算并存储不同时间间隔的聚合数据。这个特性极大地提高了常见聚合查询的性能,例如在特定时间范围内计算平均值、总和或计数。对于需要实时分析和仪表板的物联网应用,持续聚合提供了显著的性能提升。

7. 高扩展性和高可用性。由于物联网设备数量众多,数据库应该具备高度可扩展性,能够轻松应对不断增长的设备连接和数据量;同时,由于物联网环境复杂,数据库应具备容错性和高可用性,以确保即使在设备故障或网络问题的情况下,系统仍能保持稳定运行。

8. 支持云边协同。要有一套灵活的机制将边缘计算节点的数据上传到云端,根据具体需要,可以将原始数据及加工计算后的数据,或仅符合过滤条件的数据同步到云端,而且随时可以取消,更改策略。

9. 便于私有化部署。通过私有化部署,便于掌握系统的管理、配置和访问控制,确保数据安全性并满足内部隐私和合规性要求,并适应特定业务流程和工作负载。

作为 DB-Engines 排行榜上国内排名第一的时序数据库,DolphinDB 是完全自主研发的新一代的高性能分布式时序数据库,以一站式大数据方案、快速开发、性能优异、综合使用成本低著称。DolphinDB 目前广泛应用于量化金融及工业物联网领域,接下来介绍 DolphinDB 作为工业物联网数据平台的7大优势,为大家提供数据库选型参考。

1. 一站式数据解决方案

工业物联网的要求不仅包括对机器产生的工艺数据的采集,还需要进行实时计算和预警,并将结果直观地展示给操作员或直接反馈给机器。同时,对这些原始的工艺数据进行保存,以支持在线或离线查询。在积累了大量的历史数据后,可以在 DolphinDB 这一套系统内完成更为复杂的大数据挖掘,高效一体地进行整个数据处理和分析流程。

下图展示了 DolphinDB 的数据处理流程:

对于系统集成商或企业而言,在一套系统上进行开发和维护,无论是在开发维护还是硬件采购成本上都更为经济高效。

2. 轻量级跨平台部署

工业物联网平台的复杂性体现在多方面:从低成本的工控机(低配 PC 或嵌入式系统)到高性能的服务器或服务器集群,涵盖了边缘计算、本地平台部署以及云端平台部署。这涉及到多种操作系统,包括 Linux 和 Windows。市场上存在许多开源或商用的时序数据库,以及相关的大数据生态系统,这些组件繁多且复杂,体积庞大,对软硬件的要求也较高。尝试使用一套系统进行跨平台部署会面临巨大的挑战。

DolphinDB 是一个非常轻量级的系统,用 GNU C++开发,系统大小仅70余兆,无任何依赖,可以部署在上述任何平台上,极大节约了系统集成商的开发和维护成本。

3. 海量历史数据存储和处理

工业物联网数据采集的特点是维度高、频率高、设备数量众多,数据量巨大,且具备高时间精度。由于数据库系统的限制,企业难以充分挖掘历史数据的价值。

DolphinDB 以列式存储为特色,支持高达20%左右的数据压缩率,能够处理最高纳秒精度的时序数据。单表支持百万级别分区,通过增加节点水平扩展集群的存储和计算能力。DolphinDB 集群还支持多副本分布式存储和分布式事务机制,确保数据的高可用性和强一致性。

企业可以充分利用 DolphinDB 对长时间积累的历史数据进行深度数据挖掘和分析,如设备的预测性维护、工艺流程的改进、产品质量的提升以及制造计划的优化等。这有助于企业更全面、深入地了解生产过程,智能决策。

4. 实时流计算

物联网实时采集的数据可以通过 DolphinDB 的流计算引擎进行清洗、实时统计,并即时入库,同时通过可视化方式实时展示。DolphinDB 具备流表对偶性,可直接使用 SQL 注入和查询分析流数据。其流计算引擎基于发布-订阅-消费的模式,通过流数据表发布数据,其他数据节点或第三方应用可以通过 DolphinDB 脚本或 API 订阅消费流数据,将计算结果实时反馈给机器或操作员。

5. 丰富的函数与计算功能

DolphinDB 内置了脚本语言,可直接在数据库中进行复杂的计算和交互分析,无需数据迁移。大部分计算功能和函数都经过优化,性能远远超过其他数据库中的相同功能。

以下为一些 DolphinDB 常用的计算功能:

  • 范围查询:DolphinDB 使用数据对(pair)的形式表示范围。

  • 多维查询:可以针对不同列进行聚合,实现高维或低维的范围查询功能。

  • 抽样查询:提供了以分区为单位的抽样查询机制,可以按照指定的比例或者数量对分区进行抽样,只需要在 where 后调用 sample 函数。

  • 精度查询:DolphinDB 的时间精度达到纳秒,支持海量高精度历史数据存储,也支持把高精度大数据集聚合转换成低精度小数据集存储。同时,支持多种精度分组抽样及自定义分组。

  • 插值查询:在工业领域经常会发生采集的数据缺失。DolphinDB 在查询计算时提供了4种插值方式补全数据,向前/向后取非空值填充(bfill/ffill),线性填充(lfill)和指定值填充(nullFill)。

  • 聚合查询:DolphinDB 函数库非常丰富,支持以下聚合函数:atImax, atImin, avg, beta, contextCount, contextSum, contextSum2, count, corr, covar, derivative, difference, first, imax, last, lastNot, max, maxPositiveStreak, mean, med, min, mode, percentile, rank, stat,std,sum, sum2,var, wavg, wsum, zscore。

  • 面板数据分组查询:DolphinDB 提供了 context by 和滑动统计函数,并对部分滑动统计函数进行了优化,最大程度地降低了重复计算。

  • 对比查询:DolphinDB 的 pivot by 可用于数据透视,特别是同一时间不同列的指标对比。

  • 关联查询:支持多种关联查询,包括等值连接、完全连接、交叉连接、左连接、asof join 和窗口连接。

  • 机器学习与分布式计算:提供了 map-reduce,iterative map-reduce 等分布式计算框架,无需编译、部署,可以直接在线使用。同时,DolphinDB 内置了常用的拟合和分类算法,如线性回归、广义线性模型(GLM)、随机森林(Random Forest)、逻辑回归等。

除了已有的功能外,DolphinDB 提供了几种途径扩展系统功能。用户可以用脚本语言自定义函数来扩展系统功能。同时,还提供了 C++、C#、Java、Python、R、JS、Excel 等语言和系统 API ,方便与其它系统集成。

6. 综合使用成本低

工业企业的利润率通常较低,若数据平台的成本(软硬件采购、系统集成费用、维护费用及应用开发成本等)过高,将严重制约工业物联网的发展。DolphinDB 提供一站式解决方案、跨平台部署能力、强大的实时数据和海量历史数据处理能力、丰富的计算功能以及可扩展性,大幅度降低了系统的综合成本。

7. 安全可控

DolphinDB 是一个完全自主研发的分布式时序数据库,从底层的分布式文件系统和存储引擎,到数据库和核心类库,再到分布式计算引擎、脚本语言,甚至外围的开发集成环境 GUI 和集群管理工具,全部自主研发,无任何外部依赖,保证了系统的安全可控性。

DolphinDB 不仅支持 x86 和 arm 指令体系,还在适配 MIPS 指令体系,以支持龙芯等国产 CPU ,在工业物联网平台上实现了软硬件同时自主可控。

小结

在本文中,我们深入探索了时序数据库这一前沿技术,揭示了其在物联网领域的关键作用与优势。时序数据库不仅是存储时序数据的媒介,更是对数据进行深刻理解的智能引擎,为我们提供了探索和解析复杂数据的工具。时序数据库作为工业 4.0 时代的利器,打开了数据洞察与智能运维的大门。未来,时序数据库将继续在不断涌现的数据浪潮中发挥至关重要的作用,为万物互联与智慧城市开创新的可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588303.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.Git是用来干嘛的

本文章学习于【GeekHour】一小时Git教程,来自bilibili Git就是一个文件管理系统,这样说吧,当多个人同时在操作一个文件的同时,很容易造成紊乱,git就是保证文件不紊乱产生的 包括集中式管理系统和分布式管理系统 听懂…

Vue3使用组件的计算属性代替v-for和v-if

Vue.js3组件的方法-CSDN博客 使用Vue3组件的计算属性-CSDN博客 Vue3组件计算属性的get和set方法-CSDN博客 Vue3组件计算属性的缓存-CSDN博客 在业务逻辑处理中,一般会使用v-for指令渲染列表的内容,有时也会使用v-if指令的条件判断过滤列表中不满足条…

剑指Offer题目笔记24(集合的组合、排序)

面试题79: 问题: ​ 输入一个不含重复数字的数据集合,找出它的所有子集。 解决方案: ​ 使用回溯法。子集就是从一个集合中选出若干元素。如果集合中包含n个元素,那么生成子集可以分为n步,每一步从集合中…

托管式 Kubernetes 服务,加速现代化云基础设施升级

降本提效,是创新开发的永恒话题。过去10年中,开发者纷纷拥抱容器技术以提高部署效率,降低运维负担。随着像 Docker 这类容器引擎使用量的不断增长,作为 Docker 管理系统的 Kubernetes(简称 K8s)顺势而出&am…

【Node.js从基础到高级运用】二十一、使用child_process模块创建子进程

引言 在Node.js中,child_process模块是一个提供了创建和管理子进程的能力的核心模块。通过使用child_process模块,Node.js可以执行系统命令、运行其他脚本或应用程序,实现与Node.js进程的并行处理。 child_process模块提供了几种创建子进程的…

Ant Design Vue中的table与pagination的联合使用

效果&#xff1a; 代码&#xff1a; <a-table:dataSource"dataSource":columns"columns":pagination"pagination"change"handleTableChange":scroll"{ x: 100%, y: 600 }"> </a-table> export default defin…

Lua 和 Love 2d 教程 二十一点朴克牌 (上篇lua源码)

GitCode - 开发者的代码家园 Lua版完整原码 规则 庄家和玩家各发两张牌。庄家的第一张牌对玩家是隐藏的。 玩家可以拿牌&#xff08;即拿另一张牌&#xff09;或 停牌&#xff08;即停止拿牌&#xff09;。 如果玩家手牌的总价值超过 21&#xff0c;那么他们就爆掉了。 面牌…

30道Java经典面试题总结

1、JDK 和 JRE 有什么区别&#xff1f; JDK&#xff08;Java Development Kit&#xff09;&#xff0c;Java 开发工具包 JRE&#xff08;Java Runtime Environment&#xff09;&#xff0c;Java 运行环境 JDK 中包含 JRE&#xff0c;JDK 中有一个名为 jre 的目录&#xff0c…

MyBatis 解决上篇的参数绑定问题以及XML方式交互

前言 上文:MyBatis 初识简单操作-CSDN博客 上篇文章我们谈到的Spring中如何使用注解对Mysql进行交互 但是我们发现我们返回出来的数据明显有问题 我们发现后面三个字段的信息明显没有展示出来 下面我们来谈谈解决方案 解决方案 这里的原因本质上是因为mysql中和对象中的字段属性…

社交互动:探讨Facebook对用户互动的影响

在当今数字化时代&#xff0c;社交网络已经成为了人们日常生活中不可或缺的一部分。而作为最著名的社交网络平台之一&#xff0c;Facebook不仅连接了全球数十亿用户&#xff0c;还对用户的社交互动产生了深远的影响。本文将深入探讨Facebook对用户互动的影响&#xff0c;以及它…

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测效果一览基本介绍程序设计参考…

HarmonyOS入门-ArkTS学习(一)

1. 什么是ArkTS语言 学习之前&#xff0c;我们先初步了解下什么是ArkTS 官方指南这样介绍&#xff1a; ArkTS是TS的超集&#xff0c;ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力&#xff0c;再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共…

矩阵空间秩1矩阵小世界图

文章目录 1. 矩阵空间2. 微分方程3. 秩为1的矩阵4. 图 1. 矩阵空间 我们以3X3的矩阵空间 M 为例来说明相关情况。目前矩阵空间M中只关心两类计算&#xff0c;矩阵加法和矩阵数乘。 对称矩阵-子空间-有6个3X3的对称矩阵&#xff0c;所以为6维矩阵空间上三角矩阵-子空间-有6个3…

使用docker-tc对host容器进行限流

docker-tc是一个github开源项目&#xff0c;项目地址是https://github.com/lukaszlach/docker-tc。 运行docker-tc docker run -d \ --name docker-tc \ --network host \ --cap-add NET_ADMIN \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var…

STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式&#xff0c;生成代码四、MDK打开生成项目&#xff0c;编写HAL库的按键检测代码五、运行仿真程序&#xff0c;调试代码 一、功能需求分析 搭建完成开发STM32开发环境之后&#xff0c;开始GPIO…

备战蓝桥杯---刷杂题1

1.来个小定理&#xff08;上次DP的青蛙过河用过&#xff09; 事实上&#xff0c;假如他们的gcd&#xff01;1,那么P,q都可以表示成gcd的倍数&#xff0c;因此假如一个数不是gcd的倍数就不可以表示&#xff0c;若互质由裴蜀定理大于一定时一定可以表示出。 事实上为&#xff08…

解密AI人工智能的整体分层架构:探索智能科技的未来之路

随着人工智能技术的迅猛发展&#xff0c;AI已经渗透到我们生活的方方面面。而支撑AI人工智能系统运作的核心是其整体分层架构。本文将深入探讨AI人工智能的整体分层架构&#xff0c;揭示其中的奥秘&#xff0c;探索智能科技的未来之路。 ### AI人工智能整体分层架构的重要性 …

MYSQL-6.日志

日志 undo-log回滚日志&#xff1a; 存储&#xff1a;InnoDB默认将undo-log日志存储在xx.ibdata共享表数据文件中&#xff08;Mysql5.5版本后支持单独存放&#xff09;&#xff0c;采用段形式存储&#xff1b;在xx.ibdata共享表数据文件中&#xff0c;有一块名为Rollback segm…

【GIS前言技术】中国历史地图在线服务(WMTS版)

文章目录 一、数据服务介绍二、GIS软件加载1. ArcGIS加载2. Globalmapper加载 一、数据服务介绍 中華文明之時空基礎架構 WMTS 服務 服務網址為&#xff1a;https://gis.sinica.edu.tw/ccts/wmts 直接打开网站&#xff1a; 台湾小伙伴使用的是繁体&#xff0c;这里直接复制过…

AssetBundle在移动设备上丢失

1&#xff09;AssetBundle在移动设备上丢失 2&#xff09;Unity云渲染插件RenderStreaming&#xff0c;如何实现多用户分别有独立的操作 3&#xff09;如何在圆柱体类型的地图中编程玩家的输入 4&#xff09;Mixamo动画的根运动问题 这是第380篇UWA技术知识分享的推送&#xff…