CN103365884A - 数据存储方法及搜索方法 - Google Patents
数据存储方法及搜索方法 Download PDFInfo
- Publication number
- CN103365884A CN103365884A CN201210091529XA CN201210091529A CN103365884A CN 103365884 A CN103365884 A CN 103365884A CN 201210091529X A CN201210091529X A CN 201210091529XA CN 201210091529 A CN201210091529 A CN 201210091529A CN 103365884 A CN103365884 A CN 103365884A
- Authority
- CN
- China
- Prior art keywords
- data
- storage method
- date storage
- memory headroom
- data acquisition
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储方法,包括以下步骤:步骤S1、申请一内存空间;步骤S2、按照B+树的数据结构将一关系数据表中的数据写入该内存空间。本发明还公开了一种数据搜索方法,特别涉及一种轨道交通中数据存储和搜索的方法。本发明所述的数据存储方法及搜索方法克服了现有技术中内存数据库中的主键仅能采用整型的格式的缺陷,在字符串作为主键的情况下也能实现数据的检索,并且使用数据结构中的B+TREE,加快了搜索速度。
Description
技术领域
本发明涉及一种数据存储方法及搜索方法,特别是涉及一种适用于轨道交通行业、且结合B+树的数据存储方法及搜索方法。
背景技术
目前,在轨道交通行业中,在线检测系统的起着越来越重要的作用,它给地铁维保中心和信号设备维护人员提供重要的信息。针对轨道交通行业检测的内容,在将来的发展趋势下,检测的数据内容将变得庞大,系统也将越来越复杂。在现有的内存库中使用一个主键,并且该主键被定义为整型的格式,按照序号与基地址和,求出当前数据项的指针。这样的存储方式,对于多个主键以及出现字符串等组合的主键就无能为力了。
还有,现有的轨道交通行业的数据库的检索方式是遍历所有数据进行检索,而随着数据库中数据量的增加,遍历的检索方法缺陷明显,即检索速度太慢,无法适应日益发展的行业需求。
由此,希望找到一种数据存储方法及搜索方法,既能适用于字符串形式的主键,又能加快数据的检索速度。
发明内容
本发明要解决的技术问题是为了克服现有技术中内存数据库中的主键仅能采用整型的格式、遍历数据进行搜索的速度较慢的缺陷,提供一种可以采用字符串作为主键且检索速度较快的数据存储方法及搜索方法。
本发明是通过下述技术方案来解决上述技术问题的:
一种数据存储方法,其特点在于,其包括以下步骤:
步骤S1、申请一内存空间;
步骤S2、按照B+树的数据结构将一关系数据表中的数据写入该内存空间。
优选地,步骤S1包括以下步骤:
步骤S11、将该关系数据表中的一数据集合A={A1,A2,A3,...,Ak},其中Ak为该数据集合A的子集,其中k为子集的个数,以油浸式变压器为例,数据集合A={嘉定主变1#变压器H2_CON,嘉定主变1#变压器CO,嘉定主变1#变压器CH4,嘉定主变1#变压器C2H4,嘉定主变1#变压器C2H6,嘉定主变1#变压器C2H2,嘉定主变1#变压器O2,嘉定主变1#变压器CO2,嘉定主变1#变压器H2O},上述集合中以各个气体表示不同的变压器产生气体的数据;
步骤S12、将该数据集合A的每一个子集Ak分解为各个属性集合{P,K,D},其中P表示指针类型,K表示主键,D表示数据;
步骤S13、将该属性集合D的分解为表示具体属性的属性子集{d1,d2,d3,...,dk},其中各个属性子集包括:信息点编号、信息点名称、类型、数值,例如D={rtuno,pointno,pointname,type,value,K,B,flag,unit},其中y=Kx+B;其中,rtuno是系统中的设备编号,pointno是设备中信息点的编号,pointname是设备中所需采集信息点的名称,type表示信息点的类型(例如为模拟量还是数字量),value表示采集的的值,flag表示的是采集点是否变化的标志,unit表示的是信息点的单位,y表示的是工程值,工程值y与采集值value是是线性关系(y=K*value+B,而K和B则分别表示此线性关系的参数,即斜率和截距)。
步骤S14、定义结构体S,其中结构体S={P,K,D},其中P为指针类型,K为主键,D为具体属性类型与该数据定义一致性;
步骤S15、根据数据集合A设置的最大值M(其中M>K),申请内存空间T=malloc(sizeof(S)*M);
步骤S16、根据A集合设置的最大值M,申请位图内存空间nSize=(M+7)/8,B=malloc(sizeof(uint8)*nSize)其中,B表示存放数据所申请的内存空间,nSize表示空间对齐字节。
优选地,步骤S2包括以下步骤:从该关系数据表中读取数据,按照B+树的数据结构把对应的数据写入至该内存空间T中。
优选地,该主键为多个数据类型的组合,数据类型例如,整型,浮点型,字符串型。本发明之所以能够使用多关键字查找是由B+TREE的数据结构特点所带来,B+TREE是多路查找树,所有非终端的结点都是关键字索引部分,这些索引部分可以设置成主键,叶子部分是待查询的数据内容,而具体主键根据实际情况进行确定。
优选地,该数据集合A为变压器的数据集合。对于轨道交通行业而言,可以存储所有的数据,这里的变压器仅是举例说明,采用此种结构可以存取任何的数据,只要数据为字符型,整型,浮点型,字符串型都可以进行存取。
优选地,该关系数据表中的数据包括:变压器编号、变压器油色谱的浓度。
本发明还提供一种数据搜索方法,其特点在于,其包括以下步骤:
步骤ST1、按照如上所述的数据存储方法存储该数据;
步骤ST2、检索该B+树以获得该数据。
本发明的基于B+TREE的搜索方法,包括以下步骤:
1)确定关系数据库加载到内存表最大记录数;
2)确定关系数据表的特征属性,定义对应表的数据结构模型;
3)确定B+TREE的插槽数或阶数;
4)确定位图空间大小;
5)为了操作系统快速访问,按8个字节对齐。
其中,所述的数据点的描述除了包括表数据集内存申请以及位图内存申请外,还包括B+TREE(B+树)查找、插入和分裂过程。
其中,所述的两种内存申请外,还包括数据插入时索引建立与位图管理内存的位关联控制。
其中,所述的两种内存申请外,还包括数据内容的删除、更新操作,以及退出检索时内存释放问题。
本发明的积极进步效果在于:
1、本发明所述的数据存储方法及搜索方法克服了现有技术中内存数据库中的主键仅能采用整型的格式的缺陷,在字符串作为主键的情况下也能实现数据的检索。
2、使用数据结构中的B+TREE,加快了搜索速度。
3、本发明定义了关系数据库表的模型、实现了高效的位图管理内存、实现了单主键或多主键查询并且实现了在特定范围查找数据集。
附图说明
图1为现有的4阶的B+TREE的示意图。
图2为链接键1-7到数据值d1-d7的示意图。
图3为本发明一实施例的数据存储方法的流程图。
图4为本发明一实施例的数据检索方法的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
参考图1-4和表1,说明本发明的技术方案。首先,参考图1-2和表1,本领域技术人员很容易理解B+TREE的数据结构。在此基础上,参考图3-4,介绍本发明的数据存储方法及搜索方法。
表1B+TREE的根、树枝和叶子的关系表
首先参考图3,介绍本发明的数据存储方法,包括以下步骤:
步骤100,将该关系数据表中的一数据集合A={A1,A2,A3,...,Ak},其中Ak为该数据集合A的子集;
步骤101,将该数据集合A的每一个子集Ak分解为各个属性集合{P,K,D},其中P表示指针类型,K表示主键,D表示数据;
步骤102,将该属性集合D的分解为表示具体属性的属性子集{d1,d2,d3,...,dk},其中各个属性子集包括:信息点编号、信息点名称、类型、数值,例如D={rtuno,pointno,pointname,type,value,K,B,flag,unit},其中y=Kx+B;
步骤103,定义结构体S,其中结构体S={P,K,D},其中P为指针类型,K为主键,D为具体属性类型与该数据定义一致性;
步骤104,根据数据集合A设置的最大值M(其中M>K),申请内存空间T=malloc(sizeof(S)*M);
步骤105,根据A集合设置的最大值M,申请位图内存空间nSize=(M+7)/8,B=malloc(sizeof(uint8)*nSize)。
步骤106,从该关系数据表中读取数据,按照B+树的数据结构把对应的数据写入至该内存空间T中。
参考图4,介绍本发明的数据搜索方法,包括以下步骤:
先按照如图3所示的步骤100-步骤106存储数据之后,
步骤107,检索该B+树以获得该数据。
1)定义关系数据库表的模型,根据上述原则定义结构体单元;
2)定义B+TREE对象,确定B+TREE加载表的最大数目;
3)定义位图管理内存大小,分配相应的内存空间;
4)定义数据元素结构体内存大小,分配相应的内存空间;
5)读取关系数据库的内容,加载内容到数据元素结构体的内存。
在添加新节点元素时,通过掩码方式识别是否有空闲单元,此处的单元为一个结构体长度即len=sizeof(S)。返回找到空闲单元的地址,操作完成后把状态置成1。简单处理过程如下:
本发明包括以下特点
(一)特征数据查询的高效实现
B+TREE对于所有内部节点,子指针的数目总是比元素的数目多一个。因为所有叶子都在相同的高度上,节点通常不包含确定它们是叶子还是内部节点的方式。
每个内部节点的元素充当分开它的子树的分离值。例如,如果内部节点有K(K>=2)个子节点(或子树)则它必须有两个分离值(或元素)a1和ak。在最左子树中所有的值都小于a1,在中间子树中所有的值都在a1和ak之间,而在最右子树中所有的值都大于ak。当元素查询的主键值落在a1和ak之间,B+TREE使用二分法查询(时间复杂度O(log2N))。
B+TREE所有叶子节点元素都是数据集,如图2注意链接列表(斜杠填充)允许快速按顺序遍历,B+TREE提供的这种链接方式,对于某一个值域信息查找将十分有利。
(二)位图方式管理内存的高效实现
位图是由像素(Pixel)组成的,像素是位图最小的信息单元,存储在图像栅格中。我们使用位图0和1这种特征(0表示空闲,1表示占用),确定每个内存块使用状态。在插入新的节点时,通过掩码(MASK)的方式判断是否有大于0,如果大于0说明某一为被置为1,经过移位运算比较找到第一空闲单元,这一点跟首次适应法类似。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (7)
1.一种数据存储方法,其特征在于,其包括以下步骤:
步骤S1、申请一内存空间;
步骤S2、按照B+树的数据结构将一关系数据表中的数据写入该内存空间。
2.如权利要求1所述的数据存储方法,其特征在于,步骤S1包括以下步骤:
步骤S11、将该关系数据表中的一数据集合A={A1,A2,A3,...,Ak},其中Ak为该数据集合A的子集,其中k为子集的个数;
步骤S12、将该数据集合A的每一个子集Ak分解为各个属性集合{P,K,D},其中P表示指针类型,K表示主键,D表示数据;
步骤S13、将该属性集合D的分解为表示具体属性的属性子集{d1,d2,d3,...,dk},其中各个属性子集包括:信息点编号、信息点名称、类型、数值;
步骤S14、定义结构体S,其中结构体S={P,K,D},其中P为指针类型,K为主键,D为具体属性类型与该数据定义一致性;
步骤S15、根据数据集合A设置的最大值M(其中M>K),申请内存空间T=malloc(sizeof(S)*M);
步骤S16、根据A集合设置的最大值M,申请位图内存空间nSize=(M+7)/8,B=malloc(sizeof(uint8)*nSize),其中,B表示存放数据所申请的内存空间,nSize表示空间对齐字节。
3.如权利要求2所述的数据存储方法,其特征在于,步骤S2包括以下步骤:从该关系数据表中读取数据,按照B+树的数据结构把对应的数据写入至该内存空间T中。
4.如权利要求1-3中任意一项所述的数据存储方法,其特征在于,该主键为多个数据类型的组合。
5.如权利要求1-3中任意一项所述的数据存储方法,其特征在于,该数据集合A为变压器的数据集合。
6.如权利要求1-3中任意一项所述的数据存储方法,其特征在于,该关系数据表中的数据包括:变压器编号、变压器油色谱的浓度。
7.一种数据搜索方法,其特征在于,其包括以下步骤:
步骤ST1、按照如权利要求1-5中任意一项所述的数据存储方法存储该数据;
步骤ST2、检索该B+树以获得该数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210091529XA CN103365884A (zh) | 2012-03-30 | 2012-03-30 | 数据存储方法及搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210091529XA CN103365884A (zh) | 2012-03-30 | 2012-03-30 | 数据存储方法及搜索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103365884A true CN103365884A (zh) | 2013-10-23 |
Family
ID=49367251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210091529XA Pending CN103365884A (zh) | 2012-03-30 | 2012-03-30 | 数据存储方法及搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103365884A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271507A (zh) * | 2018-09-21 | 2019-01-25 | 长沙学院 | 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533414A (zh) * | 2009-04-15 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种数据库记录唯一标识符生成的方法及装置 |
US7809759B1 (en) * | 2006-08-18 | 2010-10-05 | Unisys Corporation | Dynamic preconditioning of A B+tree |
CN102043852A (zh) * | 2010-12-22 | 2011-05-04 | 东北大学 | 一种基于路径信息的可扩展标记语言祖先后代索引方法 |
-
2012
- 2012-03-30 CN CN201210091529XA patent/CN103365884A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7809759B1 (en) * | 2006-08-18 | 2010-10-05 | Unisys Corporation | Dynamic preconditioning of A B+tree |
CN101533414A (zh) * | 2009-04-15 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种数据库记录唯一标识符生成的方法及装置 |
CN102043852A (zh) * | 2010-12-22 | 2011-05-04 | 东北大学 | 一种基于路径信息的可扩展标记语言祖先后代索引方法 |
Non-Patent Citations (2)
Title |
---|
古辉等: "一种基于B+树的程序信息库设计", 《浙江工业大学学报》 * |
赵庆建等: "基于B+树的复杂生态信息存储结构模型", 《南京林业大学学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271507A (zh) * | 2018-09-21 | 2019-01-25 | 长沙学院 | 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统 |
CN109271507B (zh) * | 2018-09-21 | 2022-02-08 | 长沙学院 | 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106599104B (zh) | 一种基于redis集群的海量数据关联方法 | |
CN103412917B (zh) | 一种可扩展的多类型领域数据协调管理的数据库系统和管理方法 | |
CA3033173C (en) | Systems, methods, and data structures for high-speed searching or filtering of large datasets | |
CN104504105B (zh) | 一种实时数据库的存储方法 | |
CN103488710B (zh) | 大数据页中高效存储非定长数据方法 | |
CN106682077A (zh) | 一种基于Hadoop技术的海量时序数据存储实现方法 | |
CN102446184A (zh) | 一种基于时间序列的工业数据存储及索引方法 | |
CN104216989A (zh) | 一种基于HBase的输电线路综合数据存储方法 | |
CN103026631A (zh) | 用于压缩xml文档的方法和系统 | |
CN107741947B (zh) | 基于hdfs文件系统的随机数密钥的存储与获取方法 | |
CN110727406A (zh) | 一种数据存储调度方法及装置 | |
CN100561482C (zh) | 一种嵌入式系统数据库的实现方法 | |
CN104504116A (zh) | 一种实时数据库的存储方法 | |
CN107328968A (zh) | 用于电能表的冻结和事件记录数据存储方法 | |
CN109213820A (zh) | 一种实现多种类型的数据库融合使用的方法 | |
CN101551820B (zh) | 兴趣点属性的索引数据库的生成方法和装置 | |
CN201402459Y (zh) | 一种测试用例管理装置 | |
CN106682003A (zh) | 分布式存储命名空间的路径分割映射方法和装置 | |
CN103473324A (zh) | 基于非结构化数据存储的多维业务属性检索装置及方法 | |
CN113721862A (zh) | 数据处理方法及装置 | |
CN116756253B (zh) | 关系型数据库的数据存储、查询方法、装置、设备和介质 | |
CN106874329A (zh) | 数据库表索引的实现方法和装置 | |
CN103365884A (zh) | 数据存储方法及搜索方法 | |
CN107894875A (zh) | 一种rtu数据存储方法 | |
CN116301656A (zh) | 基于日志结构合并树的数据存储方法、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20131023 |