CN110109914A - 一种应用驱动的数据存储与索引方法 - Google Patents

一种应用驱动的数据存储与索引方法 Download PDF

Info

Publication number
CN110109914A
CN110109914A CN201810039941.4A CN201810039941A CN110109914A CN 110109914 A CN110109914 A CN 110109914A CN 201810039941 A CN201810039941 A CN 201810039941A CN 110109914 A CN110109914 A CN 110109914A
Authority
CN
China
Prior art keywords
field
data
node
tree
value
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
Application number
CN201810039941.4A
Other languages
English (en)
Inventor
董世旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Constant Technology (shanghai) Ltd By Share Ltd
Original Assignee
Constant Technology (shanghai) Ltd By Share Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Constant Technology (shanghai) Ltd By Share Ltd filed Critical Constant Technology (shanghai) Ltd By Share Ltd
Priority to CN201810039941.4A priority Critical patent/CN110109914A/zh
Publication of CN110109914A publication Critical patent/CN110109914A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种应用驱动的数据存储与索引方法。数据按列存储,单个文件存储内容只包含一个字段,每一个字段前有一个标志位,相应的其他字段也有相应的标志位,同一条记录的不同字段在不同的文件中拥有相同的行数标志,索引方法采用B+树的形式,将文件名称包含的三个字段作为建立B+树的数据,取该文件的字段范围的最大值为key,起始时间的前五位为value建立一颗B+树,取该文件的字段范围的最小值为key,起始时间的后五位为value建立一颗B+树;查询该字段的时间同时查询两颗B+树,将查询结果组合成范围,加上字段标志定位到文件,最后在文件中去查询具体内容。本发明提高存储空间的使用效率,提供较高的索引速率。

Description

一种应用驱动的数据存储与索引方法
技术领域
本发明涉及一种应用驱动的数据存储与索引方法,属于数据处理技术领域。
背景技术
随着互联网信息的增长,大量的数据需要被存储,也就需要更多的硬盘设备。数据量不断增长,数据的类型也在不断的增加。话单作为众多数据中的一种,其数据量在增加的同时,话单格式中的字段也在不断的扩展。
不同的应用类型对数据的存储和分析需求是各不相同的,为根据不同的数据类型定制不同的方案,无疑要比统一的储存平台更能有效率。应用驱动就是指的为不同应用的需求定制差异化的存储方案。
多维度,指的是多个角度。使用者通过特定的方法,能够快速的、有效率的得到自己需要的特定角度的数据,这对后续的工作是大有裨益的。后续的分析不需要再对数据进行二次加工,就可以得到进行分析特定的基础数据。
话单数据目前面临两种情况:一是储存在传统关系数据库中,传统数据库在处理短期数据时相对灵活、有绝对的优势。但是面临海量数据的时候,其储存方式对后续的数据分析无法提供有效的帮助;二是采用了分布式处理的方案,直接采用某些通用的分布式技术,在数据规模和查询速率有所保证,但是成本较高,没有充分挖掘出话单数据应有的价值。
为了提高话单数据的应用价值、应对话单字段的扩展,找到合适的储存和索引方法变得尤为重要。
发明内容
有鉴于此,本发明提供了一种应用驱动的数据存储与索引方法,随着信息的增长,使用者对数据的使用频率越来越高,提供一种有效的在存储的基础上进行灵活的索引的方法。该方法能提高存储空间的使用效率,也能提供较高的索引速率。
本发明通过以下技术手段解决上述技术问题:
本发明的一种应用驱动的数据存储方法,数据按列存储,每一列之间不完全独立,单个文件存储内容只包含一个字段,每一个字段前有一个标志位,表示该字段位于该文件的第几个存储内容,相应的其他字段也有相应的标志位,同一条记录的不同字段在不同的文件中拥有相同的行数标志;
文件名称包含三个字段:字段标志、存储该文件的起始时间、该字段在该文件中的范围,存储该文件的起始时间字段保证该文件的唯一性,字段标志和该字段在该文件中的范围字段确保后续索引的建立。
一种应用驱动的数据索引方法,索引方法采用B+树的形式,其包括:
将文件名称包含的三个字段作为建立B+树的数据,取该文件的字段范围的最大值为key,起始时间的前五位为value建立一颗B+树,同样的,取该文件的字段范围的最小值为key,起始时间的后五位为value建立一颗B+树;
查询该字段的时间同时查询两颗B+树,将查询结果组合成范围,加上字段标志定位到文件,最后在文件中去查询具体内容。
一种应用驱动的数据存储方法,三个字段内容前放置标志位,每获取一条信息,就将经过编码的字段内容与相应内存中的数据进行比对,如果已经存在相同的内容,就将新获取的字段内容相对应的经过编码后的标志位添加到已经存在的字段前面,如果不存在内容,就将新的字段和标志位编码后添加到相应内存中。
一种应用驱动的数据索引方法,基于内存中的数据已经写入文件,获取B+树的叶子结点有两种方式,一是从内存变量中获取,随时监控内存动态,当执行写入文件操作时获取到起始时间和字段范围,二是直接从文件名称获取;
获取文件名中的时间和字段范围,标准时间长度位10,划分位两个字段各五位,同时取出字段范围的最大值和最小值,最大值和时间的前五位组成一个字典,最大值位key,时间的前五位为value,最小值和时间的后五位组成一个字典,最小值为key,时间的后五位为value;
将获取的key-value键值对作为B+树的叶子结点,建立两颗B+树。查询的时候同时在两颗B+树中查询,将查询到的结果组成字段范围,加上字段标志,在文件列表中查找相应的文件。
B+树的建立和更新流程如下:
步骤1:判断该key-value是否是叶子结点,若是则转向步骤3,不是则转向步骤2;
步骤2:判断叶子节点个数、子节点类型,如果节点个数大于1,则采用二分法查找***位置,如果节点数目为1,则比较key的大小,然后判断节点类型;如果节点类型为叶子结点,则转向步骤3,如果节点类型为非叶子结点,则继续步骤2;
步骤3:判断叶子节点的状态,如果节点状态为空,则***数据,不为空,则判断叶子结点的个数,当叶子结点个数大于1,则采用二分法查找***位置,然后转向步骤4,当叶子结点个数等于1,则直接转向步骤4;
步骤4:比较叶子结点和数据的大小,判断叶子结点是否满,如果叶子结点未满,则***数据,如果叶子结点满,则进行B+树的***,转向步骤5;
步骤5:创建父节点,如果是,则***数据,如果不是则判断节点个数、节点类型,节点未满,则***数据,节点满则继续步骤5。
本发明将数据划分为指定大小的文件储存,并将时间字段、数据相关信息存储到文件名,可保证文件的唯一性和一定的信息量;
使用二进制表示标志位,减少文件名的长度;
当同一个字段的内容差别不是很大,使用前向差值法可有效节省硬盘空间;
使用B+树建立索引,即使数据量增大,查询效率也不会明显的降低;
采用列存储的方式,可以灵活选取需要的字段查询以及提取。
本发明的有益效果:随着信息的增长,使用者对数据的使用频率越来越高,提供一种有效的在存储的基础上进行灵活的索引的方法,该方法能提高存储空间的使用效率,也能提供较高的索引速率。
附图说明
下面结合附图和实施例对本发明作进一步描述。
图1是本发明实施例1提供的一种存储数据的方法流程图;
图2是本发明实施例2提供的一种建立索引的方法流程图;
图3是B+树的建立和更新流程图。
具体实施方式
以下将结合附图对本发明进行详细说明,如图1、2和3所示:本实施例的为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步的详细描述。
一种应用驱动的数据存储方法,数据按列存储,每一列之间不完全独立,单个文件存储内容只包含一个字段,每一个字段前有一个标志位,表示该字段位于该文件的第几个存储内容,相应的其他字段也有相应的标志位,同一条记录的不同字段在不同的文件中拥有相同的行数标志;
文件名称包含三个字段:字段标志、存储该文件的起始时间、该字段在该文件中的范围,存储该文件的起始时间字段保证该文件的唯一性,字段标志和该字段在该文件中的范围字段确保后续索引的建立。
一种应用驱动的数据索引方法,索引方法采用B+树的形式,其包括:
将文件名称包含的三个字段作为建立B+树的数据,取该文件的字段范围的最大值为key,起始时间的前五位为value建立一颗B+树,同样的,取该文件的字段范围的最小值为key,起始时间的后五位为value建立一颗B+树;
查询该字段的时间同时查询两颗B+树,将查询结果组合成范围,加上字段标志定位到文件,最后在文件中去查询具体内容。
一种应用驱动的数据存储方法,三个字段内容前放置标志位,每获取一条信息,就将经过编码的字段内容与相应内存中的数据进行比对,如果已经存在相同的内容,就将新获取的字段内容相对应的经过编码后的标志位添加到已经存在的字段前面,如果不存在内容,就将新的字段和标志位编码后添加到相应内存中。
一种应用驱动的数据索引方法,基于内存中的数据已经写入文件,获取B+树的叶子结点有两种方式,一是从内存变量中获取,随时监控内存动态,当执行写入文件操作时获取到起始时间和字段范围,二是直接从文件名称获取;
获取文件名中的时间和字段范围,标准时间长度位10,划分位两个字段各五位,同时取出字段范围的最大值和最小值,最大值和时间的前五位组成一个字典,最大值位key,时间的前五位为value,最小值和时间的后五位组成一个字典,最小值为key,时间的后五位为value;
将获取的key-value键值对作为B+树的叶子结点,建立两颗B+树。查询的时候同时在两颗B+树中查询,将查询到的结果组成字段范围,加上字段标志,在文件列表中查找相应的文件。
实施例1
一种存储数据的方法,以话单数据为例。参见图1,其中,该方法包括:
获取话单存入内存,设定文件大小阈值,当内存中话单大小达到阈值,便生成一个文件,文件命名方式为字段标识+时间+该字段在该文件中的范围值(十六进制)。字段标识从0开始,0表示第一个字段,1表示第二个字段等。鉴于话单字段类型只有整形和字符串两种形式,文件内容统一转换为二进制保存。
101:从外部获取话单内容,每一条话单指定一个标志位,表示该条话单是该块内存中的第几条数据,然后按列存储。
该标志位的编码方式为:将标志为转换为二进制,从低位开始按六位为一段组成一个八位的第六位,位数不足填充0,其最高位始终为1,次低位表示该标志位字节长度,0表示长度位1,1表示长度位2,包含本字节。如标志位为156,二进制表示为0b10011100,长度超过6但小于12,表示该标志位长度位2,转换之后为0b110000100b10011100。
话单字段类型分为整形和字符串。将整形和字符串都转换为二进制表示。然后通过指定的编码方式:
一种情况是字段变化不大,可人为设置一个最小的值,通过前向差值法计算出后面新的字段内容的对于最小值的差值。如国际移动用户识别码(IMSI),最小可设置位460000000000000,然后计算出新的字段内容和该值的差值,进行后续的编码;
另外一种情况是字段变化比较明显,可不设置最小值,或者默认最小值位0,然后进行后续编码,
具体编码方式位:将字段内容转换为二进制之后,从低位开始,每七位为一段组成一个八位的第七位,最高位始终位0。
标志位和字段内容的组合:字段内容前放置标志位,每获取一条话单信息,就将经过编码的字段内容与相应内存中的数据进行比对,如果已经存在相同的内容,就将新获取的字段内容相对应的经过编码后的标志位添加到已经存在的字段前面,如果不存在内容,就将新的字段和标志位编码后添加到相应内存中。
在进行字段内容比对的同时,内存中设定两个变量,表示该块内存中存储的该字段的最大值和最小值,起始值都为0。获取到新的字段内容时会经过比对,:首先是和具体内容的比对,如果该字段内容已经存在,则不进行最大值最小值的比对,如果该字段内容在内存中不存在,则将该值与最值比较并进行替换。
102:获取当前时间的时间戳(1970纪元后经过的浮点秒数),共十位。根据话单字段数目,从0开始给每一个话单字段相应的标志,字段1对应标志0,字段2对应标志1等。时刻更新字段的范围大小。
103:设定一个内存块的阈值,当内存块达到该阈值,则将当前的字段标志、起始时间、字段范围设定为文件名,将该块内存中的数据写入该文件。
实施例2
本发明实施例提供了一种建立索引的方法。参见图2,该方法包括:
该方法是基于内存中的数据已经写入文件,获取B+树的叶子结点有两种方式,一是从内存变量中获取,随时监控内存动态,当执行写入文件操作时获取到起始时间和字段范围,二是直接从文件名称获取。
201:获取文件名中的时间和字段范围。标准时间长度位10,划分位两个字段各五位,同时取出字段范围的最大值和最小值,最大值和时间的前五位组成一个字典,最大值位key,时间的前五位为value,最小值和时间的后五位组成一个字典,最小值为key,时间的后五位为value。
202:将上一步获取的key-value键值对作为B+树的叶子结点,建立两颗B+树。查询的时候同时在两颗B+树中查询,将查询到的结果组成字段范围,加上字段标志,在文件列表中查找相应的文件。
B+树的建立和更新过程如图3,具体流程如下:
S1:判断该key-value是否是叶子结点,若是则转向S3,不是则转向S2;
S2:判断叶子节点个数、子节点类型,如果节点个数大于1,则采用二分法查找***位置,如果节点数目为1,则比较key的大小,然后判断节点类型;如果节点类型为叶子结点,则转向S3,如果节点类型为非叶子结点,则继续S2;
S3:判断叶子节点的状态,如果节点状态为空,则***数据,不为空,则判断叶子结点的个数,当叶子结点个数大于1,则采用二分法查找***位置,然后转向S4,当叶子结点个数等于1,则直接转向S4;
S4:比较叶子结点和数据的大小,判断叶子结点是否满,如果叶子结点未满,则***数据,如果叶子结点满,则进行B+树的***,转向S5;
S5:创建父节点,如果是,则***数据,如果不是则判断节点个数、节点类型,节点未满,则***数据,节点满则继续S5。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (5)

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。
CN201810039941.4A 2018-01-16 2018-01-16 一种应用驱动的数据存储与索引方法 Pending CN110109914A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810039941.4A CN110109914A (zh) 2018-01-16 2018-01-16 一种应用驱动的数据存储与索引方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810039941.4A CN110109914A (zh) 2018-01-16 2018-01-16 一种应用驱动的数据存储与索引方法

Publications (1)

Publication Number Publication Date
CN110109914A true CN110109914A (zh) 2019-08-09

Family

ID=67483451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810039941.4A Pending CN110109914A (zh) 2018-01-16 2018-01-16 一种应用驱动的数据存储与索引方法

Country Status (1)

Country Link
CN (1) CN110109914A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613105A (en) * 1993-06-30 1997-03-18 Microsoft Corporation Efficient storage of objects in a file system
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式***的数据存放及其查找组合方法
CN102508913A (zh) * 2011-11-17 2012-06-20 张真 一种带有数据立方存储索引结构的云计算***
CN102722449A (zh) * 2012-05-24 2012-10-10 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及***
US8812554B1 (en) * 2012-03-22 2014-08-19 Projectx, International Ltd. Method and system for storing shared data records in relational database
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
CN107515901A (zh) * 2017-07-24 2017-12-26 中国科学院信息工程研究所 一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613105A (en) * 1993-06-30 1997-03-18 Microsoft Corporation Efficient storage of objects in a file system
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式***的数据存放及其查找组合方法
CN102508913A (zh) * 2011-11-17 2012-06-20 张真 一种带有数据立方存储索引结构的云计算***
US8812554B1 (en) * 2012-03-22 2014-08-19 Projectx, International Ltd. Method and system for storing shared data records in relational database
CN102722449A (zh) * 2012-05-24 2012-10-10 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及***
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
CN107515901A (zh) * 2017-07-24 2017-12-26 中国科学院信息工程研究所 一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曲朝阳;孙立擎;许劭庆;蔺树全;尹相爱;: "基于B+树的电力大数据分布式索引", 东北电力大学学报, no. 05 *

Similar Documents

Publication Publication Date Title
CN102110132B (zh) 统一资源定位符匹配查找方法、装置和网络侧设备
US9870382B2 (en) Data encoding and corresponding data structure
CN104182405B (zh) 一种连接查询方法及装置
CN109471905B (zh) 一种支持时间范围和属性范围复合查询的区块链索引方法
CN111629081B (zh) 互联网协议ip地址数据处理方法、装置及电子设备
CN106777387B (zh) 一种基于HBase的物联网大数据存取方法
CN106815260B (zh) 一种索引建立方法及设备
CN113434557B (zh) 一种标签数据的范围查询方法、装置、设备及存储介质
CN104486777B (zh) 一种实现数据处理的方法及装置
CN102521375B (zh) 一种目录服务数据检索方法及***
WO2018001085A1 (zh) 数据存储方法和装置、数据查找请求的处理方法和装置
CN105740410A (zh) 一种基于Hbase二级索引的数据统计方法
CN110413711A (zh) 一种差异数据获取方法及其存储介质
CN103746851A (zh) 一种实现独立用户数统计的方法及装置
CN110955712A (zh) 基于多数据源的开发api处理方法及装置
CN107766512B (zh) 一种日志数据存储方法和日志数据存储***
CN110109914A (zh) 一种应用驱动的数据存储与索引方法
CN112269726A (zh) 一种数据处理方法及装置
CN114025024B (zh) 一种数据传输方法及装置
CN110928902A (zh) 针对分页获取云平台终端数据的查询方法和***
CN106156197A (zh) 一种数据库的查询方法和装置
CN104765790B (zh) 一种数据查询的方法和装置
CN110990640B (zh) 一种数据判定方法、装置、设备及计算机可读存储介质
CN108959584A (zh) 一种基于社区结构的处理图数据的方法及装置
CN112954082B (zh) 域名注册ip地址查询方法及装置

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