键值数据查询的方法和装置的制作方法

文档序号:6364233阅读:173来源:国知局
专利名称:键值数据查询的方法和装置的制作方法
技术领域
本申请涉及互联网数据处理领域,尤其涉及一种键值数据查询的方法和装置。
背景技术
随着网络技术和计算机技术的飞速发展,人们的日常生活中产生着越来越多的数据和信息,如电子消费记录等需要存储和保留,以方便用户查询留档。现有的单机系统对海量数据存储已不能满足要求,对键值数据查询更是力不能及,因此对海量键值数据的有效管理是一个亟需解决的问题。所述键值(Key Value,KV)数据指的是查询请求信息Key和查询结果信息Value。图1为现有技术的单机键值数据批量互查系统的方法流程图。用户向单机键值数据批量互查系统发送批量查询请求信息Key,经过单机键值数据批量互查系统的查询,将查询结果信息Value返回用户。单机键值数据批量互查系统接收到用户的查询请求信息后,(I)若查询请求信息Key是一段文本信息,首先在单机KV系统中查询标志这段文本信息的标识信息(Identity, ID),若查询到标志这段文本信息的ID,则将此标志这段文本信息的ID作为查询结果信息Value返给用户;若查询不到标志这段文本信息的ID,则根据消息摘要算法(Message Digest Algorithm, MD5)或是通用唯一识别码(UniversallyUnique Identifier, UUID)算法把这段文本信息转成标志这段文本信息的ID并保存在单机KV系统中;然后将这个新生成的ID作为查询结果信息Value返给用户。

(2)若查询请求信息是ID,首先在单机KV系统中查询此ID所标志的一段文本信息,若查询到此ID所标志的一段文本信息,则将此ID所标志的一段文本信息作为查询结果信息Value返给用户;若查询不到此ID所标志的一段文本信息,则查询结果信息Value为空,也就是没有匹配的文本信息,然后将此查询结果信息Value发送给用户。其中,消息摘要算法(Message Digest Algorithm,MD5)是把一个任意长度的字节串变换成一定长的大整数。该算法使用的是哈希函数,以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。MD5的结果是128位,4位组成了一个16进制的数字,所以128除以4 = 32个数字,所以MD5有32个字符。标准的UUID格式为:χχχχχχχχ-χχχχ-χχχχ-χχχχ-χχχχχχχχχχχχ(8-4-4-4-12)。每8个字符用相连,这样有4个相连就得到了 UUID,所以UUID是32+4 =36个字符UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。该现有技术的单机键值数据互查系统,将数据都保存在单机系统上,但是当数据量达到百万级别时性能就很难再提升,所以该系统缺乏伸缩性。随着互联网的迅速发展,分布式系统得到了广泛的应用。图2A为现有技术的分布式KV数据逐次互查系统的方法流程图;图2B为现有技术的分布式KV数据逐次互查系统架构示意图;用户向分布式键值数据逐次查询系统发送批量查询请求信息Key,经过分布式键值数据逐次查询系统的查询,将查询结果信息Value返回用户。分布式键值数据逐次查询系统接收到用户的查询请求信息Key后,(I)查询请求的信息Key是一段文本信息,根据映射规则来确定将Key映射到分布式KV系统中对应的服务器。首先在分布式KV系统中对应的服务器上查询标志这段文本信息的ID,若查询到标志这段文本信息的ID,则将此标志这段文本信息的ID作为查询结果Value返给用户;若查询不到标志这段文本信息的ID,则在分布式数据库系统中查询标志这段文本信息的ID,若查询到标志这段文本信息的ID,则将此标志这段文本信息的ID作为查询结果Value返给用户;若查询不到标志这段文本信息的ID,则根据MD5或UUID算法把这段文本转成标志这段文本的ID信息并保存在分布式数据库系统中,然后将标志这段文本的ID信息作为查询结果Value发送给用户。(2)查询请求的信息Key是ID,首先在分布式KV系统中查询此ID所标志的一段文本信息,若查询到此ID所标志的一段文本信息,则将此ID所标志的一段文本信息作为查询结果Value用户;若查询不到此ID所标志的一段文本信息,则在分布式数据库系统中查询此ID所标志的一段文本信息,若查询到此ID所标志的一段文本信息,则将此ID所标志的一段文本信息作为查询结果Value用户;若查询不到此ID所标志的一段文本信息,则查询结果Value为空,也就是没有匹配的文本,然后将此查询结果Value返给用户。

其中,到分布式KV系统或到分布式数据库系统去查询都需要建立连接,这种连接的创建和销毁在技术是很耗成本的。现有技术中采用的是“连接池”技术,“连接池”用来缓存已经创建的可用连接的集合,当需要时直接从这个集合中去取。同时为了避免并发情况下一个连接被多个客户端取到,要用“锁”来保持同步,;同理,每次用完要返回连接也要用“锁”来同步。其中,“锁”的功能是独占连接池,查看该连接池的最新情况,其他客户端只能等到该“锁”释放后,才可以得到该“锁”,从而从连接池中取得连接。这种采用有“锁”的连接池技术,“锁”对系统性能有较大影响,使得系统的响应速度很慢,另一个方面是如果忘了返回对象容易造成“内存泄露”。其中,所述“内存泄露”是指被借用的连接没有归还,不但导致该连接不能被其他请求使用而且还一直占用内存。该现有技术的分布式键值数据逐次查询方法的缺点是:(I)采用消息摘要算法(Message Digest Algorithm, MD5)或是通用唯一识别码(Universally Unique Identifier, UUID)作为 ID,使得 ID 的长度太长了,MD5 要用 32 个字符,UUID要用36个字符,所保存的文本信息可能还没有ID长,这样浪费了存储空间;(2)采用MD5或UUID算法产生的ID重复概率达到很低,虽然概率很低,但重复的概率还是有的,本身还是不能保证唯一性;(3)所有的查询都是逐次查询的,特别依赖于一次请求的数量,有可能会出现响应很慢的场景,这对于关键应用是不允许的。

发明内容
本申请的目的是,提供一种键值数据查询的方法和装置。该方法和装置采用白名单保证了生成标识信息ID的唯一性,采用合并查询和无锁连接池使得处理的数据量有很大的增加以及响应时间有很大提闻。为实现上述目的,本申请提供了一种键值数据查询的方法,所述方法包括:接收携带多个查询请求信息的键值数据,所述查询请求信息为第一信息;根据所述键值数据中携带的所述第一信息查询白名单;当确定所述白名单中没有查询到所述第一信息,则将所述第一信息转换为第一标识信息,并确定多个所述第一标识信息的键值服务器;将确定为同一个键值服务器的多个所述第一标识信息合并,并向所述键值服务器查询合并的多个所述第一标识信息;当确定所述键值服务器中查询到所述第一标识信息,所述第一标识信息对应的信息为第二信息,并且所述第二信 息与所述第一信息不同,则将所述第一信息转换为第二标识信息,并将所述第一信息和所述第二标识信息存入白名单,所述第二标识信息为所述第一信息的查询结果信息;发送携带多个所述查询结果信息的键值数据。本申请还提供了一种键值数据查询的方法,所述方法包括:接收携带多个查询请求信息的键值数据,所述查询请求信息为查询请求标识信息;根据所述键值数据中携带的所述查询请求标识信息查询白名单;当确定所述白名单中没有查询到所述查询请求标识信息,则确定所述查询请求标识信息的键值服务器;将同一个所述键值服务器的多个所述查询请求标识信息合并,并向所述键值服务器查询合并的多个所述查询请求标识信息;当确定所述键值服务器中查询到所述查询请求标识信息,则所述查询请求标识信息对应的信息为所述查询请求标识信息的查询结果信息;发送携带多个所述查询结果信息的键值数据。相应地,本申请还提供一种键值数据查询的装置,所述装置包括:接收单元,用于接收携带多个查询请求信息的键值数据,所述查询请求信息为第一信息;白名单查询单元,用于根据所述键值数据中携带的所述第一信息查询白名单;第一标识信息单元,用于当确定所述白名单中没有查询到所述第一信息,则将多个所述第一信息生成与多个所述第一信息相对应的多个第一标识信息,并确定多个所述第一标识信息的键值服务器;合并单兀,用于将确定为同一个键值服务器的多个所述第一标识信息合并,并向所述键值服务器查询合并的多个所述第一标识信息;键值服务器查询单元,用于在键值服务器中查询合并的多个所述第一标识信息;第二标识信息单元,用于当确定所述键值服务器中或者数据库中查询到所述第一标识信息,所述第一标识信息对应的信息为第二信息,并且所述第二信息与所述第一信息不同,将所述第一信息转换为第二标识信息,所述第二标识信息为所述第一信息的查询结果信息;保存单元,用于将所述第一信息和所述第二标识信息存入白名单中;发送单元,用于发送携带多个所述查询结果信息的键值数据。相应地,本申请还提供一种键值数据查询的装置,所述装置包括:接收单元,用于接收携带多个查询请求信息的键值数据,所述查询请求信息为查询请求标识信息;白名单查询单元,用于根据所述键值数据中携带的所述查询请求标识信息查询白名单; 合并单元,用于当确定所述白名单中没有查询到所述查询请求标识信息,则确定所述查询请求标识信息的键值服务器,将同一个所述键值服务器的多个所述查询请求标识信息合并,并向所述键值服务器查询合并的多个所述查询请求标识信息;键值服务器查询单元,用于在键值服务器中查询合并的多个所述查询请求标识信息,当确定所述键值服务器中查询到所述查询请求标识信息,则所述查询请求标识信息对应的信息为所述查询请求信息的查询结果信息;发送单元,用于发送携带多个所述查询结果信息的键值数据。因此,本申请实现了对海量键值数据进行高速批量查询,采用白名单保证了生成标识信息ID的唯一性并采用合并查询请求信息和无锁连接池使得处理的数据量有很大的增加以及响应时间有很大提高。


图1为现有技术的单机键值数据批量互查系统的方法流程图;图2A为现有技术的分布式键值数据逐次互查系统的方法流程图;图2B为现有技术的分布式键值数据逐次互查系统架构示意图;图3为本申请实施例键值数据查询方法应用场景示意图;图4为本申请实施例公开的一键值数据查询方法的流程图;图5为本申请实施例键值数据查询方法合并所述第一标识信息的示意图;图6为本申请实施例公开的另一键值数据查询方法的流程图;图7为本申请实施例另一键值数据查询方法合并所述查询请求标识信息示意图;图8为本申请实施例公开的一键值数据查询装置示意图;图9为本申请实施例公开的另一键值数据查询装置示意图。
具体实施例方式下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。本申请基于分布式结构利用白名单保证了生成标识信息ID的唯一性,以及将用户发起的多个指向同一个键值服务器的查询请求信息进行合并,从无锁连接池中取得连接,并行发送到键值服务器或数据库中查询,从而实现了高速的键值数据查询。其中,键值(Key Value, KV)数据指的是查询请求信息Key和查询结果信息Value。图3为本申请实施例键值数据查询方法应用场景示意图。该应用场景包括:海量键值数据查询系统、分布式键值系统,分布式数据库系统。其中,分布式键值系统中包括η个键值服务器。海量键值数据查询系统用于接收携带多个查询请求信息的键值数据,并根据查询请求信息查询分布式键值系统和分布式数据库系统。其中,查询请求信息不限于使用文本信息这种类型,还包括其他类型的查询请求信息,比如图片信息、视频信息等;同时也不只限于使用标志文本信息的ID,还包括标志其他类型查询请求信息的ID。分布式键值系统用于保存查询请求信息以及相应的查询结果信息,同时接收海量键值数据查询系统的查询请求信息,并将查询结果信息返回海量键值数据查询系统。分布式数据库系统也用于保存查询请求信息以及相应的查询结果信息,同时接收海量键值数据查询系统的查询请求信息,并将查询结果信息返回海量键值数据查询系统。其中,根据查询请求信息查询分布式键值系统没有统一的界面,分布式键值系统的查询速度很快。根据查询请求信息查询分布式数据库系统有统一的界面,即分布式数据库管理界面,分布式数据库系统查询速度比较慢。图4为本申请实施例公开的一键值数据查询方法的流程图,如图所示,本实施例包括如下步骤:具体实现过程如下:步骤401:接收携带多个查询请求信息的键值数据。具体地,接收用户发送来的携带多个查询请求信息的键值数据,查询请求信息为第一信息。其中,第一信息在本申请实施例中为文本信息,在此称为第一文本信息。但是,第一信息并不限于使用文本信息这种类型,还包括其他类型的查询请求信息,比如图片信息、视频信息等。步骤402:在白名单中查询键值数据中携带的第一文本信息并判断是否查到第一文本信息。具体地,所述白名单用于保存产生唯一性冲突的第一信息以及标志第一信息的ID。当将第一信息保存到指定键值服务器或数据库时,对同一个键值服务器或数据库按照ID建唯一性约束,这样不同的第一信息产生了同样的ID会落在同一个键值服务器或数据库中,从而发生了唯一性冲突。在本申请实施例中,对于产生唯一性冲突的第一信息,采用调用自增长ID系统获取一个新的ID,并将该ID与产生唯一性冲突的第一信息保存到白名单中。根据键值数据中携带的第一文本信息查询白名单。在白名单中查询第一文本信息时会出现两种查询结果,若查到第一文本信息,则到步骤403,若查不到第一文本信息,则到步骤404。步骤403:将第一文本信息对应的标识信息ID返给用户。具体地,所述白名单用于保存产生唯一性冲突的第一信息以及标志第一信息的ID。当确定白名单中查询到第一文本信息,则获取第一文本信息对应的标识信息ID为查询结果信息,该标识信息ID用来标志第一信息,并将携带多个查询结果信息的键值数据发送给用户。所述第一信息可以 为文本信息、图片信息或视频信息等类型的信息,比如电子商务网站提供了商品交易的平台,商品的信息有些是相同的,以衣服为例都有颜色、尺寸、面料这3种属性,不管是裙子、外套都要写这些属性,如果衣服有相同的信息用同一个标识信息ID来表示可以降低容量、快速找到相同特征的服饰,所以系统是以标识信息ID来保存这些信息的。当用户查看详细信息时,要根据标识信息ID把具体的信息(比如上述的颜色、尺寸、面料)再显示出来。步骤404:将第一文本信息转换成第一标识信息。具体地,当确定白名单中没有查询到第一文本信息,则将第一文本信息转换为第一标识信息,并确定多个第一标识信息的键值服务器。第一标识信息为11位标识信息ID,该11位ID标识信息用来标志第一文本信息。其中,将第一文本信息转换为第一标识信息的具体过程如下:(I)将第一文本信息按照消息摘要算法(Message Digest Algorithm, MD5)算法生成一个128位散列值,共16个字节。(2)在16个字节中,取其中的8个字节共64位,然后再取64位中的60位,最后将该60位分成10段,每6位的数字作为字母表的索引取得特定字符,依次进行获得10位的标识信息ID。其中,字母表包括英文字符A-Z,a-z,数字0-9,其他字符+和-,共64个字符。(3) 10位标识信息ID+第一标志符=第一标识信息,也就是说第一标识信息是10位标识信息ID与第一标志符之和。其中,第一标志符是自定义的,表明第一标识信息是需要存入键值服务器或者数据库的信息。步骤405:将确定为同一个键值服务器的多个第一标识信息合并,并向键值服务器查询合并的多个第一标识信息。

具体过程如下:(I)根据映射规则确定多个第一标识信息的键值服务器,并将确定为同一个键值服务器的多个第一标识信息合并,如图5所示,为本申请实施例键值数据查询方法合并第一标识信息的示意图。其中,第一标识信息(I)映射到键值服务器1,第一标识信息(2)映射到键值服务器I,...,第一标识信息(m)映射到键值服务器I,由此可见第一标识信息(I)、第一标
识信息(2).....第一标识信息(m)都映射到键值服务器1,所以将映射到键值服务器I的
用户查询请求合并成同一个查询请求即用户查询请求(第一标识信息(I)、第一标识信息
(2).....第一标识信息(m))映射到键值服务器I。同理,第一标识信息(η)映射到键值服
务η,...,第一标识信息(ζ)映射到键值服务器η,所以将映射到键值服务器η的用户查询请求合并成同一个查询请求即用户查询请求(第一标识信息(η)、...、第一标识信息(Z))映射到键值服务器η。还有,根据第一标识信息确定键值服务器的映射规则是采用Mod取余数算法或者一致性哈希Hash算法。该映射规则用于指定将第一标识信息保存到KV系统中哪一个键值服务器上。取余数Mod算法:将第一标识信息除以服务器的数量η得到的余数,这个余数表示提供服务的键值服务器的编号。一致性Hash算法:首先求出每个服务器节点的哈希Hash值,并将其配置到一个0-232圆环区间上(如果服务器节点的数量比较少,那么一个服务器节点在环上生成多个映射点即虚拟节点来增加数量)。其次求出所需要存储的第一文本信息的第一标识信息,也将其配置到这个圆环上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务节点上。如果超过232仍然找不到服务器节点,就会保存到第一个服务器节点上。一致性哈希算法最大程度的避免了文本信息在服务节点列表上的重新分布,其他附带的改进就是有的一致性哈希算法还增加了虚拟服务器节点的方法,也就是一个服务器节点在环上有多个映射点,这样就能抑制分布不均匀,最大限度地减小服务节点增减时的缓存重新分布。(2)从无锁连接池取得连接。无锁连接池为取连接的合并的多个第一标识信息分配编号,编号标识连接在集合中的索引位置;索引位置的变化通过原子变量更新,如果连接不归还则强制断开连接。具体地,该无锁连接池是不通过加锁Lock-free这种阻塞的方式来取得的,首先,每一个来取连接的请求都会分配一个“编号”,这个编号是连接在集合中的索引位置;索引位置的变化是通过硬件支持的原子变量(Compare And Set, CAS)来更新,现有的处理器提供了特殊的指令可以自动更新共享数据(提供了原子性的读-写-修改操作),而且能够检测到其他线程的干扰。该连接是基于“有一个保存连接池的数组,所有的存取操作都是原子性的”,所以不需要加锁;然后,建立合并的查询请求与索引位置之间的连接;最后,若建立的连接长时间不归还,则强制断开该连接。该无锁连接池技术不需要保存已被引用的连接,所以即使不归还连接也不会导致“内存泄露”,但归还了后被复用性能会很好。其中,“内存泄露”是特指被借用的连接没有归还,不但导致该连接不能被其他请求使用而且还一直占用内存。(3)将合并的第一标识信息并行发送到键值服务器做查询。步骤406:查询键值服务器并判断是否查询到第一标识信息。具体地,根据多个第一标识信息查询键值服务器。在键值服务器中查询会出现两种查询结果,若查到第一标识信息,则到步骤407,若查不到第一标识信息,则到步骤412。步骤407:将第二文本信息与第一文本信息做比较并判断是否相同。

具体地,在键值服务器上查询到第一标识信息,第一标识信息对应的文本信息为第二文本信息,将第二文本信息与第一文本信息做比较。若第二文本信息与第一文本信息相同,则到步骤408,若第二文本信息与第一文本信息不同,则到步骤409。步骤408:将第一标识信息返给用户。具体地,当确定键值服务器中查询到第一标识信息,并且第二文本信息与第一文本信息相同,则第一标识信息为查询结果信息,并将携带多个查询结果信息的键值数据发送给用户。步骤409:将第一文本信息转换为第二标识信息。具体地,当确定键值服务器中查询到第一标识信息,并且第二文本信息与第一文本信息不同,则将第一文本信 息转换为第二标识信息,该第二标识信息是调用“自增长信息系统”获得的。其中,将第一文本信息转换为第二标识信息的具体过程如下:(I)调用“自增长标识信息系统”获取自增长标识信息。自增长标识信息系统是自增长的,自增长标识信息是“自增长标识信息系统”中的标识信息初始值与一个自定义的自增长值之和。(2)自增长标识信息+第二标志符=第二标识信息,也就是说第二标识信息是自增长标识信息与第二标志符之和。其中,第二标志符是自定义的,表明第二标识信息是需要存入白名单的信息。步骤410:将第二标识信息保存在白名单中。具体地,将第一文本信息和第二标识信息存入白名单。步骤411:将第二标识信息返给用户。具体地,第二标识信息为查询结果信息,并将携带多个查询结果信息的键值数据发送给用户。步骤412:在查询数据库查询第一标识信息并判断是否查到第一标识信息。具体地,当确定键值服务器中没有查询到第一标识信息,则在分布式数据库中查询第一标识信息。根据多个第一标识信息查询数据库。在数据库中查询会出现两种查询结果,若查询到第一标识信息,则到步骤416,若没有查询到第一标识信息,则到步骤413。步骤413:将第一标识信息保存在键值服务器。具体地,当确定数据库中没有查询到第一标识信息,则将第一标识信息和第一文本信息保存到由第一标识信息确定的键值服务器中。步骤414:将第一标识信息保存在数据库。具体地,当确定数据库中没有查询到第一标识信息,则将第一标识信息和第一文本信息保存数据库中。步骤415:将第一标识信息返给用户。
`
具体地,第一标识信息为查询结果信息,并将携带多个查询结果信息的键值数据发送给用户。步骤416:将第三文本信息与第一文本信息比较并判断是否相同。具体地,在数据库上查询到第一标识信息,第一标识信息对应的文本信息为第三文本信息,将第三文本信息与第一文本信息做比较。若第三文本信息与第一文本信息相同,则到步骤417,若第三文本信息与第一文本信息不同,则到步骤418。步骤417:将第一标识信息返给用户。具体地,当确定数据库中查询到第一标识信息,并且第三文本信息与第一文本信息相同,则第一标识信息为查询结果信息,并将携带多个查询结果信息的键值数据发送给用户。步骤418:将第一文本信息转换为第二标识信息。具体地,当确定数据库中查询到第一标识信息,并且第三文本信息与第一文本信息不同,则将第一文本信息转换为第二标识信息,该第二标识信息是调用“自增长标识信息系统”获得的。其中,将第一文本信息转换为第二标识信息的具体过程如下:(I)调用“自增长标识信息系统”获取自增长标识信息。自增长标识信息系统是自增长的,自增长标识信息是“自增长标识信息系统”中的标识信息初始值与一个自定义的自增长值之和。(2)自增长标识信息+第二标志符=第二标识信息,也就是说第二标识信息是自增长标识信息与第二标志符之和。其中,第二标志符是自定义的,表明第二标识信息是需要存入白名单的信息。
步骤419:将第二标识信息保存到白名单中。具体地,将第一文本信息和第二标识信息存入白名单。步骤420:将第二标识信息返给用户。具体地,第二标识信息为查询结果信息,并将携带多个查询结果信息Value的键值数据发送给用户。因此,本申请实施例公开的一键值数据查询方法,接收用户发送来的携带多个查询请求信息Key的键值数据,该查询请求信息为第一文本信息。采用将第一文本信息转为11位字符的第一标识信息,调用自增长系统将第一文本信息转为第二标识信息保存在白名单中,从而保证将第一文本信息生成标识信息ID的唯一性,也保证了查询结果信息的唯一性。将确定为同一个键值服务器的多个第一标识信息合并,采用无锁连接池技术,从无锁连接池中取得连接。与有“锁”连接池技术相比,无锁连接池技术大幅度降低取连接地成本,提高了并发取连接的性能,加快了该查询方法的查询速度。值得指出的,采用将第一文本信息转为11位字符的第一标识信息,这样能够保证不同的第一文本信息生成相同的第一标识信息的概率非常低,只有当保存的数据量达到了I 3亿时才可能发生第一次重复;若出现了不同的第一文本信息生成相同的第一标识信息的情况,采用调用自增长系统将第一文本信息转为第二标识信息保存在白名单中,从而保证了查询结果信息的唯一性,使得在百亿级别数据量的应用场景下用11个字符能保证生成唯一'I"生的标识信息ID。图6为本申请实 施例公开的另一键值数据查询方法的流程图。具体实现过程如下:步骤601:接收携带多个查询请求信息的键值数据。具体地,接收用户发送来的携带多个查询请求信息的键值数据,查询请求信息为查询请求标识信息ID。其中,该查询请求标识信息ID在本申请实施例中为标志文本信息的ID。但是,查询请求信息并不限于使用标志文本信息的ID,还包括标志其他类型查询请求信息的ID,比如标志图片信息、视频信息等查询请求信息的ID。步骤602:根据键值数据中携带的查询请求标识信息查询白名单并判断是否查到查询请求标识信息。具体地,所述白名单用于保存产生唯一性冲突的第一信息以及标志第一信息的ID0其中,第一信息与标志第一信息的ID是对应的。根据键值数据中携带的查询请求标识信息查询白名单,并在标志第一信息的ID中查找查询请求标识信息,最后会出现两种查询结果,若查到查询请求标识信息,则到步骤607,若没有查询到查询请求标识信息,则到步骤603。步骤603:将确定为同一个键值服务器的多个查询请求标识信息合并,并向键值服务器查询合并的多个查询请求标识信息。具体过程如下:(I)根据映射规则确定多个查询请求标识信息的键值服务器,并将确定为同一个键值服务器的多个查询请求标识信息合并,如图7所示,为本申请实施例键值数据查询方法合并查询请求标识信息的示意图。其中,查询请求标识信息⑴映射到键值服务器1,查询请求标识信息⑵映射到键值服务器1,...,查询请求标识信息(m)映射到键值服务器1,由此可见查询请求标识信
息(I)、查询请求标识信息(2).....查询请求标识信息(m)都映射到键值服务器1,所以将
映射到键值服务器I的用户查询请求合并成同一个查询请求即用户查询请求(查询请求标
识信息(I)、查询请求标识信息(2).....查询请求标识信息(m))映射到键值服务器I。同
理,查询请求标识信息(η)映射到键值服务η,...,查询请求标识信息(ζ)映射到键值服务器η,所以将映射到键值服务器η的用户查询请求合并成同一个查询请求即用户查询请求(查询请求标识信息(η).....查询请求标识信息(Z))映射到键值服务器η。还有,根据查询请求标识信息确定键值服务器的映射规则是采用Mod取余数算法或者一致性哈希Hash算法。该映射规则用于指定将查询请求标识信息保存到键值系统中哪一个键值服务器上。取余数Mod算法:将查询请求标识信息除以服务器的数量η得到的余数,这个余数表示提供服务的键值服务器的编号。一致性Hash算法:首先求出每个服务器节点的哈希Hash值,并将其配置到一个0-232圆环区间上(如果服务器节点的数量比较少,那么一个服务器节点在环上生成多个映射点即虚拟节点来增加数量)。其次将查询请求标识信息也将其配置到这个圆环上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务节点上。如果超过232仍然找不到服务器节点,就会保存到第一个服务器节点上。一致性哈希算法最大程度的避免了文本在服务节点列表上的重新分布,其他附带的改进就是有的一致性哈希算法还增加了虚拟服务器节点的方法,也就是一个服务器节点在环上有多个映射点,这样就能抑制分布不均匀,最大限度地减小服务节点增减时的缓存重新分布。(2)从无锁连接池取得连接。无锁连接池为取连接的合并的多个查询请求标识信息分配编号,编号标识连接·在集合中的索引位置;索引位置的变化通过原子变量更新,如果连接不归还则强制断开连接。具体地,该无锁连接池是不通过加锁Lock-free这种阻塞的方式来取得的,首先,每一个来取连接的请求都会分配一个“编号”,这个编号是连接在集合中的索引位置;索引位置的变化是通过硬件支持的原子变量(Compare And Set, CAS)来更新,现有的处理器提供了特殊的指令可以自动更新共享数据(提供了原子性的读-写-修改操作),而且能够检测到其他线程的干扰。该连接是基于“有一个保存连接池的数组,所有的存取操作都是原子性的”,所以不需要加锁;然后,建立合并的查询请求与索引位置之间的连接;最后,若建立的连接长时间不归还,则强制断开该连接。该无锁连接池技术不需要保存已被引用的连接,所以即使不归还连接也不会导致“内存泄露”,但归还了后被复用性能会很好。其中,“内存泄露”是特指被借用的连接没有归还,不但导致该连接不能被其他请求使用而且还一直占用内存。(3)将合并的查询请求标识信息并行发送到键值服务器做查询。步骤604:查询键值服务器并判断是否查到查询请求标识信息。具体地,根据多个查询请求标识信息查询键值服务器。在键值服务器中查询会出现两种查询结果,若查到查询请求标识信息,则到步骤607,若没有查到查询请求标识信息,则到步骤605。步骤605:在查询数据库查询查询请求标识信息并判断是否查到查询请求标识信
肩、O
具体地,当确定键值服务器中没有查询到查询请求标识信息,则在分布式数据库中查询查询请求标识信息。根据多个查询请求标识信息查询数据库。在数据库中查询会出现两种查询结果,若查到查询请求标识信息,则到步骤607,若没有查到查询请求标识信息,则到步骤606。步骤606:将查询结果信息为空信息返给用户。具体地,在分布式数据库中没有查询到查询请求标识信息,则返回用户的查询结果信息是空信息,也就是表明没有查询到匹配的文本信息。步骤607:将查询请求标识信息对应的文本信息返给用户。具体地,在白名单、键值服务器和数据库的任何一个中查询到查询请求标识信息,则将查询请求标识信息对应的文本信息为查询请求信息Key对应的查询结果信息,该文本信息是用户查询请求标识信息所标志的唯一的一段文本信息,并将携带多个查询结果信息的键值数据发送给用户。因此,本申请实施例公开的另一键值数据查询方法,接收携带多个查询请求信息的键值数据,查询请求信息为ID,查询结果信息为文本信息;而本申请实施例公开的一键值数据查询方法中,查询请求信息为文本信息,查询结果信息为唯一的ID。由此可见,本申请实施例公开的两种方法可以实现对查询请求信息的互查。图8为本申请实施例公开的一键值数据查询装置示意图,如图所示,本实施例具体包括:接收单元10、白名单查询单元11、第一标识信息单元12、合并单元13、键值服务器查询单元14、第二标识信息单元15、保存单元16和发送单元17。接收单元10用于接收携带多个查询请求信息的键值数据,所述查询请求信息为第一信息。其中,第一信息在本申请实施例中为文本信息,在此称为第一文本信息。但是,第一信息并不限于使用文本信息这种类型,还包括其他类型的查询请求信息,比如图片信息、视频信息等。白名单查询单元11用于根据键值数据中携带的第一文本信息查询白名单。第一标识信息单元12用于当确定白名单中没有查询到第一文本信息,则将多个第一文本信息生成与多个第一文本信息相对应的多个第一标识信息,并确定多个第一标识信息的键值服务器。合并单兀13用于将确定为同一个键值服务器的多个第一标识信息合并,并向键值服务器查询合并的多个第一标识信息;键值服务器查询单元I 4用于在键值服务器中查询合并的多个第一标识信息。第二标识信息单元15用于当确定键值服务器中或者数据库中查询到第一标识信息,并且第一标识信息对应的文本信息与第一文本信息不同时,将第一文本信息生成第二标识信息。保存单兀16用于将第一文本信息和由第一文本信息生成的第二标识信息存入白名单中。发送单元17用于发送携带多个查询结果信息的键值数据。因此,本申请实 施例公开的一键值数据查询装置,接收用户发送来的携带多个查询请求信息Key的键值数据,该查询请求信息为第一文本信息。采用11位字符将第一文本信息转为第一标识信息,调用自增长系统将第一文本信息转为第二标识信息保存在白名单中,从而保证将第一文本信息生成ID的唯一性,也保证了查询结果信息的唯一性。将确定为同一个键值服务器的多个第一标识信息合并,采用无锁连接池技术,从无锁连接池中取得连接。与有“锁”连接池技术相比,无锁连接池技术大幅度降低取连接地成本,提高了并发取连接的性能,缩短了该装置的响应时间,提高了该装置的查询速度。值得指出的,采用将第一文本信息转为11位字符的第一标识信息,这样能够保证不同的第一文本信息生成相同的第一标识信息的概率非常低,只有当保存的数据量达到了13亿时才可能发生第一次重复;若出现了不同的第一文本信息生成相同的第一标识信息的情况,采用调用自增长系统将第一文本信息转为第二标识信息保存在白名单中,从而保证了该装置的查询结果信息的唯一性,并使得该装置在十亿级别数据量的应用场景下用11个字符能保证生成唯一性的标识信息ID。图9为本申请实施例公开的另一键值数据查询装置示意图如图所示,本实施例具体包括:接收单元10、白名单查询单元11、合并单元12、键值服务器查询单元13和发送单元14。接收单元10用于接收携带多个查询请求信息的键值数据,其中,查询请求信息为查询请求标识信息,该查询请求标识信息在本申请实施例中为标识文本信息的ID。但是,查询请求信息不只限于使用标志文本信息的ID,还包括标志其他类型查询请求信息的ID,比如标志图片信息、视频信息等查询请求信息的ID。白名单查询单元11用于根据键值数据中携带的查询请求标识信息查询白名单。合并单元12用于当确定白名单中没有查询到查询请求标识信息,则确定查询请求标识信息的键值服务器;将同一个键值服务器的多个查询请求标识信息合并,并向键值服务器查询合并的多个查询请求标识信息。键值服务器查询单元I 3用于在键值服务器中查询合并的多个查询请求标识信息;当确定键值服务器中查询到查询请求标识信息,则查询请求标识信息对应的文本信息为查询请求信息对应的查询结果信息。发送单元14用于发送携带多个查询结果信息的键值数据。因此,本申请实施例公开的另一键值数据查询装置,接收携带多个查询请求信息的键值数据,查询请求信息为ID,查询结果信息为文本信息,而本申请实施例公开的一键值数据查询装置,查询请求信息为文本信息,查询结果信息为唯一的ID。由此可见,本申请实施例公开的两种装置可以实现对查询请求信息的互查。总之,本申请实施例公开的键值数据查询的方法和装置实现了对海量键值数据进行高速批量查询,采用白名单保证了生成ID的唯一性并采用合并查询和无锁连接池使得处理的数据量有很大的增加以及响应时间有很大提高。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。结合本申 请中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。以上所述的具体实施方式
,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而已,并不用于限定本发明的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围 之内。
权利要求
1.一种键值数据的查询方法,其特征在于,所述方法包括: 接收携带多个查询请求信息的键值数据,所述查询请求信息为第一信息; 根据所述键值数据中携带的所述第一信息查询白名单; 当确定所述白名单中没有查询到所述第一信息,则将所述第一信息转换为第一标识信息,并确定多个所述第一标识信息的键值服务器; 将确定为同一个键值服务器的多个所述第一标识信息合并,并向所述键值服务器查询合并的多个所述第一标识信息; 当确定所述键值服务器中查询到所述第一标识信息,所述第一标识信息对应的信息为第二信息,并且所述第二信息与所述第一信息不同,则将所述第一信息转换为第二标识信息,并将所述第一信息和所述第二标识信息存入白名单,所述第二标识信息为所述第一信息的查询结果信息; 发送携带多个所述查询结果信息的键值数据。
2.根据权利要求1所述的键值数据查询的方法,其特征在于,所述根据所述键值数据中携带的所述第一信息查询白名单后还包括: 当确定所述白名单中查询到所述第一信息,则获取所述第一信息对应的标识信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
3.根据权利要求1所述的键值数据查询的方法,其特征在于,所述向所述键值服务器查询合并的多个所述第一标识信息后还包括: 当确定所述键值服务器中查`询到所述第一标识信息,并且所述第一标识信息对应的所述第二信息与所述第一信息相同,则所述第一标识信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
4.根据权利要求1所述的键值数据查询的方法,其特征在于,所述向所述键值服务器查询合并的多个所述第一标识信息后还包括: 当确定所述键值服务器中没有查询到所述第一标识信息,则在分布式数据库中查询所述第一标识信息; 当确定所述数据库中查询到所述第一标识信息,所述第一标识信息对应的信息为第三信息,并且所述第三信息与所述第一信息不同,则将所述第一信息转换为第二标识信息,并将所述第一信息和所述第二标识信息存入白名单,所述第二标识信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
5.根据权利要求4所述的键值数据查询的方法,其特征在于,所述在分布式数据库中查询所述第一标识信息后还包括: 当确定所述数据库中查询到所述第一标识信息,并且所述第一标识信息对应的所述第三信息与所述第一信息相同,所述第一标识信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
6.根据权利要求4所述的键值数据查询的方法,其特征在于,所述在分布式数据库中查询所述第一标识信息后还包括: 当确定所述数据库中没有查询到所述第一标识信息,则将所述第一标识信息和所述第一信息分别保存到由第一标识信息确定的键值服务器和分布式数据库中,所述第一标识信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
7.根据权利要求1所述的键值数据查询的方法,其特征在于,所述第一信息转换为所述第一标识信息具体包括: 将第一信息按照消息摘要算法生成一个128位散列值,共16个字节; 取其中8个字节中的60位分成10段,每6位的数字作为字母表的索引取得特定字符,依次进行获得10位的标识信息; 所述10位的标识信息与所述第一标志符之和组成所述第一标识信息。
8.根据权利要求1所述的键值数据查询的方法,其特征在于,所述第一信息转换为所述第二标识信息具体包括: 调用自增长标识信息系统获取自增长标识信息; 所述自增长标识信息与所述第二标志符之和组成所述第二标识信息。
9.根据权利要求1所述的键值数据查询的方法,其特征在于,所述向所述键值服务器查询合并的多个所述第一标识信息是通过从无锁连接池中获取与所述键值服务器的连接后,在所述连接上向所述键值服务器发起所述查询合并的多个所述第一标识信息中,其中 所述无锁连接池为取连接的合并的多个所述第一标识信息分配编号,所述编号标识所述连接在集合中的索引位置,所述索引位置的变化通过原子变量更新,如果所述连接不归还则强制断开所述连接。·
10.一种键值数据查询的方法,其特征在于,所述方法包括: 接收携带多个查询请求信息的键值数据,所述查询请求信息为查询请求标识信息; 根据所述键值数据中携带的所述查询请求标识信息查询白名单; 当确定所述白名单中没有查询到所述查询请求标识信息,则确定所述查询请求标识信息的键值服务器; 将同一个所述键值服务器的多个所述查询请求标识信息合并,并向所述键值服务器查询合并的多个所述查询请求标识信息; 当确定所述键值服务器中查询到所述查询请求标识信息,则所述查询请求标识信息对应的信息为所述查询请求标识信息的查询结果信息; 发送携带多个所述查询结果信息的键值数据。
11.根据权利要求10所述的键值数据查询的方法,其特征在于,还包括: 当确定所述白名单中查询到所述查询请求标识信息,所述查询请求标识信息对应的信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
12.根据权利要求10所述的键值数据查询的方法,其特征在于,还包括: 当确定所述键值服务器中没有查询到所述查询请求标识信息,则在分布式数据库查询所述查询请求标识信息; 当确定所述数据库中查询到所述查询请求标识信息,所述查询请求标识信息对应的信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
13.根据权利要求12所述的键值数据查询的方法,其特征在于,还包括: 当确定所述数据库中没有查询到所述查询请求标识信息,则空信息为所述查询结果信息; 发送携带多个所述查询结果信息的键值数据。
14.根据权利要求10所述的键值数据查询的方法,其特征在于, 所述向所述键值服务器查询合并的多个所述查询请求标识信息是通过从无锁连接池中获取与所述键值服务器的连接后,在所述连接上向所述键值服务器发起所述查询合并的多个所述查询请求标识信息中,其中 所述无锁连接池为取连接的合并的多个所述查询请求标识信息分配编号,所述编号标识所述连接在集合中的索引位置,所述索引位置的变化通过原子变量更新,若所述连接不归还则强制断开所述连接。
15.一种键值数据查询的装置,其特征在于,所述装置包括: 接收单元,用于接收携带多个查询请求信息的键值数据,所述查询请求信息为第一信息; 白名单查询单元,用于根据所述键值数据中携带的所述第一信息查询白名单; 第一标识信息单元,用于当确定所述白名单中没有查询到所述第一信息,则将多个所述第一信息生成与多个所述第一信息相对应的多个第一标识信息,并确定多个所述第一标识信息的键值服务器; 合并单兀,用于将确定为同一个键值服务器的多个所述第一标识信息合并,并向所述键值服务器查询合并的多个所述第一标识信息; 键值服务器查询单元,用于在键值服务器中查询合并的多个所述第一标识信息; 第二标识信息单元,用于当确定所述键值服务器中或者数据库中查询到所述第一标识信息,所述第一标识信息对应的信息为第二信息,并且所述第二信息与所述第一信息不同,将所述第一信息转换为第二标识信息,所述第二标识信息为所述第一信息的查询结果信息; 保存单元,用于将所述第一信息和所述第二标识信息存入白名单中; 发送单元,用于发送携带多个所述查询结果信息的键值数据。
16.一种键值数据查询的装置,其特征在于,所述装置包括: 接收单元,用于接收携带多个查询请求信息的键值数据,所述查询请求信息为查询请求标识信息; 白名单查询单元,用于根据所述键值数据中携带的所述查询请求标识信息查询白名单; 合并单元,用于当确定所述白名单中没有查询到所述查询请求标识信息,则确定所述查询请求标识信息的键值服务器,将同一个所述键值服务器的多个所述查询请求标识信息合并,并向所述键值服务器查询合并的多个所述查询请求标识信息; 键值服务器查询单元,用于在键值服务器中查询合并的多个所述查询请求标识信息,当确定所述键值服务器中查询到所述查询请求标识信息,则所述查询请求标识信息对应的信息为所述查询请求信息的查询结果信息; 发送单元,用于发送携带多个所述查询结果信息的键值数据。
全文摘要
本申请涉及一种键值数据查询的方法和装置。该方法包括接收携带多个查询请求信息的键值数据;根据第一信息查询白名单;当确定没有查询到第一信息,则将第一信息转换为第一标识信息,并确定多个第一标识信息的键值服务器;将确定为同一个键值服务器的多个第一标识信息合并,并查询键值服务器;当确定查询到第一标识信息,并且第二信息与第一信息不同,则将第一信息转换为第二标识信息,并存入白名单;发送携带多个查询结果信息的键值数据。因此,本申请实现了对海量键值数据进行高速批量查询,采用白名单保证了生成标识信息ID的唯一性并采用合并查询请求信息和无锁连接池使得处理的数据量有很大的增加以及响应时间有很大提高。
文档编号G06F17/30GK103246659SQ20121002486
公开日2013年8月14日 申请日期2012年2月6日 优先权日2012年2月6日
发明者金伟 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1