一种分布式时序数据库存储引擎方法、装置及介质制造方法及图纸

技术编号:32887006 阅读:17 留言:0更新日期:2022-04-02 12:22
本发明专利技术涉及数据存储领域,具体提供了一种分布式时序数据库存储引擎方法,采用线性数据模型结构进行数据分区,按照时间对数据点进行分区,每个所述的分区可以独立的对外提供服务,每个分区包含时间范围内的所有数据点;每个分区使用一个单独的目录,所述目录包含元数据和时序数据两种文件,元数据记录的元信息通过mmap映射字节数组里进行访问;对于时序数据通过二阶增量编码的方式减少数据存储空间。与现有技术相比,本发明专利技术提升分布式时序数据库的吞吐量,减少堆内存占用并通过二阶编码方式减少存储空间,解决乱序时间点写入问题,并支持通过预写日志防止内存数据丢失。通过预写日志防止内存数据丢失。通过预写日志防止内存数据丢失。

【技术实现步骤摘要】
一种分布式时序数据库存储引擎方法、装置及介质


[0001]本专利技术涉及数据存储领域,具体提供一种分布式时序数据库存储引擎方法。装置及介质。

技术介绍

[0002]时序数据是带有时间戳和多个标签的指标值集合,它通常用于记录随时间变化的数据。时序数据的工作负载特点为:
[0003]对于写入来说,大部分操作写入,有时比例会达到95%至99%,甚至更高。写入几乎总是顺序追加的,很少进行更新,大部分写入是近期发生的,很少写过去某个时间产生的指标,一般都是批量删除,删除某个指标历史时间范围的数据,很少有随机删除。
[0004]对于读取来说,数据比内存要大的很多,由于读取操作占比很低,所以系统受IO限制较大,读取通常需要按时间进行排序,并发读取和同时读取多个时间段是比较常见的。
[0005]目前主流的时序数据库,如OpenTSDB底层采用HBase,一种分布式键值数据库作为存储,帮助解决集群分区问题。而Prometheus和InfluxDB时序数据库的存储引擎采用LSM树的结构管理数据。这些实现都会有合并机制,将超过一定时间的数据会合并成更大的文件,在合并的过程中会产生写入放大,降低系统的吞吐量。由于采用的是通用性存储引擎,在数据存储时会将指标和标签列存储多次,造成空间浪费。

技术实现思路

[0006]本专利技术是针对上述现有技术的不足,提供一种实用性强的分布式时序数据库存储引擎方法。
[0007]本专利技术进一步的技术任务是提供一种设计合理,安全适用的分布式时序数据库存储引擎装置
[0008]本专利技术进一步的技术任务是提供一种计算机可读介质。
[0009]本专利技术解决其技术问题所采用的技术方案是:
[0010]一种分布式时序数据库存储引擎方法,采用线性数据模型结构进行数据分区,按照时间对数据点进行分区,每个所述的分区可以独立的对外提供服务,每个分区包含时间范围内的所有数据点;
[0011]每个分区使用一个单独的目录,所述目录包含元数据和时序数据两种文件,元数据记录的元信息通过mmap映射字节数组里进行访问;
[0012]对于时序数据通过二阶增量编码的方式减少数据存储空间。
[0013]进一步的,在内存中只有头部分区和下一个分区是在堆中并可写,称为内存分区,所述内存分区写入前将数据追加到预写日志的末尾。
[0014]进一步的,所述内存分区首先将操作日志写入预写日志WAL,发生崩溃时可以通过WAL按顺序进行恢复。
[0015]进一步的,再往前的分区写入磁盘上的单个文件称为磁盘分区,磁盘分区的文件
是只读的,并通过内核在mmap进行内存映射。
[0016]进一步的,所述元数据文件记录了时序数据的元信息,所述时序数据文件通mmap映射字节数组里进行访问。
[0017]进一步的,所述时序数据由时间戳和值的元组表示,在实现时UNIX时间戳由一个无符号的64位整数表示,仅存储与前一个时序时间戳的差值,先进行一阶增量编码,解码时需要顺序应用前面的增量结果进行恢复,再进行二阶增量编码,所述二阶增量编码即在所述一阶增量编码的基础上再求增量。
[0018]进一步的,在分区写入的若是无序的数据点,将乱序的数据点缓存在一个单独的数组中,在刷到磁盘时再与内存中的有序时间点进行合并并重新排序。
[0019]进一步的,若是数据点超过了可写入的分区范围,设置最近的两个分区可写入。
[0020]一种分布式时序数据库存储引擎装置,包括:至少一个存储器和至少一个处理器;
[0021]所述至少一个存储器,用于存储机器可读程序;
[0022]所述至少一个处理器,用于调用所述机器可读程序,执行一种分布式时序数据库存储引擎方法。
[0023]一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行一种分布式时序数据库存储引擎方法。
[0024]本专利技术的一种分布式时序数据库存储引擎方法、装置及介质和现有技术相比,具有以下突出的有益效果:
[0025]本专利技术提升分布式时序数据库的吞吐量,并支持一定范围的乱序时间数据写入。减少堆内存占用并通过二阶编码方式减少存储空间。解决乱序时间点写入问题,并支持通过预写日志防止内存数据丢失。
附图说明
[0026]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027]附图1是一种分布式时序数据库存储引擎方法中线性数据模型结构图;
[0028]附图2是一种分布式时序数据库存储引擎方法中元数据文件与时序数据文件的映射关系图。
具体实施方式
[0029]为了使本
的人员更好的理解本专利技术的方案,下面结合具体的实施方式对本专利技术作进一步的详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本专利技术保护的范围。
[0030]下面给出一个最佳实施例:
[0031]如图1

2所示,本实施例中的一种分布式时序数据库存储引擎方法,采用线性数据模型结构进行数据分区,按照时间对数据点进行分区,每个所述的分区可以独立的对外提
供服务,每个分区包含时间范围内的所有数据点。
[0032]每个分区使用一个单独的目录,所述目录包含元数据和时序数据两种文件,元数据记录的元信息通过mmap映射字节数组里进行访问,对于时序数据通过二阶增量编码的方式减少数据存储空间。
[0033]其中,在内存中只有头部分区和下一个分区是在堆中并可写,称为内存分区。内存分区写入前将数据追加到预写日志的末尾防止数据丢失,如果不需要也可以关闭从而进一步提升写入性能。
[0034]再往前的分区写入磁盘上的单个文件,称为磁盘分区。磁盘分区的文件是只读的,并通过内核在mmap进行内存映射,这允许我们缓存文件而无需将其复制到用户空间,从而解决内存堆占用过高的问题。
[0035]可以设置分区的间隔时间,这样新的分区会自动添加到头部,旧的分区刷到磁盘进行持久化。这个线性模型的优点首先是,分区的元数据记录了时间戳的最大和最小值,可以快速过滤范围外的数据;其次最新的数据缓存在内存堆里,对时序数据库来说近期的数据被读取的纪律更高,这将加快大多数的读取速度。
[0036]每个分区使用一个单独的目录,目录中包含元数据(meta)和时序数据(data)两种文件。meta文件记录了data的元信息,data文件通过mmap映射字节数组里进行访问。data字节数组虽然可以通过解码得到方便的使用的内存结构,但这样也失去了使用mmap的目的。meta里记录了指标的文件偏移量和字节大小本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式时序数据库存储引擎方法,其特征在于,采用线性数据模型结构进行数据分区,按照时间对数据点进行分区,每个所述的分区可以独立的对外提供服务,每个分区包含时间范围内的所有数据点;每个分区使用一个单独的目录,所述目录包含元数据和时序数据两种文件,元数据记录的元信息通过mmap映射字节数组里进行访问;对于时序数据通过二阶增量编码的方式减少数据存储空间。2.根据权利要求1所述的一种分布式时序数据库存储引擎方法,其特征在于,在内存中只有头部分区和下一个分区是在堆中并可写,称为内存分区,所述内存分区写入前将数据追加到预写日志的末尾。3.根据权利要求2所述的一种分布式时序数据库存储引擎方法,其特征在于,所述内存分区首先将操作日志写入预写日志WAL,发生崩溃时可以通过WAL按顺序进行恢复。4.根据权利要求3所述的一种分布式时序数据库存储引擎方法,其特征在于,再往前的分区写入磁盘上的单个文件称为磁盘分区,磁盘分区的文件是只读的,并通过内核在mmap进行内存映射。5.根据权利要求1、2、3或4所述的一种分布式时序数据库存储引擎方法,其特征在于,所述元数据文件记录了时序数据的元信息,所述时序数据文件通mmap映射字节数组里进行访...

【专利技术属性】
技术研发人员:张炜刚贾德星
申请(专利权)人:山东浪潮科学研究院有限公司
类型:发明
国别省市:

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

1