CN116644069A - 针对时间序列数据库的多模型学习索引构建方法及系统 - Google Patents
针对时间序列数据库的多模型学习索引构建方法及系统 Download PDFInfo
- Publication number
- CN116644069A CN116644069A CN202310633058.9A CN202310633058A CN116644069A CN 116644069 A CN116644069 A CN 116644069A CN 202310633058 A CN202310633058 A CN 202310633058A CN 116644069 A CN116644069 A CN 116644069A
- Authority
- CN
- China
- Prior art keywords
- data
- learning index
- model
- adopting
- coding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000010276 construction Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000007667 floating Methods 0.000 claims abstract description 25
- 230000011218 segmentation Effects 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000007906 compression Methods 0.000 claims description 59
- 230000006835 compression Effects 0.000 claims description 59
- 238000013500 data storage Methods 0.000 claims description 11
- 241000282575 Gorilla Species 0.000 claims description 9
- 238000011161 development Methods 0.000 abstract description 3
- 230000018109 developmental process Effects 0.000 abstract description 3
- 238000005457 optimization Methods 0.000 abstract description 3
- 102000017795 Perilipin-1 Human genes 0.000 description 5
- 108010067162 Perilipin-1 Proteins 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012417 linear regression Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
针对时间序列数据库的多模型学习索引构建方法及系统,属于时间序列数据库技术领域。为了解决现有的索引方案没有针对时间序列数据库进行特异性优化开发,因此限制了针对时间序列数据库的索引能力。本发明针对时间序列数据库的数据采用为LSM树存储结构存储数据;构建学习索引的过程中,针对RLE编码的时间戳数据采用常量模型建立学习索引,针对于ZigZag算法编码后的值未超过(1<<60)‑1的整数型数据,采用Packed编码的时间戳数据和浮点数,采用分段模型建立学习索引,针对于ZigZag算法编码后的值大于(1<<60)‑1的整数型数据、采用RAW编码的时间戳和字符串,采用线性模型建立学习索引。
Description
技术领域
本发明属于时间序列数据库技术领域,具体涉及一种时间序列数据库多模型学习索引方法构建方法及系统。
背景技术
目前时间序列数据库尚处于一个较新的领域,暂无相关的时间序列数据库学习索引的研究,已有的学习索引研究工作都是基于传统的关系型数据库。
Chaohong Ma等人提出了FILM学习索引,该索引是一种用于大于内存数据库的完全学习索引。FILM是一种树状结构,它使用简单的近似模型来索引跨越不同存储设备的数据。与用于大于内存的数据库的现有技术(例如反缓存)相比,FILM允许以显着降低的主内存开销进行更高效的查询处理。FILM还旨在有效解决现有索引大于内存数据库的方法中由内存和磁盘之间的数据交换引起的瓶颈之一。更具体地说,更新现有冷数据识别方法所采用的LRU(最近最少使用)结构(确定当可用内存用完时要驱逐到磁盘的数据)通常会导致查询处理的显着延迟。FILM采用了一种截然不同的方法,它提出了一种自适应LRU结构,并以最小的开销将其更新搭载到查询处理中。
Liu Li等人提出了一种具有高可扩展性的数据感知学习索引方案,称为EWALI\cite{EWALI}。它基于轻量级数据感知数据分区算法构建索引模型。当数据分布发生变化时,EWALI可以自动拆分相关的叶子节点并重新训练相应的模型以适应不同的工作负载。此外,EWALI设计了一个替代的双缓冲区来处理新数据,并采用延迟更新机制来合并数据,大大减少了写锁定,提高了写性能。
Zhang Zhou等人提出了PLIN\cite{PLIN},PLIN的贡献之处在于四个方面:NVM感知数据放置策略、局部无序和全局有序的叶节点、模型复制机制和分层插入策略。此外,PLIN被提出用于NVM-only架构,可以支持即时恢复。文中还提出了乐观的并发控制和细粒度的锁定机制,使PLIN可扩展到并发请求。
虽然,时间序列数据库存在很多特点使得学习索引更加合理和适用,但是现有的索引方案没有针对时间序列数据库进行特异性优化开发,因此限制了针对时间序列数据库的索引能力。
发明内容
本发明的目的是为了解决现有的索引方案没有针对时间序列数据库进行特异性优化开发,因此限制了针对时间序列数据库的索引能力。
针对时间序列数据库的多模型学习索引构建方法,所述方法包括针对数据进行编码的过程和构建学习索引的过程;所述数据为时间序列数据库的数据,所述时间序列数据库的数据存储结构为LSM树;
所述针对数据进行编码的过程包括以下步骤:
针对整数类型数据,使用ZigZag算法进行编码;
针对时间戳数据,首先对时间戳数据进行差分编码,得到差分数组,如果根据差分数组中的所有值相同,则对差分数组中的所有值采用RLE编码,否则继续判断差分数组中的最大值是否大于(1<<60)-1,如果大于,则对差分数组中的所有值采用RAW编码;如果不大于,则对差分数组中的所有值采用Packed编码;
所述构建学习索引的过程包括以下步骤:
针对RLE编码的时间戳数据采用常量模型建立学习索引;
针对于ZigZag算法编码后的值未超过(1<<60)-1的整数型数据,采用Packed编码的时间戳数据和浮点数,采用分段模型建立学习索引;
针对于ZigZag算法编码后的值大于(1<<60)-1的整数型数据、采用RAW编码的时间戳和字符串,采用线性模型建立学习索引。
进一步地,针对整数类型数据,如果ZigZag算法编码后的值未超过(1<<60)-1,对编码后的值使用simple8b算法对编码后数据进行压缩;如果大于该值,则不进行压缩;
针对浮点数采用Gorilla压缩算法进行压缩;
针对字符串类型的数据,采用Snappy压缩算法进行压缩。
进一步地,针对不进行压缩的整数类型数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
进一步地,采用RAW编码的时间戳数据为不进行压缩的时间戳数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
进一步地,针对采用分段模型建立学习索引所对应的数据进行存储时,保存各个分段的区间数据;在进行数据查找时,使用二分查找确定数据所落在的区间,并返回对应区间所存储的值,即二分查找是针对整数型数据,或者浮点型数据,或者Packed编码的时间戳数据的分段模型的分段点进行的,每个分段存储了1个值,查找到数据所落在的区间,返回对应区间所存储的值。
针对时间序列数据库的多模型学习索引系统,所述系统包括数据编码单元和学习索引单元;所述数据为时间序列数据库的数据,所述时间序列数据库的数据存储结构为LSM树;
所述编码单元针对数据进行编码,编码过程包括以下步骤:
针对整数类型数据,使用ZigZag算法进行编码;
针对时间戳数据,首先对时间戳数据进行差分编码,得到差分数组,如果根据差分数组中的所有值相同,则对差分数组中的所有值采用RLE编码,否则继续判断差分数组中的最大值是否大于(1<<60)-1,如果大于,则对差分数组中的所有值采用RAW编码;如果不大于,则对差分数组中的所有值采用Packed编码;
所述学习索引单元用于为查询出数据提供索引,所述索引为学习索引,学习索引建立的过程包括以下步骤:
针对RLE编码的时间戳数据采用常量模型建立学习索引;
针对于ZigZag算法编码后的值未超过(1<<60)-1的整数型数据,采用Packed编码的时间戳数据和浮点数,采用分段模型建立学习索引;
针对于ZigZag算法编码后的值大于(1<<60)-1的整数型数据、采用RAW编码的时间戳和字符串,采用线性模型建立学习索引。
进一步地,针对整数类型数据,如果ZigZag算法编码后的值未超过(1<<60)-1,对编码后的值使用simple8b算法对编码后数据进行压缩;如果大于该值,则不进行压缩;
针对浮点数采用Gorilla压缩算法进行压缩;
针对字符串类型的数据,采用Snappy压缩算法进行压缩。
进一步地,针对不进行压缩的整数类型数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
进一步地,采用RAW编码的时间戳数据为不进行压缩的时间戳数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
进一步地,针对采用分段模型建立学习索引所对应的数据进行存储时,保存各个分段的区间数据;在进行数据查找时,使用二分查找确定数据所落在的区间,并返回对应区间所存储的值,即二分查找是针对整数型数据,或者浮点型数据,或者Packed编码的时间戳数据的分段模型的分段点进行的,每个分段存储了1个值,查找到数据所落在的区间,返回对应区间所存储的值。
有益效果:
本发明基于时间序列数据库的存储结构LSM树创建了学习索引能够充分发挥学习索引的特点。同时本发明经过研究后基于时间序列数据库的管理方式创建了学习索引,能够对时间序列数据库进行充分有效的管理,极大地提高时间序列数据库的索引能力。此外本发明还根据时间序列数据库的不同数据分布规则,分别针对性地创建三种不同的模型来学习数据分布,这结合了时序数据库数据存储的特点来进行模型的学习,这将使得模型的准确度得到很大的提升。
附图说明
图1为时间戳类型数据压缩流程图。
图2为分段数据偏移量分布曲线。
图3为一般数据偏移量分布曲线图。
具体实施方式
具体实施方式一:
本实施方式为针对时间序列数据库的多模型学习索引构建方法。
基于对时间序列数据库的特点进行了充分研究和分析,提出的本发明具有如下四个方面特点:
1、数据存储结构方面,时间序列数据库的数据存储结构本质是LSM树,因此,其在磁盘上的位置,很多时候是不变的,只有当进行compact的时候,才会改变其位置,而新插入的数据在不进行compact的时候是不会影响原有数据的位置,对于学习索引模型来说将十分友好。而传统的数据库采用B+Tree的存储结构,每次插入数据都可能会导致B+Tree叶子节点的分裂。也就是说,每次插入都会导致数据位置发生新的变化,这样也就导致了更频繁的学习索引模型的重训练。因此,时间序列数据库背景下的模型重训练将更轻量,频率更低;同时有益于学习索引的稳定性。
2、数据特性方面,时间序列数据其主要的特点是不会修改历史数据,这样也就避免了对相应学习索引模型的重训练。而这恰好是传统数据库学习索引无法避免的问题。在时间序列数据库背景下,只有追加和查询的工作负载,这同样又降低了模型重训练的压力。因此该特点影响的也是学习索引的性能,本发明考虑时间序列数据库没有修改历史数据的需求,所以将不会产生由于修改历史数据引起的学习索引失效,这样也有益于学习索引的稳定性。
3、数据管理方面,每一条时间线上的数据都由series管理,都有唯一的serieskey,不同series中的数据不会产生关联,在存储方面,不同series中的数据存储在磁盘上的不同block中,一个block只存储一个series。因此可以单独为每一个series对应的数据建立学习索引,这样一方面可以保证其他series数据发生变化时,不会影响到本series,继而不会影响到学习索引,同样也意味着我们可以将学习索引模型的大小控制为不超过一个block的数据,这样就可以保证该模型所对应的全部数据的blockID都是相同的;另一方面同一series中的数据将更加符合其所记录事物的规律,模型将更容易拟合。
4、数据分布方面,时间序列数据库会把数据按照时间进行组织,划分为不同的shard进行管理,这样也就保证了单个shard上的数据不会太多,我们可以用一个相对更小更精确的模型,来实现学习索引。而传统数据库的数据放在一起统一管理,虽然也可手动对数据按照不同属性进行分区,但其灵活不规范,不如时间序列数据库支持的更好。该特点属于在特点3的更高一个维度,表现为最终在单shard上的单series建立学习索引。
然后在此基础上,基于influxDB实现多模型学习索引。influxDB会根据不同的数据类型会采用不同的压缩算法并存储。因此本发明将根据不同类型的不同数据分布规则采用三种不同的模型来实现时间序列数据库多模型学习索引。
首先对influxDB的数据分布规则进行说明:
A、对于整数类型(int)数据,首先使用ZigZag算法进行编码,如果编码后的值未超过(1<<60)-1,对编码后的值使用simple8b算法对编码后数据进行压缩;如果大于该值,则不进行压缩,但仍需要额外的存储空间作为标志位表示采用了何种压缩算法,即便是没有进行压缩。其中1<<60为计算机计算数据的一种公式,转换为10进制为1152921504606846975;
ZigZag算法原理比较简单,他对于不是特别大的数字有着不错的效果。他的主要思想是将int数据的第一个符号位移动到二进制数的末尾,并去掉二进制数中多余的前导0,从而实现压缩效果。
simple8b算法是一个用来将多个数据打包进1个64位整数的算法,他可以将多个整型数据打包存放在一个64位的整数内。simple8b算法的选择器占4位,按下标规则其映射到一个值Bits,该值为在接下来的60位中,每Bits位代表一个数值。
B、对于时间戳数据,其有一定的规律可循,因此influxDB将其设为了独立的数据类型,并有着不同的存储规则。首先对时间戳数据进行差分编码,得到差分数组,再根据差分数组的不同结果采用不同的算法,其流程图如图1所示,如果根据差分数组中的所有值相同,则对差分数组中的所有值采用RLE编码,否则继续判断差分数组中的最大值是否大于(1<<60)-1,如果大于,则对差分数组中的所有值采用RAW编码;如果不大于,则对差分数组中的所有值采用Packed编码;其中RLE编码是只保存了一部分常量,Packed编码是采用了simple8b压缩算法,RAW编码是不进行压缩存储,其也需要额外的存储空间作为标志位表示采用了何种压缩算法(即便是没有进行压缩)。
C、浮点数的压缩方法直接采用了facebook提出的Gorilla压缩算法进行压缩。Gorilla压缩算法主要是使用了异或的思想。因此,对于浮点数本发明采用分段模型来进行学习。
D、字符串类型的数据直接采用了google发布的Snappy压缩算法。
常量模型顾名思义所有的值都只是一个相同的值,顾使用一个常量来保存并替代所有的值。在时间序列场景中,监控场景是最普遍的一个应用场景。我们不能实时的查看所需要监控指标的状态,这样对于资源的消耗将是巨大的。所以采用打点的方式,按照指定的频率去获取对应的监控指标。在这种场景下,其产生的时间戳数据将是一个严格的等差数列(时间戳的一种情况),按照时间戳数据压缩存储规则来讲,其将采用RLE编码的方式。使用该算法进行编码时,核心思想是记录数据的重复次数,差值数组的所有值都相同,所以需要保存原始数组的第一个值(第一个时间戳),同时记录差值数组的差值。因此,对于这些数据,其在存储介质上偏移量的分布将是一个常量。这种情况下为数据选择了一个常量模型,该模型只保存一个常量值,对于其中所有数据对应的数据偏移量的查询都返回该常量值。
分段模型本质上是一个分段函数。在时间序列场景中,时间戳数据往往会因为人为因素而变得更具有规律性,但边端设备所监控的指标乃是现实世界的一个因素,往往并不具有严格的等差特性,所以需要采用分段模型(时间戳数据在上文情况下用常量模型,非上文情况下用分段模型)。对于一般的整型数据和浮点数据而言并无太多的规律可言,也需要采用分段模型。因此对于整形数据更多的采用的是simple8b压缩算法,对于浮点类型数据,更多的采用的是Gorilla压缩算法。由于simple8b压缩算法的原理是将多个整数打包进一个64位整数内,因此如果想要查询这个64位整数其中的数据,从该64位整数的头部Selector入手,确定多少位代表一个整数。另外,对于浮点数的压缩算法Gorilla,本质上采用的是异或的思想。首先存储第一个浮点数,然后后面的二进制位数都和具体的异或值有着一定的关系,因此,要想查询其中任何一个数据,必须知道第一个浮点数。所以,对于采用simple8b压缩算法的整型数据,Packed编码的时间戳数据,和Gorilla压缩算法的浮点数据来说,其在存储介质上偏移量的分布如图2所示,这种情况下本发明为数据选择了一个分段模型,该模型其实是一个分段函数。对于其中数据的查找,我们保存了各个分段的区间数据,在查询时需要使用二分查找确定数据所落在的区间,并返回对应区间所存储的值,也就是二分查找是针对整数型数据,或者浮点型数据,或者Packed编码的时间戳数据的分段模型的分段点进行的,每个分段存储了1个值,所以查找到并返回。
线性模型完成的回归任务不能精确的完成回归任务,他只能粗略的给出一个近似值,表现为一个线性函数。在整型数据和浮点数据都有相应的模型之后,剩下的就是数值过大无法使用压缩算法的整型数据、数值过大无法使用压缩算法的时间戳数据(即RAW编码的时间戳数据)以及字符串数据,本发明对其使用线性模型进行学习。由于字符串的长度不确定,因此字符串数据在进行压缩后在存储介质上的偏移量分布便很难寻找其中的规律。但由于数据在存储介质上是进行追加存储,所以整体偏移量呈递增的趋势。所以我们使用了一个线性回归模型来拟合真实数据分布,其效果如图3所示。这种情况下本发明为数据选择了一个线性模型,该模型是由一段数据进行学习训练得到的一个线性回归模型。对于其中数据的查找,通过将下标传入到模型当中,使用模型进行预测,得到并返回模型的估计值。
即:针对RLE编码的时间戳数据采用常量模型建立学习索引;
针对于simple8b算法对编码后数据进行压缩的整数型数据,即未超过(1<<60)-1的整数型数据,采用Packed编码的时间戳数据和浮点数,采用分段模型建立学习索引;
针对于大于(1<<60)-1的整数型数据、采用RAW编码的时间戳和字符串,采用线性模型建立学习索引。
由于LSM树的特性,数据在磁盘上的位置,很多时候是不变的,只有当进行compact的时候,才会改变其位置,而新插入的数据在不进行compact的时候是不会影响原有数据的位置,对于学习索引模型来说将十分友好,因此本发明基于时间序列数据库的存储结构LSM树创建了学习索引能够充分发挥学习索引的特点。同时本发明经过研究还发现时间序列数据库会将一个数据源采集的数据放在一起进行集中存储,那么从一个数据源采集的数据将更容易从其中发现规律,便于后续使用多模型来学习其中的数据分布,因此本发明基于时间序列数据库的管理方式创建了学习索引,能够对时间序列数据库进行充分有效的管理。此外本发明还根据时间序列数据库的不同数据分布规则,分别针对性地创建三种不同的模型来学习数据分布,这结合了时序数据库数据存储的特点来进行模型的学习,这将使得模型的准确度得到很大的提升。
具体实施方式二:
本实施方式为针对时间序列数据库的多模型学习索引系统。在具体实施方式一所述针对时间序列数据库的多模型学习索引构建方法的建立好学习索引后,建立的学习索引能够形成针对时间序列数据库的多模型学习索引系统。
本实施方式所述的针对时间序列数据库的多模型学习索引系统,包括数据编码单元和学习索引单元;所述数据为时间序列数据库的数据,所述时间序列数据库的数据存储结构为LSM树;
所述编码单元针对数据进行编码,编码过程包括以下步骤:
针对整数类型数据,使用ZigZag算法进行编码;
针对时间戳数据,首先对时间戳数据进行差分编码,得到差分数组,如果根据差分数组中的所有值相同,则对差分数组中的所有值采用RLE编码,否则继续判断差分数组中的最大值是否大于(1<<60)-1,如果大于,则对差分数组中的所有值采用RAW编码;如果不大于,则对差分数组中的所有值采用Packed编码;
所述学习索引单元用于为查询出数据提供索引,所述索引为学习索引,学习索引建立的过程包括以下步骤:
针对RLE编码的时间戳数据采用常量模型建立学习索引;
针对于ZigZag算法编码后的值未超过(1<<60)-1的整数型数据,采用Packed编码的时间戳数据和浮点数,采用分段模型建立学习索引;
针对于ZigZag算法编码后的值大于(1<<60)-1的整数型数据、采用RAW编码的时间戳和字符串,采用线性模型建立学习索引。
本发明的上述算例仅为详细地说明本发明的计算模型和计算流程,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
Claims (10)
1.针对时间序列数据库的多模型学习索引构建方法,其特征在于,所述方法包括针对数据进行编码的过程和构建学习索引的过程;所述数据为时间序列数据库的数据,所述时间序列数据库的数据存储结构为LSM树;
所述针对数据进行编码的过程包括以下步骤:
针对整数类型数据,使用ZigZag算法进行编码;
针对时间戳数据,首先对时间戳数据进行差分编码,得到差分数组,如果根据差分数组中的所有值相同,则对差分数组中的所有值采用RLE编码,否则继续判断差分数组中的最大值是否大于(1<<60)-1,如果大于,则对差分数组中的所有值采用RAW编码;如果不大于,则对差分数组中的所有值采用Packed编码;
所述构建学习索引的过程包括以下步骤:
针对RLE编码的时间戳数据采用常量模型建立学习索引;
针对于ZigZag算法编码后的值未超过(1<<60)-1的整数型数据,采用Packed编码的时间戳数据和浮点数,采用分段模型建立学习索引;
针对于ZigZag算法编码后的值大于(1<<60)-1的整数型数据、采用RAW编码的时间戳和字符串,采用线性模型建立学习索引。
2.根据权利要求1所述的针对时间序列数据库的多模型学习索引构建方法,其特征在于,针对整数类型数据,如果ZigZag算法编码后的值未超过(1<<60)-1,对编码后的值使用simple8b算法对编码后数据进行压缩;如果大于该值,则不进行压缩;
针对浮点数采用Gorilla压缩算法进行压缩;
针对字符串类型的数据,采用Snappy压缩算法进行压缩。
3.根据权利要求2所述的针对时间序列数据库的多模型学习索引构建方法,其特征在于,针对不进行压缩的整数类型数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
4.根据权利要求3所述的针对时间序列数据库的多模型学习索引构建方法,其特征在于,采用RAW编码的时间戳数据为不进行压缩的时间戳数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
5.根据权利要求1至4任意一项所述的针对时间序列数据库的多模型学习索引构建方法,其特征在于,针对采用分段模型建立学习索引所对应的数据进行存储时,保存各个分段的区间数据;在进行数据查找时,使用二分查找确定数据所落在的区间,并返回对应区间所存储的值,即二分查找是针对整数型数据,或者浮点型数据,或者Packed编码的时间戳数据的分段模型的分段点进行的,每个分段存储了1个值,查找到数据所落在的区间,返回对应区间所存储的值。
6.针对时间序列数据库的多模型学习索引系统,其特征在于,所述系统包括数据编码单元和学习索引单元;所述数据为时间序列数据库的数据,所述时间序列数据库的数据存储结构为LSM树;
所述编码单元针对数据进行编码,编码过程包括以下步骤:
针对整数类型数据,使用ZigZag算法进行编码;
针对时间戳数据,首先对时间戳数据进行差分编码,得到差分数组,如果根据差分数组中的所有值相同,则对差分数组中的所有值采用RLE编码,否则继续判断差分数组中的最大值是否大于(1<<60)-1,如果大于,则对差分数组中的所有值采用RAW编码;如果不大于,则对差分数组中的所有值采用Packed编码;
所述学习索引单元用于为查询出数据提供索引,所述索引为学习索引,学习索引建立的过程包括以下步骤:
针对RLE编码的时间戳数据采用常量模型建立学习索引;
针对于ZigZag算法编码后的值未超过(1<<60)-1的整数型数据,采用Packed编码的时间戳数据和浮点数,采用分段模型建立学习索引;
针对于ZigZag算法编码后的值大于(1<<60)-1的整数型数据、采用RAW编码的时间戳和字符串,采用线性模型建立学习索引。
7.根据权利要求6所述的针对时间序列数据库的多模型学习索引系统,其特征在于,针对整数类型数据,如果ZigZag算法编码后的值未超过(1<<60)-1,对编码后的值使用simple8b算法对编码后数据进行压缩;如果大于该值,则不进行压缩;
针对浮点数采用Gorilla压缩算法进行压缩;
针对字符串类型的数据,采用Snappy压缩算法进行压缩。
8.根据权利要求7所述的针对时间序列数据库的多模型学习索引系统,其特征在于,针对不进行压缩的整数类型数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
9.根据权利要求8所述的针对时间序列数据库的多模型学习索引系统,其特征在于,采用RAW编码的时间戳数据为不进行压缩的时间戳数据,仍需要额外的存储空间作为标志位表示采用的压缩算法,只不过压缩算法代表的是没有进行压缩。
10.根据权利要求6至9任意一项所述的针对时间序列数据库的多模型学习索引系统,其特征在于,针对采用分段模型建立学习索引所对应的数据进行存储时,保存各个分段的区间数据;在进行数据查找时,使用二分查找确定数据所落在的区间,并返回对应区间所存储的值,即二分查找是针对整数型数据,或者浮点型数据,或者Packed编码的时间戳数据的分段模型的分段点进行的,每个分段存储了1个值,查找到数据所落在的区间,返回对应区间所存储的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310633058.9A CN116644069A (zh) | 2023-05-31 | 2023-05-31 | 针对时间序列数据库的多模型学习索引构建方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310633058.9A CN116644069A (zh) | 2023-05-31 | 2023-05-31 | 针对时间序列数据库的多模型学习索引构建方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116644069A true CN116644069A (zh) | 2023-08-25 |
Family
ID=87639572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310633058.9A Pending CN116644069A (zh) | 2023-05-31 | 2023-05-31 | 针对时间序列数据库的多模型学习索引构建方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116644069A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117082154A (zh) * | 2023-10-16 | 2023-11-17 | 长沙瑞腾信息技术有限公司 | 基于大数据的双路服务器数据存储系统 |
-
2023
- 2023-05-31 CN CN202310633058.9A patent/CN116644069A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117082154A (zh) * | 2023-10-16 | 2023-11-17 | 长沙瑞腾信息技术有限公司 | 基于大数据的双路服务器数据存储系统 |
CN117082154B (zh) * | 2023-10-16 | 2023-12-15 | 长沙瑞腾信息技术有限公司 | 基于大数据的双路服务器数据存储系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI682274B (zh) | 鍵值儲存樹 | |
TWI702503B (zh) | 實施用於維護操作之合併樹修改之系統、方法及電腦可讀媒體 | |
US11238098B2 (en) | Heterogenous key-value sets in tree database | |
TWI702506B (zh) | 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 | |
TW201837720A (zh) | 用於多串流儲存裝置之串流選擇 | |
US9047330B2 (en) | Index compression in databases | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
US10726016B2 (en) | In-memory column-level multi-versioned global dictionary for in-memory databases | |
US7603346B1 (en) | Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein | |
CN102110171B (zh) | 基于树形结构的布鲁姆过滤器的查询与更新方法 | |
US11294816B2 (en) | Evaluating SQL expressions on dictionary encoded vectors | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
CN116644069A (zh) | 针对时间序列数据库的多模型学习索引构建方法及系统 | |
US7725450B1 (en) | Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations | |
CN115718819A (zh) | 一种索引构建方法、数据读取方法及索引构建装置 | |
US10366067B2 (en) | Adaptive index leaf block compression | |
CN113722274A (zh) | 一种高效的R-tree索引遥感数据存储模型 | |
CN116881243A (zh) | 基于时间序列数据特征的学习型索引方法及系统 | |
CN116382588A (zh) | 一种基于学习索引的LSM-Tree存储引擎读放大问题优化方法 | |
US8886677B1 (en) | Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length | |
CN109977113A (zh) | 一种用于医疗影像数据的基于布隆过滤器的HBase索引设计方法 | |
CN113254720A (zh) | 一种基于新型存储器的存储内哈希排序构建方法 | |
Yuan et al. | Work-in-Progress: Lark: A Learned Secondary Index Toward LSM-tree for Resource-Constrained Embedded Storage Systems | |
US20230409573A1 (en) | Adaptive data prefetch | |
Wang et al. | LeaderKV: Improving Read Performance of KV Stores via Learned Index and Decoupled KV Table |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |