CN109388641B - 一种检索键值数据库中键的共同前缀的方法、设备、介质 - Google Patents

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

Info

Publication number
CN109388641B
CN109388641B CN201811229210.2A CN201811229210A CN109388641B CN 109388641 B CN109388641 B CN 109388641B CN 201811229210 A CN201811229210 A CN 201811229210A CN 109388641 B CN109388641 B CN 109388641B
Authority
CN
China
Prior art keywords
key
prefix
record
result
user
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.)
Active
Application number
CN201811229210.2A
Other languages
English (en)
Other versions
CN109388641A (zh
Inventor
许广彬
谭瑞忠
濮天晖
张银滨
张欢
刘庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Huayun Mutual Data Technology Co ltd
Original Assignee
Wuxi Huayun Data Technology Service Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi Huayun Data Technology Service Co Ltd filed Critical Wuxi Huayun Data Technology Service Co Ltd
Priority to CN201811229210.2A priority Critical patent/CN109388641B/zh
Publication of CN109388641A publication Critical patent/CN109388641A/zh
Application granted granted Critical
Publication of CN109388641B publication Critical patent/CN109388641B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种检索键值数据库中键的共同前缀的方法、设备、介质
技术领域
本发明涉及键值数据库技术领域,尤其涉及一种检索键值数据库中键的共同前缀的方法、设备、介质。
背景技术
键值数据库是一种使用键值对存储检索和管理数据存储的模型。由于其接口简单,性能高而被广泛应用于技术领域。键值数据库的另一个特点是所有的键是有序排列的,以便使用高效的搜索算法检索键值。
对象存储是一种根据对象名称获得对象数据的存储产品,被各大云厂商所采用。键值数据库被用来实现对象元数据的存储,以对象名称为键,以对象元数据为值。对象元数据是指对象的创建时间,对象的读写权限,对象数据的存储路径等信息。对象存储可以根据使用者提供的分隔符和前缀获得该前缀下的所有对象,如果前缀之后的部分还存在分隔符,就需要将这些对象聚合成一个共同前缀发送给用户。由于键值数据库接口简单,无法直接根据分隔符计算出所有的共同前缀。现有技术中,采用遍历所有对象,记录出现的所有共同前缀的方法,但键值数据库存储的键值非常多,尤其在云环境中,一个共同前缀下对象可能会有上万个,而且共同前缀的数目非常大,现有算法以一种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同前缀中,也就是找到了一个共同前缀。
查找共同前缀步骤中,若剩余部分中不包含用户提供的分隔符,则将当前记录的键添加至用户提供的前缀下的对象,获取下一条记录并跳转至判断当前记录的键步骤。
查找新记录和键,查找第一结果中最后一个字符的下一个字符,并用查找到的字符替换第一结果的最后一个字符,得到第二结果,图2中以CP’表示第二结果(不包括最后的Sep),查找键值数据库中第一条前缀包含或者大于第二结果的记录,得到新记录和新记录的键,图2中以R表示新记录,以R.Key表示新记录的键,将新记录更新为当前记录,并跳转至查找共同前缀步骤。优选的,查找新记录和键步骤中,通过二分查找算法查找键值数据库中第一条前缀包含或者大于第二结果的记录。优选的,查找新记录和键步骤中,将新记录更新为当前记录之后,先跳转至判断当前记录的键步骤。查找新记录和键步骤利用键值数据库中键是有序的特点,将共同前缀最后字符替换为比它大1的字符,快速跳过该前缀下的所有对象,达到快速查找所有共同前缀的目的。
在一实施例中,键值数据库中有如下键:
/dir/dir1/file1
/dir/dir1/file2
/dir/dir1/fileN
/dir/dir2/file1
/dir/dir2/file2
/dir/dir2/fileN
/dir/dirN/file1
/dir/dirN/file2
/dir/dirN/fileN
该键值数据库共有N*N个键,用户提供的前缀Prefix为/dir,用户提供的分隔符Sep为/,根据Prefix为/dir,查找出第一个符合条件的记录为/dir/dir1/file1,根据查找共同前缀步骤,得到CP为/dir/dir1/。根据查找新记录和键步骤,由于在ASCII表中1的下一个字符为2,得到CP’为/dir/dir2。在上述键值中存在/dir/dir2,所以计算得出R为/dir/dir2/file1,又进入判断当前记录的键步骤,上述方法直接跳过了/dir/dir1/file2到/dir/dir1/fileN的遍历。假设/dir/dir2/file1到/dir/dir2/fileN在这个数据库中不存在,那么根据CP’(/dir/dir2)计算出的R应该是/dir/dir3/file1,因为大于/dir/dir2而且存在的第一条记录是/dir/dir3/file1,通过上述步骤还是能正确处理。
一种电子设备,包括:处理器;
存储器;以及程序,其中程序被存储在存储器中,并且被配置成由处理器执行,程序包括用于执行上述一种检索键值数据库中键的共同前缀的方法。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行上述一种检索键值数据库中键的共同前缀的方法。
本发明提供一种检索键值数据库中键的共同前缀的方法,包括以下步骤:查找第一条记录,根据用户提供的前缀查找键值数据库中第一条包含或者大于用户提供的前缀的记录,记为当前记录;查找共同前缀,若当前记录的键包含用户提供的前缀,则当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,若剩余部分中包含用户提供的分隔符,则将剩余部分中第一个用户提供的分隔符的位置至当前记录的开始位置的字符记为第一结果,并将第一结果添加至键的共同前缀中;查找新记录和键,查找第一结果中最后一个字符的下一个字符,并用查找到的字符替换第一结果的最后一个字符,得到第二结果,查找键值数据库中第一条前缀包含或者大于第二结果的记录,得到新记录和新记录的键,将新记录更新为当前记录,并跳转至查找共同前缀步骤。本发明涉及电子设备与可读存储介质,用于执行一种检索键值数据库中键的共同前缀的方法。本发明根据用户给出的前缀和分隔符在不遍历所有键值对的条件下计算出属于用户给出前缀的键的共同前缀,在千万键值对级别场景下能够有效缩短获取共同前缀的时间。
以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。

Claims (8)

1.一种检索键值数据库中键的共同前缀的方法,其特征在于包括以下步骤:
查找第一条记录,根据用户提供的前缀查找键值数据库中第一条包含或者大于所述用户提供的前缀的记录,记为当前记录;
查找共同前缀,若当前记录的键包含所述用户提供的前缀,则所述当前记录的键由用户提供的前缀、用户提供的分隔符、剩余部分组成,若所述剩余部分中包含所述用户提供的分隔符,则将所述剩余部分中第一个所述用户提供的分隔符的位置至所述当前记录的开始位置的字符记为第一结果,并将所述第一结果添加至键的共同前缀中;
查找新记录和键,查找所述第一结果中最后一个字符在ASCII表中的下一个字符,并用查找到的字符替换所述第一结果的最后一个字符,得到第二结果,查找键值数据库中第一条前缀包含或者大于所述第二结果的记录,得到新记录和所述新记录的键,将所述新记录更新为当前记录,并跳转至所述查找共同前缀步骤。
2.如权利要求1所述的一种检索键值数据库中键的共同前缀的方法,其特征在于:在所述查找第一条记录步骤和所述查找共同前缀步骤之间还包括判断当前记录的键步骤,若当前记录的键不包含所述用户提供的前缀,则退出并返回键的共同前缀和所述用户提供的前缀下的对象。
3.如权利要求2所述的一种检索键值数据库中键的共同前缀的方法,其特征在于:所述查找共同前缀步骤中,若所述剩余部分中不包含所述用户提供的分隔符,则将所述当前记录的键添加至所述用户提供的前缀下的对象,获取下一条记录并跳转至所述判断当前记录的键步骤。
4.如权利要求2所述的一种检索键值数据库中键的共同前缀的方法,其特征在于:所述查找新记录和键步骤中,将所述新记录更新为当前记录之后,先跳转至所述判断当前记录的键步骤。
5.如权利要求1所述的一种检索键值数据库中键的共同前缀的方法,其特征在于:所述查找第一条记录步骤中,通过二分查找算法查找键值数据库中第一条包含或者大于所述用户提供的前缀的记录。
6.如权利要求1所述的一种检索键值数据库中键的共同前缀的方法,其特征在于:所述查找新记录和键步骤中,通过二分查找算法查找键值数据库中第一条前缀包含或者大于所述第二结果的记录。
7.一种电子设备,其特征在于包括:处理器;
存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行权利要求1-6任意一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行如权利要求1-6任意一项所述的方法。
CN201811229210.2A 2018-10-22 2018-10-22 一种检索键值数据库中键的共同前缀的方法、设备、介质 Active CN109388641B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811229210.2A CN109388641B (zh) 2018-10-22 2018-10-22 一种检索键值数据库中键的共同前缀的方法、设备、介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811229210.2A CN109388641B (zh) 2018-10-22 2018-10-22 一种检索键值数据库中键的共同前缀的方法、设备、介质

Publications (2)

Publication Number Publication Date
CN109388641A CN109388641A (zh) 2019-02-26
CN109388641B true CN109388641B (zh) 2019-10-18

Family

ID=65427018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811229210.2A Active CN109388641B (zh) 2018-10-22 2018-10-22 一种检索键值数据库中键的共同前缀的方法、设备、介质

Country Status (1)

Country Link
CN (1) CN109388641B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831866A (zh) * 2019-04-23 2020-10-27 北京猫眼文化传媒有限公司 一种输入信息的模式识别方法和装置
CN113779014A (zh) * 2020-06-10 2021-12-10 深信服科技股份有限公司 一种数据存储方法、装置、设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831224A (zh) * 2012-08-24 2012-12-19 北京百度网讯科技有限公司 一种数据索引库的建立方法、搜索建议生成方法和装置
CN104268280A (zh) * 2014-10-17 2015-01-07 中国人民解放军国防科学技术大学 一种基于键值数据库的层次化存储与查询方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870492B (zh) * 2012-12-14 2017-08-04 腾讯科技(深圳)有限公司 一种基于键排序的数据存储方法和装置
US9536016B2 (en) * 2013-01-16 2017-01-03 Google Inc. On-disk multimap
CN106126722B (zh) * 2016-06-30 2019-10-18 中国科学院计算技术研究所 一种基于验证的前缀混合树及设计方法
CN106777003B (zh) * 2016-12-07 2020-04-03 安徽大学 一种面向Key-Value存储系统的索引查询方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831224A (zh) * 2012-08-24 2012-12-19 北京百度网讯科技有限公司 一种数据索引库的建立方法、搜索建议生成方法和装置
CN104268280A (zh) * 2014-10-17 2015-01-07 中国人民解放军国防科学技术大学 一种基于键值数据库的层次化存储与查询方法

Also Published As

Publication number Publication date
CN109388641A (zh) 2019-02-26

Similar Documents

Publication Publication Date Title
US10230643B2 (en) Full flow retrieval optimized packet capture
US8171029B2 (en) Automatic generation of ontologies using word affinities
KR101972645B1 (ko) 클러스터링 저장 방법 및 장치
CN111190904B (zh) 一种图-关系数据库混合存储的方法和装置
US9292554B2 (en) Thin database indexing
US10452676B2 (en) Managing database with counting bloom filters
KR101510973B1 (ko) 언어 로캘에 기초한 인덱싱 및 검색 방법
CN105320775A (zh) 数据的存取方法和装置
EP2629215A1 (en) File list generation method, system, and program, and file list generation device
JP2005122702A5 (zh)
CN109388641B (zh) 一种检索键值数据库中键的共同前缀的方法、设备、介质
CN104598517A (zh) 基于普通数据库的树型结构表的存储与查询技术
CN109522271A (zh) 一种b+树节点的批量插入和删除方法及装置
CN111666468A (zh) 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法
KR101238381B1 (ko) 다중범위 스캔에서의 n 정렬 질의를 최적으로 처리하기 위한 방법 및 장치
CN104408128B (zh) 一种基于b+树异步更新索引的读优化方法
CN109325022B (zh) 一种数据处理方法和装置
CN104765767A (zh) 针对智能学习的知识存储算法
CN111045994B (zh) 一种基于kv数据库的文件分类检索方法及系统
Mehta et al. Spatio-temporal keyword queries for moving objects
US20150058351A1 (en) Queries for thin database indexing
CN115495462A (zh) 批量数据更新方法、装置、电子设备和可读存储介质
CN109241098B (zh) 一种分布式数据库的查询优化方法
KR101679011B1 (ko) 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치
KR100892406B1 (ko) 정보 검색 방법 및 그 시스템

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 214000, science and software park, Binhu District, Jiangsu, Wuxi 6

Patentee after: Huayun data holding group Co.,Ltd.

Address before: 214000, science and software park, Binhu District, Jiangsu, Wuxi 6

Patentee before: WUXI CHINAC DATA TECHNICAL SERVICE Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221214

Address after: Room 1601-035, No. 238, Jiangchang Third Road, Jing'an District, Shanghai, 200000

Patentee after: Shanghai Huayun Mutual Data Technology Co.,Ltd.

Address before: No. 6 Science and Education Software Park, Binhu District, Wuxi City, Jiangsu Province

Patentee before: Huayun data holding group Co.,Ltd.