[发明专利]一种应用驱动的数据存储与索引方法在审
申请号: | 201810039941.4 | 申请日: | 2018-01-16 |
公开(公告)号: | CN110109914A | 公开(公告)日: | 2019-08-09 |
发明(设计)人: | 董世旭 | 申请(专利权)人: | 恒为科技(上海)股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 上海精晟知识产权代理有限公司 31253 | 代理人: | 冯子玲 |
地址: | 201114 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 字段 索引 数据存储 应用驱动 标志位 查询 查询结果 存储空间 存储内容 单个文件 使用效率 字段标志 列存储 行数 记录 | ||
1.一种应用驱动的数据存储方法,其特征在于:数据按列存储,每一列之间不完全独立,单个文件存储内容只包含一个字段,每一个字段前有一个标志位,表示该字段位于该文件的第几个存储内容,相应的其他字段也有相应的标志位,同一条记录的不同字段在不同的文件中拥有相同的行数标志;
文件名称包含三个字段:字段标志、存储该文件的起始时间、该字段在该文件中的范围,存储该文件的起始时间字段保证该文件的唯一性,字段标志和该字段在该文件中的范围字段确保后续索引的建立。
2.根据权利要求1所述的一种应用驱动的数据索引方法,其特征在于:索引方法采用B+树的形式,其包括:
将文件名称包含的三个字段作为建立B+树的数据,取该文件的字段范围的最大值为key,起始时间的前五位为value建立一颗B+树,同样的,取该文件的字段范围的最小值为key,起始时间的后五位为value建立一颗B+树;
查询该字段的时间同时查询两颗B+树,将查询结果组合成范围,加上字段标志定位到文件,最后在文件中去查询具体内容。
3.根据权利要求1所述的一种应用驱动的数据存储方法,其特征在于:三个字段内容前放置标志位,每获取一条信息,就将经过编码的字段内容与相应内存中的数据进行比对,如果已经存在相同的内容,就将新获取的字段内容相对应的经过编码后的标志位添加到已经存在的字段前面,如果不存在内容,就将新的字段和标志位编码后添加到相应内存中。
4.根据权利要求2所述的一种应用驱动的数据索引方法,其特征在于:基于内存中的数据已经写入文件,获取B+树的叶子结点有两种方式,一是从内存变量中获取,随时监控内存动态,当执行写入文件操作时获取到起始时间和字段范围,二是直接从文件名称获取;
获取文件名中的时间和字段范围,标准时间长度位10,划分为两个字段各五位,同时取出字段范围的最大值和最小值,最大值和时间的前五位组成一个字典,最大值位key,时间的前五位为value,最小值和时间的后五位组成一个字典,最小值为key,时间的后五位为value;
将获取的key-value键值对作为B+树的叶子结点,建立两颗B+树。查询的时候同时在两颗B+树中查询,将查询到的结果组成字段范围,加上字段标志,在文件列表中查找相应的文件。
5.根据权利要求4所述的一种应用驱动的数据索引方法,其特征在于:B+树的建立和更新流程如下:
步骤1:判断该key-value是否是叶子结点,若是则转向步骤3,不是则转向步骤2;
步骤2:判断叶子节点个数、子节点类型,如果节点个数大于1,则采用二分法查找插入位置,如果节点数目为1,则比较key的大小,然后判断节点类型;如果节点类型为叶子结点,则转向步骤3,如果节点类型为非叶子结点,则继续步骤2;
步骤3:判断叶子节点的状态,如果节点状态为空,则插入数据,不为空,则判断叶子结点的个数,当叶子结点个数大于1,则采用二分法查找插入位置,然后转向步骤4,当叶子结点个数等于1,则直接转向步骤4;
步骤4:比较叶子结点和数据的大小,判断叶子结点是否满,如果叶子结点未满,则插入数据,如果叶子结点满,则进行B+树的分裂,转向步骤5;
步骤5:创建父节点,如果是,则插入数据,如果不是则判断节点个数、节点类型,节点未满,则插入数据,节点满则继续步骤5。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于恒为科技(上海)股份有限公司,未经恒为科技(上海)股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810039941.4/1.html,转载请声明来源钻瓜专利网。