一种面向流式时序数据的数据索引方法技术

技术编号:21398918 阅读:60 留言:0更新日期:2019-06-19 06:58
本发明专利技术提出一种面向流式时序数据的数据索引方法,包括以下步骤:步骤1,建立整体数据索引结构,所述结构为在B+树的非根和非叶子结点再增加指向兄弟的指针的B*树;步骤2,批量资源申请及索引优化;步骤3,进行触发式树结构切分与合并。

【技术实现步骤摘要】
一种面向流式时序数据的数据索引方法
本专利技术涉及一种数据索引方法,主要涉及到一种面向流式时序数据的数据索引方法。
技术介绍
伴随着虚拟化、云计算等前沿互联网技术的飞速发展及广泛应用,大量移动便携终端和传感器设备被布设在世界的各个角落,充当起信息搜集及获取的角色。特别是在近几年,倡导万物互联的“物联网”概念被提出,通过实时网络相互连接的移动传感器网络在军事、经济、医疗等领域已被大量应用,并取得了可观的实用价值。然而,随着海量流式时序数据信息的获取与处理,虽然一方面拓展了数据规模,有利于数据隐含特征的监测与检测,便于挖掘数据流固有的本质规律;但在另一方面,时序数据的检索、存储、管理等底层数据功能却面临着十分严峻的挑战。例如,四十余万美国纽约的出租车在安装了相关GPS等传感器设备后,其每分钟会生成上亿条的实时车辆行驶数据,传统关系型数据库将难以实时对如此数量级的数据进行读写,而当前分布式数据库也需大量的计算与存储资源才能满足上述的数据处理需求。为了解决此类问题,大量面向时序数据的数据库系统被提出,其中以InfluxDB、OpenTSDB等为代表的时序数据库也已被大量应用,并一定程度上缓解了时序数据的读写问题。此类系统为了提升自身工作效率,普遍对各自数据库系统中的数据索引模块进行了针对性的优化,这主要是由于数据读写的主要压力均体现在数据索引上。其中,有别于传统的B+树结构索引,现有最适于管理时序数据的索引结构为LSM(log-structuredmerge)树,其通过将数据索引按照写入时间的先后顺序分别放置在内存、硬盘以响应不同频率的读写请求,进而通过设置的阈值来合并两个树结构达到数据索引的分治,充分利用不同存储介质所能够提供的差异较大的读写性能。然而,该数据存储结构并未充分利用时序数据自身的数据特性。具体来说,时序数据中的时间戳的采样值相似且连续,这就意味着时序数据中有很多冗余的部分且具有严格的前后关系,这直接导致数据索引的写入/插入操作只会发生在树结构的右下侧节点。此外,通过观察数据库的操作日志,我们发现时序数据操作的组成包含了97%的写操作,余下的只有少量的点查询及相对大量的范围查询,这就要求索引结构能够满足范围查询需求。如果想要满足现实世界对实时流式时序数据的读写需求,需要一个针对性设计、优化的数据索引结构来充分适配时序数据固有的自身特征。
技术实现思路
针对以上问题,为了能够更好地满足时序数据的读写需求,本专利技术提出了面向流式时序数据的数据索引方法,其充分适配了时序数据的固有特征,该方案首先更换了索引结构所使用的树结构,同时根据时序数据特征设计了索引对存储资源的申请方式,此外还提出了一套触发式的索引切分合并方法。本专利技术使用B*树,其叶节点链表能够很好的支持范围检索与连续数据读取;资源申请方式、索引加速部件等预支出的空间资源会减少硬盘臂的移动,大幅提升数据读写效率;触发式的索引切分合并方法能够根据数据冷热状况动态协调内存与硬盘中索引比例,合理分配不同性能资源,确保数据一致性与可用性;整体的面向流式时序数据的数据索引能够充分契合时序数据读写特性,提升数据写入、检索速率。附图说明图1为本专利技术的整体流程图图2为本专利技术的本专利技术面向流式时序数据的数据索引结构;图3为本专利技术的树结构分割合并图;图4为本专利技术的布隆过滤器的结构图;图5为本专利技术的触发式索引的切分图具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。此外,下面所描述的本专利技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。为了实现上述的专利技术目的,本专利技术提供了一种面向流式时序数据的数据索引方法。如图1,该方法包括以下若干详细内容:步骤1,建立整体数据索引结构,所述结构为在B+树的非根和非叶子结点再增加指向兄弟的指针的B*树;步骤2,批量资源申请及索引优化,所述索引优化是将时序数据的B*树构建方式变为批量追加形式,非叶子结点层的数据也可以用类似的方法直接更新;步骤3,触发式树结构切分与合并:提出内存、硬盘间树结构的切分与合并策略。如图2所示为本专利技术面向流式时序数据的数据索引结构,传统数据存储索引在实现时普遍基于Hash结构或者B+树,分别对应点检索敏感或通用数据读写的应用场景。为进一步贴合时序数据写操作远多于读操作、范围查询较多的实际应用需求,本专利技术使用B*树来作为数据索引的基础结构。B*树类似于B+树结构,是其一种面向应用的B+树变种。本专利技术中所使用的数据索引结构为B*树结构。如图1所示,存储数据的树状结构中所有叶子节点按时间戳升序组成了一个完整的链表,树状结构中的非叶子结点对应其所指数据的起始键值。当后续数据插入原有索引时,由于时序数据时间戳递增的特点,新增数据均可直接链入原始叶子结点链表,并根据B*树阶数快速截断生成非叶子结点,从而实现数据快速插入。由于时序数据存储每条数据的键一般是时间戳,这样数据的插入与查询操作便会变得有规律可寻。B*树普遍基于链表结构,这种结构在处理此类型数据时一方面能够有效地提升树结构的整体利用率,另一方面能够满足数据范围查询需求的适配。考虑到时序数据有序单增的特点,所有新插入B*树的数据只会出现在最右的叶子节点上。如果使用原有的插入策略(分裂时保持两侧平衡),那么该树结构不是满树,整个树的使用效率很降低,浪费了大量存储资源。同时,B*树中上层的节点伴随着数据的插入会不断地进行分裂,导致整体索引效率十分低下。本专利技术将时序数据的B*树构建方式变为批量追加形式,即数据的插入不再寻找应该插入的位置,而是直接将新数据批量链接在叶子节点链表的末尾,继而补全上层链接及节点。同时,非叶子结点层的数据也可以用类似的方法直接更新。基于本专利技术中的方法构建出的B*树为满树,且计算复杂度也较传统方法更低。如图3所示为树结构分割合并示意图,在已知B*树阶数的情况下,内存中数据插入索引的操作被大大简化。本专利技术在实现内存树与磁盘树的合并时,根据时序数据特点,通过分析磁盘中最新的旧树自身结构特点,从内存中的新树中切分出合适的叶子节点数量(包含其对应的完整树状结构)将其直接拼接到磁盘中旧树的对应部分,其中的操作为磁盘中叶子结点的链接,以及对应非叶子结点的更新。查询是数据库提供的主要服务形式之一,其查询延时是衡量数据库性能的主要指标之一。在时序数据应用环境中,查询操作较写入操作来说所占比例较小,所以在设计面向时序的数据索引结构时牺牲了一部分查询能力来大幅提升写入能力。但实际上,时序数据的查询操作具有很强的时效性、连续性及周期性。具体来说,时效性是指时序数据被查询的概率与其生成时间节点距当前时间节点的距离成反比,这也是将新数据的索引及数据存储在内存中的原因。连续性类似于计算机系统中的连续访问假设,即被访问数据周围的数据被连续访问的概率也会升高。周期性是指部分冷数据会被周期性的查询,其主要来源于大量上游应用周期性的查询需求。可见,时序数据的查询与普通数据的查询有一定的区别,合理利用上述时序数据查询特征来优化数据调度与缓存策略能够有效提升数据在缓存中的命中率,减少磁盘操作,提升整体查询性能。其中,当查询操作并未在内存本文档来自技高网
...

【技术保护点】
1.一种面向流式时序数据的数据索引方法,其特征在于,包括以下步骤:步骤1,建立整体数据索引结构,所述结构为在B+树的非根和非叶子结点再增加指向兄弟的指针的B*树;步骤2,批量资源申请及索引优化;步骤3,进行触发式树结构切分与合并。

【技术特征摘要】
1.一种面向流式时序数据的数据索引方法,其特征在于,包括以下步骤:步骤1,建立整体数据索引结构,所述结构为在B+树的非根和非叶子结点再增加指向兄弟的指针的B*树;步骤2,批量资源申请及索引优化;步骤3,进行触发式树结构切分与合并。2.如权利要求1所述的方法,其特征在于,所述步骤2中,所述批量资源申请的方式为,时序数据的B*树构建方式变为批量追加形式,所有新插入B*树的数据在最右的叶子节点上,新数据的插入时直接将所述新数据批量链接在叶子节点链表的末尾。3.如权利要求2所述的方法,其特征在于,所述索引优化的方式为,在数据索引中的所有的子树分别构造了布隆过滤器。4.如权利要求3所述的方法,其特征在于,所述步骤3中,所述切分的具体方式为,索引结构基于数据冷热程度的...

【专利技术属性】
技术研发人员:李建欣邰振赢李晨司靖辉韦冠宇
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

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

1