一种数据查询方法及装置的制造方法

文档序号:8258599阅读:310来源:国知局
一种数据查询方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据处理领域,尤其涉及一种数据查询方法及装置。
【背景技术】
[0002]在当今社会,随着信息通信技术的发展,我们已离不开由网络来发送/接收各种数据。这就需要服务器来处理巨大的数据量,也就是现阶段人们最关注的大数据处理。那么,如何在大数据集合的数据库中进行相关数据查询已成为人们研究的热点问题。
[0003]通常在例如电子邮箱账号的查询请求中,其账号服务的每秒查询速率(QPS,QueryPer Second)—般都比较高,并且还会接到大量针对不存在的账号的查询请求。比如,已经删除的账号或者一些猜测账号的系统的攻击性访问。其中,已经存在的账号可以通过网络业务层的高速缓冲存储器提高网络服务的每秒查询速率。但是,对于不存在的账号查询请求,其在网络业务层是找不到的,必须要通过服务器的数据库查询后才能确认。因此,这类无效查询访问会增加网络服务器的查询、传输等压力,从而影响用户正常应用。
[0004]而现有技术中为解决网络服务器查询、传输等压力和提高网络服务器的性能,提出了一种解决方案,通过在集群服务器中设置布隆过滤器(bloomfilter)来减小网络服务器查询、传输数据等带来的压力。具体而言,现有技术中通过集群技术把多台服务器集中成类似一台服务器控制工作,从而提高其稳定性和数据快速处理能力。由于集群的存储空间也是有限的,所以,当集群中的数据记录比较多时,布隆过滤器占用的内存就会很大,甚至会超过服务器本身的内存。
[0005]因此,现有技术中提出了另一种解决方案,将一个大集群拆分成多个小集群,在小集群内部构建自己的布隆过滤器,并通过分发器把不同的查询数据分发到对应的集群上。即,固定的用户被固定的小集群服务。然而,采用这种方法当集群扩大时,用户的数据要被重新分配,需要重构布隆过滤器,这样一来就会增加整个服务器系统的应用成本。

【发明内容】

[0006]本发明的主要目的在于提供一种数据查询方法及装置,以解决现有技术存在的上述问题,其中:
[0007]根据本申请的一个方面的实施例,提出一种数据查询方法,包括:接收针对查询数据的查询请求;基于预定规则确定所述查询数据对应的标识;根据标识从预先建立的过滤表中获取所述查询数据对应的过滤子表,其中过滤表包含多个过滤子表,过滤子表中包含数据库中的一个或多个数据的摘要信息;提取查询数据的摘要信息;将查询数据的摘要信息与过滤子表中的摘要信息进行匹配;以及当查询数据的摘要信息与过滤子表中的摘要信息相匹配时,从数据库获取查询数据。
[0008]根据本申请的另一方面的实施例,提出一种数据查询装置,包括:接收模块,用于接收针对查询数据的查询请求;过滤模块,用于基于预定规则确定查询数据对应的标识;获取模块,用于根据标识从预先建立的过滤表中获取查询数据对应的过滤子表,其中过滤表包含多个过滤子表,过滤子表中包含数据库中的一个或多个数据的摘要信息;提取模块,用于提取查询数据的摘要信息;匹配模块,用于将查询数据的摘要信息与过滤子表中的摘要信息进行匹配;以及查询模块,用于当查询数据的摘要信息与过滤子表中的摘要信息相匹配时,从数据库获取查询数据。
[0009]与现有技术相比,根据本申请的技术方案,通过根据服务器的单机内存和数据库的容量,对数据库中的数据预先建立包含多个过滤子表(布隆过滤器)的过滤表,将数据库中的数据按照预定规则分配给相应的过滤子表;针对查询数据,只需要按照预定规则确定出该查询数据对应的过滤子表,然后调用该占用内存较小的过滤子表,就可以确定查询数据是否存在于数据库中。当有新数据存入数据库时,无需再对数据库中的所有数据进行重新分配和重构过滤表,只需要按照预定规则将新数据存储到预先建立的相应过滤子表中即可。因此,使得通过单机内存就能够处理数据库内所有数据的布隆过滤器查询,提高了服务器性能。
[0010]更进一步而言,根据本申请的技术方案,为避免因过滤表的误判所造成的不必要的数据查询过程,当通过过滤表确定查询数据存在于数据库时,进一步通过筛查缓存来确认查询数据是否在数据库中,该筛查缓存中存储有通过过滤表确定其存在于数据库中但从数据库中却无法获取到的数据。由此可以避免不必要的查询资源和时间的耗费,更有效地提高服务器性能以及抵挡恶意的查询访问。
【附图说明】
[0011]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0012]图1示出了根据本申请一个实施例的数据查询方法的流程图;
[0013]图2示出了根据本申请一个实施例的建立过滤表的方法的流程图;
[0014]图3示出了根据本申请一个实施例的确定待处理数据对应的过滤子表的方法的流程图;
[0015]图4示出了根据本申请另一实施例的数据查询方法的流程图;
[0016]图5示出了根据本申请又一实施例的数据查询方法的流程图;
[0017]图6示出了根据本申请再一实施例的数据查询方法的流程图;
[0018]图7示出了用于说明数据分组与过滤子表的对应关系的示意图;以及
[0019]图8示出了根据本申请一个实施例的数据查询装置的结构框图。
【具体实施方式】
[0020]本申请的主要思想就在于,根据服务器的单机内存和数据库的容量,针对一个数据集群(服务器数据库)中的数据,预先构建包含多个过滤子表(布隆过滤器)的过滤表,使得数据库中具有按照预定规则确定的相同标识的数据分配给同一过滤子表,该过滤子表由相应标识来索引;并且针对查询数据,按照预定规则确定该查询数据的标识并根据该标识获取对应索引的过滤子表,以在对数据库进行访问之前确定查询数据是否存在于数据库中,由此减少服务器对数据库的不必要访问,提高服务器性能,并防止对服务器的攻击性查询访问。
[0021]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0022]参考图1,图1示出了根据本申请一个实施例的数据查询方法的流程图。
[0023]如图1所示,在步骤SlOl处,接收针对查询数据的查询请求。
[0024]具体而言,对于查询数据可以是用户所输入的邮件地址、博客帐号等,或者进入应用系统中系统确认信息、查询应用系统中相关数据资源等。
[0025]接下来,在步骤S102处,基于预定规则确定查询数据对应的标识。
[0026]根据本申请的实施例,查询数据对应的标识,可以是一个或多个数值或是一串字符、图片等。也可以将该标识理解为查询数据所对应的类别。
[0027]根据本申请的实施例,在确定查询数据对应的标识时,所基于的预定规则可以和预先建立过滤表过程中应用的预定规则相同。对于该预定规则,详细说明参见稍后图3的详细描述。
[0028]在步骤S103处,根据查询数据对应的标识从预先建立的过滤表中获取该查询数据对应的过滤子表。
[0029]在本申请实施例中,过滤表可以包含多个过滤子表,过滤子表中可以包含数据库中的一个或多个数据的摘要信息。
[0030]这里需要指出的是,过滤表(即其中的过滤子表)的作用就在于确定查询数据是否存在于数据库中。该步骤的机制就在于,在从数据库获取查询数据之前,先通过过滤表判断一下该查询数据是否存在于数据库中,如果存在,再去数据库中查找并获取;如果不存在,就可以不用再去数据库中进行查找。由此可以提高数据查询效率,避免不必要的资源浪费,提闻系统性能。
[0031]根据本申请的实施例,过滤表中的过滤子表可以是布隆过滤器。但本申请对过滤子表的具体形式并不做任何限制,而是可以通过本领域已知或未来开发的其它任意合适方式来实现,只要其能够用于确定查询数据是否存在于数据库中即可。
[0032]关于过滤表的建立过程可以参见稍后图2的详细描述。
[0033]接下来,在步骤S104处,提取查询数据的摘要信息。
[0034]具体而言,摘要信息可以是指纹信息,也可以是数字签名等可辨别数据身份的信息。根据本申请的实施例,可以通过哈希算法、数据相关的语义提取算法以及其他相关算法来提取数据的摘要信息。应理解到,对于摘要信息的提取,本申请并不限于上述所提出的算法。
[0035]接下来,在步骤S105处,将查询数据的摘要信息与过滤子表中的摘要信息进行匹配。
[0036]具体而言,将在步骤S104提取的查询数据的摘要信息与在步骤S103获取到的过滤子表中的摘要信息进行匹配,以根据匹配结果确定查询数据是否存在于数据库中。如果匹配失败,则可以确定查询数据不在数据库中。如果匹配成功,则可以确定查询数据在数据库中,进入步骤S106。
[0037]在步骤S106处,从数据库获取查询数据。
[0038]具体而言,当查询数据的摘要信息与过滤子表中的摘要信息相匹配时,则服务器搜索数据库以获取查询数据。这里可以通过任意方式从数据库中获取查询数据,本申请对此不作任何限制。
[0039]至此描述了根据本申请一个实施例的数据查询方法。关于其中过滤表的建立过程,下面结合图2进行详细描述。
[0040]参照图2,其中示出了根据本申请一个实施例的预先建立过滤表的方法的流程图。
[0041]如图2所示,在步
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1