CN109299106A - 数据查询方法和装置 - Google Patents
数据查询方法和装置 Download PDFInfo
- Publication number
- CN109299106A CN109299106A CN201811283039.3A CN201811283039A CN109299106A CN 109299106 A CN109299106 A CN 109299106A CN 201811283039 A CN201811283039 A CN 201811283039A CN 109299106 A CN109299106 A CN 109299106A
- Authority
- CN
- China
- Prior art keywords
- secondary index
- dimension values
- level list
- information
- data
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据查询方法和装置,其中,该方法包括:接收用户发送的查询指令,查询指令中包括至少一个查询条件;在三级索引文件集合中,确定与至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与第一维度值对应的三级索引信息;在二级索引文件集合中,确定与三级索引信息对应的二级索引信息;根据与第二维度值对应的二级索引信息,在数据库中确定与二级索引信息对应的数据。进而不再需要对数据的键值进行遍历,只依据三级索引信息、二级索引信息,就可以查找到数据库中的数据,提高了查询速度。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据查询方法和装置。
背景技术
数据库已经应用到了各科技领域中,数据库例如有Hbase数据库。可以采用查询命令,向数据库中查询数据。
现有技术中,采用二级多列索引的方式,去进行多维度查询。具体来说,数据库中包括多个数据,每一个数据具有多个特征信息;为每一个数据设置一个索引行键(Rowkey);并且将每一个数据中的所有特征信息转换为值,进而得到一个键;然后建立出键、索引以及数据三者之间的一一对应关系。从而,在用户查询数据的时候,获取到用户发送的查询条件,然后根据查询条件,确定出键,然后确定出索引,最后可以根据索引查询出数据库中的数据。
然而现有技术中,在查询条件包括了多个条件的时候,即查询条件包括了多个特征信息的时候,需要需找到包括了每一个特征信息的所有的键,然后再去找到与每一个键分别对应的索引;然后,根据每一个索引,查找到数据。这样的查询方式,需要对所有的键进行遍历,进而遍历速度较慢,进而导致查询速度较慢。
发明内容
本发明提供一种数据查询方法和装置,用以解决现有的数据查询方式中需要对所有的键进行遍历,进而遍历速度较慢,进而导致查询速度较慢的问题。
本发明的一方面是提供一种数据查询方法,包括:
接收用户发送的查询指令,其中,所述查询指令中包括至少一个查询条件;
在三级索引文件集合中,确定与所述至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与所述第一维度值对应的三级索引信息,其中,所述三级索引文件集合中包括了至少一个三级索引文件,所述至少一个三级索引文件中的每一个三级索引文件中包括与不同的查询条件对应的第一维度值、与每一个第一维度值对应的三级索引信息,所述三级索引信息指示了与所述第一维度值相同的第二维度值在二级索引文件集合中的位置,所述二级索引文件集合中包括了至少一个二级索引文件,所述至少一个二级索引文件中的每一个二级索引文件中包括不同的第二维度值、以及与每一个第二维度值对应的二级索引信息;
在所述二级索引文件集合中,根据与所述第一维度值对应的三级索引信息,确定与所述三级索引信息对应的第二维度值,并确定与所述第二维度值对应的二级索引信息;
根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据。
进一步地,每一个所述三级索引信息包括:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。
进一步地,在所述查询指令中包括至少两个查询条件时;
所述在二级索引文件集合中,根据与所述第一维度值对应的三级索引信息,确定与所述三级索引信息对应的第二维度值,并确定与所述第二维度值对应的二级索引信息,包括:
确定包括的二级索引信息的个数最小的三级索引信息;
在所述二级索引文件集合中,确定与包括的二级索引信息的个数最小的三级索引信息对应的第二维度值,并确定与该第二维度值对应的二级索引信息;
相应的,在根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,还包括:
根据预设的筛选条件,对所述数据进行筛选,得到筛选后的数据。
进一步地,在所述根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,还包括:
处理和/或显示所述数据。
进一步地,所述二级索引信息为Rowkey信息。
本发明的另一方面是提供一种数据查询装置,包括:
接收模块,用于接收用户发送的查询指令,其中,所述查询指令中包括至少一个查询条件;
第一确定模块,用于在三级索引文件集合中,确定与所述至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与所述第一维度值对应的三级索引信息,其中,所述三级索引文件集合中包括了至少一个三级索引文件,所述至少一个三级索引文件中的每一个三级索引文件中包括与不同的查询条件对应的第一维度值、与每一个第一维度值对应的三级索引信息,所述三级索引信息指示了与所述第一维度值相同的第二维度值在二级索引文件集合中的位置,所述二级索引文件集合中包括了至少一个二级索引文件,所述至少一个二级索引文件中的每一个二级索引文件中包括不同的第二维度值、以及与每一个第二维度值对应的二级索引信息;
第二确定模块,用于在所述二级索引文件集合中,根据与所述第一维度值对应的三级索引信息,确定与所述三级索引信息对应的第二维度值,并确定与所述第二维度值对应的二级索引信息;
第三确定模块,用于根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据。
进一步地,每一个所述三级索引信息包括:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。
进一步地,在所述查询指令中包括至少两个查询条件时;
所述第二确定模块,包括:
第一确定子模块,用于确定包括的二级索引信息的个数最小的三级索引信息;
第二确定子模块,用于在所述二级索引文件集合中,确定与包括的二级索引信息的个数最小的三级索引信息对应的第二维度值,并确定与该第二维度值对应的二级索引信息;
相应的,所述装置,还包括:
筛选模块,用于在所述第三确定模块根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,根据预设的筛选条件,对所述数据进行筛选,得到筛选后的数据。
进一步地,所述装置,还包括:
处理模块,用于在所述第三确定模块根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,处理和/或显示所述数据。
进一步地,所述二级索引信息为Rowkey信息。
本发明的技术效果是:通过提供二级索引文件集合和三级索引文件集合;接收查询指令,查询指令中包括至少一个查询条件;在三级索引文件集合中,根据至少一个查询条件,确定与每一个查询条件对应的第一维度值;确定每一个第一维度值对应的三级索引信息,三级索引信息包括了文件名、个数和位置信息;在二级索引文件集合中,根据每一个三级索引信息,确定与三级索引信息对应的各二级索引信息Rowkey;根据各二级索引信息Rowkey,确定与每一个二级索引信息Rowkey对应的数据。进而不再需要对数据的键值进行遍历,只依据三级索引信息、二级索引信息Rowkey,就可以查找到数据库中的数据,提高了查询速度;并且,只需要保存三级索引信息、二级索引信息Rowkey的信息,减少存储空间开销;在数据库中的数据发生改变的时候,只需要改变二级索引文件中的第二维度值下的二级索引信息的位置,改变三级索引文件中的第一维度值下的三级索引信息就可以了,不需要对数据的键进行修改,减少了修改的开销。
附图说明
图1为本申请实施例提供的一种数据查询方法的流程示意图;
图2为本申请实施例提供的另一种数据查询方法的流程示意图;
图3为本发明实施例提供的一种数据查询装置的结构示意图;
图4为本发明实施例提供的另一种数据查询装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
首先对本发明所涉及的名词进行解释:
Hbase:是一个分布式的、面向列的开源数据库。Hbase是三维有序存储的,这里的三维指的是RowKey、Column key、时间戳(TimeStamp),通过这三个维度可以对Hbase中的数据进行快速定位。
Map:是一个关联容器,它提供一对一的数据处理能力,其中,第一个可以称为关键字,每个关键字只能在Map中出现一次,第二个可能称为该关键字的值。
Redis:是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、键-值(Key-Value)数据库。
本发明具体的应用场景是:现有技术中,可以采用查询命令,向数据库中查询数据,现有技术中是采用二级多列索引的方式,去进行多维度查询;然而现有技术中,在查询条件包括了多个条件的时候,即查询条件包括了多个特征信息的时候,需要需找到包括了每一个特征信息的所有的键,然后再去找到与每一个键分别对应的索引;之后,根据每一个索引,查找到数据。这样的查询方式,需要对所有的键进行遍历,进而遍历速度较慢,进而导致查询速度较慢。并且,由于需要根据每一个数据的所有特征信息,去生成键,而每一个键包括的信息较多,进而需要消耗了大量的存储空间去存储键,且需要大量的存储空间去存储键与索引的对应关系。并且,在数据库中的数据改变的时候,需要对于改变的数据的键进行修改,而因为不同的键的值具有一定的相关性,进而还需要对其他所有的数据的键进行修改,从而修改的代价较大,效率较低。
本发明提供的数据查询方法和装置,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图1为本申请实施例提供的一种数据查询方法的流程示意图。如图1所示,该方法包括:
步骤101、接收用户发送的查询指令,其中,查询指令中包括至少一个查询条件。
在本实施例中,具体的,在接收到用户发送的查询指令之后,可以执行步骤102,其中,查询指令中包括至少一个查询条件。例如查询指令为查询年龄在10岁至15岁的男生的信息,这里具有查询条件为年龄在10岁至15岁,查询条件为男生。
步骤102、在三级索引文件集合中,确定与至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与第一维度值对应的三级索引信息,其中,三级索引文件集合中包括了至少一个三级索引文件,至少一个三级索引文件中的每一个三级索引文件中包括与不同的查询条件对应的第一维度值、与每一个第一维度值对应的三级索引信息,三级索引信息指示了与第一维度值相同的第二维度值在二级索引文件集合中的位置,二级索引文件集合中包括了至少一个二级索引文件,至少一个二级索引文件中的每一个二级索引文件中包括不同的第二维度值、以及与每一个第二维度值对应的二级索引信息。
在可选的一种实施方式中,每一个三级索引信息包括:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。
在可选的一种实施方式中,二级索引信息为Rowkey信息。
在本实施例中,具体的,数据具有多种特征信息,本实施例中提供了二级索引文件集合和三级索引文件集合。
二级索引文件集合包括多个二级索引文件,每一个二级索引文件与一种特征信息相对应,例如,二级索引文件1与特征信息“年龄”相对应,二级索引文件2与特征信息“身高”相对应;对于每一个二级索引文件来说,二级索引文件具有一个特征信息标识,二级索引文件包括了多个第二维度值,第二维度值为与特征信息标识对应的特征信息的不同取值,例如,二级索引文件1具有特征信息标识“年龄”,则二级索引文件1具有第二维度值10岁、第二维度值11岁、第二维度值12岁等等第二维度值;对于每一个二级索引文件来说,每一个第二维度值下具有至少一个二级索引信息Rowkey,二级索引信息与数据库中的数据相对应,例如,第二维度值10岁下具有二级索引信息Rowkey7、二级索引信息Rowkey8,则与二级索引信息Rowkey7对应的数据具有特征信息10岁,与二级索引信息Rowkey8对应的数据具有特征信息10岁。
其中,在生成二级索引文件集合的时候,可以参照如下步骤进行:步骤a、先读取话单,并对话单的Rowkey按照不同的第二维度进行归类,在内存中以Map形式存在;步骤b、遍历Map,对Map中的数据进行分块处理,判断curr_file文件是否存在,如果存在则查询Redis;步骤c、根据Redis的查询结果,获取尾块位置,确定当前的数据是在固定的位置更新,还是在文件末尾追加;步骤d、根据当前的行数,判断当前的文件大小是否超过2G或即将超过2G;步骤e、如果当前的文件大小是大于2G的,则重命名当前文件,并执行Redis写入或更新操作,并且,在创建新的curr_file的时候,继续执行步骤c、步骤d的操作;步骤f、如果当前的文件大小是小于2G的,则继续执行步骤c、步骤d的操作。
三级索引文件集合包括多个三级索引文件,每一个三级索引文件与一种特征信息相对应,例如,三级索引文件1与特征信息“年龄”相对应,三级索引文件2与特征信息“身高”相对应;对于每一个三级索引文件来说,三级索引文件具有一个特征信息标识,三级索引文件包括了多个第一维度值,第一维度值为与特征信息标识对应的特征信息的不同取值,并且,第一维度值与查询条件是相对应的;对于每一个三级索引文件来说,每一个第一维度值下具有三级索引信息,三级索引信息指示了与第一维度值相同的第二维度值在二级索引文件集合中的位置。
三级索引信息包括了:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。举例来说,表1为一个三级索引文件1的格式。
表1三级索引文件1
例如,三级索引文件1具有特征信息标识“年龄”,三级索引文件1下具有第一维度值10岁,第一维度值10岁下具有文件名“二级索引文件1”、总个数2、位置信息1,则表征二级索引文件1也具有特征信息标识“年龄”,第一维度值为10岁的二级索引信息的个数为2个、第二维度值10岁在二级索引文件1的第一行上。其中,每一个二级索引信息为一个Rowkey信息。
举例来说,表2为一个二级索引文件1的格式。
表2二级索引文件1
其中,在生成三级索引文件的时候,可以执行以下步骤:步骤a、读取二级索引文件,获取与第一维度值对应的第二纬度值的位置信息,查询Redis,其中,位置信息也称作偏移量;步骤b、如果第二维度值在Redis中存在,则在对应的第二维度值后面执行更新操作,以更新三级索引信息,如果不存在,则执行追加操作,以追加三级索引信息。
并且,在将Redis数据写入磁盘的时候,可以执行以下步骤。步骤a、判断Redis中的文件是否为当月文件,若为当月文件可通过redis.conf文件进行配置;其中,Redis自带的持久化是为了方便在系统宕机之后进行数据保存,当系统重启后可通过持久化的数据去恢复原始数据;其中,基本有两种持续化方式包括了RDB方式和AOF方式;RDB方式通过配置sava参数,可在特定时间点进行数据的持久化,生成的持久化文件为二进制文件;AOF方式通过记录操作日志进行数据的持久化。步骤b、若数据为历史数据,通过Redis提供的C语言接口,将数据存储到磁盘,为了保证存储到磁盘中的数据的准确性没有对数据进行特殊形式的处理。步骤c、将存储到磁盘中的落盘的数据进行特殊数据结构的处理,例如采用构建B+Tree进行数据存储文件,B+Tree是B树的变种,继承了B树查询速度快的优势,相比于B树,内节点不存储数据,只存储键(Key),在检索的时候只通过Key的对比就可以进行快速查找,Value值只存储在叶子节点中。步骤d、构建B+Tree,首先是内节点个数的选择上,1亿数据量在10个内节点的情况下只分了8层,在实际数据的存储中若单个维度值对应的Value较大可调整内节点个数,保证最下层Key值比较的效率。其中,构建的B+Tree实现了基本的增删改查功能,保证树的一致性,在分裂点的选择上为(len+1)/2;在落地的过程中构造B+Tree的整体形状,通过node内节点和叶节点的区分输出到文件中;对于Key为字符(char)类型的数据类型的比较,采用strcmp比较构建树的整体结构。
从而基于以上的三级索引文件集合和二级索引文件集合,可以首先,在三级索引文件集合中,根据至少一个查询条件,确定与每一个查询条件对应的第二维度值,并且确定出与每一个第二维度值对应的三级索引信息,三级索引信息包括了文件名、个数和位置信息。
步骤103、在二级索引文件集合中,根据与第一维度值对应的三级索引信息,确定与三级索引信息对应的第二维度值,并确定与第二维度值对应的二级索引信息。
在本实施例中,具体的,在步骤102之后,在二级索引文件集合中,根据每一个三级索引信息,首先确定出与每一个三级索引信息对应的第二维度值,然后确定与三级索引信息对应的各二级索引信息Rowkey。
步骤104、根据与第二维度值对应的二级索引信息,在数据库中确定与二级索引信息对应的数据。
在本实施例中,具体的,在步骤103之后,根据各二级索引信息Rowkey,在数据库中确定与每一个二级索引信息Rowkey对应的数据。其中的数据库可以为Hbase数据库,举例来说,表3为一个Hbase数据库的格式。
表3Hbase数据库
举例来说,在采用数据库的语言执行本实施例的时候,在接收到结构化查询语言(Structured Query Language,简称SQL)查询指令之后,其中,查询指令中包括有where条件,去执行步骤102;在步骤102中,首先将where条件所对应的第一维度值在redis中查出,可知在redis中存储三级索引文件集合,进而可以确定出与每一个第一维度值对应的三级索引信息,每一个三级索引信息包括可与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、以及与第一维度值相同的第二维度值的位置信息,这里的位置信息也称作偏移量;然后执行步骤103,在对应的二级索引文件中查出对应的所有Rowkey;然后执行步骤104,在Hbase中查出对应的所有数据。其中,若SQL查询指令中含有多where条件,则对步骤104中查出的所有数据进行过滤,得到多where查询的结果集;若SQL查询指令中含有表关联和其他SQL关键字,则针对步骤104中查出的所有数据进行遍历过滤操作,得到最终结果集。
本实施例通过提供二级索引文件集合和三级索引文件集合;接收查询指令,查询指令中包括至少一个查询条件;在三级索引文件集合中,根据至少一个查询条件,确定与每一个查询条件对应的第一维度值;确定每一个第一维度值对应的三级索引信息,三级索引信息包括了文件名、个数和位置信息;在二级索引文件集合中,根据每一个三级索引信息,确定与三级索引信息对应的各二级索引信息Rowkey;根据各二级索引信息Rowkey,确定与每一个二级索引信息Rowkey对应的数据。进而不再需要对数据的键值进行遍历,只依据三级索引信息、二级索引信息Rowkey,就可以查找到数据库中的数据,提高了查询速度;并且,只需要保存三级索引信息、二级索引信息Rowkey的信息,减少存储空间开销;在数据库中的数据发生改变的时候,只需要改变二级索引文件中的第二维度值下的二级索引信息的位置,改变三级索引文件中的第一维度值下的三级索引信息就可以了,不需要对数据的键进行修改,减少了修改的开销。
图2为本申请实施例提供的另一种数据查询方法的流程示意图。如图2所示,该方法包括:
步骤201、接收用户发送的查询指令,其中,查询指令中包括至少两个查询条件。
在本实施例中,具体的,本步骤可以参见图1的步骤101,不再赘述。本实施例中,查询指令中包括至少两个查询条件where条件。
步骤202、在三级索引文件集合中,确定与至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与第一维度值对应的三级索引信息,其中,三级索引文件集合中包括了至少一个三级索引文件,至少一个三级索引文件中的每一个三级索引文件中包括与不同的查询条件对应的第一维度值、与每一个第一维度值对应的三级索引信息,三级索引信息指示了与第一维度值相同的第二维度值在二级索引文件集合中的位置,二级索引文件集合中包括了至少一个二级索引文件,至少一个二级索引文件中的每一个二级索引文件中包括不同的第二维度值、以及与每一个第二维度值对应的二级索引信息。
在可选的一种实施方式中,每一个三级索引信息包括:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。
在可选的一种实施方式中,二级索引信息为Rowkey信息。
在本实施例中,具体的,本步骤可以参见图1的步骤102,不再赘述。
步骤203、确定包括的二级索引信息的个数最小的三级索引信息;在二级索引文件集合中,确定与包括的二级索引信息的个数最小的三级索引信息对应的第二维度值,并确定与该第二维度值对应的二级索引信息。
在本实施例中,具体的,在查询条件为多个时,可以在确定每一个第二维度值对应的三级索引信息之后,确定出二级索引信息的个数最小的三级索引信息;然后,在二级索引文件集合中,根据个数最小的三级索引信息对应的第二维度值;然后,根据二级索引文件集合,确定出个数最小的三级索引信息对应的第二维度值所对应的二级索引信息Rowkey。
步骤204、根据与第二维度值对应的二级索引信息,在数据库中确定与二级索引信息对应的数据。
在本实施例中,具体的,本步骤可以参见图1的步骤104,不再赘述。
步骤205、根据预设的筛选条件,对数据进行筛选,得到筛选后的数据。
在本实施例中,具体的,根据预设的筛选条件,在对查询到的数据进行筛选。筛选条件可以是用户之前所设置的。例如,筛选条件为去除信息量最小的数据,或者,筛选条件为保留信息量在预设范围之内的数据。
步骤206、处理和/或显示数据。
在本实施例中,具体的,步骤206可以在步骤204或步骤205之后执行,在从Hbase中查询到数据之后,可以根据预设处理方式对数据进行处理;或者,在从Hbase中查询到数据之后,通过显示屏显示数据;或者,在从Hbase中查询到数据之后,可以根据预设处理方式对数据进行处理,然后,通过显示屏显示处理后的数据。
举例来说,在接收到SQL查询指令之后,其中,查询指令中包括有where条件,对SQL查询指令进行解析,获取查询表的表信息;然后判断查询表是否为当月表,如果为当月表,则从Redis中查询每个where条件对应的第一维度值所对应的三级索引文件;如果为历史月表,则到Redis索引文件中查询获取三级索引文件;然后,确定出二级索引信息的个数最小的三级索引信息,例如,二级索引信息的个数最小的三级索引信息的第一维度值为A;进而,根据二级索引信息的个数最小的三级索引信息中所表征的文件名和位置信息等,可以从二级索引文件集合中,确定与上述第一维度值相同的第二维度值,然后确定与该第二维度值对应的各二级索引信息Rowkey;然后,根据各二级索引信息Rowkey,从Hbase中查询与每一个二级索引信息Rowkey对应的数据;然后保存查询到的数据。
本实施例通过提供二级索引文件集合和三级索引文件集合;接收查询指令,查询指令中包括至少一个查询条件;在三级索引文件集合中,根据至少一个查询条件,确定与每一个查询条件对应的第一维度值;确定每一个第一维度值对应的三级索引信息,三级索引信息包括了文件名、个数和位置信息;在二级索引文件集合中,根据每一个三级索引信息,确定与三级索引信息对应的各二级索引信息Rowkey;根据各二级索引信息Rowkey,确定与每一个二级索引信息Rowkey对应的数据。进而不再需要对数据的键值进行遍历,只依据三级索引信息、二级索引信息Rowkey,就可以查找到数据库中的数据,提高了查询速度;并且,只需要保存三级索引信息、二级索引信息Rowkey的信息,减少存储空间开销;在数据库中的数据发生改变的时候,只需要改变二级索引文件中的第二维度值下的二级索引信息的位置,改变三级索引文件中的第一维度值下的三级索引信息就可以了,不需要对数据的键进行修改,减少了修改的开销。
图3为本发明实施例提供的一种数据查询装置的结构示意图,如图3所示,本实施例的装置可以包括:
接收模块31,用于接收用户发送的查询指令,其中,查询指令中包括至少一个查询条件;
第一确定模块32,用于在三级索引文件集合中,确定与至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与第一维度值对应的三级索引信息,其中,三级索引文件集合中包括了至少一个三级索引文件,至少一个三级索引文件中的每一个三级索引文件中包括与不同的查询条件对应的第一维度值、与每一个第一维度值对应的三级索引信息,三级索引信息指示了与第一维度值相同的第二维度值在二级索引文件集合中的位置,二级索引文件集合中包括了至少一个二级索引文件,至少一个二级索引文件中的每一个二级索引文件中包括不同的第二维度值、以及与每一个第二维度值对应的二级索引信息;
第二确定模块33,用于在二级索引文件集合中,根据与第一维度值对应的三级索引信息,确定与三级索引信息对应的第二维度值,并确定与第二维度值对应的二级索引信息;
第三确定模块34,用于根据与第二维度值对应的二级索引信息,在数据库中确定与二级索引信息对应的数据。
本实施例的数据查询装置可执行本发明实施例提供的一种数据查询方法,其实现原理相类似,此处不再赘述。
本实施例通过提供二级索引文件集合和三级索引文件集合;接收查询指令,查询指令中包括至少一个查询条件;在三级索引文件集合中,根据至少一个查询条件,确定与每一个查询条件对应的第一维度值;确定每一个第一维度值对应的三级索引信息,三级索引信息包括了文件名、个数和位置信息;在二级索引文件集合中,根据每一个三级索引信息,确定与三级索引信息对应的各二级索引信息Rowkey;根据各二级索引信息Rowkey,确定与每一个二级索引信息Rowkey对应的数据。进而不再需要对数据的键值进行遍历,只依据三级索引信息、二级索引信息Rowkey,就可以查找到数据库中的数据,提高了查询速度;并且,只需要保存三级索引信息、二级索引信息Rowkey的信息,减少存储空间开销;在数据库中的数据发生改变的时候,只需要改变二级索引文件中的第二维度值下的二级索引信息的位置,改变三级索引文件中的第一维度值下的三级索引信息就可以了,不需要对数据的键进行修改,减少了修改的开销。
图4为本发明实施例提供的另一种数据查询装置的结构示意图,在图3所示实施例的基础上,如图4所示,每一个三级索引信息包括:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。
在查询指令中包括至少两个查询条件时,第二确定模块33,包括:
第一确定子模块331,用于确定包括的二级索引信息的个数最小的三级索引信息;
第二确定子模块332,用于在二级索引文件集合中,确定与包括的二级索引信息的个数最小的三级索引信息对应的第二维度值,并确定与该第二维度值对应的二级索引信息;
相应的,本实施例提供的装置,还包括:
筛选模块41,用于在第三确定模块34根据与第二维度值对应的二级索引信息,在数据库中确定与二级索引信息对应的数据之后,根据预设的筛选条件,对数据进行筛选,得到筛选后的数据。
本实施例提供的装置,还包括:
处理模块42,用于在第三确定模块34根据与第二维度值对应的二级索引信息,在数据库中确定与二级索引信息对应的数据之后,处理和/或显示数据。其中,处理模块42也可以在筛选模块41之后执行。
本实施例提供的装置中,二级索引信息为Rowkey信息。
本实施例的数据查询装置可执行本发明实施例提供的另一种数据查询方法,其实现原理相类似,此处不再赘述。
本实施例通过提供二级索引文件集合和三级索引文件集合;接收查询指令,查询指令中包括至少一个查询条件;在三级索引文件集合中,根据至少一个查询条件,确定与每一个查询条件对应的第一维度值;确定每一个第一维度值对应的三级索引信息,三级索引信息包括了文件名、个数和位置信息;在二级索引文件集合中,根据每一个三级索引信息,确定与三级索引信息对应的各二级索引信息Rowkey;根据各二级索引信息Rowkey,确定与每一个二级索引信息Rowkey对应的数据。进而不再需要对数据的键值进行遍历,只依据三级索引信息、二级索引信息Rowkey,就可以查找到数据库中的数据,提高了查询速度;并且,只需要保存三级索引信息、二级索引信息Rowkey的信息,减少存储空间开销;在数据库中的数据发生改变的时候,只需要改变二级索引文件中的第二维度值下的二级索引信息的位置,改变三级索引文件中的第一维度值下的三级索引信息就可以了,不需要对数据的键进行修改,减少了修改的开销。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
接收用户的查询指令,其中,所述查询指令中包括至少一个查询条件;
在三级索引文件集合中,确定与所述至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与所述第一维度值对应的三级索引信息,其中,所述三级索引文件集合中包括至少一个三级索引文件,所述至少一个三级索引文件中的每一个三级索引文件中包括与不同的查询条件对应的第一维度值、与每一个第一维度值对应的三级索引信息,所述三级索引信息用于指示与所述第一维度值相同的第二维度值在二级索引文件集合中的位置,所述二级索引文件集合中包括至少一个二级索引文件,所述至少一个二级索引文件中的每一个二级索引文件中包括不同的第二维度值、以及与每一个第二维度值对应的二级索引信息;
在所述二级索引文件集合中,根据与所述第一维度值对应的三级索引信息,确定与所述三级索引信息对应的第二维度值,并确定与所述第二维度值对应的二级索引信息;
根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据。
2.根据权利要求1所述的方法,其特征在于,每一个所述三级索引信息包括:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。
3.根据权利要求2所述的方法,其特征在于,在所述查询指令中包括至少两个查询条件时;
所述在二级索引文件集合中,根据与所述第一维度值对应的三级索引信息,确定与所述三级索引信息对应的第二维度值,并确定与所述第二维度值对应的二级索引信息,包括:
确定包括的二级索引信息的个数最小的三级索引信息;
在所述二级索引文件集合中,确定与包括的二级索引信息的个数最小的三级索引信息对应的第二维度值,并确定与该第二维度值对应的二级索引信息;
相应的,在根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,还包括:
根据预设的筛选条件,对所述数据进行筛选,得到筛选后的数据。
4.根据权利要求1-3任一项所述的方法,其特征在于,在所述根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,还包括:
处理和/或显示所述数据。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述二级索引信息为Rowkey信息。
6.一种数据查询装置,其特征在于,包括:
接收模块,用于接收用户发送的查询指令,其中,所述查询指令中包括至少一个查询条件;
第一确定模块,用于在三级索引文件集合中,确定与所述至少一个查询条件中的每一个查询条件对应的第一维度值,并确定与所述第一维度值对应的三级索引信息,其中,所述三级索引文件集合中包括了至少一个三级索引文件,所述至少一个三级索引文件中的每一个三级索引文件中包括与不同的查询条件对应的第一维度值、与每一个第一维度值对应的三级索引信息,所述三级索引信息指示了与所述第一维度值相同的第二维度值在二级索引文件集合中的位置,所述二级索引文件集合中包括了至少一个二级索引文件,所述至少一个二级索引文件中的每一个二级索引文件中包括不同的第二维度值、以及与每一个第二维度值对应的二级索引信息;
第二确定模块,用于在所述二级索引文件集合中,根据与所述第一维度值对应的三级索引信息,确定与所述三级索引信息对应的第二维度值,并确定与所述第二维度值对应的二级索引信息;
第三确定模块,用于根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据。
7.根据权利要求6所述的装置,其特征在于,每一个所述三级索引信息包括:与第一维度值相同的第二维度值所在的二级索引文件的文件名、与第一维度值相同的第二维度值对应的二级索引信息的个数、与第一维度值相同的第二维度值的位置信息。
8.根据权利要求7所述的装置,其特征在于,在所述查询指令中包括至少两个查询条件时;
所述第二确定模块,包括:
第一确定子模块,用于确定包括的二级索引信息的个数最小的三级索引信息;
第二确定子模块,用于在所述二级索引文件集合中,确定与包括的二级索引信息的个数最小的三级索引信息对应的第二维度值,并确定与该第二维度值对应的二级索引信息;
相应的,所述装置,还包括:
筛选模块,用于在所述第三确定模块根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,根据预设的筛选条件,对所述数据进行筛选,得到筛选后的数据。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述装置,还包括:
处理模块,用于在所述第三确定模块根据与所述第二维度值对应的二级索引信息,在数据库中确定与所述二级索引信息对应的数据之后,处理和/或显示所述数据。
10.根据权利要求6-8任一项所述的装置,其特征在于,所述二级索引信息为Rowkey信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811283039.3A CN109299106B (zh) | 2018-10-31 | 2018-10-31 | 数据查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811283039.3A CN109299106B (zh) | 2018-10-31 | 2018-10-31 | 数据查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109299106A true CN109299106A (zh) | 2019-02-01 |
CN109299106B CN109299106B (zh) | 2020-09-22 |
Family
ID=65145246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811283039.3A Active CN109299106B (zh) | 2018-10-31 | 2018-10-31 | 数据查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109299106B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948386A (zh) * | 2021-03-04 | 2021-06-11 | 电信科学技术第五研究所有限公司 | 一种针对etl异常数据的简易索引及加密落盘机制 |
CN113297200A (zh) * | 2020-06-24 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据存储和获取方法、装置、电子设备及可读存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727465A (zh) * | 2008-11-03 | 2010-06-09 | 中国移动通信集团公司 | 分布式列存储数据库索引建立、查询方法及装置与系统 |
US20120117064A1 (en) * | 2010-11-04 | 2012-05-10 | International Business Machines Corporation | Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data |
CN103049473A (zh) * | 2012-10-15 | 2013-04-17 | 新浪技术(中国)有限公司 | 一种数据查询方法及装置 |
CN103365883A (zh) * | 2012-03-30 | 2013-10-23 | 华为技术有限公司 | 数据的索引查询方法、装置及系统 |
US20140236960A1 (en) * | 2013-02-19 | 2014-08-21 | Futurewei Technologies, Inc. | System and Method for Database Searching |
CN104462434A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 数据查询方法及装置 |
CN105224609A (zh) * | 2015-09-07 | 2016-01-06 | 北京金山安全软件有限公司 | 一种索引查询方法及装置 |
CN105989076A (zh) * | 2015-02-10 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种数据统计方法以及装置 |
CN106528635A (zh) * | 2016-10-12 | 2017-03-22 | 青岛大学 | 二维数据的存储系统、存储方法和查询方法 |
CN107562762A (zh) * | 2016-07-01 | 2018-01-09 | 中国联合网络通信集团有限公司 | 数据索引构建方法及装置 |
CN108170726A (zh) * | 2015-10-21 | 2018-06-15 | 华为技术有限公司 | 数据查询方法和装置 |
CN108427736A (zh) * | 2018-02-28 | 2018-08-21 | 华为技术有限公司 | 一种用于查询数据的方法 |
-
2018
- 2018-10-31 CN CN201811283039.3A patent/CN109299106B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727465A (zh) * | 2008-11-03 | 2010-06-09 | 中国移动通信集团公司 | 分布式列存储数据库索引建立、查询方法及装置与系统 |
US20120117064A1 (en) * | 2010-11-04 | 2012-05-10 | International Business Machines Corporation | Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data |
CN103365883A (zh) * | 2012-03-30 | 2013-10-23 | 华为技术有限公司 | 数据的索引查询方法、装置及系统 |
CN103049473A (zh) * | 2012-10-15 | 2013-04-17 | 新浪技术(中国)有限公司 | 一种数据查询方法及装置 |
US20140236960A1 (en) * | 2013-02-19 | 2014-08-21 | Futurewei Technologies, Inc. | System and Method for Database Searching |
CN104462434A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 数据查询方法及装置 |
CN105989076A (zh) * | 2015-02-10 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种数据统计方法以及装置 |
CN105224609A (zh) * | 2015-09-07 | 2016-01-06 | 北京金山安全软件有限公司 | 一种索引查询方法及装置 |
CN108170726A (zh) * | 2015-10-21 | 2018-06-15 | 华为技术有限公司 | 数据查询方法和装置 |
CN107562762A (zh) * | 2016-07-01 | 2018-01-09 | 中国联合网络通信集团有限公司 | 数据索引构建方法及装置 |
CN106528635A (zh) * | 2016-10-12 | 2017-03-22 | 青岛大学 | 二维数据的存储系统、存储方法和查询方法 |
CN108427736A (zh) * | 2018-02-28 | 2018-08-21 | 华为技术有限公司 | 一种用于查询数据的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297200A (zh) * | 2020-06-24 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据存储和获取方法、装置、电子设备及可读存储介质 |
CN112948386A (zh) * | 2021-03-04 | 2021-06-11 | 电信科学技术第五研究所有限公司 | 一种针对etl异常数据的简易索引及加密落盘机制 |
CN112948386B (zh) * | 2021-03-04 | 2023-09-22 | 电信科学技术第五研究所有限公司 | 一种针对etl异常数据的简易索引及加密落盘机制 |
Also Published As
Publication number | Publication date |
---|---|
CN109299106B (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10102253B2 (en) | Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices | |
AU2005201890B2 (en) | Query to task mapping | |
JP4249726B2 (ja) | データベース群にインデックスを付けるため、およびデータベース群を探索するための方法およびシステム | |
US7769719B2 (en) | File system dump/restore by node numbering | |
CN102770849B (zh) | 当应用基于用户的安全性时优化数据高速缓存 | |
EP2199935A2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
US20070050333A1 (en) | Archive indexing engine | |
US20120066210A1 (en) | Interface to navigate and search a concept hierarchy | |
US7533112B2 (en) | Context hierarchies for address searching | |
US9652498B2 (en) | Processing queries using hybrid access paths | |
CA2341415A1 (en) | Method and apparatus for an accelerated radius search | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、系统及存储介质 | |
EP1678633A1 (en) | Sorting result buffer | |
CN112231321B (zh) | 一种Oracle二级索引及索引实时同步方法 | |
CN109299106A (zh) | 数据查询方法和装置 | |
CN114840487A (zh) | 分布式文件系统的元数据管理方法和装置 | |
CN104462349A (zh) | 一种文件处理方法及装置 | |
CN116775830A (zh) | 一种在线技术文档搜索方法、设备及介质 | |
CN115794861A (zh) | 基于特征摘要的离线数据查询复用方法及其应用 | |
KR20180077830A (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
US5579514A (en) | Methodology for increasing the average run length produced by replacement selection strategy in a system consisting of multiple, independent memory buffers | |
CN114428776A (zh) | 一种面向时序数据的索引分区管理方法和系统 | |
KR20220099745A (ko) | 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치 | |
CN116348868A (zh) | 信息管理的元数据索引 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |