CN109086456A - 数据索引方法及装置 - Google Patents
数据索引方法及装置 Download PDFInfo
- Publication number
- CN109086456A CN109086456A CN201811009286.4A CN201811009286A CN109086456A CN 109086456 A CN109086456 A CN 109086456A CN 201811009286 A CN201811009286 A CN 201811009286A CN 109086456 A CN109086456 A CN 109086456A
- Authority
- CN
- China
- Prior art keywords
- index
- record
- value
- bitmap
- dependence
- 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(Hadoop database)是一个高性能、分布式的开源数据库,它不同于一般的关系型数据库,是一个适合于非结构化数据存储的数据库。HBASE是基于Rowkey(行键)的有序存储,在明确Rowkey的条件下HBASE支持毫秒级的快速检索。然而,随着HBASE的应用的不断深入,单纯通过Rowkey检索数据的方式不再满足应用的需求,因此,需要一种针对HBASE数据库的二级索引方法。
现有的HBASE二级索引方案中,根据常用的查询属性创建二级索引表,也就是说,每个二级索引表都是建立在固定的查询条件下的。因此,当查询条件为多条件时,需要按照多重查询属性依次检索不同的二级索引表,然后将从不同的二级索引表中获取的Rowkey再进行比对取重,得到符合所有查询条件的Rowkey,最后结合查询条件,根据筛选出的Rowkey进行信息提取,完成多重查询条件的查询。
然而,上述现有技术中,根据不同的条件或条件组合创建多个二级索引表,HBASE数据库中的Rowkey会重复保存在不同的二级索引表中,使得存储二级索引表需要较大的存储空间。
发明内容
本发明实施例提供一种数据索引方法及装置,能够降低二级索引数据库的存储空间。
第一方面,本发明实施例提供一种数据索引方法,包括:
根据查询条件,获取所述查询条件对应的至少一个查询属性;
根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储;所述目标位图索引记录中与所述查询属性匹配的目标从属性的值为预设值,所述预设值用于指示一级索引数据库中与所述目标位图索引记录对应的原始数据记录中存在所述目标从属性;
根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录;
根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果。
可选的,所述根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值,包括:
根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述位图字典中包括至少一个从属性,所述位图字典中的所述至少一个从属性与所述位图索引记录中的所述至少一个从属性的值按预设顺序依次对应。
可选的,所述根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值,包括:
根据位图字典,获取各所述查询属性匹配的目标从属性,以及各所述目标从属性在所述位图字典中的位置;
依次获取所述二级索引数据库中的一条位图索引记录,根据各所述目标从属性在所述位图字典中的位置和所述位图字典,获取各所述目标从属性对应到所述位图索引记录中的从属性的值;
若各所述目标从属性对应到所述位图索引记录中的从属性的值均为所述预设值,则将所述位图索引记录作为目标位图索引记录。
可选的,所述根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值之前,还包括:
根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库。
可选的,所述根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库,包括:
根据所述一级索引数据库中的原始数据记录,获取至少一个主属性的值;
针对每个所述主属性的值,获取所述一级索引数据库中与所述主属性的值对应的至少一条原始数据记录;
根据所述主属性的值对应的至少一条原始数据记录,判断所述位图字典中的各所述从属性在所述至少一条原始数据记录中是否存在;
根据判断结果,生成所述主属性的值对应的位图索引记录,将所述位图索引记录存储到二级索引数据库中。
可选的,所述根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库之后,还包括:
获取所述一级索引数据库中新增的原始数据记录;
根据所述新增的原始数据记录中的主属性的值,获取所述二级索引数据库中与所述主属性的值对应的位图索引记录;
针对所述位图字典中的每个所述从属性,判断所述新增的原始数据记录中是否存在所述从属性,若是,则将所述位图索引记录中与所述从属性对应的从属性的值设置为所述预设值。
可选的,所述二级索引数据库存储在内存中。
第二方面,本发明实施例提供一种数据索引装置,包括:
获取模块,用于根据查询条件,获取所述查询条件对应的至少一个查询属性;
第一查询模块,用于根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储;所述目标位图索引记录中与所述查询属性匹配的目标从属性的值为预设值,所述预设值用于指示一级索引数据库中与所述目标位图索引记录对应的原始数据记录中存在所述目标从属性;
第二查询模块,用于根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录;
处理模块,用于根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果。
可选的,所述第一查询模块,具体用于根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述位图字典中包括至少一个从属性,所述位图字典中的所述至少一个从属性与所述位图索引记录中的所述至少一个从属性的值按预设顺序依次对应。
可选的,所述第一查询模块具体用于:
根据位图字典,获取各所述查询属性匹配的目标从属性,以及各所述目标从属性在所述位图字典中的位置;
依次获取所述二级索引数据库中的一条位图索引记录,根据各所述目标从属性在所述位图字典中的位置和所述位图字典,获取各所述目标从属性对应到所述位图索引记录中的从属性的值;
若各所述目标从属性对应到所述位图索引记录中的从属性的值均为所述预设值,则将所述位图索引记录作为目标位图索引记录。
可选的,所述装置还包括:
创建模块,用于根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库。
可选的,所述创建模块具体用于:
根据所述一级索引数据库中的原始数据记录,获取至少一个主属性的值;
针对每个所述主属性的值,获取所述一级索引数据库中与所述主属性的值对应的至少一条原始数据记录;
根据所述主属性的值对应的至少一条原始数据记录,判断所述位图字典中的各所述从属性在所述至少一条原始数据记录中是否存在;
根据判断结果,生成所述主属性的值对应的位图索引记录,将所述位图索引记录存储到二级索引数据库中。
可选的,所述创建模块还用于:
获取所述一级索引数据库中新增的原始数据记录;
根据所述新增的原始数据记录中的主属性的值,获取所述二级索引数据库中与所述主属性的值对应的位图索引记录;
针对所述位图字典中的每个所述从属性,判断所述新增的原始数据记录中是否存在所述从属性,若是,则将所述位图索引记录中与所述从属性对应的从属性的值设置为所述预设值。
可选的,所述二级索引数据库存储在内存中。
第三方面,本发明实施例提供一种数据索引设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的数据索引方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的数据索引方法。
本发明实施例提供的数据索引方法及装置,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储,使得二级索引数据库所需的存储空间大大降低;该方法根据查询条件,获取所述查询条件对应的至少一个查询属性;根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录;根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果;通过上述数据索引过程,能够提高数据索引的效率和准确性,还可以提高数据索引的查询场景覆盖率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据索引方法的原理示意图;
图2为现有技术中二级索引数据库的示意图;
图3为本发明实施例提供的二级索引数据库的示意图;
图4为本发明实施例提供的数据索引方法的流程图一;
图5为本发明实施例提供的数据索引方法的流程图二;
图6为本发明实施例提供的位图字典的示意图;
图7为本发明实施例提供的创建二级索引数据库的流程图;
图8为本发明实施例提供的更新二级索引数据库的流程图;
图9为本发明实施例提供的数据索引装置的结构示意图;
图10为本发明实施例提供的数据索引设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1为本发明实施例提供的数据索引方法的原理示意图,如图1所示,对数据进行索引查询时,可以根据查询条件,获取至少一个查询属性,然后根据查询属性查询二级索引数据库,获取二级索引结果,所述二级索引结果可以理解为对二级索引数据库进行检索后获取的初步的索引结果。然后再根据所述二级索引结果和查询条件,对一级索引数据库进行查询,获取最终的查询结果。
图2为现有技术中二级索引数据库的示意图,如图2所示,二级索引数据库中包括多个索引表,也就是说,需要事先根据常用的查询属性创建多个索引表,每个索引表对应一个查询属性,该索引表中记录了一级索引数据库中满足该查询属性的行键(Rowkey)的列表。
下面举例说明现有技术中利用图2中的二级索引数据库进行数据索引的过程。假设一级索引数据库中记录的是电信领域的话单记录,每个话单记录中包括通话的业务类型、发生的地市、产生的话费金额等信息,并且,每个话单记录对应一个Rowkey。二级索引数据库中包括k个索引表,索引表1中记录的是不同业务类型对应的Rowkey的列表,例如3G业务对应的Rowkey的列表或者4G业务对应的Rowkey的列表,索引表2中记录的是地市对应的Rowkey的列表,例如:西安市对应的Rowkey的列表,或者山东省对应的Rowkey的列表。
假设查询条件为“获取西安市的4G业务对应的总话费金额”,则该查询条件对应两个查询属性,分别为“西安市”和“4G业务”。因此,首先需要查询图2中的索引表1获取4G业务对应的Rowkey列表,查询图2中的索引表2获取西安市对应的Rowkey列表;然后将获取的两个Rowkey列表进行比对取重,得到同时满足西安市和4G业务两个查询属性的Rowkey列表;最后根据取重后的Rowkey列表查询一级索引数据库,得到该Rowkey列表对应的话单的总话费金额,从而得到查询结果。
由于图2中的二级索引数据库中,需要针对多个查询条件存储多个索引表,而每个索引表中存储的Rowkey列表中,会有很多重复的Rowkey。可以理解的,当一级索引数据库中的原始数据记录较多时,为了保证Rowkey的唯一性以及索引效率,每条原始数据记录对应的Rowkey可能会占用较多的比特位。这样,二级索引数据库中对Rowkey进行多次重复存储,必然使得二级索引数据库占用较大的存储空间。
另外,当一级索引数据库中的原始数据记录中的属性发生变更时,即Rowkey发生变更时,就需要对涉及该Rowkey的所有索引表进行更新,尤其当索引表数量较多或关联关系较为复杂时,需要花费较高的计算成本对索引表进行更新,从而降低数据索引的效率和准确性。
进一步的,由于图2中的二级索引数据库是根据查询属性建立的,而实际应用中可能存在众多的查询方式,很难针对每一种可能的查询属性分别建立对应的索引表,导致图2中二级索引数据库所能够覆盖的查询场景较低。
为了解决上述二级索引数据库中存在的至少一个问题,本发明实施例对二级索引数据库的存储方式进行改进。需要说明的是,本发明实施例提供的二级索引数据库,可应用于多个领域中的数据索引,包括但不限于:电信领域、银行领域、电商领域、互联网领域等。为了描述方便,本发明后续实施例将以电信领域为例进行详细说明,但本发明并不以此为限。
电信领域中每时每刻都会产生大量的话单记录,电信运营商需要对大量的话单记录进行存储,并根据需要对话单记录进行检索、统计和分析。因此,本发明实施例中,一级索引数据库中存储的原始数据记录可以为上述的话单记录,每个话单记录中可以包括通话的手机号码、通话的业务类型、发生的地市、产生的话费金额等信息,每条话单数据对应一个唯一的Rowkey。现有技术在具体实现时,可以将手机号码作为Rowkey的一部分字段进行存储,以方便进行检索。
图3为本发明实施例提供的二级索引数据库的示意图。如图3所示,本发明实施例中,二级索引数据库中的各位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位进行存储。其中,主属性为原始数据记录的其中一个属性,可以根据实际情况进行合理选择,一种可选的实施方式中,选择原始数据记录中的Rowkey中的部分字段作为主属性的值,例如:手机号码、身份证号码、用户标识等。图3示例的是以手机号码作为主属性的值。
选择主属性后,可将原始数据库中除主属性之外的其他所有属性作为从属性,当然,可以根据实际检索需要,在其他所有属性中选择部分属性作为从属性,本实施例对于从属性的选择以及从属性的数量并不作具体限定。
结合图3,一种可能的实现方式中,二级索引数据库中的每条位图索引记录以K-V的形式进行存储,其中,主属性的值保存在Key中,从属性的值以位图的形式保存在Value中。Value可以看做是存储了大量比特位的比特序列,每个比特位与一个特定的从属性对应。每个比特位的值可以为1或者0,分别表示主属性的值对应的原始数据记录中存在该从属性,或者,不存在该从属性。
举例说明,假设Value中从低位(右侧)起第一位对应的从属性为山东省,第二位对应的从属性为河南省,则图3中位图索引记录1的含义为:手机号13700000000对应的原始数据记录中存在山东省和河南省的业务,位图索引记录2的含义为:手机号13700000001对应的原始数据记录中存在山东省的业务,但不存在河南省的业务。
可以理解的,二级索引数据库中的一条位图索引记录可以对应一级索引数据库中的多条原始数据记录。例如,图3中的位图索引记录1对应了一级索引数据库中手机号码13700000000对应的所有话单记录。因此,在检索时,可以根据查询条件中的查询属性,首先在二级索引数据库中进行检索,获取到满足所有查询属性的手机号码,然后再根据手机号码在一级索引数据库中进一步进行检索,提取需要的信息,得到查询结果。
本发明实施例中,由于二级索引数据库中采用位图存储(比特存储)方式对至少一个从属性的属性信息进行存储,降低了二级索引数据库的存储空间。本发明实施例中,每1K内存可以保存8192种属性信息,假设存储2亿用户,其中每人包含8192(1024*8)种属性信息,则只需191GB内存。而采用图2所示的现有技术中的存储方式,则需要存储空间为10TB以上。可见,本发明实施例中的二级索引数据库可以大大降低存储空间。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图4为本发明实施例提供的数据索引方法的流程图一,如图4所示,本实施例中的方法,包括:
S401:根据查询条件,获取所述查询条件对应的至少一个查询属性。
S402:根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储;所述目标位图索引记录中与所述查询属性匹配的目标从属性的值为预设值,所述预设值用于指示一级索引数据库中与所述目标位图索引记录对应的原始数据记录中存在所述目标从属性。
S403:根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录。
S404:根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果。
其中,一级索引数据库可以为HBase数据库。
可选的,二级索引数据库存储在内存中。一种可选的实施方式中,二级索引数据库采用Redis内存数据库。可以理解的,内存数据库比磁盘数据库的读写速度要高,以Redis内存数据库为例,Redis单节点的读写效率可以达到20万条/秒。尤其采用一主多从模式时,读写效率可以达到20*N万条/秒(N为从机数量),可以大大提高数据索引效率。
本实施例中的二级索引数据库的存储方式可以参见图3。各位图索引记录中的每个比特位对应一个从属性,每个比特位的值可以为0或者1,用于指示该位图索引记录对应的原始数据记录中是否存在该从属性。一种可选的实施方式中,1表示存在,0表示不存在。当然,还可以1表示不存在,0表示存在。本实施例对此并不作具体限定。后续将以1表示存在,0表示不存在为例进行描述。
具体应用时,用户输入的查询条件中,可以包括一个或者多个查询属性,每个查询属性可以对应为图3所示的位图索引记录的其中一个从属性。例如,假设查询条件为“查询河南省4G业务的总话费金额”,则其中包括了两个查询属性,一个查询属性为“河南省”,另一个查询属性为“4G业务”。
下面以上述查询条件为例,详细描述本实施例的数据索引过程。假设图3所示的位图索引记录中,从低位(右侧)起第2比特位表示的从属性为“河南省”,第9比特位表示的从属性为“4G业务”,则可以根据上述的“河南省”和“4G业务”两个查询属性,检索二级索引数据库,得到第2比特位和第9比特位均为“1”的主属性的值,分别为:13700000000、13700000002、13700000004。根据上述3个主属性的值对一级索引数据库进行检索,得到上述3个手机号码对应的所有原始数据记录。然后再根据查询条件对获取到的原始数据记录进行查询,得到查询结果。
根据上述数据索引过程可知,本实施例中,即使一级索引数据库中的原始数据记录的部分属性发生变化(例如,业务类型由4G变更为3G),使得二级索引数据库中的位图索引记录与实际情况产生一定的偏差,也就是说,位图索引记录1中第9比特位为1,但一级索引数据库中手机号码13700000000对应的原始数据记录中为3G业务。该情况下,由于根据S402和S403对二级索引数据库进行检索得到对应的原始数据记录后,在S404中还会根据查询条件对原始数据记录进行再次校验,从而能够确保最终查询结果的准确性,另外,与现有技术相比,还降低了对索引表进行维护更新的成本。
另外,由于本实施例中使用一条位图索引记录即可包含与主属性的值对应的所有从属性的属性信息,从而在进行索引时,只需对位图索引记录检索一次就可以得到任意查询条件对应的查询结果,一方面提高了数据索引的效率,另一方面,还提高了数据索引的查询场景覆盖率。
本发明实施例提供的数据索引方法,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储,使得二级索引数据库所需的存储空间大大降低;该方法根据查询条件,获取所述查询条件对应的至少一个查询属性;根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录;根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果;通过上述数据索引过程,能够提高数据索引的效率和准确性,还可以提高数据索引的查询场景覆盖率。
下面结合一个具体的实施例详细描述本发明实施例的数据索引过程。
图5为本发明实施例提供的数据索引方法的流程图二。在上述实施例的基础上,本实施例的方法中可以采用位图字典指示位图索引记录中各比特位与从属性之间的对应关系。
图6为本发明实施例提供的位图字典的示意图,如图6所示,所述位图字典中包括至少一个从属性,所述位图字典中的所述至少一个从属性与所述位图索引记录中的所述至少一个从属性的值按预设顺序依次对应。也就是说,位图字典中的从属性与位图索引记录中的从属性的值(比特位)是一一对应的。
需要说明的是,本发明实施例对于位图字典中的从属性与位图索引记录中的从属性的值之间的对应方式并不作具体限定,可以是按顺序依次对应,还可以是按逆序依次对应,还可以是按照某种交织关系依次对应。图6示例的是按顺序依次对应的情况。另外,本实施例中对于位图字典中的从属性的数量也不作具体限定。
本实施例中,可以根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值。具体可以有多种实施方式,下面仅以其中一种可选的实施方式为例进行描述。如图5所示,包括:
S501:根据位图字典,获取各所述查询属性匹配的目标从属性,以及各所述目标从属性在所述位图字典中的位置。
S502:依次获取所述二级索引数据库中的一条位图索引记录,根据各所述目标从属性在所述位图字典中的位置和所述位图字典,获取各所述目标从属性对应到所述位图索引记录中的从属性的值。
S503:若各所述目标从属性对应到所述位图索引记录中的从属性的值均为所述预设值,则将所述位图索引记录作为目标位图索引记录。
本实施例中,通过设置位图字典,位图字典中包括至少一个从属性,并且,位图字典中的各从属性与位图索引记录中的各从属性的值之间按预设顺序依次对应,使得在根据查询属性查询二级索引数据库时,可以先根据位图字典,获取与查询属性匹配的目标从属性,并根据位图字典获取目标从属性在位图索引记录中对应的比特位,从而可以加快数据索引的速度,提高数据索引的效率。
下面分别采用两个具体的实施例详细描述二级索引数据库的创建和更新过程。
可以理解的,在使用二级索引数据库之前,需要根据一级索引数据库中的原始数据记录和位图字典,创建二级索引数据库。创建二级索引数据库主要应用于如下两种场景中,一种使第一次生成二级索引数据库的场景,另一种是由于一级索引数据库中的数据变化太大,需要重新生成二级索引数据库的场景。
图7为本发明实施例提供的创建二级索引数据库的流程图,如图7所示,包括:
S701:根据所述一级索引数据库中的原始数据记录,获取至少一个主属性的值。
S702:针对每个所述主属性的值,获取所述一级索引数据库中与所述主属性的值对应的至少一条原始数据记录。
S703:根据所述主属性的值对应的至少一条原始数据记录,判断所述位图字典中的各所述从属性在所述至少一条原始数据记录中是否存在。
S704:根据判断结果,生成所述主属性的值对应的位图索引记录,将所述位图索引记录存储到二级索引数据库中。
通过上述过程可见,在创建二级索引数据库时,将一级索引数据库中具有相同主属性的值(例如:相同手机号码)的所有原始数据记录一起读取,根据位图字典中的各个从属性,判断原始数据记录中是否存在该从属性,若存在,将该从属性对应的比特位设置为1,若不存在,将该从属性对应的比特位设置为0,得到该相同主属性的值对应的位图索引记录,避免了对相同主属性的不同Rowkey的重复性处理,节约了位图索引记录的设置成本,提高了二级索引数据库的生成效率。
图8为本发明实施例提供的更新二级索引数据库的流程图,如图8所示,本实施例的方法,包括:
S801:获取所述一级索引数据库中新增的原始数据记录。
S802:根据所述新增的原始数据记录中的主属性的值,获取所述二级索引数据库中与所述主属性的值对应的位图索引记录。
需要说明的是,若根据新增的原始数据记录中的主属性的值,在二级索引数据库中未找到该主属性的值对应的位图索引记录,则需要首先创建一条该主属性的值对应的位图索引记录。
S803:针对所述位图字典中的每个所述从属性,判断所述新增的原始数据记录中是否存在所述从属性,若是,则将所述位图索引记录中与所述从属性对应的从属性的值设置为所述预设值。
例如,结合图6,位图字典中的第一个从属性为山东省,若新增的原始数据记录中不存在该从属性,则将位图索引记录中与该从属性对应的从属性的值(比特位)设置为0,若新增的原始数据记录中存在该从属性,则将位图索引记录中与该从属性对应的从属性的值(比特位)设置为1。
具体的,本实施例的应用场景为,当一级索引数据库中新增原始数据记录后,需要根据新增的原始数据记录更新二级索引数据库,确保后续对二级索引数据库进行检索时,可以检索到新增的原始数据记录,不会出现数据遗漏的情况。
图9为本发明实施例提供的数据索引装置的结构示意图。如图9所示,本实施例提供的数据索引装置900,可以包括:获取模块901、第一查询模块902、第二查询模块903和处理模块904。
其中,获取模块901,用于根据查询条件,获取所述查询条件对应的至少一个查询属性。
第一查询模块902,用于根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储;所述目标位图索引记录中与所述查询属性匹配的目标从属性的值为预设值,所述预设值用于指示一级索引数据库中与所述目标位图索引记录对应的原始数据记录中存在所述目标从属性。
第二查询模块903,用于根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录。
处理模块904,用于根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果。
可选的,所述第一查询模块902,具体用于根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述位图字典中包括至少一个从属性,所述位图字典中的所述至少一个从属性与所述位图索引记录中的所述至少一个从属性的值按预设顺序依次对应。
可选的,所述第一查询模块902具体用于:
根据位图字典,获取各所述查询属性匹配的目标从属性,以及各所述目标从属性在所述位图字典中的位置;
依次获取所述二级索引数据库中的一条位图索引记录,根据各所述目标从属性在所述位图字典中的位置和所述位图字典,获取各所述目标从属性对应到所述位图索引记录中的从属性的值;
若各所述目标从属性对应到所述位图索引记录中的从属性的值均为所述预设值,则将所述位图索引记录作为目标位图索引记录。
可选的,如图9所示,本实施例的数据索引装置900,还包括:创建模块905。
创建模块905,用于根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库。
可选的,所述创建模块905具体用于:
根据所述一级索引数据库中的原始数据记录,获取至少一个主属性的值;
针对每个所述主属性的值,获取所述一级索引数据库中与所述主属性的值对应的至少一条原始数据记录;
根据所述主属性的值对应的至少一条原始数据记录,判断所述位图字典中的各所述从属性在所述至少一条原始数据记录中是否存在;
根据判断结果,生成所述主属性的值对应的位图索引记录,将所述位图索引记录存储到二级索引数据库中。
可选的,所述创建模块905还用于:
获取所述一级索引数据库中新增的原始数据记录;
根据所述新增的原始数据记录中的主属性的值,获取所述二级索引数据库中与所述主属性的值对应的位图索引记录;
针对所述位图字典中的每个所述从属性,判断所述新增的原始数据记录中是否存在所述从属性,若是,则将所述位图索引记录中与所述从属性对应的从属性的值设置为所述预设值。
可选的,所述二级索引数据库存储在内存中。
本实施例的数据索引装置,可用于执行上述任一方法实施例中的数据索引方法,其实现原理和技术效果类似,此处不再赘述。
图10为本发明实施例提供的数据索引设备的硬件结构示意图,如图10所示,本实施例提供的数据索引设备1000,包括:至少一个处理器1001和存储器1002。其中,处理器1001、存储器1002通过总线1003连接。
在具体实现过程中,至少一个处理器1001执行所述存储器1002存储的计算机执行指令,使得至少一个处理器1001执行如上数据索引设备1000所执行的数据索引方法。
处理器1001的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图10所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上任一方法实施例中的数据索引方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种数据索引方法,其特征在于,包括:
根据查询条件,获取所述查询条件对应的至少一个查询属性;
根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储;所述目标位图索引记录中与所述查询属性匹配的目标从属性的值为预设值,所述预设值用于指示一级索引数据库中与所述目标位图索引记录对应的原始数据记录中存在所述目标从属性;
根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录;
根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值,包括:
根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述位图字典中包括至少一个从属性,所述位图字典中的所述至少一个从属性与所述位图索引记录中的所述至少一个从属性的值按预设顺序依次对应。
3.根据权利要求2所述的方法,其特征在于,所述根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值,包括:
根据位图字典,获取各所述查询属性匹配的目标从属性,以及各所述目标从属性在所述位图字典中的位置;
依次获取所述二级索引数据库中的一条位图索引记录,根据各所述目标从属性在所述位图字典中的位置和所述位图字典,获取各所述目标从属性对应到所述位图索引记录中的从属性的值;
若各所述目标从属性对应到所述位图索引记录中的从属性的值均为所述预设值,则将所述位图索引记录作为目标位图索引记录。
4.根据权利要求2所述的方法,其特征在于,所述根据所述至少一个查询属性和位图字典,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值之前,还包括:
根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库。
5.根据权利要求4所述的方法,其特征在于,所述根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库,包括:
根据所述一级索引数据库中的原始数据记录,获取至少一个主属性的值;
针对每个所述主属性的值,获取所述一级索引数据库中与所述主属性的值对应的至少一条原始数据记录;
根据所述主属性的值对应的至少一条原始数据记录,判断所述位图字典中的各所述从属性在所述至少一条原始数据记录中是否存在;
根据判断结果,生成所述主属性的值对应的位图索引记录,将所述位图索引记录存储到二级索引数据库中。
6.根据权利要求4所述的方法,其特征在于,所述根据所述一级索引数据库中的原始数据记录和所述位图字典,创建所述二级索引数据库之后,还包括:
获取所述一级索引数据库中新增的原始数据记录;
根据所述新增的原始数据记录中的主属性的值,获取所述二级索引数据库中与所述主属性的值对应的位图索引记录;
针对所述位图字典中的每个所述从属性,判断所述新增的原始数据记录中是否存在所述从属性,若是,则将所述位图索引记录中与所述从属性对应的从属性的值设置为所述预设值。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述二级索引数据库存储在内存中。
8.一种数据索引装置,其特征在于,包括:
获取模块,用于根据查询条件,获取所述查询条件对应的至少一个查询属性;
第一查询模块,用于根据所述至少一个查询属性,查询二级索引数据库,获取至少一条目标位图索引记录的主属性的值;其中,所述二级索引数据库中包括至少一条位图索引记录,各所述位图索引记录中包括主属性的值和至少一个从属性的值,所述至少一个从属性的值按照比特位存储;所述目标位图索引记录中与所述查询属性匹配的目标从属性的值为预设值,所述预设值用于指示一级索引数据库中与所述目标位图索引记录对应的原始数据记录中存在所述目标从属性;
第二查询模块,用于根据各所述目标位图索引记录的主属性的值,查询所述一级索引数据库,获取各所述目标位图索引记录对应的至少一条原始数据记录;
处理模块,用于根据所述查询条件和所述至少一条原始数据记录,获取与所述查询条件对应的查询结果。
9.一种数据索引设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的数据索引方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的数据索引方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811009286.4A CN109086456B (zh) | 2018-08-31 | 2018-08-31 | 数据索引方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811009286.4A CN109086456B (zh) | 2018-08-31 | 2018-08-31 | 数据索引方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109086456A true CN109086456A (zh) | 2018-12-25 |
CN109086456B CN109086456B (zh) | 2020-11-03 |
Family
ID=64840558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811009286.4A Active CN109086456B (zh) | 2018-08-31 | 2018-08-31 | 数据索引方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109086456B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297832A (zh) * | 2019-07-01 | 2019-10-01 | 联想(北京)有限公司 | 一种时序数据存储方法及装置、时序数据查询方法及装置 |
CN110321363A (zh) * | 2019-04-19 | 2019-10-11 | 中国工商银行股份有限公司 | 数据检索方法及装置 |
CN112214521A (zh) * | 2020-11-20 | 2021-01-12 | 深圳前海微众银行股份有限公司 | 规则查询方法、装置、设备及计算机存储介质 |
CN114185934A (zh) * | 2021-12-15 | 2022-03-15 | 广州辰创科技发展有限公司 | 一种基于天盾数据库列存储的索引及查询方法及系统 |
CN115017875A (zh) * | 2022-08-09 | 2022-09-06 | 建信金融科技有限责任公司 | 企业信息处理方法、装置、系统、设备、介质和程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216518A1 (en) * | 2004-03-26 | 2005-09-29 | Oracle International Corporation | Database management system with persistent, user-accessible bitmap values |
CN101133388A (zh) * | 2005-01-25 | 2008-02-27 | 谷歌公司 | 基于多索引的信息检索系统 |
CN104361113A (zh) * | 2014-12-01 | 2015-02-18 | 中国人民大学 | 一种内存-闪存混合存储模式下的olap查询优化方法 |
CN105354255A (zh) * | 2015-10-21 | 2016-02-24 | 华为技术有限公司 | 数据查询方法和装置 |
CN105740405A (zh) * | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 存储数据的方法和装置 |
CN108427748A (zh) * | 2018-03-12 | 2018-08-21 | 北京奇艺世纪科技有限公司 | 分布式数据库二级索引查询方法、装置以及服务器 |
-
2018
- 2018-08-31 CN CN201811009286.4A patent/CN109086456B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216518A1 (en) * | 2004-03-26 | 2005-09-29 | Oracle International Corporation | Database management system with persistent, user-accessible bitmap values |
CN101133388A (zh) * | 2005-01-25 | 2008-02-27 | 谷歌公司 | 基于多索引的信息检索系统 |
CN104361113A (zh) * | 2014-12-01 | 2015-02-18 | 中国人民大学 | 一种内存-闪存混合存储模式下的olap查询优化方法 |
CN105354255A (zh) * | 2015-10-21 | 2016-02-24 | 华为技术有限公司 | 数据查询方法和装置 |
CN105740405A (zh) * | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 存储数据的方法和装置 |
CN108427748A (zh) * | 2018-03-12 | 2018-08-21 | 北京奇艺世纪科技有限公司 | 分布式数据库二级索引查询方法、装置以及服务器 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321363A (zh) * | 2019-04-19 | 2019-10-11 | 中国工商银行股份有限公司 | 数据检索方法及装置 |
CN110297832A (zh) * | 2019-07-01 | 2019-10-01 | 联想(北京)有限公司 | 一种时序数据存储方法及装置、时序数据查询方法及装置 |
CN110297832B (zh) * | 2019-07-01 | 2021-12-24 | 联想(北京)有限公司 | 一种时序数据存储方法及装置、时序数据查询方法及装置 |
CN112214521A (zh) * | 2020-11-20 | 2021-01-12 | 深圳前海微众银行股份有限公司 | 规则查询方法、装置、设备及计算机存储介质 |
CN114185934A (zh) * | 2021-12-15 | 2022-03-15 | 广州辰创科技发展有限公司 | 一种基于天盾数据库列存储的索引及查询方法及系统 |
CN115017875A (zh) * | 2022-08-09 | 2022-09-06 | 建信金融科技有限责任公司 | 企业信息处理方法、装置、系统、设备、介质和程序产品 |
CN115017875B (zh) * | 2022-08-09 | 2022-11-25 | 建信金融科技有限责任公司 | 企业信息处理方法、装置、系统、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109086456B (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086456A (zh) | 数据索引方法及装置 | |
CN107103032B (zh) | 一种分布式环境下避免全局排序的海量数据分页查询方法 | |
EP3236365A1 (en) | Data query method and device | |
US20130091143A1 (en) | Bigram suggestions | |
CN108427736B (zh) | 一种用于查询数据的方法 | |
CN112074818A (zh) | 用于能够在区块链网络中访问过去的交易的方法及节点 | |
CN110399096B (zh) | 分布式文件系统元数据缓存重删的方法、装置以及设备 | |
CN109271428A (zh) | 数据抽取方法及基于地理信息的数据展示方法 | |
CN106970958A (zh) | 一种流文件的查询与存储方法和装置 | |
CN107451204B (zh) | 一种数据查询方法、装置及设备 | |
CN110569224A (zh) | 一种数据去重方法及装置 | |
CN106649800A (zh) | 一种基于Solr的中文检索方法 | |
CN114064662B (zh) | 查询数据的方法、装置、电子设备及介质 | |
CN114840487A (zh) | 分布式文件系统的元数据管理方法和装置 | |
CN114138181A (zh) | 一种绑定池放置组选主的方法、装置、设备及可读介质 | |
CN107038202B (zh) | 数据处理方法、装置及设备、可读介质 | |
CN110442585A (zh) | 数据更新方法、数据更新装置、计算机设备及存储介质 | |
CN108038253B (zh) | 一种日志查询的处理方法及装置 | |
CN106796588B (zh) | 索引表的更新方法和设备 | |
CN105868023B (zh) | 一种分布式系统中的数据处理方法及计算节点 | |
CN113742332A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN109299106B (zh) | 数据查询方法和装置 | |
CN109491740B (zh) | 一种基于上下文背景信息的自动多版本漏斗页面选优方法 | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN114443742A (zh) | 一种k线图的展示方法、装置和设备 |
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 |