[发明专利]一种基于哈希表和红黑树的实时数据存储与查询方法有效
申请号: | 202110080862.X | 申请日: | 2021-01-21 |
公开(公告)号: | CN112417227B | 公开(公告)日: | 2021-06-01 |
发明(设计)人: | 沈阳丽;程睿君;刘曙元;李志强;薛尚君 | 申请(专利权)人: | 国能信控互联技术有限公司 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903 |
代理公司: | 北京智绘未来专利代理事务所(普通合伙) 11689 | 代理人: | 王萍;肖继军 |
地址: | 102211 北京市昌平区未来科*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 哈希表 红黑树 实时 数据 存储 查询 方法 | ||
1.一种基于哈希表和红黑树的实时数据存储与查询方法,包括数据存储和数据查询,其特征在于,
所述数据存储包括以下步骤:
步骤1.1:首先数据文件按照数据块组织数据内容,数据块的键包括标签ID和数据时间段;
步骤1.2:将标签ID和数据时间段作为两个键,以标签ID为键的数据块存储在哈希表结构中,以数据时间段为键的数据块存储在红黑树结构中,标签ID对应红黑树的根,数据时间段对应数据的文件ID与数据块ID;
所述数据查询包括以下步骤:
步骤2.1:首先根据标签ID定位红黑树根节点;
步骤2.2:再根据时间段获取相应红黑树节点,返回文件ID和数据块ID,得到相应数据。
2.根据权利要求1所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
在所述数据存储的步骤1.2中,当数据块填满时则归入存档文件,其中,每个存档文件对应一个索引,当往存档文件中写入数据块时,同时会创建一条索引记录。
3.根据权利要求2所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
所述索引记录和数据块的归档一同创建,索引记录同时创建一级索引和二级索引;
其中,所述一级索引以标签ID为键,红黑树根节点为值,根据求余运算进行散列;
所述二级索引以时间段为键,文件ID、数据块ID和数据块中的数值个数为值;
所述一级索引为哈希表结构或哈希表节点,二级索引为红黑树结构或红黑树节点。
4.根据权利要求3所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
所述哈希表包括节点数组和表本身,内存头部存放表项内容,剩下的部分存放节点内容;
将所有哈希表节点放在连续内存中,使用数组下标来访问哈希表节点,使用一个结构体类型来引用哈希表节点。
5.根据权利要求3所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
通过对哈希表结构进行标签点总容量的半数的求余运算,平均只有2个标签会落入同一个表项中,用于达到所需的散列;
在对哈希表进行求余运算,出现散列冲突时,采用外部拉链法,将位于同一个表项中的元素通过一个单链表串联起来。
6.根据权利要求3所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
所述红黑树节点包含父亲节点、左孩子节点与右孩子节点,另外一个字段是节点颜色,此外还包含一个以数据时间段为键的键值结构;
将所有红黑树节点分配在连续内存中,红黑树节点间不留空隙,即相当于一个红黑树节点的数组,使用数组下标来访问红黑树节点,使用一个结构体类型来引用红黑树节点。
7.根据权利要求1所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
通过对查询语句进行解析,得到待查询数据的查询参数;
根据查询参数中指定的标签ID,定位到哈希表中相应红黑树根节点,从而找到根节点对应的红黑树;
然后根据查询参数中的时间,对红黑树节点进行二分查找,从而找到相应树节点,得到文件ID和数据块ID,获取相应数据。
8.根据权利要求7所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
根据查询参数中指定的单个标签ID和时间段,查询获取单个标签点相应时间段数据。
9.根据权利要求7所述的一种基于哈希表和红黑树的实时数据存储与查询方法,其特征在于,
根据查询参数中指定的多个标签ID和时刻,查询获取多个标签点相应时刻断面数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国能信控互联技术有限公司,未经国能信控互联技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110080862.X/1.html,转载请声明来源钻瓜专利网。