0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

工业互联网时代,我们为什么需要时序数据库之二:适合的就是最好的

格创东智 2019-04-28 19:08 次阅读

在上周的格物汇文章中,我们给大家介绍过,目前国内外主流工业互联网平台几乎都是采用时序数据库来承接海量涌入的工业数据。那为什么强大的Oracle、PostgreSQL 等传统关系型数据库搞不定时序数据?为什么不用HBase、MongoDB、Cassandra等先进的分布式数据库来解决工业数据问题?


作为资深“杠精”,当然需要先知道要“杠”的到底是什么?就时序数据库而言,就是要“杠”两个东西:1、“杠”数据;2、“杠”数据库。


先从数据“杠”起,数据可是一个高深莫测的东西。


想当年图灵用他深邃的眼睛,看穿了世间万物的计算本质:凡是可以计算的,通过迭代,最终都可以表示为0、1的逻辑判断。图灵机需要一个无限长的纸带来表征和记录计算,这无限长的纸带上记录的0、1的组合,就是数据最原始的抽象。图灵机指出了数据的3个核心需求:1、数据存储;2、数据写入;3、数据读取。


可以说,目前所有数据库、文件系统等等,都是为了以最佳性价比来满足数据的这三个核心需求。对时序数据而言,其三个核心需求特征十分明显:


数据写入

  • 时间是一个主坐标轴,数据通常按照时间顺序抵达

  • 大多数测量是在观察后的几秒或几分钟内写入的,抵达的数据几乎总是作为新条目被记录

  • 95%到99%的操作是写入,有时更高

  • 更新几乎没有


数据读取

  • 随机位置的单个测量读取、删除操作几乎没有

  • 读取和删除是批量的,从某时间点开始的一段时间内

  • 时间段内读取的数据有可能非常巨大


数据存储

  • 数据结构简单,价值随时间推移迅速降低

  • 通过压缩、移动、删除等手段降低存储成本


关系数据库主要应对的数据特点:

1)数据写入:大多数操作都是DML操作,插入、更新、删除等;

(2)数据读取:读取逻辑一般都比较复杂;

(3)数据存储:很少压缩,一般也不设置数据生命周期管理。


因此,从数据本质的角度而言,时序数据库(不变性, 唯一性以及可排序性)和关系型数据库的服务需求完全不同。


再说说数据库。数据库系统的发展从20世纪60年代中期开始到现在,经历若干代演变,造就了C.W. Bachman(巴克曼)、E.F.Codd(考特)和J. Gray(格雷)三位图灵奖得主,发展了以数据科学、数据建模和数据库管理系统(DBMS)等为核心理论、技术和产品的一个巨大的软件产业(详见下图,资料来源:https://db-engines.com/en/ranking_categories)。


图片 1.png


从上图可以得出一个结论,针对不同的数据需求,应该有不同的数据库系统应对之。否则,也没有必要出现这么多种的数据库系统了。


时间序列数据跟关系型数据库有太多不同,但是很多公司并不想放弃关系型数据库。于是就产生了一些特殊的用法,比如:用 MySQL 的 VividCortex, 用 Postgres 的 TimescaleDB;当然,还有人依赖K-V、NoSQL数据库或者列式数据库的,比如:OpenTSDB的HBase,而Druid则是一个不折不扣的列式存储系统;更多人觉得特殊的问题需要特殊的解决方法,于是很多时间序列数据库从头写起,不依赖任何现有的数据库, 比如: Graphite,InfluxDB。


图片 2.png


对选择数据库的开发者和使用者而言,针对时序数据库和关系型数据库之间选择,也主要考虑以下几个因素:


性能

研究过Oracle的存储结构和索引结构的都知道Oracle的ACID强一致性和B-Tree,保证强一致性导致数据持久化、可靠性、可用性实现的逻辑复杂,而加速数据访问,则需要Oracle 数据库使用 B-Tree 存储索引。


B-Tree 结构的有很多优势:在索引中从任何地方检索任何记录都大约花费相同的时间;B-Tree对大范围查询提供优秀的检索性能,包括精确匹配和访问查询;插入、更新和删除操作有效,维护键的顺序,以便快速检索;B-Tree性能对小表和大表都很好,不会随着表的增长而降低。从Tree这个名字就可以看出,这种B-Tree就是为了解决随机读写问题的。


而时序数据库,核心问题去解决批量读写,对于 95% 以上场景都是写入的时序数据库,B-Tree 很明显是不合适的,业界主流都是采用 LSM Tree(Log Structured Merge Tree)或者LSM的“升级版”TSM(Time Sort Merge Tree) 替换 B-Tree,比如 Hbase、Cassandra、InfluxDB等。LSM Tree 核心思想就是通过内存写和后续磁盘的顺序写入获得更高的写入性能,避免了随机写入。


LSM Tree 简单操作流程如下:

  • 数据写入和更新时首先写入位于内存里的数据结构。同时,为了避免数据丢失也会先写到磁盘文件中。

  • 内存里的数据结构会定时或者达到固定大小会刷到磁盘。

  • 随着磁盘上积累的文件越来越多,会定时的进行合并操作,减少文件数量。

  • 在内存or文件中,对数据进行压缩、去重等操作。


还有一个提升性能的关键点,即:分布式处理。这里以InfluxDB为例来说明。(顺便吐槽一下:InfluxDB单机版开源,集群版收费……,扔个鱼饵,“吃相”难看呀。)


图片 3.png


上图是InfluxDB的逻辑存储架构图,通过RP、ShardGroup、Shard的逐层分解,写入数据被尽可能的分布摊平。最后,每个Shard的TSM引擎负责对数据进行处理。Shard Group实现了数据分区,但是Shard才是InfluxDB中真正存储数据以及提供读写服务的服务。Shard是InfluxDB的TSM Engine,负责数据的编码存储、读写服务等。

图片 4.png

通常分布式数据库一般有两种Sharding策略:Range Sharding和Hash Sharding,前者对于基于主键的范围扫描比较高效;后者对于离散大规模写入以及随即读取相对比较友好。


InfluxDB的Sharding策略是典型的两层Sharding,上层使用Range Sharding,下层使用Hash Sharding。对于时序数据库来说,基于时间的Range Sharding是最合理的考虑,但如果仅仅使用Time Range Sharding,会存在一个很严重的问题,即写入会存在热点,基于TimeRange Sharding的时序数据库写入必然会落到最新的Shard上,其他老Shard不会接收写入请求。对写入性能要求很高的时序数据库来说,热点写入肯定不是最优的方案。解决这个问题最自然的思路就是再使用Hash进行一次分区,基于Key的Hash分区方案可以通过散列很好地解决热点写入的问题。


Shard分区好了,就可以采用分布式集群架构予以支撑,分摊压力,提高并行度。



成本和功能

很多时间序列数据都没有多大用处,特别是当系统长时间正常运行时,完整的历史数据意义并不大。而这些低价值数据,占据大量高价值存储空间,会让企业“抓狂”。因此,一些共通的对时间序列数据分析的功能和操作:数据压缩、数据保留策略、连续查询、灵活的时间聚合等,都是为了解决时序数据库的性价比问题的。同时,有些数据库比如 RDDTool 和 Graphite 会自动删除高精度的数据,只保留低精度的。而这些“功能”对关系型数据库而言,简直是不可想象的。


还有一些成本很多人会忘记考虑,比如:License,用需要License的关系型数据库来存储时序数据,成本根本没法承受。


至此,我们得出的结论就一个:选择到底用什么数据库来支持时序数据,还是需要对时序数据的需求进行透彻的分析,然后根据时序数据的特点,来选择适合的数据库。


启用名言作为本文结尾:适合的,就是最好的


640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1

本文作者:格创东智首席架构师王锦博士。格创东智是由智能产品制造及互联网应用服务领军企业TCL孵化的创新型科技公司,致力于深度融合人工智能AI)、大数据、云计算等前沿技术与制造行业经验,打造行业领先的“制造x”工业互联网平台,同时为各类制造业企业提供优质、安全、高效的管理IT服务,助力传统制造业智能化转型升级。(转载请注明作者及来源)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能制造
    +关注

    关注

    48

    文章

    5475

    浏览量

    76257
  • 工业互联网
    +关注

    关注

    28

    文章

    4297

    浏览量

    94044
  • 工业大数据
    +关注

    关注

    0

    文章

    72

    浏览量

    7824
收藏 人收藏

    评论

    相关推荐

    有云服务器还需要租用数据库吗?

    如果你的应用程序需要处理大量的数据,并且这些数据需要高效的查询和分析能力,那么租用专业的数据库服务可能是更好的选择。这些服务通常提供了更高的
    的头像 发表于 10-31 10:50 69次阅读

    科技云报到:大模型时代下,向量数据库的野望

    科技云报到:大模型时代下,向量数据库的野望
    的头像 发表于 10-14 17:18 202次阅读

    工业互联网远程监控平台是什么

    工业互联网远程监控平台:赋能智能制造的利器 在当今快速发展的工业领域,工业互联网远程监控平台正逐渐成为推动
    的头像 发表于 08-29 14:11 177次阅读

    数字化时代数据管理:多样化数据库选型指南

    挑战。数据库作为数据管理的核心技术,其选型对于系统至关重要。传统的关系型数据库(RDBMS)以其严格的ACID事务、优秀的一致性和安全性在企业应用中占据了长久的统治地位。然而,随着互联网
    的头像 发表于 07-08 19:10 255次阅读
    数字化<b class='flag-5'>时代</b>的<b class='flag-5'>数据</b>管理:多样化<b class='flag-5'>数据库</b>选型指南

    工业互联网数据中台是什么

    工业互联网数据中台是企业数字化转型过程中的一个核心组件,它主要负责数据的汇聚、清洗、整合、存储、计算和分发。数据中台在
    的头像 发表于 07-03 16:34 377次阅读

    工业互联网平台中什么是关键

    之间的互联互通,实现数据的实时采集、传输和处理。因此,网络基础设施的建设和优化是工业互联网平台的关键。 数据采集与处理
    的头像 发表于 07-02 09:37 650次阅读

    工业互联网三大体系是什么?

    工业互联网三大体系分别是网络体系、平台体系和安全体系。 1. 网络体系:在工业互联网中,网络体系是基础,它的作用是连接各个主体和环节,实现数据
    的头像 发表于 05-25 14:03 1002次阅读

    传感器的工业互联网时代

    来源:传感器技术,谢谢 编辑:感知芯视界 Link 工业互联网 工业互联网的最早概念来自于美国,工业互联
    的头像 发表于 05-23 09:24 311次阅读

    工业互联网和ERP的关系

    工业互联网和ERP有密切的关系。工业互联网是指将各种工业设备、传感器等设备连接到互联网上,通过
    的头像 发表于 05-08 14:06 422次阅读

    时序数据库是什么?时序数据库的特点

    时序数据库是一种在处理时间序列数据方面具有高效和专门化能力的数据库。它主要用于存储和处理时间序列数据,比如传感器数据、监控
    的头像 发表于 04-26 16:02 593次阅读

    工业路由器:连接工业互联网的工具

    工业互联网正在逐渐成为工业发展的核心驱动力。工业路由器,作为连接工业互联网的关键工具,无疑在其中
    的头像 发表于 04-22 17:25 340次阅读

    工业互联网平台是什么

    工业互联网平台(Industrial Internet Platform)是面向工业领域的一种综合性的云计算和大数据分析平台。它将互联网、物
    的头像 发表于 03-28 15:38 1500次阅读

    工业互联网实训是什么?工业互联网实训包括哪些?

    工业互联网实训是一种针对工业互联网领域的培训课程,旨在帮助学员掌握工业互联网的基本概念、技术、应
    的头像 发表于 01-17 17:00 996次阅读

    什么是JSON数据库

    数据库的显著优势关于JSON数据库的Q&A一、什么是JSON?首先,我们得明确“JSON”的含义。开发人员在创建业务逻辑、用户界面、数据库或后端系统时,
    的头像 发表于 12-02 08:04 822次阅读
    什么是JSON<b class='flag-5'>数据库</b>

    NoSQL 数据库如何选型

    什么是NoSQL数据库?为什么要使用NoSQL数据库?键值数据库内存键值数据库文档数据库列式数据库
    的头像 发表于 11-26 08:05 442次阅读
    NoSQL <b class='flag-5'>数据库</b>如何选型