海量设备场景下时序数据库分区表实现方法及系统技术方案

技术编号:39766869 阅读:11 留言:0更新日期:2023-12-22 02:20
本发明专利技术公开了海量设备场景下时序数据库分区表实现方法及系统,属于时序数据库技术领域,要解决的技术问题为如何实现时序数据库对海量设备的数据管理

【技术实现步骤摘要】
海量设备场景下时序数据库分区表实现方法及系统


[0001]本专利技术涉及时序数据库
,具体地说是海量设备场景下时序数据库分区表实现方法及系统


技术介绍

[0002]随着物联网技术和应用的快速发展,物联网设备产生的数据呈爆炸式增长

应用物联网最广泛的时序数据库,其对接的设备规模也不断增加

经常会出现一个时序数据库要接入成千上万个相同结构的设备,如何更好的管理海量接入的设备成为一个需要重点考虑的问题

[0003]在传统数据库在解决此类问题时,一般的处理方式是通过分库

分表或者分区的方式

其中分库

分表的方式对用户业务会有侵害,需要修改用户应用,使用也不方便

比较常用的方式是数据库分区

[0004]数据库分区是指把一张表的数据分成多个区块,在逻辑上看最终只是一张表,但底层是由多个物理区块组成的

对数据库进行分区可以极大的降低系统响应延迟同时提高数据吞吐量

对数据库分区存在以下益处:
[0005]1、
分区使得大型表更易于管理:对数据子集的维护操作也更加高效,因为这些操作只针对需要的数据而不是整个表

一个好的分区策略将通过只读取满足查询所需的相关数据来减少要扫描的数据量,当所有的数据都在同一个分区上,对数据库的查询

计算

以及其它操作都会被限制在磁盘访问
IO
这个瓶颈上;
[0006]2、
分区使得系统可以充分利用所有资源:一个良好的分区方案搭配并行计算,分布式计算就可以充分利用所有节点来完成通常要在一个节点上完成的任务,当一个任务可以拆分成几个分散的子任务,每个子任务访问不同的分区,就可以达到提升效率的目的;
[0007]3、
分区增加了系统的可用性:由于分区的副本通常是存放在不同的物理节点的,所以一旦某个分区不可用,系统依然可以调用其它副本分区来保证作业的正常运转

[0008]目前主流时序数据库,如
InfluxDB

TDEngine
等,一般都只支持按照时间进行一级分区,不支持普通关系型数据库的分区模型

当时序数据库管理海量设备时会遇到如下性能问题:
[0009]如果用一个表管理所有设备数据:所有设备并发写入时,需要对每行设备数据进行加锁处理,并发读写的效率就会降低;另外如果同一设备的采集数据波动不大,但不同设备采集的数据可能波动很大,当所有数据随机放到同一个表里的话,会导致这个表的列变化概率变高,从而导致数据的压缩效果变差

而时序数据库因为存储的数据量大,对数据的压缩率是有很高的要求的;
[0010]如果每个设备对应一个表,像
TDEngine
就是用超表
/
子表的方式来应对这种场景,每个子表对应一个设备,这样虽然解决了锁的问题,但表
/
子表的数量会急剧变多,导致时序数据库要管理的元数据增多,文件数也扩大很多倍,增大了系统负载

[0011]如何实现时序数据库对海量设备的数据管理,是需要解决的技术问题


技术实现思路

[0012]本专利技术的技术任务是针对以上不足,提供海量设备场景下时序数据库分区表实现方法及系统,来解决如何实现时序数据库对海量设备的数据管理的技术问题

[0013]第一方面,本专利技术一种海量设备场景下时序数据库分区表实现方法,包括如下步骤:
[0014]定义时序数据库的分区方式,以实现满足关系型数据库分区表模型的时序数据库,其中,分区方式为:基于时间对时序数据库进行一级分区,按照数据写入数据库的时间创建不同的分区目录;按照关系型数据库分区方式对时序数据库进行二级分区,将数据库表划分为多个分区块,每个分区目录下对应有至少一个分区块;
[0015]定义时序数据库的分区管理方式:将数据表划分为数据文件和分区索引文件,数据文件按照分区块进行切分,每个分区块的数据能够追加写入,当前分区块被写满时,在数据文件中申请新的分区块,分区索引文件用于记录存储于分区块中数据的属性信息,属性信息包括数据写入分区块的时间信息以及索引位置信息;
[0016]基于要写入的数据

根据定义的分区方式和分区管理方式配置时序数据库:按照数据写入时序数据库的时间创建不同分区目录,将数据表划分为数据文件和分区检索文件,按照指定的分区方式在数据文件中申请分区块;
[0017]写入数据:对于要写入的数据,基于写入时间计算所属分区目录

并从分区索引文件中查询指定分区块的索引位置,如果对应分区块存在,将数据写入对应分区块中,如果对应分区块不存在,在数据文件中申请一个新的分区块,将数据写入新的分区块中,并将新的分区块更新到分区索引文件中

[0018]作为优选,按照指定的分区方式在数据文件中申请分区块时,每个分区块中划分有用于存储时序数据的顺序块和用于存储乱序数据的乱序块;
[0019]对应的,将数据写入对应分区块中时执行如下操作:
[0020]如果写入的数据是顺序数据,将顺序数据写入顺序块中;
[0021]如果写入的数据是乱序数据

且顺序块没有写满,将乱序数据写入顺序块,并对顺序块进行排序重写;
[0022]如果写入的数据是乱序数据

且顺序块已经写满,如果对应的分区块中存在乱序块,将乱序数据写入乱序块中,如果对应的分区块中不存在乱序块,则在对应的分区块中创建乱序块,将乱序数据写入创建的乱序块中,并将新创建的乱序块挂载到对应分区的分区索引中

[0023]作为优选,对于写入时序数据库的数据,查询数据所处分区时,如果分区块中没有乱序块,从顺序块进行二分查询,如果分区块中存在乱序块,合并顺序块和乱序块进行排序查询

[0024]作为优选,关系型数据库的分区方式包括范围分区

哈希分区

值分区以及列表分区四种;
[0025]范围分区用于把数值在一个区间内的所有数据置到一个分区块,其中,分区列的值为连续值;
[0026]哈希分区用于通过哈希函数

将数据均匀的分布到预先定义的各个分区块中;
[0027]值分区用于为指定列的每一个值建立一个分区;
[0028]列表分区用于把数值在一个区间内的所有数据置到一个分区块,分区列的值为离散值

[0029]作为优选,对于时序数据库,写入的数据按照列进行存储,对于相同列的数据,数据类型和长度均相同;
[0030]对于数据的属性信息,写入分区块的时间信息包括时间的最小值和最大值

本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种海量设备场景下时序数据库分区表实现方法,其特征在于,包括如下步骤:定义时序数据库的分区方式,以实现满足关系型数据库分区表模型的时序数据库,其中,分区方式为:基于时间对时序数据库进行一级分区,按照数据写入数据库的时间创建不同的分区目录;按照关系型数据库分区方式对时序数据库进行二级分区,将数据库表划分为多个分区块,每个分区目录下对应有至少一个分区块;定义时序数据库的分区管理方式:将数据表划分为数据文件和分区索引文件,数据文件按照分区块进行切分,每个分区块的数据能够追加写入,当前分区块被写满时,在数据文件中申请新的分区块,分区索引文件用于记录存储于分区块中数据的属性信息,属性信息包括数据写入分区块的时间信息以及索引位置信息;基于要写入的数据

根据定义的分区方式和分区管理方式配置时序数据库:按照数据写入时序数据库的时间创建不同分区目录,将数据表划分为数据文件和分区检索文件,按照指定的分区方式在数据文件中申请分区块;写入数据:对于要写入的数据,基于写入时间计算所属分区目录

并从分区索引文件中查询指定分区块的索引位置,如果对应分区块存在,将数据写入对应分区块中,如果对应分区块不存在,在数据文件中申请一个新的分区块,将数据写入新的分区块中,并将新的分区块更新到分区索引文件中
。2.
根据权利要求1所述的海量设备场景下时序数据库分区表实现方法,其特征在于,按照指定的分区方式在数据文件中申请分区块时,每个分区块中划分有用于存储时序数据的顺序块和用于存储乱序数据的乱序块;对应的,将数据写入对应分区块中时执行如下操作:如果写入的数据是顺序数据,将顺序数据写入顺序块中;如果写入的数据是乱序数据

且顺序块没有写满,将乱序数据写入顺序块,并对顺序块进行排序重写;如果写入的数据是乱序数据

且顺序块已经写满,如果对应的分区块中存在乱序块,将乱序数据写入乱序块中,如果对应的分区块中不存在乱序块,则在对应的分区块中创建乱序块,将乱序数据写入创建的乱序块中,并将新创建的乱序块挂载到对应分区的分区索引中
。3.
根据权利要求2所述的海量设备场景下时序数据库分区表实现方法,其特征在于,对于写入时序数据库的数据,查询数据所处分区时,如果分区块中没有乱序块,从顺序块进行二分查询,如果分区块中存在乱序块,合并顺序块和乱序块进行排序查询
。4.
根据权利要求1‑3任一项所述的海量设备场景下时序数据库分区表实现方法,其特征在于,关系型数据库的分区方式包括范围分区

哈希分区

值分区以及列表分区四种;范围分区用于把数值在一个区间内的所有数据置到一个分区块,其中,分区列的值为连续值;哈希分区用于通过哈希函数

将数据均匀的分布到预先定义的各个分区块中;值分区用于为指定列的每一个值建立一个分区;列表分区用于把数值在一个区间内的所有数据置到一个分区块,分区列的值为离散值
。5.
根据权利要求1‑3任一项所述的海量设备场景下时序数据库分区表实现方法,其特
征在于,对于时序数据库,写入的数据按照列进行存储,对于相同列的数据,数据类型和长度均相同;对于数据的属性信息,写入分区块的时间信息包括时间的最小值和最大值

,索引位置信息用于记录数据所在分区块的偏移量
。6.
一种海量设备场景下时序数据库分区表实现系统,其特征在于,用于通过如权利要求1‑5任一项所述的海量设备场景下时序数据库分区表实现对海量设备的数据管理,所述系统包括分区方式定义模块

【专利技术属性】
技术研发人员:张炜刚贾德星
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1