CN103514201B - 一种非关系型数据库的数据查询方法和装置 - Google Patents
一种非关系型数据库的数据查询方法和装置 Download PDFInfo
- Publication number
- CN103514201B CN103514201B CN201210214550.4A CN201210214550A CN103514201B CN 103514201 B CN103514201 B CN 103514201B CN 201210214550 A CN201210214550 A CN 201210214550A CN 103514201 B CN103514201 B CN 103514201B
- Authority
- CN
- China
- Prior art keywords
- value
- condition
- query
- major key
- entity table
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种非关系型数据库的数据查询方法和装置,该方法包括:接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;根据所述预设转换规则,对各查询条件中的条件值进行转换;根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。采用该方法,可以提高非关系型数据库进行条件查询的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种非关系型数据库的数据查询方法和装置。
背景技术
网络交易平台一般建立有卖家管理系统,用于对卖家信息进行存储和管理。随着交易规模的不断扩大,传统的关系型数据库已经不能满足卖家管理系统对高扩展性的要求。因此,现有的卖家管理系统通常采用非关系型数据库来实现数据存储。非关系型数据库一般采用Key-Value(主键和值)的存储方式,在数据查询的过程中,一般根据主键查找对应的值。
在卖家管理系统中,需要对几乎卖家的所有信息数据进行存储、分类、筛选。因此,要求卖家管理系统的数据库至少支持一些实时的、简单的、轻量级的条件查询功能,如lesser(小于)、greater(大于)、equa1(等于)、not equa1(不等于)、in(在范围内)、and(和)、or(或)等。
在实现本申请的过程中,发明人发现,现有技术至少存在如下问题:现有技术的非关系型数据库在进行条件查询的时候,需要遍历整个数据库,读取所有值,并对数据库中每个值都进行相应的判断,以获取符合查询条件的结果,这种查询方式,其效率非常低下。
发明内容
本申请的目的在于,提供一种非关系型数据库的数据查询方法和装置,以提高非关系型数据库进行条件查询的效率,为此,本申请实施例采用如下技术方案:
一种非关系型数据库的数据查询方法,其特征在于,预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致,该方法包括:
接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;
根据所述预设转换规则,对各查询条件中的条件值进行转换;
根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。
一种非关系型数据库的数据查询装置,其特征在于,包括:
建立模块,用于预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致;
接收模块,用于接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;
转换模块,用于根据所述预设转换规则,对各查询条件中的条件值进行转换;
查询模块,用于根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。
本申请的实施例中,预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致;接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;根据所述预设转换规则,对各查询条件中的条件值进行转换;根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。从而,可以提高非关系型数据库进行条件查询的效率。当然,实施本申请的实施例的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
图1为本申请实施例提供的非关系型数据库的数据查询方法的流程示意图;
图2为本申请实施例提供的非关系型数据库的数据查询方法中进行数据转换和重新排序的示意图;
图3为本申请实施例提供的非关系型数据库的数据查询方法中进行数据转换和重新排序的示意图;
图4为本申请实施例提供的非关系型数据库的数据查询方法的流程示意图;
图5为本申请实施例提供的非关系型数据库的数据查询方法的流程示意图;
图6为本申请实施例提供的非关系型数据库的数据查询方法的流程示意图;
图7为本申请实施例提供的非关系型数据库的数据查询方法的流程示意图;
图8为本申请实施例提供的非关系型数据库的数据查询装置的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
本申请实施例提供了一种非关系型数据库的数据查询方法,在该方法中,系统可以预先建立实体表中预设的字段对应的索引表,索引表中记录有实体表中各元组(即表中的各行)在该预设的字段中的二进制存储值的索引值以及对应的实体表主键,该二进制存储值可以按照预设转换规则转换得到对应的索引值,索引表中的各元组可以按照记录的索引值的字典顺序排列,所述按预设转换规则得到的索引值的字典顺序与二进制存储值对应的实际值的大小顺序一致。
本申请实施例中的索引表是专门建立的用于条件查询的表,可以对应某个字段(即表中的某个列)建立索引表,当对这个列的数据进行条件查询时,则可以应用该索引表。此外,也可以对应多个字段(即表中的多个列)建立用于多条件查询的联合索引表,索引表的建立流程可以如图1所示,包括如下步骤:
步骤101,将实体表中各元组在预设的字段中的二进制存储值按照预设转换规则转换得到的索引值。
其中,预设的字段是系统预先设定的需要进行针对性的条件查询的字段。例如,某实体表中包括姓名、年龄、籍贯三个字段,系统需要经常根据年龄和籍贯进行条件查询,则可以对应年龄和籍贯的字段分别建立年龄索引表和籍贯索引表。
字段中的二进制存储值,即计算机在存储相应的字段值时采用的二进制值。例如,某元组中年龄字段的字段值为10,相应的二进制存储值可以为0000000000001010。
上述的预设转换规则可以是:使转换所得的索引值的字典顺序和二进制存储值对应的实际值的大小顺序一致,即在转换后索引值的字典排序与实际值按大小排序的排列结果是一样的。
该转换规则可以具体为:当字段的数据类型为整型(包括Short型(短整型)、Int型(整型)、Long型(长整型))时,对符号位(一般为最前面的一位)进行取反,如图2所示,是对整型字段的数据进行转换前后的字典顺序排列的结果;当字段的数据类型为浮点型(包括Float型(浮点型)、Double型(双精度浮点型))时,对正数的符号位进行取反,对负数的所有位进行取反,如图3所示,是对浮点型字段的数据进行转换前后的字典顺序排列的结果。
步骤102,将索引值和对应的实体表主键配对作为索引表的元组的value(值)。可见,索引表中元组的value记录的是索引值与实体表主键的对应关系,在其value中还可以记录实体表主键的长度(字节数),这样,在查询的过程中可以对元组中实体表主键的字段和索引值的字段进行精确定位。
步骤103,将各value按照其中的索引值的字典顺序进行排序,并给排序后的各value设置相应的索引表主键,以建立索引表。索引表主键是按照排序后的value的顺序设置的。
本申请实施例中,基于上述系统预先建立的索引表,非关系型数据库的数据查询方法的流程,可以如图4所示,包括如下步骤:
步骤401,接收条件查询指令,条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段。每个查询条件都针对一个字段进行查询,该字段就是该查询条件的目标查询字段,例如,某查询指令中携带的查询条件是“PRO1=VALUE1 AND PRO2>VALUE2 AND VALUE3<PRO3<VALUE4”,第一个查询条件是查询在PRO1(字段1)中等于VALUE1(条件值1)的值,第二个查询条件是查询在PRO2(字段2)中大于VALUE2(条件值2)的值,第三个查询条件是查询在PRO3(字段3)中大于VALUE3(条件值3)小于VALUE4(条件值4)的值,三个查询条件之间是和(AND)的关系。
步骤402,根据预设转换规则,对各查询条件中的条件值进行转换。其中,条件值即为非范围查询的目标查询值(VALUE1)或范围查询的范围阈值(VALUE2、VALUE3、VALUE4)。
对条件值的二进制存储值(或称二进制码)进行与实体表中字段值到索引值的转换相同的转换,即进行上述预设转换规则的转换,具体方法可以参照步骤101中的具体描述。
步骤403,根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询各索引表中符合经过条件值转换后的查询条件的索引值,确定在各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在实体表中获取对应的查询值。
其中,查询索引值时,可以查询符合经过条件值转换后的查询条件的索引值中的一部分,也可以查询全部。
由于索引表中索引值的排列顺序与实体表中相应字段实际值的大小顺序一致,所以根据查询条件对实体表中目标查询字段值的查询,就可以转换为根据经过条件值转换后的查询条件对各目标查询字段对应的索引表中的索引值的查询。由于索引值的排列顺序与对应的实际值的大小顺序一致,所以对索引值的条件查询无需遍历整个索引表,具体可以参见下面例子。在查询到相应的实体表主键后,则可以在实体表中找到对应的查询值。
具体的,当条件查询指令中携带有一个查询条件时,步骤403中的查询方法可以包括如下过程:
根据经过条件值转换后的查询条件,以及该查询条件的目标查询字段对应的索引表中的各索引值的排列顺序,对该索引表中的索引值进行查询,确定符合所述经过条件值转换后的查询条件的索引值;获取查询到的索引值对应的实体表主键;根据获取到的实体表主键,在实体表中获取对应的查询值。例如,对于查询条件PRO=VALUE,只需将VALUE1按预设转换规则转换为VALUE1’,然后再索引表中查询等于VALUE1’的索引值(这些索引值在索引表中被存储在相邻的元组中),并获取对应的实体表主键;对于查询条件PRO>VALUE,只需将VALUE按预设转换规则转换为VALUE’,然后再在索引表中查询VALUE’之后(假设索引值按字典顺序从小到大排列)的所有元组,获取对应的实体表主键。此处,获取符合条件的索引值,可以是获取其中的一部分索引值,也可以获取所有符合条件的索引值。
具体的,当条件查询指令中携带有多个查询条件时,步骤403中的查询流程可以包括如下步骤:
步骤A,根据经过条件值转换后的各查询条件,以及各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,分别对各索引表中的索引值进行查询,确定各索引表中符合相应的查询条件的索引值。对于每个查询条件,具体查询方法可以参见上述一个查询条件的查询方法的具体内容。
步骤B,分别在各索引表中获取查询到的索引值对应的实体表主键,建立与各索引表对应的主键集合。对于每个索引表,将查询到的多个索引值对应的实体表主键存储在一个主键集合中。
步骤C,根据多个查询条件之间的关系,对获取到的各主键集合进行相应的集合运算,获取经过集合运算后得到的主键集合中包含的实体表主键。例如,两个查询条件之间如果是和的关系,则对相应的两个索引表的主键集合进行取交集的操作;两个查询条件之间如果是或的关系,则对相应的两个索引表的主键集合进行取并集的操作。
优选的,在对集合进行的取交集运算时,可以根据二叉查询树的方式进行取交集的操作,具体方法在实施例二中将进行详细阐述。
步骤D,根据获取到的实体表主键,在实体表中获取对应的查询值。
上述流程在具体实施中,可以在符合经过条件值转换后的各查询条件的索引值对应的实体表主键中挑选一部分建立主键集合,进行后续集合运算,获取相应结果,并在结果数量不够的时候,继续挑选下一部分进行重复操作。可以预先将实体表主键按照顺序划分为多个主键区间,例如,将1-10的10个主键划分为1-5、6-8、9-10三个主键区间。具体流程可以如下:
步骤A,根据经过条件值转换后的各查询条件,以及各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,分别对各索引表中的索引值进行查询,确定各索引表中符合相应的查询条件的索引值;将在各索引表中查询到的索引值按照其对应的实体表主键的顺序进行排序;将第一主键区间作为基准主键区间;建立查询值集合,该查询值集合的初始状态为空,用于存放最终得到的查询值。
步骤B,分别在各索引表中获取查询到的索引值对应的实体表主键中在基准主键区间内的实体表主键,建立与各索引表对应的主键集合。
步骤C,根据多个查询条件之间的关系,对获取到的各主键集合进行相应的集合运算,获取经过集合运算后得到的主键集合中包含的实体表主键。
步骤D,根据获取到的实体表主键,在实体表中获取对应的查询值;将获取到的查询值并入到查询值集合中;判断查询值集合中包含的查询值的数目是否达到预设数目阈值;如果是,则将查询值集合中的查询值作为查询结果;否则,如果基准主键区间为最后一个主键区间,则将查询值集合中的查询值作为查询结果,如果基准主键区间不是最后一个主键区间,则将该基准主键区间的下一个主键区间作为基准主键区间,并转至步骤B。
上述流程中,只在相应的索引表中取部分(对应实体表主键的某个主键区间)符合条件的索引值对应的实体表主键建立主键集合,进行集合运算,如果查询结果的数目没有达到预设的数目阈值,则重复流程,取下一个主键区间,可以保证查询结果的数目能够满足预定的数目要求。
步骤D中,将获取到的查询值并入到查询值集合中之前,还可以包括:判断获取到的查询值是否满足所述条件查询指令中携带的所有查询条件,删除不满足所有查询条件的查询值。在索引表的建立和更新的过程中,可能会在索引表中产生错误的元组,这时,可以采用这种验证方式判断查询得到的结果是否正确。
本申请实施例中,对于一些特定的且常用的查询需求,可以针对性的建立联合索引表,联合索引表与多个字段相对应。具体的,预先建立实体表中预设的多个字段对应的联合索引表,将实体表中各元组在预设的多个字段中的二进制存储值按照预设转换规则转换得到相应的索引值,将元组对应的各索引值按预设字段顺序连接得到联合索引值,在该联合索引表中记录联合索引值以及对应的实体表主键,联合索引表中的各元组按照记录的联合索引值的字典顺序排列。
基于联合索引表的查询方式,一般可以针对多条件查询,多个查询条件之间是和的关系,且多个查询条件中没有范围查询条件。例如,对于某个实体表,经常会进行“PRO1=VALUE1 AND PRO2=VALUE2 AND PRO3=VALUE3”的查询,则可以预先对应PRO1(字段1)、PRO2(字段2)、PRO3(字段3)建立联合索引表。具体的查询过程可以包括如下步骤:
步骤一,接收条件查询指令。
步骤二,当条件查询指令中携带有多个查询条件,多个查询条件中没有范围查询条件,多个查询条件之间是和的关系,且多个查询条件的目标查询字段与所述预设的多个字段相同时,根据预设转换规则,对各查询条件中的条件值进行转换,并根据各查询条件与目标查询字段的对应关系,将转换后的各条件值按预设字段顺序连接得到联合条件值。例如,查询条件为“PRO1=VALUE1AND PRO2=VALUE2 AND PRO3=VALUE3”,则将VALUE1、VALUE2、VALUE3分别按照预设转换规则转换为VALUE1’、VALUE2’、VALUE3’,然后按照预设字段顺序连接。
步骤三,在所述联合索引表中,查询与联合条件值相等的联合索引值,并确定查询到的联合索引值对应的实体表主键。
步骤四,根据确定出的实体表主键,在实体表中获取对应的查询值。
另外,基于联合索引表的查询方式,一般还可以针对多条件查询,多个查询条件之间是和的关系,且多个查询条件中只有一个范围查询条件的情况。例如,对于某个实体表,经常会进行“PRO1=VALUE1 AND PRO2=VALUE2 AND PRO3<VALUE3”的查询,则可以预先对应PRO1(字段1)、PRO2(字段2)、PRO3(字段3)建立联合索引表,需要注意的是,其中的预设字段顺序要将PRO3(即对应范围查询条件的字段)放在最后。具体的查询过程可以包括如下步骤:
步骤一,接收条件查询指令。
步骤二,当条件查询指令中携带有多个查询条件,多个查询条件中包括一个范围查询条件,多个查询条件之间是和的关系,多个查询条件分别对应不同的目标查询字段,多个查询条件的目标查询字段与预设的多个字段相同,且范围查询条件的目标查询字段为预设字段顺序中的排在最后的字段时,根据预设转换规则,对各查询条件中的条件值进行转换。
步骤三,如果范围查询条件的范围为第一条件值和第二条件值之间的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第一条件值与转换后的其它非范围查询条件的条件值按预设字段顺序连接得到第一联合条件值,将转换后的第二条件值与转换后的其它非范围查询条件的条件值按预设字段顺序连接得到第二联合条件值。例如,进行“PRO1=VALUE1 AND PRO2=VALUE2 AND VALUE3<PRO3<VALUE4”的查询,可以按预设转换规则将将VALUE1、VALUE2、VALUE3、VALUE4分别转换为VALUE1’、VALUE2’、VALUE3’、VALUE4’,假设预设字段顺序为PRO1、PRO2、PRO3,则将VALUE1’、VALUE2’、VALUE4’按该顺序连接得到第一联合条件值,将VALUE1’、VALUE2’、VALUE3’按该顺序链接得到第二联合条件值。
或者,如果范围查询条件的范围为小于第三条件值的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第三条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的其它非范围查询条件的条件值按预设字段顺序连接,并在最后补充与转换后的第三条件值位数相同的0得到第二联合条件值。例如,进行“PRO1=VALUE1AND PRO2=VALUE2 AND PRO3<VALUE3”的查询,可以按预设转换规则将将VALUE1、VALUE2、VALUE3分别转换为VALUE1’、VALUE2’、VALUE3’,假设预设字段顺序为PRO1、PRO2、PRO3,则将VALUE1’、VALUE2’、VALUE3’按该顺序连接得到第一联合条件值,将VALUE1’、VALUE2’、“00000000”(假设VALUE3’为8位)按该顺序链接得到第二联合条件值。
或者,如果范围查询条件的范围为大于第四条件值的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第四条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的其它非范围查询条件的条件值按预设字段顺序连接,并在最后补充与转换后的第四条件值位数相同的1得到第二联合条件值。例如,进行“PRO1=VALUE1AND PRO2=VALUE2 AND PRO3>VALUE3”的查询,可以按预设转换规则将将VALUE1、VALUE2、VALUE3分别转换为VALUE1’、VALUE2’、VALUE3’,假设预设字段顺序为PRO1、PRO2、PRO3,则将VALUE1’、VALUE2’、VALUE3’按该顺序连接得到第一联合条件值,将VALUE1’、VALUE2’、“11111111”(假设VALUE3’为8位)按该顺序链接得到第二联合条件值。
步骤四,在联合索引表中,根据联合索引值的排列顺序,查询第一联合条件值和第二联合条件值之间范围内的联合索引值,并确定查询到的联合索引值对应的实体表主键。
步骤五,根据确定出的实体表主键,在实体表中获取对应的查询值。
本申请实施例中,当实体表中的元组需要被删除时,对实体表与索引表的修改流程,如图5所示,可以包括如下步骤:
步骤501,接收携带有实体表的标识的删除指令,且删除指令的目标删除字段对应建立有索引表。
步骤502,根据删除指令中携带的实体表主键,获取实体表中对应的元组在目标删除字段的二进制存储值。
步骤503,根据预设转换规则,将该二进制存储值转换为索引值。
步骤504,根据该索引值,在删除指令的目标删除字段对应的索引表中,查找到对应的元组,并删除该元组。
步骤505,根据所述删除指令,对实体表进行删除操作。
上述步骤501-步骤505可以由索引处理器来执行。
本申请实施例,当对实体表进行put(放入)操作时(其中,放入操作可以是插入操作或修改操作),对实体表与索引表的修改流程,如图6所示,可以包括如下步骤:
步骤G,接收携带有实体表的标识的放入指令,且放入指令的目标放入字段对应建立有索引表。
步骤H,根据放入指令中携带的实体表主键,获取实体表中对应的元组在目标放入字段的二进制存储值。
该步骤还可以包括:获取放入指令中携带的实体表主键对应的元组的lock值(版本值)。
步骤I,根据预设转换规则,将该二进制存储值转换为索引值。
步骤J,根据该索引值,在放入指令的目标放入字段对应的索引表中,查找到对应的元组,并删除该元组。
步骤K,根据预设转换规则,将放入指令中的放入值转换为相应的索引值,并根据该索引值和实体表主键建立索引表元组,再根据索引值的字典顺序将该元组插入到索引表中。
在该步骤之后还可以包括:判断放入指令中携带的实体表主键对应的元组的当前版本值与步骤H中获取的版本值是否相同,如果相同,则执行步骤L,否则,转至步骤H。
在具体的实施中,可能会出现多个放入操作并行执行的情况,这将有可能导致在进行完步骤H后,实体表中目标放入字段的值发生变化,在发生变化的情况下,执行完步骤K后,该流程将返回到步骤H,重新获取实体表中目标放入字段的值,并对索引表进行相应的删除和插入操作。直到步骤K中进行判断的当前的版本值与步骤H获取到的版本值相同时,再继续执行步骤L。
步骤L,根据放入指令对实体表进行相应的放入操作。
上述步骤G-步骤L可以由索引处理器来执行。
本申请的实施例中,预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致;接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;根据所述预设转换规则,对各查询条件中的条件值进行转换;根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。从而,可以提高非关系型数据库进行条件查询的效率。
实施例二
如图7所示,其为本申请实施例提供的非关系型数据库的数据查询方法在具体应用场景中的查询流程。在该应用场景中,该查询过程针对字段A、B、C进行,查询条件为0<A<10 AND 1<B<8 AND 2<C<9,系统预先建立有与字段A、B、C对应的索引表A、索引表B、索引表C,系统预先将实体表按照主键划分为多个主键区间。该流程具体包括如下的步骤:
步骤701,接收条件查询指令,其中携带的查询条件为0<A<10 AND 1<B<8AND2<C<9。在该步骤中还包括,将第一主键区间作为基准主键区间,建立查询值集合,并设置查询值集合的初始状态为空。
步骤702,按预设转换规则对查询条件中的条件值进行转换,分别查询索引表A、索引表B、索引表C,并分别获取符合转换后的查询条件的索引值对应的实体表主键。具体的,分别将0、1、2、8、9、10的二进制码按预设转换规则进行转换,并用经过条件值转换后的查询条件分别在索引表A、索引表B、索引表C查询相应的索引值,以获取对应的实体表主键。
步骤703,分别由索引表A、索引表B、索引表C查询到的实体表主键中在基准主键区间内的实体表主键,建立主键集合A、主键集合B、主键集合C。由索引表A中查询到的索引值对应的实体表主键中在基准主键区间内的主键建立主键集合A,由索引表B中查询到的索引值对应的实体表主键中在基准主键区间内的主键建立主键集合B,由索引表C中查询到的索引值对应的实体表主键中在基准主键区间内的主键建立主键集合C。
步骤704,获取主键集合A、主键集合B、主键集合C的交集的主键集合S中的实体表主键。
具体的,可以采用如图中所示的二叉查询树的方法获取各主键集合的交集。首先,可以基于主键集合A中的实体表主键建立二叉查询树,在二叉查询树的每个节点的节点值为主键集合A中的实体表主键,节点还记录与该实体表主键对应的计数值,该计数值用于记录该实体表主键在各主键集合中的出现次数,该计数值的初始值可以设为1。然后,在该二叉查询树中,查询主键集合B中的各实体表主键,如果查询到某实体表主键,则将该实体表主键对应的节点的计数值加1。再后,在二叉查询树中,查询主键集合C中的各实体表主键,如果查询到某实体表主键,则将该实体表主键对应的节点的计数值加1。最后,获取二叉查询树中计数值为3的节点对应的实体表主键,此获取的实体表主键即为主键集合S中的实体表主键。假设获取到的计数值为3的主键是3和7。
步骤705,根据获取到的实体表主键,在实体表中获取对应的查询值。假设主键3对应查询值为a,主键7对应的查询值为c。
步骤706,判断获取到的查询值是否满足0<A<10 AND 1<B<8 AND 2<C<9的查询条件,将不满足该查询条件的查询值删除。图中假设实体表主键3对应的查询值a不满足该查询条件。
步骤707,将没有被删除的查询值并入到查询值集合中,并判断查询值集合中的查询值的数目是否达到预设数目阈值,如果是,则执行步骤709,否则,执行步骤708。
步骤708,判断基准主键区间是否为最后一个主键区间,如果是,则执行步骤709,否则,将当前基准主键区间的下一个主键区间作为新的基准主键区间,并转至步骤703。在否的情况下,还可以删除当前的主键集合A、主键集合B、主键集合C。
步骤709,将查询值集合中的查询值作为查询结果进行输出。执行完此步骤后结束流程。
本申请的实施例中,预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致;接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;根据所述预设转换规则,对各查询条件中的条件值进行转换;根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。从而,可以提高非关系型数据库进行条件查询的效率。
实施例三
基于相同的技术构思,本申请还提供了一种非关系型数据库的数据查询装置,如图8所示,包括:
建立模块810,用于预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致;
接收模块820,用于接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;
转换模块830,用于根据所述预设转换规则,对各查询条件中的条件值进行转换;
查询模块840,用于根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。
优选的,所述预设转换规则,具体为:
当所述字段的数据类型为整型时,对符号位进行取反;
当所述字段的数据类型为浮点型时,对正数的符号位进行取反,对负数的所有位进行取反。
优选的,当所述条件查询指令中携带有一个查询条件时,所述查询模块840,具体用于:
根据经过条件值转换后的查询条件,以及该查询条件的目标查询字段对应的索引表中的各索引值的排列顺序,对该索引表中的索引值进行查询,确定符合所述经过条件值转换后的查询条件的索引值;
获取查询到的索引值对应的实体表主键;
根据获取到的实体表主键,在所述实体表中获取对应的查询值。
优选的,当所述条件查询指令中携带有多个查询条件时,所述查询模块840,具体用于:
步骤A,根据经过条件值转换后的各查询条件,以及各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,分别对所述各索引表中的索引值进行查询,确定所述各索引表中符合相应的查询条件的索引值;
步骤B,分别在所述各索引表中获取查询到的索引值对应的实体表主键,建立与所述各索引表对应的主键集合;
步骤C,根据所述多个查询条件之间的关系,对获取到的各主键集合进行相应的集合运算,获取经过集合运算后得到的主键集合中包含的实体表主键;
步骤D,根据获取到的实体表主键,在所述实体表中获取对应的查询值。
优选的,所述查询模块840,具体用于:
预先将实体表主键按照顺序划分为多个主键区间;
步骤A还包括:将在所述各索引表中查询到的索引值按照其对应的实体表主键的顺序进行排序;将第一主键区间作为基准主键区间;建立查询值集合,所述查询值集合的初始状态为空;
步骤B具体为:分别在所述各索引表中获取查询到的索引值对应的实体表主键中在所述基准主键区间内的实体表主键,建立与所述各索引表对应的主键集合;
步骤D还包括:将获取到的查询值并入到所述查询值集合中;判断所述查询值集合中包含的查询值的数目是否达到预设数目阈值;如果是,则将所述查询值集合中的查询值作为查询结果;否则,如果所述基准主键区间为最后一个主键区间,则将所述查询值集合中的查询值作为查询结果,如果所述基准主键区间不是最后一个主键区间,则将所述基准主键区间的下一个主键区间作为基准主键区间,并转至步骤B。
优选的,所述查询模块840,还用于:在将获取到的查询值并入到查询值集合中之前,判断获取到的查询值是否满足所述条件查询指令中携带的所有查询条件,删除不满足所有查询条件的查询值。
优选的,还包括联合查询模块,用于:
预先建立实体表中预设的多个字段对应的联合索引表,将实体表中各元组在所述预设的多个字段中的二进制存储值按照预设转换规则转换得到相应的索引值,将元组对应的各索引值按预设字段顺序连接得到联合索引值,在所述联合索引表中记录所述联合索引值以及对应的实体表主键,所述联合索引表中的各元组按照记录的联合索引值的字典顺序排列;
当所述条件查询指令中携带有多个查询条件,所述多个查询条件中没有范围查询条件,所述多个查询条件之间是和的关系,且所述多个查询条件的目标查询字段与所述预设的多个字段相同时,根据预设转换规则,对各查询条件中的条件值进行转换,并根据各查询条件与目标查询字段的对应关系,将转换后的各条件值按所述预设字段顺序连接得到联合条件值;
在所述联合索引表中,查询与所述联合条件值相等的联合索引值,并确定查询到的联合索引值对应的实体表主键;
根据确定出的实体表主键,在所述实体表中获取对应的查询值。
优选的,还包括联合查询模块,用于:
预先建立实体表中预设的多个字段对应的联合索引表,将实体表中各元组在所述预设的多个字段中的二进制存储值按照预设转换规则转换得到相应的索引值,将元组对应的各索引值按预设字段顺序连接得到联合索引值,在所述联合索引表中记录所述联合索引值以及对应的实体表主键,所述联合索引表中的各元组按照记录的联合索引值的字典顺序排列;
当所述条件查询指令中携带有多个查询条件,所述多个查询条件中包括一个范围查询条件,所述多个查询条件之间是和的关系,所述多个查询条件分别对应不同的目标查询字段,所述多个查询条件的目标查询字段与所述预设的多个字段相同,且所述范围查询条件的目标查询字段为所述预设字段顺序中的排在最后的字段时,根据所述预设转换规则,对各查询条件中的条件值进行转换;
如果所述范围查询条件的范围为第一条件值和第二条件值之间的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第一条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的第二条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第二联合条件值;或者,
如果所述范围查询条件的范围为小于第三条件值的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第三条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的其它非范围查询条件的条件值按预设字段顺序连接,并在最后补充与转换后的第三条件值位数相同的0得到第二联合条件值;或者,
如果所述范围查询条件的范围为大于第四条件值的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第四条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的其它非范围查询条件的条件值按预设字段顺序连接,并在最后补充与转换后的第四条件值位数相同的1得到第二联合条件值;
在所述联合索引表中,根据联合索引值的排列顺序,查询所述第一联合条件值和所述第二联合条件值之间范围内的联合索引值,并确定查询到的联合索引值对应的实体表主键;
根据确定出的实体表主键,在所述实体表中获取对应的查询值。
优选的,还包括删除模块,用于:
当接收到携带有所述实体表的标识的删除指令,且所述删除指令的目标删除字段对应建立有索引表时,根据所述删除指令中携带的实体表主键,获取实体表中对应的元组在所述目标删除字段的二进制存储值;
根据所述预设转换规则,将该二进制存储值转换为索引值;
根据该索引值,在所述删除指令的目标删除字段对应的索引表中,查找到对应的元组,并删除该元组;
根据所述删除指令,对所述实体表进行删除操作。
优选的,还包括放入模块,用于当接收到携带有所述实体表的标识的放入指令,且所述放入指令的目标放入字段对应建立有索引表时,进行如下操作:
步骤H,根据所述放入指令中携带的实体表主键,获取实体表中对应的元组在所述目标放入字段的二进制存储值;
步骤I,根据所述预设转换规则,将该二进制存储值转换为索引值;
步骤J,根据该索引值,在所述放入指令的目标放入字段对应的索引表中,查找到对应的元组,并删除该元组;
步骤K,根据所述预设转换规则,将所述放入指令中的放入值转换为相应的索引值,并根据该索引值和所述实体表主键建立索引表元组,再根据索引值的字典顺序将该元组插入到索引表中;
步骤L,根据所述放入指令对所述实体表进行相应的放入操作。
优选的,所述放入模块,具体用于:
步骤H还包括:获取所述放入指令中携带的实体表主键对应的元组的版本值;
步骤K还包括:判断所述放入指令中携带的实体表主键对应的元组的当前版本值与步骤H中获取的版本值是否相同,如果相同,则执行步骤L,否则,转至步骤H。
本申请的实施例中,预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致;接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;根据所述预设转换规则,对各查询条件中的条件值进行转换;根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。从而,可以提高非关系型数据库进行条件查询的效率。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本申请的保护范围。
Claims (12)
1.一种非关系型数据库的数据查询方法,其特征在于,预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致,该方法包括:
接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;
根据所述预设转换规则,对各查询条件中的条件值进行转换;
根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。
2.如权利要求1所述的方法,其特征在于,所述预设转换规则,具体为:
当所述字段的数据类型为整型时,对符号位进行取反;
当所述字段的数据类型为浮点型时,对正数的符号位进行取反,对负数的所有位进行取反。
3.如权利要求1所述的方法,其特征在于,当所述条件查询指令中携带有一个查询条件时,所述根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值,具体为:
根据经过条件值转换后的查询条件,以及该查询条件的目标查询字段对应的索引表中的各索引值的排列顺序,对该索引表中的索引值进行查询,确定符合所述经过条件值转换后的查询条件的索引值;
获取查询到的索引值对应的实体表主键;
根据获取到的实体表主键,在所述实体表中获取对应的查询值。
4.如权利要求1所述的方法,其特征在于,当所述条件查询指令中携带有多个查询条件时,所述根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值,具体为:
步骤A,根据经过条件值转换后的各查询条件,以及各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,分别对所述各索引表中的索引值进行查询,确定所述各索引表中符合相应的查询条件的索引值;
步骤B,分别在所述各索引表中获取查询到的索引值对应的实体表主键,建立与所述各索引表对应的主键集合;
步骤C,根据所述多个查询条件之间的关系,对获取到的各主键集合进行相应的集合运算,获取经过集合运算后得到的主键集合中包含的实体表主键;
步骤D,根据获取到的实体表主键,在所述实体表中获取对应的查询值。
5.如权利要求4所述的方法,其特征在于,还包括:预先将实体表主键按照顺序划分为多个主键区间;
步骤A还包括:将在所述各索引表中查询到的索引值按照其对应的实体表主键的顺序进行排序;将第一主键区间作为基准主键区间;建立查询值集合,所述查询值集合的初始状态为空;
步骤B具体为:分别在所述各索引表中获取查询到的索引值对应的实体表主键中在所述基准主键区间内的实体表主键,建立与所述各索引表对应的主键集合;
步骤D还包括:将获取到的查询值并入到所述查询值集合中;判断所述查询值集合中包含的查询值的数目是否达到预设数目阈值;如果是,则将所述查询值集合中的查询值作为查询结果;否则,如果所述基准主键区间为最后一个主键区间,则将所述查询值集合中的查询值作为查询结果,如果所述基准主键区间不是最后一个主键区间,则将所述基准主键区间的下一个主键区间作为基准主键区间,并转至步骤B。
6.如权利要求5所述的方法,其特征在于,所述将获取到的查询值并入到查询值集合中之前,还包括:
判断获取到的查询值是否满足所述条件查询指令中携带的所有查询条件,删除不满足所有查询条件的查询值。
7.如权利要求1所述的方法,其特征在于,
还包括:预先建立实体表中预设的多个字段对应的联合索引表,将实体表中各元组在所述预设的多个字段中的二进制存储值按照预设转换规则转换得到相应的索引值,将元组对应的各索引值按预设字段顺序连接得到联合索引值,在所述联合索引表中记录所述联合索引值以及对应的实体表主键,所述联合索引表中的各元组按照记录的联合索引值的字典顺序排列;
当所述条件查询指令中携带有多个查询条件,所述多个查询条件中没有范围查询条件,所述多个查询条件之间是和的关系,且所述多个查询条件的目标查询字段与所述预设的多个字段相同时,根据预设转换规则,对各查询条件中的条件值进行转换,并根据各查询条件与目标查询字段的对应关系,将转换后的各条件值按所述预设字段顺序连接得到联合条件值;
在所述联合索引表中,查询与所述联合条件值相等的联合索引值,并确定查询到的联合索引值对应的实体表主键;
根据确定出的实体表主键,在所述实体表中获取对应的查询值。
8.如权利要求1所述的方法,其特征在于,
还包括:预先建立实体表中预设的多个字段对应的联合索引表,将实体表中各元组在所述预设的多个字段中的二进制存储值按照预设转换规则转换得到相应的索引值,将元组对应的各索引值按预设字段顺序连接得到联合索引值,在所述联合索引表中记录所述联合索引值以及对应的实体表主键,所述联合索引表中的各元组按照记录的联合索引值的字典顺序排列;
当所述条件查询指令中携带有多个查询条件,所述多个查询条件中包括一个范围查询条件,所述多个查询条件之间是和的关系,所述多个查询条件分别对应不同的目标查询字段,所述多个查询条件的目标查询字段与所述预设的多个字段相同,且所述范围查询条件的目标查询字段为所述预设字段顺序中的排在最后的字段时,根据所述预设转换规则,对各查询条件中的条件值进行转换;
如果所述范围查询条件的范围为第一条件值和第二条件值之间的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第一条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的第二条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第二联合条件值;或者,
如果所述范围查询条件的范围为小于第三条件值的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第三条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的其它非范围查询条件的条件值按预设字段顺序连接,并在最后补充与转换后的第三条件值位数相同的0得到第二联合条件值;或者,
如果所述范围查询条件的范围为大于第四条件值的范围,则根据各查询条件与目标查询字段的对应关系,将转换后的第四条件值与转换后的其它非范围查询条件的条件值按所述预设字段顺序连接得到第一联合条件值,将转换后的其它非范围查询条件的条件值按预设字段顺序连接,并在最后补充与转换后的第四条件值位数相同的1得到第二联合条件值;
在所述联合索引表中,根据联合索引值的排列顺序,查询所述第一联合条件值和所述第二联合条件值之间范围内的联合索引值,并确定查询到的联合索引值对应的实体表主键;
根据确定出的实体表主键,在所述实体表中获取对应的查询值。
9.如权利要求1所述的方法,其特征在于,当接收到携带有所述实体表的标识的删除指令,且所述删除指令的目标删除字段对应建立有索引表时,还包括:
根据所述删除指令中携带的实体表主键,获取实体表中对应的元组在所述目标删除字段的二进制存储值;
根据所述预设转换规则,将该二进制存储值转换为索引值;
根据该索引值,在所述删除指令的目标删除字段对应的索引表中,查找到对应的元组,并删除该元组;
根据所述删除指令,对所述实体表进行删除操作。
10.如权利要求1所述的方法,其特征在于,当接收到携带有所述实体表的标识的放入指令,且所述放入指令的目标放入字段对应建立有索引表时,还包括:
步骤H,根据所述放入指令中携带的实体表主键,获取实体表中对应的元组在所述目标放入字段的二进制存储值;
步骤I,根据所述预设转换规则,将该二进制存储值转换为索引值;
步骤J,根据该索引值,在所述放入指令的目标放入字段对应的索引表中,查找到对应的元组,并删除该元组;
步骤K,根据所述预设转换规则,将所述放入指令中的放入值转换为相应的索引值,并根据该索引值和所述实体表主键建立索引表元组,再根据索引值的字典顺序将该元组插入到索引表中;
步骤L,根据所述放入指令对所述实体表进行相应的放入操作。
11.如权利要求10所述的方法,其特征在于,
步骤H还包括:获取所述放入指令中携带的实体表主键对应的元组的版本值;
步骤K还包括:判断所述放入指令中携带的实体表主键对应的元组的当前版本值与步骤H中获取的版本值是否相同,如果相同,则执行步骤L,否则,转至步骤H。
12.一种非关系型数据库的数据查询装置,其特征在于,包括:
建立模块,用于预先建立实体表中预设的字段对应的索引表,所述索引表中记录有实体表中各元组在所述预设的字段中的二进制存储值按照预设转换规则转换得到的索引值,以及对应的实体表主键,所述索引表中的各元组按照记录的索引值的字典顺序排列,所述预设转换规则为所述索引值的字典顺序和所述二进制存储值对应的实际值的大小顺序一致;
接收模块,用于接收条件查询指令,所述条件查询指令中携带有至少一个查询条件以及每个查询条件的目标查询字段;
转换模块,用于根据所述预设转换规则,对各查询条件中的条件值进行转换;
查询模块,用于根据各查询条件的目标查询字段对应的各索引表中索引值的排列顺序,查询所述各索引表中符合经过条件值转换后的查询条件的索引值,确定在所述各索引表中对应的索引值都符合相应的查询条件的实体表主键,并根据确定出的实体表主键,在所述实体表中获取对应的查询值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210214550.4A CN103514201B (zh) | 2012-06-27 | 2012-06-27 | 一种非关系型数据库的数据查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210214550.4A CN103514201B (zh) | 2012-06-27 | 2012-06-27 | 一种非关系型数据库的数据查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103514201A CN103514201A (zh) | 2014-01-15 |
CN103514201B true CN103514201B (zh) | 2017-05-03 |
Family
ID=49896937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210214550.4A Active CN103514201B (zh) | 2012-06-27 | 2012-06-27 | 一种非关系型数据库的数据查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103514201B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657513B (zh) * | 2015-03-20 | 2018-02-09 | 山东威尔数据股份有限公司 | 嵌入式系统中档案操作与快速检索方法 |
CN105303430B (zh) * | 2015-11-10 | 2020-08-28 | 中国建设银行股份有限公司 | 一种交易指标采集方法及装置 |
CN107515882B (zh) * | 2016-06-17 | 2020-12-25 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN107644033B (zh) * | 2016-07-21 | 2021-08-17 | 阿里巴巴集团控股有限公司 | 一种在非关系型数据库中进行数据查询的方法与设备 |
CN106503040B (zh) * | 2016-09-20 | 2019-08-02 | 福建天晴数码有限公司 | 适用sql查询方法的kv数据库及其创建方法 |
CN107870935A (zh) * | 2016-09-27 | 2018-04-03 | 新华三技术有限公司 | 一种搜索方法及装置 |
CN106528674B (zh) * | 2016-10-31 | 2019-10-01 | 厦门服云信息科技有限公司 | 基于Hbase行健的高性能查询方法和装置 |
CN108090064B (zh) * | 2016-11-21 | 2021-10-08 | 腾讯科技(深圳)有限公司 | 一种数据查询方法、装置、数据存储服务器及系统 |
CN106776809B (zh) * | 2016-11-24 | 2020-05-01 | 中国银联股份有限公司 | 一种数据查询方法及系统 |
CN107122417B (zh) * | 2017-03-31 | 2020-05-19 | 深圳昂楷科技有限公司 | 一种数据库审计方法及装置 |
CN107133362A (zh) * | 2017-06-01 | 2017-09-05 | 北京凤凰理理它信息技术有限公司 | 商品信息搜索方法、系统、计算机程序及电子设备 |
CN107784070B (zh) * | 2017-09-15 | 2020-10-30 | 平安科技(深圳)有限公司 | 一种提高数据清洗效率的方法、装置及设备 |
CN110019544B (zh) * | 2017-09-30 | 2022-08-19 | 北京国双科技有限公司 | 数据查询方法及系统 |
CN110019212B (zh) * | 2017-11-29 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置及数据库服务器 |
CN108170815B (zh) * | 2017-12-29 | 2022-07-05 | 中国银联股份有限公司 | 一种数据处理方法、装置及存储介质 |
CN110032604B (zh) * | 2019-02-02 | 2021-12-07 | 北京奥星贝斯科技有限公司 | 数据存储装置、转译装置及数据库访问方法 |
CN110459222A (zh) * | 2019-09-06 | 2019-11-15 | Oppo广东移动通信有限公司 | 语音控制方法、语音控制装置及终端设备 |
CN110825747B (zh) * | 2019-11-05 | 2022-09-06 | 政采云有限公司 | 一种信息存取方法、装置和介质 |
CN112269806B (zh) * | 2020-12-11 | 2021-03-19 | 深圳市房多多网络科技有限公司 | 数据查询方法、装置、设备以及计算机存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096217B2 (en) * | 2002-10-31 | 2006-08-22 | International Business Machines Corporation | Global query correlation attributes |
CN102053975A (zh) * | 2009-10-30 | 2011-05-11 | 国际商业机器公司 | 数据库系统和跨数据库查询优化方法 |
CN102201986A (zh) * | 2011-05-10 | 2011-09-28 | 苏州两江科技有限公司 | 非关系型数据库Cassandra中分区路由方法 |
WO2012083679A1 (zh) * | 2011-07-13 | 2012-06-28 | 华为技术有限公司 | 一种数据迁移方法、数据迁移装置及数据迁移系统 |
-
2012
- 2012-06-27 CN CN201210214550.4A patent/CN103514201B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103514201A (zh) | 2014-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103514201B (zh) | 一种非关系型数据库的数据查询方法和装置 | |
CN110147437A (zh) | 一种基于知识图谱的搜索方法及装置 | |
CN104412266A (zh) | 用于具有动态排序的树结构的多维数据储存和文件系统的方法和装置 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
CN102411580B (zh) | 可扩展标记语言文档的检索方法及装置 | |
CN107885760A (zh) | 一种基于多种语义的知识图谱表示学习方法 | |
CN106528647B (zh) | 一种基于cedar双数组字典树算法进行术语匹配的方法 | |
CN106407201A (zh) | 一种数据处理方法及装置 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN107943952A (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN105976048A (zh) | 一种基于改进人工蜂群算法的输电网扩展规划方法 | |
CN103678550A (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
US20220005546A1 (en) | Non-redundant gene set clustering method and system, and electronic device | |
CN111506621A (zh) | 一种数据统计方法及装置 | |
CN104794130B (zh) | 一种表间关联查询方法和装置 | |
CN106227799A (zh) | 一种基于分布式数据库的sql语句处理方法 | |
CN109815238A (zh) | 用严格平衡二叉树实现数据库的动态添加方法及装置 | |
CN105550332A (zh) | 一种基于双层索引结构的起源图查询方法 | |
CN103699647A (zh) | 一种字符串词典的索引方法及系统 | |
CN105718521A (zh) | 一个基于Wavelet Tree的网络数据包索引系统 | |
CN108228787A (zh) | 按照多级类目处理信息的方法和装置 | |
CN107861965A (zh) | 数据智能识别方法及系统 | |
Subramanian | A fully dynamic data structure for reachability in planar digraphs | |
CN104008205A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |