CN107357794A - 优化键值数据库的数据存储结构的方法和装置 - Google Patents

优化键值数据库的数据存储结构的方法和装置 Download PDF

Info

Publication number
CN107357794A
CN107357794A CN201610305828.7A CN201610305828A CN107357794A CN 107357794 A CN107357794 A CN 107357794A CN 201610305828 A CN201610305828 A CN 201610305828A CN 107357794 A CN107357794 A CN 107357794A
Authority
CN
China
Prior art keywords
prefix
keyword
list
database
hit
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
Application number
CN201610305828.7A
Other languages
English (en)
Other versions
CN107357794B (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201610305828.7A priority Critical patent/CN107357794B/zh
Publication of CN107357794A publication Critical patent/CN107357794A/zh
Application granted granted Critical
Publication of CN107357794B publication Critical patent/CN107357794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了优化键值数据库的数据存储结构的方法和装置。所述方法的一具体实施方式包括:从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字,得到前缀列表;获取命中前缀列表中的前缀的关键字的数量和存储空间;根据命中前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。该实施方式提升了数据库的存储性能并加速了数据库的读取效率。

Description

优化键值数据库的数据存储结构的方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及优化键值数据库的数据存储结构的方法和装置。
背景技术
随着分布式数据存储业务的复杂性越来越高,为了避免在单个共享内存上读取压力过大,可以通过哈希(hash)等算法对共享存储设备进行负载均衡,但这也带来了键值表数量的剧增。
目前,在监控分布式数据存储中的键值表时,通常获取所有关键字并逐个展示关键字的存储空间和数据结构,或者针对用户指定的关键字获取存储空间和关键字的数据结构,又或者通过在线实时监控应用读写关键字,并实时分析关键字的读取性能等使用情况。
然而,目前监控键值表时所获取的数据仅为键值表中某一行数据占用的存储空间或读写频繁等信息,无法根据获取的数据优化数据存储。
发明内容
本申请的目的在于提出一种改进的优化键值数据库的数据存储结构的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种优化键值数据库的数据存储结构的方法,所述方法包括:从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字,所述分析步骤包括:分析读取的关键字以得到分词,对所述分词执行检测步骤,所述检测步骤包括:删除最后一个分词以得到预测前缀,识别所述预测前缀是否命中前缀列表中的前缀,若命中,则将所述前缀列表中的前缀的被命中次数加1,若未命中,则将所述预测前缀添加至所述前缀列表,并识别所述预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对所述预测前缀中的分词执行所述检测步骤;获取命中所述前缀列表中的前缀的关键字的数量和存储空间;根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
在一些实施例中,所述获取命中所述前缀列表中的前缀的关键字的数量和存储空间包括:对所述前缀列表中被命中次数小于2次的前缀对应的关键字重新执行分析步骤,得到更新后的前缀列表;获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及所述根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构包括:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
在一些实施例中,从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字包括:从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤,在对预设数量的关键字执行分析步骤结束时,将所述前缀列表中命中标识小于2次的前缀作为独立前缀移至独立哈希表中直至已分析数据库中的所有关键字;所述获取命中所述前缀列表中的前缀的关键字的数量和存储空间包括:在识别所述数据库中所有关键字之后,对与所述独立前缀相对应的键重新执行所述分析步骤以得到更新后的前缀列表,获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及所述根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构包括:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
在一些实施例中,所述数据库包括实例和/或内存快照文件。
在一些实施例中,所述分析读取的关键字以得到分词包括:
在一些实施例中,所述根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,所述优化数据库的数据存储结构包括:根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,向用户呈现优化数据存储结构的选项;响应于接收用户对所述选项的选择,优化所述数据库的数据存储结构。
第二方面,本申请提供了一种优化键值数据库的数据存储结构的装置,所述装置包括:分析单元,用于从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字,所述分析步骤包括:分析读取的关键字以得到分词,对所述分词执行检测步骤,所述检测步骤包括:删除最后一个分词以得到预测前缀,识别所述预测前缀是否命中前缀列表中的前缀,若命中,则将所述前缀列表中的前缀的被命中次数加1,若未命中,则将所述预测前缀添加至所述前缀列表,并识别所述预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对所述预测前缀中的分词执行所述检测步骤;获取单元,用于获取命中所述前缀列表中的前缀的关键字的数量和存储空间;优化单元,用于根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
在一些实施例中,所述获取单元进一步用于:对所述前缀列表中被命中次数小于2次的前缀对应的关键字重新执行分析步骤,得到更新后的前缀列表;获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及所述优化单元进一步用于:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
在一些实施例中,所述分析单元进一步用于:从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤,在对预设数量的关键字执行分析步骤结束时,将所述前缀列表中命中标识小于2次的前缀作为独立前缀移至独立哈希表中直至已分析数据库中的所有关键字;所述获取单元进一步用于:对与所述独立前缀相对应的键重新执行所述分析步骤以得到更新后的前缀列表,获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及所述优化单元进一步用于:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
在一些实施例中,在本实施例的一些可选实现方式中,所述分析单元用于从所述数据库中读取预设数量的关键字包括:所述分析单元用于从实例和/或内存快照文件中读取预设数量的关键字。
在一些实施例中,所述分析单元用于分析读取的关键字以得到分词包括:所述分析单元用于根据以下一项或多项分析读取的关键字以得到分词:分隔符、大小写变化和数字字母变化。
在一些实施例中,所述优化模块进一步用于:根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,向用户呈现优化数据存储结构的选项;响应于接收用户对所述选项的选择,优化所述数据库的数据存储结构。
本申请提供的优化键值数据库的数据存储结构的方法和装置,首先从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字,所述分析步骤包括:分析读取的关键字以得到分词,对所述分词执行检测步骤,所述检测步骤包括:删除最后一个分词以得到预测前缀,识别所述预测前缀是否命中前缀列表中的前缀,若命中,则将所述前缀列表中的前缀的被命中次数加1,若未命中,则将所述预测前缀添加至所述前缀列表,并识别所述预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对所述预测前缀中的分词执行所述检测步骤;之后获取命中所述前缀列表中的前缀的关键字的数量和存储空间;最后根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化键值数据库的数据存储结构,从而提升了数据库的存储性能并加速了数据库的读取效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的优化键值数据库的数据存储结构的方法的一个实施例的流程图;
图3是根据本申请的优化键值数据库的数据存储结构的方法的又一个实施例的流程图;
图4是根据本申请的优化键值数据库的数据存储结构的方法的第三个实施例的流程图;
图5是根据本申请的优化键值数据库的数据存储结构的装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的优化键值数据库的数据存储结构的方法或优化键值数据库的数据存储结构的装置的实施例的示例性***架构100。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105、106。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户110可以使用终端设备101、102、103通过网络104与服务器105、106交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如数据库管理类应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105、106可以是提供各种数据库服务的服务器,例如对终端设备101、102、103提供支持的后台服务器。后台服务器可以对接收到的请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本申请实施例所提供的优化键值数据库的数据存储结构的方法一般由终端设备101、102、103或服务器105、106执行,相应地,优化键值数据库的数据存储结构的装置一般设置于终端设备101、102、103或服务器105、106中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
应当理解,本申请中的键值数据库是指键-值(Key-Value)数据库,可以包括现有技术中以及未来发展的技术中的Key-Value数据库。以下以Key-Value数据库中的Redis数据库为例,说明优化数据库的数据存储结构的方法和装置。
请参考图2,图2示出了根据本申请的优化键值数据库的数据存储结构的方法的一个实施例的流程200。该优化键值数据库的数据存储结构的方法的流程,以Redis数据库为例,具体包括以下步骤:
在步骤210中,从Redis数据库中读取预设数量的关键字(Key)并对读取的每一个关键字执行分析步骤直至已分析Redis数据库中的所有关键字。
本实施例中,分析步骤包括:分析读取的关键字以得到分词,对分词执行检测步骤,检测步骤包括:删除最后一个分词以得到预测前缀,识别预测前缀是否命中前缀列表中的前缀,若命中,则将前缀列表中的前缀的被命中次数加1,若未命中,则将预测前缀添加至前缀列表,并识别预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对预测前缀中的分词执行检测步骤。
在从Redis数据库中读取预设数量的关键字时,为了防止读取的Redis数据量过大,导致应用工具内存耗尽,可以每次从Redis实例和/或Redis内存快照文件中读取预设数量的关键字。
在分析读取的关键字以得到分词时,可以根据以下一项或多项分析读取的关键字以得到分词:分隔符、大小写变化和数字字母变化。例如,可以根据分隔符分析关键字Customer-username,得到分词“Customer”和“username”;可以根据大小写变化分析关键字CustomerSaveKeyUsername,得到分词:“Customer”、“Save”、“Key”和“Username”;可以根据数字字母变化分词关键字“abc1231”,得到分词“abc”、“123”和“1”。在这里,还有可能读取的关键字为全局用户身份证明(UID)类关键字,则可以将全局用户身份证明类关键字作为单独记录的一类关键字。
应当理解,上述检测步骤在第一次执行时前缀列表为空,此时预测前缀未命中前缀列表中的前缀,之后将预测前缀添加至前缀列表,而后后续的分词在执行检测步骤时,可以识别预测前缀是否命中前缀列表中的前缀。
在步骤220中,获取命中前缀列表中的前缀的关键字的数量和存储空间。
在本实施例中,基于步骤210中识别Redis数据库中的所有关键字得到的前缀列表,遍历Redis中所有的Key,获取命中前缀列表中的前缀的Key以及Key的值(Value),并记录每个Key和Value占用的内存空间。
在获取命中前缀列表中的前缀的关键字的数量和存储空间时,可以获取命中前缀列表中的所有前缀的关键字的数量和存储空间,从而提高获取的数据的全面性;也可以获取命中前缀列表中的前缀的次数超过预定次数(例如2次)的关键字的数量和存储空间,对于命中前缀列表中的前缀的次数未超过预定次数(例如2次)的关键字的数量和存储空间,可以单独获取或丢弃这一部分数据,从而提高获取的效率。
在步骤230中,根据命中前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。
在本实施例中,基于在步骤220中获取的命中前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。示例性的,可以根据获取的命中前缀列表中的前缀的关键字的数量和存储空间,提示缓存***的负载压力,以便进行负载均衡;也可以根据获取的命中前缀列表中的前缀的关键字的数量和存储空间,优化数据存储,例如删除垃圾数据或去除重复数据等。
在根据命中前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构时,可以在命中前缀列表中的前缀的关键字的数量和存储空间满足预设规则的预设条件时,完成预设规则中限定的操作,从而对Redis数据库中的数据存储结构进行优化,也可以在上述命中前缀列表中的前缀的关键字的数量和存储空间满足预设的条件时,向用户呈现优化数据存储结构的选项,响应于接收用户对选项的选择,优化Redis数据库的数据存储结构。
本申请上述实施例优化了Redis数据库的数据存储结构,提升了Redis数据库的存储性能并加速了Redis数据库的读取效率。
进一步参考图3,其示出了根据本申请的优化键值数据库的数据存储结构的方法的又一个实施例的流程图300。该优化键值数据库的数据存储结构的方法的流程300,仍以Redis数据库为例,具体包括以下步骤:
在步骤310中,从Redis数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析Redis数据库中的所有关键字。
本实施例中,分析步骤包括:分析读取的关键字以得到分词,对分词执行检测步骤,检测步骤包括:删除最后一个分词以得到预测前缀,识别预测前缀是否命中前缀列表中的前缀,若命中,则将前缀列表中的前缀的被命中次数加1,若未命中,则将预测前缀添加至前缀列表,并识别预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对预测前缀中的分词执行检测步骤。
应当理解,本实施例中的步骤310与图2中的步骤210相同,因此描述于步骤210中的操作和特征同样适用于步骤310,在此不再赘述。
在步骤320中,对前缀列表中被命中次数小于2次的前缀对应的关键字重新执行分析步骤,得到更新后的前缀列表。
在本实施例中,为了提高识别Redis数据库中的所有关键字的准确度,可以对前缀列表中被命中次数小于2次的前缀对应的关键字重新执行分析步骤,以得到更新后的前缀列表。
在步骤330中,获取命中更新后的前缀列表中的前缀的关键字的数量和存储空间。
在本实施例中,基于步骤320中对被命中次数小于2次的前缀对应的关键字重新执行分析步骤得到的更新后的前缀列表,遍历Redis中所有的关键字Key,获取命中更新后的前缀列表中的前缀的Key以及Key的值Value,并记录每个Key和Value占用的内存空间。
在步骤340中,根据命中更新后的前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。
在本实施例中,基于在步骤330中获取的命中更新后的前缀列表中的前缀的关键字的数量和存储空间,可以优化Redis数据库的数据存储结构。示例性的,可以根据获取的命中更新后的前缀列表中的前缀的关键字的数量和存储空间,提示缓存***的负载压力,以便进行负载均衡;也可以根据获取的命中更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据存储,例如删除垃圾数据或去除重复数据等。
从图3中可以看出,与图2对应的实施例相比,本实施例中的优化缓存Redis的数据存储结构的方法的流程300突出了对被命中次数小于2次的前缀对应的关键字重新执行分析步骤以得到更新后的前缀列表的步骤。由此,本实施例描述的方案可以提高识别命中更新后的前缀列表中的前缀的关键字的数量和存储空间的精度,为优化Redis数据库的数据存储结构提供更为精准的数据。
进一步参考图4,其示出了根据本申请的优化键值数据库的数据存储结构的方法的第三个实施例的流程图400。该优化键值数据库的数据存储结构的方法的流程400,继续以Redis数据库为例,包括以下步骤:
在步骤410中,从Redis数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤。
本实施例中,分析步骤包括:分析读取的关键字以得到分词,对分词执行检测步骤,检测步骤包括:删除最后一个分词以得到预测前缀,识别预测前缀是否命中前缀列表中的前缀,若命中,则将前缀列表中的前缀的被命中次数加1,若未命中,则将预测前缀添加至前缀列表,并识别预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对预测前缀中的分词执行检测步骤。
在从Redis数据库中读取预设数量的关键字时,为了防止读取的Redis数据量过大,导致应用工具内存耗尽,可以每次从Redis实例和/或Redis内存快照文件中读取预设数量的关键字。
在分析读取的关键字以得到分词时,可以根据以下一项或多项分析读取的关键字以得到分词:分隔符、大小写变化和数字字母变化。例如,关键字Customer-username可以根据分隔符分词为“Customer”和“username”;关键字CustomerSaveKeyUsername可以根据大小写变化分词为:“Customer”、“Save”、“Key”和“Username”;关键字“abc1231”可以根据数字字母变化分词为“abc”、“123”和“1”。在这里,全局用户身份证明(UID)类,可以作为一类关键字(Key)单独记录。
应当理解,上述检测步骤在第一次执行时前缀列表为空,此时预测前缀未命中前缀列表中的前缀,之后将预测前缀添加至前缀列表,而后后续的分词在执行检测步骤时,可以识别预测前缀是否命中前缀列表中的前缀。
在步骤420中,在对预设数量的关键字执行分析步骤结束时,将前缀列表中命中标识小于2次的前缀作为独立前缀移至独立哈希表中直至已分析Redis数据库中的所有关键字。
在本实施例中,在每一组预设数量的关键字识别结束时,可以将命中标识小于2次的前缀作为独立前缀移至独立哈希表中,以便在Redis数据库中的所有关键字完成识别之后,执行步骤430以得到更新后的前缀列表。这样可以避免一些程序直接通过算法生成的随机字符串添加至前缀列表中,导致前缀列表中队列过长影响检测步骤的检测效率。
在步骤430中,对与独立前缀相对应的键重新执行分析步骤以得到更新后的前缀列表。
在本实施例中,在Redis数据库中的所有关键字完成识别之后,可以逐个将独立哈希表中的关键字取出并执行分析步骤以得到更新后的前缀列表。在这里,为了提高识别效率,还可以按照长度逐个将独立哈希表中的关键字取出并执行分析步骤。
在步骤440中,获取命中更新后的前缀列表中的前缀的关键字的数量和存储空间。
在本实施例中,基于步骤430中得到的更新后的前缀列表,遍历Redis中所有的关键字Key,获取命中前缀列表中的前缀的Key以及Key的值Value,并记录每个Key和Value占用的内存空间。
在步骤450中,根据命中更新后的前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。
在本实施例中,基于在步骤440中获取的命中更新后的前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。示例性的,可以根据获取的命中更新后的前缀列表中的前缀的关键字的数量和存储空间,提示缓存***的负载压力,以便进行负载均衡;也可以根据获取的命中更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据存储,例如删除垃圾数据或去除重复数据等。
从图4中可以看出,与图2对应的实施例相比,本实施例中的优化缓存Redis的数据存储结构的方法的流程400突出了对与独立前缀相对应的键重新执行分析步骤以得到更新后的前缀列表的步骤。由此,本实施例描述的方案可以提高识别命中更新后的前缀列表中的前缀的关键字的效率,为优化Redis数据库的数据存储结构提供更为精准的数据。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种优化键值数据库的数据存储结构的装置的一个实施例。这里仍以Redis数据库为例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的优化Redis的数据存储结构的装置500包括:分析单元510、获取单元520和优化单元530。
其中,分析单元510,用于从Redis数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析Redis数据库中的所有关键字,分析步骤包括:分析读取的关键字以得到分词,对分词执行检测步骤,检测步骤包括:删除最后一个分词以得到预测前缀,识别预测前缀是否命中前缀列表中的前缀,若命中,则将前缀列表中的前缀的被命中次数加1,若未命中,则将预测前缀添加至前缀列表,并识别预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对预测前缀中的分词执行检测步骤。
获取单元520,用于获取命中前缀列表中的前缀的关键字的数量和存储空间。
优化单元530,用于根据命中前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。
在本实施例的一些可选实现方式中,获取单元进一步用于:对前缀列表中被命中次数小于2次的前缀对应的关键字重新执行分析步骤,得到更新后的前缀列表;获取命中更新后的前缀列表中的前缀的关键字的数量和存储空间;以及优化单元进一步用于:根据命中更新后的前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。
在本实施例的一些可选实现方式中,分析单元进一步用于:从Redis数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤,在对预设数量的关键字执行分析步骤结束时,将前缀列表中命中标识小于2次的前缀作为独立前缀移至独立哈希表中直至已分析Redis数据库中的所有关键字;获取单元进一步用于:对与独立前缀相对应的键重新执行分析步骤以得到更新后的前缀列表,获取命中更新后的前缀列表中的前缀的关键字的数量和存储空间;以及优化单元进一步用于:根据命中更新后的前缀列表中的前缀的关键字的数量和存储空间,优化Redis数据库的数据存储结构。
在本实施例的一些可选实现方式中,分析单元用于从Redis数据库中读取预设数量的关键字包括:分析单元用于从Redis实例和/或Redis内存快照文件中读取预设数量的关键字。
在本实施例的一些可选实现方式中,分析单元用于分析读取的关键字以得到分词包括:分析单元用于根据以下一项或多项分析读取的关键字以得到分词:分隔符、大小写变化和数字字母变化。
在本实施例的一些可选实现方式中,优化模块进一步用于:根据命中前缀列表中的前缀的关键字的数量和存储空间,向用户呈现优化数据存储结构的选项;响应于接收用户对选项的选择,优化Redis数据库的数据存储结构。
本领域技术人员可以理解,上述优化键值数据库的数据存储结构的装置500还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图5中未示出。
应当理解,装置500中记载的诸单元与参考图2、图3和图4描述的方法中的各个步骤相对应。由此,上文针对优化键值数据库的数据存储结构的方法描述的操作和特征同样适用于装置500及其中包含的单元,在此不再赘述。装置500中的相应单元可以与服务器中的单元相互配合以实现本申请实施例的方案。
下面参考图6,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机***600的结构示意图。
如图6所示,计算机***600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个单元、程序段、或代码的一部分,单元、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括分析单元、获取单元和优化单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,分析单元还可以被描述为“从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当一个或者多个程序被一个设备执行时,使得设备:从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字,分析步骤包括:分析读取的关键字以得到分词,对分词执行检测步骤,检测步骤包括:删除最后一个分词以得到预测前缀,识别预测前缀是否命中前缀列表中的前缀,若命中,则将前缀列表中的前缀的被命中次数加1,若未命中,则将预测前缀添加至前缀列表,并识别预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对预测前缀中的分词执行检测步骤;获取命中前缀列表中的前缀的关键字的数量和存储空间;根据命中前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

1.一种优化键值数据库的数据存储结构的方法,其特征在于,所述方法包括:
从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字,所述分析步骤包括:分析读取的关键字以得到分词,对所述分词执行检测步骤,所述检测步骤包括:删除最后一个分词以得到预测前缀,识别所述预测前缀是否命中前缀列表中的前缀,若命中,则将所述前缀列表中的前缀的被命中次数加1,若未命中,则将所述预测前缀添加至所述前缀列表,并识别所述预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对所述预测前缀中的分词执行所述检测步骤;
获取命中所述前缀列表中的前缀的关键字的数量和存储空间;
根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
2.根据权利要求1所述的方法,其特征在于,所述获取命中所述前缀列表中的前缀的关键字的数量和存储空间包括:对所述前缀列表中被命中次数小于2次的前缀对应的关键字重新执行分析步骤,得到更新后的前缀列表;获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及
所述根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构包括:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
3.根据权利要求1所述的方法,其特征在于,所述从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字包括:从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤,在对预设数量的关键字执行分析步骤结束时,将所述前缀列表中命中标识小于2次的前缀作为独立前缀移至独立哈希表中直至已分析数据库中的所有关键字;
所述获取命中所述前缀列表中的前缀的关键字的数量和存储空间包括:对与所述独立前缀相对应的键重新执行所述分析步骤以得到更新后的前缀列表,获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及
所述根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构包括:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述数据库包括实例和/或内存快照文件。
5.根据权利要求1-3任意一项所述的方法,其特征在于,所述分析读取的关键字以得到分词包括:
根据以下一项或多项分析读取的关键字以得到分词:分隔符、大小写变化和数字字母变化。
6.根据权利要求1-3任意一项所述的方法,其特征在于,所述根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构包括:
根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,向用户呈现优化数据存储结构的选项;
响应于接收用户对所述选项的选择,优化所述数据库的数据存储结构。
7.一种优化键值数据库的数据存储结构的装置,其特征在于,所述装置包括:
分析单元,用于从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤直至已分析数据库中的所有关键字,所述分析步骤包括:分析读取的关键字以得到分词,对所述分词执行检测步骤,所述检测步骤包括:删除最后一个分词以得到预测前缀,识别所述预测前缀是否命中前缀列表中的前缀,若命中,则将所述前缀列表中的前缀的被命中次数加1,若未命中,则将所述预测前缀添加至所述前缀列表,并识别所述预测前缀是否为单个分词,若是,则对读取的下一个关键字执行分析步骤,若否,则对所述预测前缀中的分词执行所述检测步骤;
获取单元,用于获取命中所述前缀列表中的前缀的关键字的数量和存储空间;
优化单元,用于根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
8.根据权利要求7所述的装置,其特征在于,所述获取单元进一步用于:对所述前缀列表中被命中次数小于2次的前缀对应的关键字重新执行分析步骤,得到更新后的前缀列表;获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及
所述优化单元进一步用于:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
9.根据权利要求7所述的装置,其特征在于,所述分析单元进一步用于:从数据库中读取预设数量的关键字并对读取的每一个关键字执行分析步骤,在对预设数量的关键字执行分析步骤结束时,将所述前缀列表中命中标识小于2次的前缀作为独立前缀移至独立哈希表中直至已分析数据库中的所有关键字;
所述获取单元进一步用于:对与所述独立前缀相对应的键重新执行所述分析步骤以得到更新后的前缀列表,获取命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间;以及
所述优化单元进一步用于:根据命中所述更新后的前缀列表中的前缀的关键字的数量和存储空间,优化数据库的数据存储结构。
10.根据权利要求7-9任意一项所述的装置,其特征在于,所述分析单元用于从所述数据库中读取预设数量的关键字包括:所述分析单元用于从实例和/或内存快照文件中读取预设数量的关键字。
11.根据权利要求7-9任意一项所述的装置,其特征在于,所述分析单元用于分析读取的关键字以得到分词包括:
所述分析单元用于根据以下一项或多项分析读取的关键字以得到分词:分隔符、大小写变化和数字字母变化。
12.根据权利要求7-9任意一项所述的装置,其特征在于,所述优化模块进一步用于:
根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,向用户呈现优化数据存储结构的选项;
响应于接收用户对所述选项的选择,优化所述数据库的数据存储结构。
CN201610305828.7A 2016-05-10 2016-05-10 优化键值数据库的数据存储结构的方法和装置 Active CN107357794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610305828.7A CN107357794B (zh) 2016-05-10 2016-05-10 优化键值数据库的数据存储结构的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610305828.7A CN107357794B (zh) 2016-05-10 2016-05-10 优化键值数据库的数据存储结构的方法和装置

Publications (2)

Publication Number Publication Date
CN107357794A true CN107357794A (zh) 2017-11-17
CN107357794B CN107357794B (zh) 2020-06-05

Family

ID=60271375

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610305828.7A Active CN107357794B (zh) 2016-05-10 2016-05-10 优化键值数据库的数据存储结构的方法和装置

Country Status (1)

Country Link
CN (1) CN107357794B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413546A (zh) * 2019-06-19 2019-11-05 平安科技(深圳)有限公司 基于redis的数据存储方法、装置及计算机可读存储介质
WO2020000734A1 (zh) * 2018-06-28 2020-01-02 平安科技(深圳)有限公司 存储对象的空间管理方法、装置、计算机装置及存储介质
CN111125095A (zh) * 2019-11-26 2020-05-08 北京文渊佳科技有限公司 数据前缀添加的方法、装置、电子设备及介质
CN111339736A (zh) * 2020-02-18 2020-06-26 江苏满运软件科技有限公司 一种添加前缀名的方法、配置获取方法、装置及电子设备
CN112148554A (zh) * 2020-09-14 2020-12-29 北京金和网络股份有限公司 实时计算redis业务数据占用大小的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282313A (zh) * 2008-05-22 2008-10-08 北京航空航天大学 一种用于电子会务辅助***的电子邮件***
US20130138646A1 (en) * 2010-04-27 2013-05-30 Emin Gun Sirer System and methods for mapping and searching objects in multidimensional space
CN105373541A (zh) * 2014-08-22 2016-03-02 博雅网络游戏开发(深圳)有限公司 数据库的数据操作请求的处理方法和***
CN105491116A (zh) * 2015-11-26 2016-04-13 广州华多网络科技有限公司 一种跨窗口提交数据的方法及***
US20160110292A1 (en) * 2014-10-21 2016-04-21 Samsung Electronics Co., Ltd. Efficient key collision handling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282313A (zh) * 2008-05-22 2008-10-08 北京航空航天大学 一种用于电子会务辅助***的电子邮件***
US20130138646A1 (en) * 2010-04-27 2013-05-30 Emin Gun Sirer System and methods for mapping and searching objects in multidimensional space
CN105373541A (zh) * 2014-08-22 2016-03-02 博雅网络游戏开发(深圳)有限公司 数据库的数据操作请求的处理方法和***
US20160110292A1 (en) * 2014-10-21 2016-04-21 Samsung Electronics Co., Ltd. Efficient key collision handling
CN105491116A (zh) * 2015-11-26 2016-04-13 广州华多网络科技有限公司 一种跨窗口提交数据的方法及***

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020000734A1 (zh) * 2018-06-28 2020-01-02 平安科技(深圳)有限公司 存储对象的空间管理方法、装置、计算机装置及存储介质
CN110413546A (zh) * 2019-06-19 2019-11-05 平安科技(深圳)有限公司 基于redis的数据存储方法、装置及计算机可读存储介质
CN110413546B (zh) * 2019-06-19 2024-03-12 平安科技(深圳)有限公司 基于redis的数据存储方法、装置及计算机可读存储介质
CN111125095A (zh) * 2019-11-26 2020-05-08 北京文渊佳科技有限公司 数据前缀添加的方法、装置、电子设备及介质
CN111125095B (zh) * 2019-11-26 2023-11-10 北京文渊佳科技有限公司 数据前缀添加的方法、装置、电子设备及介质
CN111339736A (zh) * 2020-02-18 2020-06-26 江苏满运软件科技有限公司 一种添加前缀名的方法、配置获取方法、装置及电子设备
CN111339736B (zh) * 2020-02-18 2023-09-01 江苏满运软件科技有限公司 一种添加前缀名的方法、配置获取方法、装置及电子设备
CN112148554A (zh) * 2020-09-14 2020-12-29 北京金和网络股份有限公司 实时计算redis业务数据占用大小的方法及装置

Also Published As

Publication number Publication date
CN107357794B (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
CN106446228B (zh) 一种web页面数据的采集分析方法及装置
CN105183912B (zh) 异常日志确定方法和装置
CN107357794A (zh) 优化键值数据库的数据存储结构的方法和装置
JP5492814B2 (ja) 検索装置、検索システム、方法およびプログラム
CN104077407B (zh) 一种智能数据搜索***及方法
US10496696B2 (en) Search method and apparatus
CN106528894B (zh) 设置标签信息的方法及装置
CN107908616B (zh) 预测趋势词的方法和装置
CN107908615A (zh) 一种获取搜索词对应商品类目的方法和装置
CN113157947A (zh) 知识图谱的构建方法、工具、装置和服务器
CN103838754A (zh) 信息搜索装置及方法
CN111400361A (zh) 数据实时存储方法、装置、计算机设备和存储介质
CN105653724B (zh) 一种页面曝光量的监控方法和装置
CN104580109B (zh) 生成点选验证码的方法及装置
CN106919593B (zh) 一种搜索的方法和装置
JP6025487B2 (ja) フォレンジック分析システムおよびフォレンジック分析方法並びにフォレンジック分析プログラム
CN107153697A (zh) 一种商品交易网站中的商品搜索方法和装置
CN107368484A (zh) 网页的静态资源文件的压缩方法及装置、获取方法及装置
CN107368407A (zh) 信息处理方法和装置
WO2018208412A1 (en) Detection of caption elements in documents
CN108520012B (zh) 基于机器学习的移动互联网用户评论挖掘方法
CN108268488A (zh) 网页主图识别方法和装置
CN106055688A (zh) 搜索结果的展现方法、装置和移动终端
CN109754295A (zh) 用于输出信息的方法和装置
CN107544685A (zh) 信息推送方法和装置

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