CN102955843B - 一种键值数据库的多键查找实现方法 - Google Patents

一种键值数据库的多键查找实现方法 Download PDF

Info

Publication number
CN102955843B
CN102955843B CN201210352757.8A CN201210352757A CN102955843B CN 102955843 B CN102955843 B CN 102955843B CN 201210352757 A CN201210352757 A CN 201210352757A CN 102955843 B CN102955843 B CN 102955843B
Authority
CN
China
Prior art keywords
key
row
function
master data
key 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.)
Expired - Fee Related
Application number
CN201210352757.8A
Other languages
English (en)
Other versions
CN102955843A (zh
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.)
Founder Digital Publishing Technology (Shanghai) Co.,Ltd.
Founder Information Industry Holdings Co Ltd
Peking University Founder Group Co Ltd
Original Assignee
FOUNDER DIGITAL PUBLISHING TECHNOLOGY (SHANGHAI) CO LTD
Founder Information Industry Holdings Co Ltd
Peking University Founder Group Co 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 FOUNDER DIGITAL PUBLISHING TECHNOLOGY (SHANGHAI) CO LTD, Founder Information Industry Holdings Co Ltd, Peking University Founder Group Co Ltd filed Critical FOUNDER DIGITAL PUBLISHING TECHNOLOGY (SHANGHAI) CO LTD
Priority to CN201210352757.8A priority Critical patent/CN102955843B/zh
Publication of CN102955843A publication Critical patent/CN102955843A/zh
Application granted granted Critical
Publication of CN102955843B publication Critical patent/CN102955843B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种键值数据库的多键查找实现方法,包括:为所述键值数据库中的主数据表注册第一键的划分结构并为所述主数据表索引表注册第二键的划分结构,所述的主数据表和索引表的第一键的划分结构和所述第二键的划分结构分别规定了所述主数据表和所述索引表的每一行数据的划分方法和每一列数据的比较规则,从而为所述主数据表创建索引时创建出满足多列查找的索引表。本发明的技术方案可以有效、合理地提高多键值查找的效率,其所采用的技术方案简单、高效,开销可以忽略不计,有效节约了资源,并且采用本发明的技术方案提供的这种方法实现的多键值查找,只进行一次索引的查询就可以得到所有符合查询条件的条目,使用方便、高效。

Description

一种键值数据库的多键查找实现方法
技术领域
本发明涉及计算机技术领域,特别涉及一种键值数据库的多键查找实现方法。
背景技术
经过几十年的发展,关系数据库管理系统(RDBMS)被广泛应用,但是同时暴露出很多先天缺陷,其性能无法适应最新的很多类型的应用需求。NoSQL是近年来发展壮大的新的数据存储管理技术,它试图避免RDBMS在超大数据量和大量多表连接的情况下性能低下的缺点。键值存储引擎(key/value storage engine)是NoSQL的一种技术方案,它存储无模式的键值数据(key/value pair),键值数据在存储引擎内部都是无结构的字节串,存储引擎内部不理解键值数据的内部结构,而由应用程序负责解析和处理键值数据。键值存储引擎需要支持完整的ACID事务语义和高效的键值数据的存储和访问方法,并且通过用户注册的回调函数理解键值数据的内部结构并且操作键值数据。
一般的key-value数据库只能进行单键值的查找,例如可以查找key=某个值的value,而不能查找key(1)=某个值并且key(2)=某个值…并且key(n)=某个值的value。个别的key-value数据库实现了多键的查找功能,例如,berkeleyDB实现了多键值的查找,其通过secondary database(可以理解为主数据表的索引)实现的多键查找。berkeleyDB单键查找是直接通过key的值访问primary database(可以理解为主数据表)来得到value的。
参阅图1。图1示出了一种现有技术中的多键查找技术方案。例如,若primary database中存储了用户的信息,key为用户id,value为用户的详细信息,假设为“名字 年龄 住址”组成的字符串。那么现在可以通过用户的ID在primary database中得到用户的详细信息。若现在的需求是查询所有住址为北京,年龄为20岁的用户,这就需要进行多键查找,也即需要设置key(1)=20并且key(2)=“北京”。那么就需要在primary database上建立secondary database,在secondary database中,key就是年龄和住址,value则为用户ID。上述的多键查找的实现实际上是通过先访问secondary database得到用户ID,再通过访问primary database通过用户的ID来实现的。由此,本技术领域的技术人员可以理解的是上述的解决方案总共进行了两次的数据访问,由此带来的缺陷是导致了较多的IO开销,因此,这种多键查找的实现方案具有性能低下的缺陷。
发明内容
为解决上述问题,本发明技术方案提供了一种键值数据库的多键查找实现方法,包括:
为所述键值数据库中的主数据表注册第一键的划分结构,并为所述主数据表索引表注册第二键的划分结构,所述主数据表和索引表的第一键的划分结构和所述第二键的划分结构分别设置所述主数据表和所述索引表的每一行数据的划分方法和每一列数据的比较函数,从而为所述主数据表创建索引时创建出满足多列查找的索引表;
通过所述比较函数以构建出节点间存在多列大小关系的树;
通过所述树的根节点查找存有满足查询条件的记录指针的第一个叶节点;
以所述第一个叶节点作为起点经过一次遍历找到同时满足查询条件的所有节点;
其中,每个节点的查询步骤为:如果前一列的比较结果满足查找条件,则使用下一列的比较函数,直至判断出该节点是否满足多列查询条件。
可选地,所述的第一键的划分结构为包columnInfo结构,所述columnInfo结构包括以下的参数
Keys:数值型,其表示所述主数据表的一行数据划分的列的数目;
col_number:空;
rd_comfunction:函数的数组,存放了每个列的比较函数;
split_function:行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度
可选地,所述的第二键的划分结构为columnInfo结构,所述columnInfo结构包括以下的参数:
Keys:数值型,其表示所述索引表的一行数据划分的列的数目;
col_number:数值的数组,表达了所述索引键和所述主数据表的列的对应关系;
rd_comfunction:函数的数组,存放了每个列的比较函数;
split_function:行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度。
可选地,所述的为所述键值数据库中的主数据表和索引表注册键的划分结构具体为在创建表和索引的函数中增加columnInfo类型的参数,并且在创建主数据表和索引时导入将所述columnInfo结构体。
可选地,所述的键值数据库为NoSQL数据库。
可选地,所述的索引表为一B树。
与现有技术相比,上述技术方案具有下优点:
本发明的技术方案可以有效、合理地提高多键值查找的效率,其所采用的技术方案简单、高效,开销可以忽略不计,有效节约了资源,并且采用本发明的技术方案提供的这种方法实现的多键值查找,只进行一次索引的查询就可以得到所有符合查询条件的条目,使用方便、高效。
附图说明
图1是现有技术中的一种键值数据库实现多键查找方法的示意图;
图2是本发明实施方式的键值数据库的多键查找实现方法的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式的限制。
本技术领域的技术人员知道,一般的key-value数据库只能进行单键值的查找,例如可以查找key=某个值的value,而不能查找key(1)=某个值并且key(2)=某个值…并且key(n)=某个值的value。个别的key-value数据库实现了多键的查找功能,例如,berkeleyDB实现了多键值的查找,其通过secondarydatabase(可以理解为主数据表的索引)实现的多键查找。berkeleyDB单键查找是直接通过key的值访问primary database(可以理解为主数据表)来得到value的。参阅图1。图1示出了一种现有技术中的多键查找技术方案。例如,若primary database中存储了用户的信息,key为用户id,value为用户的详细信息,假设为“名字 年龄 住址”组成的字符串。那么现在可以通过用户的ID在primary database中得到用户的详细信息。若现在的需求是查询所有住址为北京,年龄为20岁的用户,这就需要进行多键查找,也即需要设置key(1)=20并且key(2)=“北京”。那么就需要在primary database上建立secondary database,在secondary database中,key就是年龄和住址,value则为用户ID。上述的多键查找的实现实际上是通过先访问secondary database得到用户ID,再通过访问primary database通过用户的ID来实现的。由此,本技术领域的技术人员可以理解的是上述的解决方案总共进行了两次的数据访问,由此带来的缺陷是导致了较多的IO开销,因此,这种多键查找的实现方案具有性能低下的缺陷。
为解决现有技术中的问题,本发明的发明人经过研究,提出了一种本发明实施方式的键值数据库的多键查找实现方法。参阅图2,图2示出了本发明实施方式的键值数据库的多键查找方法。如图2所示,本发明实施方式键值数据库的多键查找实现方法,包括:
步骤S10:为所述键值数据库中的主数据表注册第一键的划分结构,并为所述主数据表索引表注册第二键的划分结构,所述主数据表和索引表的第一键的划分结构和所述第二键的划分结构分别设置所述主数据表和所述索引表的每一行数据的划分方法和每一列数据的比较函数,从而为所述主数据表创建索引时创建出满足多列查找的索引表;
步骤S20:通过所述比较函数以构建出节点间存在多列大小关系的树;
步骤S30:通过所述树的根节点查找存有满足查询条件的记录指针的第一个叶节点;
步骤S40:以所述第一个叶节点作为起点经过一次遍历找到同时满足查询条件的所有节点;
其中,每个节点的查询步骤为:如果前一列的比较结果满足查找条件,则使用下一列的比较函数,直至判断出该节点是否满足多列查询条件。
其中,所述的第一键的划分结构为columnInfo结构,所述columnInfo结构包括以下的参数:
Keys:数值型,其表示所述主数据表的一行数据划分的列的数目;
col_number:空(主数据表不用);
rd_comfunction:函数的数组,存放了每个列的比较函数;
split_function:行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度。
所述的第二键的划分结构为columnInfo结构,所述columnInfo结构包括以下的参数:
Keys:数值型,其表示所述索引表的一行数据划分的列的数目;
col_number:数值的数组,表达了索引键和主数据表的列的对应关系;
rd_comfunction:函数的数组,存放了每个列的比较函数;
split_function:行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度。
其中,所述键值数据库中的主数据表和索引表注册第一键的划分结构和第二键的划分结构方式为在创建表和索引的函数中增加columnInfo类型的参数,并并且在创建主数据表和索引时导入所述columnInfo结构体。
另外,本发明实施方式中的键值数据库优选为NoSQL数据库。
本技术领域人员知道的是,创建索引需要排序,而排序的实现则需要该种数据类型的比较函数,从而构建出节点间存在大小关系的树。索引的查找就是通过在这棵树上遍历来实现的。
支持多列查找的索引排序使用的比较函数是所有列的比较函数,排序时按照次序如果前一列的比较结果相等那么继续使用下一列的比较函数,直到得出比较结果。例如,三个数据条目:2308:09;1212:12;1220:40;我们的列划分的规则是:前两个字节为第一列,剩下的字节为一列,那么我们规定第一列为整数,第二列为时间,整数和时间有着不同的比较函数。那么按照上边的排序原则从小到大的排序结果应该为1212:12;1220:40;2308:09。实现了多列的排序,从而实现了多列索引的构建,从而实现了多列数据的查找。
如上述的例子,若数据表中存储了用户的信息,现在数据库中为每一个用户存储一行字节串,所存储的字节串的内容为“ID名字年龄住址”,数据连续存储。在为主数据表和索引表注册键值数据库目前并不 理解“ID名字年龄住址”是要被分为4个列的。
现在我们要为主数据表注册一个columnInfo结构,columnInfo结构表达“主数据表的每一行数据怎样划分,每一列数据的比较规则是什么”。所述的columnInfo结构的内容如下:
为了满足查询所有住址为北京,年龄为20岁的用户的需求,我们需要对查询键住址,年龄两个列创建索引,需要给该索引注册类似的columnInfo结构:
这样,通过在主数据表和索引上分别注册了columnInfo结构,单列的表和索引就具有了多列的语义,从而可以实现键值数据库的多键查找。采用本发明的实施方式的键值数据库的多键查找实现方法,通过未 主数据表和所述主数据表的索引表注册了类似的columnInfo结构,通过访问该索引表一次就能取得满足查询条件的记录。
综上所述,本发明技术方案具有下优点:
本发明的技术方案可以有效、合理地提高多键值查找的效率,其所采用的技术方案简单、高效,开销可以忽略不计,有效节约了资源,并且采用本发明的技术方案提供的这种方法实现的多键值查找,只进行一次索引的查询就可以得到所有符合查询条件的条目,使用方便、高效。
应当理解的是这里所描述的方法和系统可以以各种形式的硬件、软件、固件、专用处理机或者它们的组合实现。尤其是,至少本发明的一部分包括程序指令的应用程序优选实现。这些程序指令被确实地包括在一个或者多个程序存储设备(包括但不限于硬盘,磁性软盘,RAM,ROM,CD,ROM等)里,并且可由任何包括适当结构的设备或者机器,例如一种具有处理器、内存和输入/输出接口的通用数字计算机执行。还应当理解由于附图中描述的一些系统的组成部件和处理步骤优选地以软件实现,所以,系统模块(或者方法步骤的逻辑流程)之间的连接可能不同,这取决于本发明的程序设计方式。根据这里给出的指导,相关领域的普通技术人员将能够设计出本发明的这些以及类似的实施方式。
以上公开了本发明的多个方面和实施方式,本领域的技术人员会明白本发明的其它方面和实施方式。本发明中公开的多个方面和实施方式只是用于举例说明,并非是对本发明的限定,本发明的真正保护范围和精神应当以权利要求书为准。

Claims (6)

1.一种键值数据库的多键查找实现方法,其特征在于,包括:
为所述键值数据库中的主数据表注册第一键的划分结构,并为所述主数据表索引表注册第二键的划分结构,所述主数据表和索引表的第一键的划分结构和所述第二键的划分结构分别设置所述主数据表和所述索引表的每一行数据的划分方法和每一列数据的比较函数,从而为所述主数据表创建索引时创建出满足多列查找的索引表;
通过所述比较函数以构建出节点间存在多列大小关系的树;
通过所述树的根节点查找存有满足查询条件的记录指针的第一个叶节点;
以所述第一个叶节点作为起点经过一次遍历找到同时满足查询条件的所有节点;
其中,每个节点的查询步骤为:如果前一列的比较结果满足查找条件,则使用下一列的比较函数,直至判断出该节点是否满足多列查询条件。
2.如权利要求1所述键值数据库的多键查找实现方法,其特征在于,
所述的第一键的划分结构为columnInfo结构,所述columnInfo结构包括以下的参数:
Keys:数值型,其表示所述主数据表的一行数据划分的列的数目;
col_number:空;
rd_comfunction: 函数的数组,存放了每个列的比较函数;
split_function: 行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度。
3.如权利要求1所述的键值数据库的多键查找实现方法,其特征在于,所述的第二键的划分结构为columnInfo结构,所述columnInfo结构包括以下的参数:
Keys:数值型,其表示所述索引表的一行数据划分的列的数目;
col_number:数值的数组,表达了所述索引键和所述主数据表的列的对应关系;
rd_comfunction: 函数的数组,存放了每个列的比较函数;
split_function: 行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度。
4.如权利要求2或3所述的键值数据库的多键查找实现方法,其特征在于,所述的为所述键值数据库中的主数据表和索引表注册键的划分结构具体为在创建表和索引的函数中增加columnInfo类型的参数,并且在创建主数据表和索引时导入将所述columnInfo结构体。
5.如权利要求1所述的键值数据库的多键查找实现方法,其特征在于,所述的键值数据库为NoSQL数据库。
6.如权利要求1所述的键值数据库的多键查找实现方法,其特征在于,所述的索引表为一B树。
CN201210352757.8A 2012-09-20 2012-09-20 一种键值数据库的多键查找实现方法 Expired - Fee Related CN102955843B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210352757.8A CN102955843B (zh) 2012-09-20 2012-09-20 一种键值数据库的多键查找实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210352757.8A CN102955843B (zh) 2012-09-20 2012-09-20 一种键值数据库的多键查找实现方法

Publications (2)

Publication Number Publication Date
CN102955843A CN102955843A (zh) 2013-03-06
CN102955843B true CN102955843B (zh) 2015-07-22

Family

ID=47764649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210352757.8A Expired - Fee Related CN102955843B (zh) 2012-09-20 2012-09-20 一种键值数据库的多键查找实现方法

Country Status (1)

Country Link
CN (1) CN102955843B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090895B (zh) * 2013-12-18 2015-11-18 深圳市腾讯计算机系统有限公司 获取基数的方法、装置、服务器及系统
CN106095952A (zh) * 2016-06-15 2016-11-09 公安部第三研究所 基于键值云存储的时空范围内海量过车记录快速查询方法
CN107784030B (zh) 2016-08-31 2020-04-28 华为技术有限公司 一种处理连接查询的方法及装置
CN107229718B (zh) * 2017-05-31 2020-06-05 北京京东尚科信息技术有限公司 处理报表数据的方法和装置
CN109033134A (zh) * 2018-06-06 2018-12-18 海尔优家智能科技(北京)有限公司 一种消息处理方法、装置、存储介质及计算机设备
CN109545284A (zh) * 2018-10-16 2019-03-29 中国人民解放军军事科学院军事医学研究院 基于药物及靶标信息的药物综合信息库建设方法及系统
CN112307266B (zh) * 2019-07-31 2023-08-22 华为云计算技术有限公司 一种索引模型的构建方法及装置
CN112069363A (zh) * 2020-07-31 2020-12-11 青岛海尔科技有限公司 用于消息处理的方法、装置、服务器及存储介质
CN112783927B (zh) * 2021-01-27 2023-03-17 浪潮云信息技术股份公司 一种数据库查询方法及系统
CN116955363B (zh) * 2023-09-21 2023-12-26 北京四维纵横数据技术有限公司 无模式数据创建索引方法、装置、计算机设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286160A (zh) * 2008-05-30 2008-10-15 同济大学 数据库索引的方法
WO2011081580A1 (en) * 2009-12-29 2011-07-07 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for data storage
CN102243664A (zh) * 2011-08-22 2011-11-16 西北大学 一种复合字段的数据存储及查询方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286160A (zh) * 2008-05-30 2008-10-15 同济大学 数据库索引的方法
WO2011081580A1 (en) * 2009-12-29 2011-07-07 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for data storage
CN102243664A (zh) * 2011-08-22 2011-11-16 西北大学 一种复合字段的数据存储及查询方法

Also Published As

Publication number Publication date
CN102955843A (zh) 2013-03-06

Similar Documents

Publication Publication Date Title
CN102955843B (zh) 一种键值数据库的多键查找实现方法
Freitag et al. Adopting worst-case optimal joins in relational database systems
CN101436192B (zh) 用于优化针对垂直存储式数据库的查询的方法和设备
Das et al. A Tale of Two Graphs: Property Graphs as RDF in Oracle.
Bergamaschi et al. Keyword search over relational databases: a metadata approach
US9053210B2 (en) Graph query processing using plurality of engines
US9047333B2 (en) Dynamic updates to a semantic database using fine-grain locking
CN105975617A (zh) 一种多分区表查询处理的方法和装置
US8838598B2 (en) System and computer program product for automated design of range partitioned tables for relational databases
Luo et al. Storing and indexing massive RDF datasets
US20100299367A1 (en) Keyword Searching On Database Views
CN103530415A (zh) 一种兼容关键词搜索的自然语言搜索方法及系统
US10496648B2 (en) Systems and methods for searching multiple related tables
US10372736B2 (en) Generating and implementing local search engines over large databases
CN106484815B (zh) 一种基于海量数据类sql检索场景的自动识别优化方法
US7725448B2 (en) Method and system for disjunctive single index access
CN110543585B (zh) 一种基于关系模型的rdf图和属性图统一存储方法
Cappellari et al. A path-oriented rdf index for keyword search query processing
Gupta et al. BioDB: An ontology-enhanced information system for heterogeneous biological information
CN108804580B (zh) 一种在联邦型rdf数据库中查询关键字的方法
Hassan et al. RDF data storage techniques for efficient SPARQL query processing using distributed computation engines
Wang et al. Fast error-tolerant location-aware query autocompletion
Patil et al. Struct: Incorporating contextual information for english query search on relational databases
Zhong et al. 3SEPIAS: A semi-structured search engine for personal information in dataspace system
Lan et al. Answering Graph Pattern Queries using Compact Materialized Views.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: FOUNDER INFORMATION INDUSTRY HOLDING CO., LTD. FOU

Free format text: FORMER OWNER: FOUNDER DIGITAL PUBLISHING TECHNOLOGY (SHANGHAI) CO., LTD.

Effective date: 20130912

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20130912

Address after: 100871 Beijing, Haidian District into the house road, founder of the building on the 5 floor, No. 298

Applicant after: Peking Founder Group Co., Ltd.

Applicant after: Founder Holdings Company Limited (Founder Holdings)

Applicant after: Founder Digital Publishing Technology (Shanghai) Co.,Ltd.

Address before: 100871 Beijing, Haidian District into the house road, founder of the building on the 5 floor, No. 298

Applicant before: Peking Founder Group Co., Ltd.

Applicant before: Founder Digital Publishing Technology (Shanghai) Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150722

Termination date: 20170920