一种检索键值数据库中键的共同前缀的方法、设备、介质技术

技术编号:20448703 阅读:20 留言:0更新日期:2019-02-27 02:52
本发明专利技术提供一种检索键值数据库中键的共同前缀的方法,包括步骤:根据用户提供的前缀查找键值数据库中第一条包含或大于用户提供的前缀的记录,记为当前记录;当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,若剩余部分中包含用户提供的分隔符,则将剩余部分中第一个用户提供的分隔符的位置至当前记录的开始位置的字符记为第一结果,将其添加至键的共同前缀中;查找第一结果中最后一个字符的下一个字符,用查找到的字符替换第一结果的最后一个字符,得到第二结果,查找键值数据库中第一条前缀包含或大于第二结果的记录,得到新记录和新记录的键。本发明专利技术不用遍历所有键值对,在千万键值对级别场景下有效缩短获取共同前缀的时间。

A Method, Equipment and Media for Retrieving Common Prefixes of Key in Key Value Database

The invention provides a method for retrieving common prefixes of keys in key-value databases, including steps: searching the first record in key-value databases containing or greater than the prefix provided by users and recording it as current record; the keys of current record are composed of prefixes provided by users, separators provided by users and remaining parts, if the remaining part contains user-provided prefixes. Separator, then the position of the first user-provided separator in the remaining part to the beginning of the current record is recorded as the first result, which is added to the common prefix of the key. Find the next character of the last character in the first result, replace the last character of the first result with the found character, and get the second result. Find the first character in the key value database. A prefix contains or greater than the record of the second result, and the key to get the new record and the new record. The invention does not need to traverse all key value pairs, and effectively shortens the time of acquiring common prefixes in tens of millions of key value pair level scenarios.

【技术实现步骤摘要】
一种检索键值数据库中键的共同前缀的方法、设备、介质
本专利技术涉及键值数据库
,尤其涉及一种检索键值数据库中键的共同前缀的方法、设备、介质。
技术介绍
键值数据库是一种使用键值对存储检索和管理数据存储的模型。由于其接口简单,性能高而被广泛应用于
键值数据库的另一个特点是所有的键是有序排列的,以便使用高效的搜索算法检索键值。对象存储是一种根据对象名称获得对象数据的存储产品,被各大云厂商所采用。键值数据库被用来实现对象元数据的存储,以对象名称为键,以对象元数据为值。对象元数据是指对象的创建时间,对象的读写权限,对象数据的存储路径等信息。对象存储可以根据使用者提供的分隔符和前缀获得该前缀下的所有对象,如果前缀之后的部分还存在分隔符,就需要将这些对象聚合成一个共同前缀发送给用户。由于键值数据库接口简单,无法直接根据分隔符计算出所有的共同前缀。现有技术中,采用遍历所有对象,记录出现的所有共同前缀的方法,但键值数据库存储的键值非常多,尤其在云环境中,一个共同前缀下对象可能会有上万个,而且共同前缀的数目非常大,现有算法以一种O(n)的实现方式,随着键值对的增多,检索效率明显下降。
技术实现思路
为了克服现有技术的不足,本专利技术的目的之一在于提供一种检索键值数据库中键的共同前缀的方法,解决了现有技术采用遍历所有对象,记录出现的所有共同前缀的方法造成检索效率低的问题。本专利技术提供一种检索键值数据库中键的共同前缀的方法,包括以下步骤:查找第一条记录,根据用户提供的前缀查找键值数据库中第一条包含或者大于所述用户提供的前缀的记录,记为当前记录;查找共同前缀,若当前记录的键包含所述用户提供的前缀,则所述当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,若所述剩余部分中包含所述用户提供的分隔符,则将所述剩余部分中第一个所述用户提供的分隔符的位置至所述当前记录的开始位置的字符记为第一结果,并将所述第一结果添加至键的共同前缀中;查找新记录和键,查找所述第一结果中最后一个字符的下一个字符,并用查找到的字符替换所述第一结果的最后一个字符,得到第二结果,查找键值数据库中第一条前缀包含或者大于所述第二结果的记录,得到新记录和所述新记录的键,将所述新记录更新为当前记录,并跳转至所述查找共同前缀步骤。进一步地,在所述查找第一条记录步骤和所述查找共同前缀步骤之间还包括判断当前记录的键步骤,若当前记录的键不包含所述用户提供的前缀,则退出并返回键的共同前缀和所述用户提供的前缀下的对象。进一步地,所述查找共同前缀步骤中,若所述剩余部分中不包含所述用户提供的分隔符,则将所述当前记录的键添加至所述用户提供的前缀下的对象,获取下一条记录并跳转至所述判断当前记录的键步骤。进一步地,所述查找新记录和键步骤中,将所述新记录更新为当前记录之后,先跳转至所述判断当前记录的键步骤。进一步地,所述查找第一条记录步骤中,通过二分查找算法查找键值数据库中第一条包含或者大于所述用户提供的前缀的记录。进一步地,所述查找新记录和键步骤中,通过二分查找算法查找键值数据库中第一条前缀包含或者大于所述第二结果的记录。一种电子设备,包括:处理器;存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行上述一种检索键值数据库中键的共同前缀的方法。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行上述一种检索键值数据库中键的共同前缀的方法。相比现有技术,本专利技术的有益效果在于:本专利技术提供一种检索键值数据库中键的共同前缀的方法,包括以下步骤:查找第一条记录,根据用户提供的前缀查找键值数据库中第一条包含或者大于用户提供的前缀的记录,记为当前记录;查找共同前缀,若当前记录的键包含用户提供的前缀,则当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,若剩余部分中包含用户提供的分隔符,则将剩余部分中第一个用户提供的分隔符的位置至当前记录的开始位置的字符记为第一结果,并将第一结果添加至键的共同前缀中;查找新记录和键,查找第一结果中最后一个字符的下一个字符,并用查找到的字符替换第一结果的最后一个字符,得到第二结果,查找键值数据库中第一条前缀包含或者大于第二结果的记录,得到新记录和新记录的键,将新记录更新为当前记录,并跳转至查找共同前缀步骤。本专利技术涉及电子设备与可读存储介质,用于执行一种检索键值数据库中键的共同前缀的方法。本专利技术根据用户给出的前缀和分隔符在不遍历所有键值对的条件下计算出属于用户给出前缀的键的共同前缀,在千万键值对级别场景下能够有效缩短获取共同前缀的时间。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,并可依照说明书的内容予以实施,以下以本专利技术的较佳实施例并配合附图详细说明如后。本专利技术的具体实施方式由以下实施例及其附图详细给出。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术的一种检索键值数据库中键的共同前缀的方法流程图;图2为本专利技术实施例的一种检索键值数据库中键的共同前缀的方法流程图。具体实施方式下面,结合附图以及具体实施方式,对本专利技术做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。一种检索键值数据库中键的共同前缀的方法,如图1所示,包括以下步骤:查找第一条记录,根据用户提供的前缀查找键值数据库中第一条包含或者大于用户提供的前缀的记录,记为当前记录;如图2所示,本实施例中,使用Sep表示用户提供的分隔符,使用Prefix表示用户提供的前缀,用CommonPrefix表示需要得到的结果,即键的共同前缀,用Objects表示Prefix下的对象而非共同前缀。优选的,查找第一条记录步骤中,通过二分查找算法查找键值数据库中第一条包含或者大于用户提供的前缀的记录,将记录记为R。由于键值数据库有序,所以使用二分查找算法快速定位记录位置,将R的键记为R.Key。在一实施例中,优选的,在查找第一条记录步骤和查找共同前缀步骤之间还包括判断当前记录的键步骤,若当前记录的键不包含用户提供的前缀,则退出并返回键的共同前缀和用户提供的前缀下的对象。因为键有序,所以后面不会再有记录包含Prefix。查找共同前缀,若当前记录的键包含用户提供的前缀,则当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,图2中,以R.Key=Prefix+Sep+R.Key.Left表示当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,其中,R.Key.Left为剩余部分,若剩余部分中包含用户提供的分隔符,则将剩余部分中第一个用户提供的分隔符的位置至当前记录的开始位置的字符记为第一结果,图2中以CP表示第一结果,并将第一结果添加至键的共s同前缀中,也就是找到了一个共同前缀。查找共同前缀步骤中,若剩余部分中不包含用户提供的分隔符,则将当前记录的键添加至用户提供的前缀下的对象,获取下一条记录并跳转至判断当前记录的键步骤。查找新记录和键,查找第一结果中最后一个字符的下一个字符,并用查找到的字符替换第一结果的最后一个字符,得到本文档来自技高网...

【技术保护点】
1.一种检索键值数据库中键的共同前缀的方法,其特征在于包括以下步骤:查找第一条记录,根据用户提供的前缀查找键值数据库中第一条包含或者大于所述用户提供的前缀的记录,记为当前记录;查找共同前缀,若当前记录的键包含所述用户提供的前缀,则所述当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,若所述剩余部分中包含所述用户提供的分隔符,则将所述剩余部分中第一个所述用户提供的分隔符的位置至所述当前记录的开始位置的字符记为第一结果,并将所述第一结果添加至键的共同前缀中;查找新记录和键,查找所述第一结果中最后一个字符的下一个字符,并用查找到的字符替换所述第一结果的最后一个字符,得到第二结果,查找键值数据库中第一条前缀包含或者大于所述第二结果的记录,得到新记录和所述新记录的键,将所述新记录更新为当前记录,并跳转至所述查找共同前缀步骤。

【技术特征摘要】
1.一种检索键值数据库中键的共同前缀的方法,其特征在于包括以下步骤:查找第一条记录,根据用户提供的前缀查找键值数据库中第一条包含或者大于所述用户提供的前缀的记录,记为当前记录;查找共同前缀,若当前记录的键包含所述用户提供的前缀,则所述当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,若所述剩余部分中包含所述用户提供的分隔符,则将所述剩余部分中第一个所述用户提供的分隔符的位置至所述当前记录的开始位置的字符记为第一结果,并将所述第一结果添加至键的共同前缀中;查找新记录和键,查找所述第一结果中最后一个字符的下一个字符,并用查找到的字符替换所述第一结果的最后一个字符,得到第二结果,查找键值数据库中第一条前缀包含或者大于所述第二结果的记录,得到新记录和所述新记录的键,将所述新记录更新为当前记录,并跳转至所述查找共同前缀步骤。2.如权利要求1所述的一种检索键值数据库中键的共同前缀的方法,其特征在于:在所述查找第一条记录步骤和所述查找共同前缀步骤之间还包括判断当前记录的键步骤,若当前记录的键不包含所述用户提供的前缀,则退出并返回键的共同前缀和所述用户提供的前缀下的对象。3.如权利要求2所述的一种检索键值数据...

【专利技术属性】
技术研发人员:许广彬谭瑞忠濮天晖张银滨张欢刘庆
申请(专利权)人:无锡华云数据技术服务有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1