CN107357794B - 优化键值数据库的数据存储结构的方法和装置 - Google Patents
优化键值数据库的数据存储结构的方法和装置 Download PDFInfo
- Publication number
- CN107357794B CN107357794B CN201610305828.7A CN201610305828A CN107357794B CN 107357794 B CN107357794 B CN 107357794B CN 201610305828 A CN201610305828 A CN 201610305828A CN 107357794 B CN107357794 B CN 107357794B
- Authority
- CN
- China
- Prior art keywords
- keywords
- prefix
- prefixes
- database
- prefix list
- 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
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004458 analytical method Methods 0.000 claims abstract description 72
- 238000001514 detection method Methods 0.000 claims description 32
- 230000011218 segmentation Effects 0.000 claims description 24
- 230000015654 memory Effects 0.000 claims description 16
- 238000005457 optimization Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; 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播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer 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 (14)
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任意一项所述的装置,其特征在于,所述优化模块进一步用于:
根据所述命中所述前缀列表中的前缀的关键字的数量和存储空间,向用户呈现优化数据存储结构的选项;
响应于接收用户对所述选项的选择,优化所述数据库的数据存储结构。
13.一种优化键值数据库的数据存储结构的装置,其特征在于,包括:
存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至6中任一项所述的优化键值数据库的数据存储结构的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如权利要求1至6中任一项所述的优化键值数据库的数据存储结构的方法。
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 CN107357794A (zh) | 2017-11-17 |
CN107357794B true 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) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086002A (zh) * | 2018-06-28 | 2018-12-25 | 平安科技(深圳)有限公司 | 存储对象的空间管理方法、装置、计算机装置及存储介质 |
CN110413546B (zh) * | 2019-06-19 | 2024-03-12 | 平安科技(深圳)有限公司 | 基于redis的数据存储方法、装置及计算机可读存储介质 |
CN111125095B (zh) * | 2019-11-26 | 2023-11-10 | 北京文渊佳科技有限公司 | 数据前缀添加的方法、装置、电子设备及介质 |
CN111339736B (zh) * | 2020-02-18 | 2023-09-01 | 江苏满运软件科技有限公司 | 一种添加前缀名的方法、配置获取方法、装置及电子设备 |
CN112148554A (zh) * | 2020-09-14 | 2020-12-29 | 北京金和网络股份有限公司 | 实时计算redis业务数据占用大小的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101282313A (zh) * | 2008-05-22 | 2008-10-08 | 北京航空航天大学 | 一种用于电子会务辅助系统的电子邮件系统 |
CN105373541A (zh) * | 2014-08-22 | 2016-03-02 | 博雅网络游戏开发(深圳)有限公司 | 数据库的数据操作请求的处理方法和系统 |
CN105491116A (zh) * | 2015-11-26 | 2016-04-13 | 广州华多网络科技有限公司 | 一种跨窗口提交数据的方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317536B2 (en) * | 2010-04-27 | 2016-04-19 | Cornell University | System and methods for mapping and searching objects in multidimensional space |
US9846642B2 (en) * | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
-
2016
- 2016-05-10 CN CN201610305828.7A patent/CN107357794B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101282313A (zh) * | 2008-05-22 | 2008-10-08 | 北京航空航天大学 | 一种用于电子会务辅助系统的电子邮件系统 |
CN105373541A (zh) * | 2014-08-22 | 2016-03-02 | 博雅网络游戏开发(深圳)有限公司 | 数据库的数据操作请求的处理方法和系统 |
CN105491116A (zh) * | 2015-11-26 | 2016-04-13 | 广州华多网络科技有限公司 | 一种跨窗口提交数据的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107357794A (zh) | 2017-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9798831B2 (en) | Processing data in a MapReduce framework | |
CN107357794B (zh) | 优化键值数据库的数据存储结构的方法和装置 | |
US11907659B2 (en) | Item recall method and system, electronic device and readable storage medium | |
CN113448935B (zh) | 用于提供日志信息的方法、电子设备和计算机程序产品 | |
CN110069698B (zh) | 信息推送方法和装置 | |
US10346496B2 (en) | Information category obtaining method and apparatus | |
CN108984553B (zh) | 缓存方法和装置 | |
KR20200003164A (ko) | 데이터베이스 동기화 | |
CN112364014B (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN112148841B (zh) | 一种对象分类以及分类模型构建方法和装置 | |
US20240403344A1 (en) | Code retrieval method and apparatus based on large language model | |
CN113660541A (zh) | 新闻视频的摘要生成方法及装置 | |
CN113836157A (zh) | 获取数据库增量数据的方法和装置 | |
US9213759B2 (en) | System, apparatus, and method for executing a query including boolean and conditional expressions | |
CN113590447B (zh) | 埋点处理方法和装置 | |
CN108011936B (zh) | 用于推送信息的方法和装置 | |
US10372299B2 (en) | Preserve input focus in virtualized dataset | |
WO2018054352A1 (zh) | 项集确定方法、装置、处理设备及存储介质 | |
CN116226681B (zh) | 一种文本相似性判定方法、装置、计算机设备和存储介质 | |
US9286349B2 (en) | Dynamic search system | |
CN113268987B (zh) | 一种实体名称识别方法、装置、电子设备和存储介质 | |
CN112887426B (zh) | 信息流的推送方法、装置、电子设备以及存储介质 | |
CN115328898A (zh) | 一种数据处理方法、装置、电子设备及介质 | |
US11036710B2 (en) | Scalable selection management | |
CN112862554B (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 |