[发明专利]一种数据库检索系统中提高检索速度的方法及装置有效
申请号: | 201310311814.2 | 申请日: | 2013-07-24 |
公开(公告)号: | CN103336849A | 公开(公告)日: | 2013-10-02 |
发明(设计)人: | 彭金辉;刘明;刘秉国;许磊;张利波;代林晴;刘晨辉 | 申请(专利权)人: | 昆明理工大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 650093 云*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 检索系统 提高 检索 速度 方法 装置 | ||
1.一种数据库检索系统中提高检索速度的方法,其特征在于,包括:
在内存中建立数据缓存;
当获得检索词后,在所述数据缓存中查找;如果在数据缓存中查找到相应检索词的缓存记录,根据所述缓存记录生成检索结果集并返回,结束本次检索;如果在数据缓存中没有查找到,则检索数据库,返回检索结果集;
如果检索结果集不为空,则将检索词及检索结果集写入所述数据缓存。
2.根据权利要求1所述的方法,其特征在于:所述将检索词及检索结果集写入所述数据缓存包括:在每次检索完数据库后,如果所述数据缓存未满,则将检索词及检索结果集写入所述数据缓存中;如果所述数据缓存已满,则计算访问频次,找出访问频次最低的数据缓存记录,将所述数据缓存中访问频次最低的n条缓存记录移除,再将检索词及检索结果集写入所述数据缓存中;如果存在大于n条的相同访问频次的缓存记录,则将写入缓存时间最早的n条缓存记录移除后,再将检索词及检索结果集写入所述数据缓存中;其中,所述数据缓存的大小由预定的最大缓存记录数决定,如果预定的最大缓存记录数为M,则n的取值范围为:M﹥n≧1。
3.根据权利要求1所述的方法,其特征在于:所述缓存记录包括:检索词、访问次数、写入缓存时间以及对应于检索词的检索结果集。
4.根据权利要求1至3任一项所述的方法,其特征在于:所述数据缓存进一步分为两个区域,其中,第一缓存区域中的记录包括代表缓存记录的检索词、访问次数、写入缓存时间及检索结果集对应的数据库表的记录ID;所述记录ID为数据库表记录的全局唯一标识;第二缓存区域的记录为数据库表的记录,包括:记录ID和记录信息;第一缓存区域的记录与第二缓存区域的记录为一对多的关系。
5.根据权利要求1至3任一项所述的方法,其特征在于:所述结果集新写入所述数据缓存时,默认访问次数为1;每次在所述数据缓存中查找到缓存记录后,将所述缓存记录的访问次数加1。
6.根据权利要求4所述的方法,其特征在于:所述第一缓存区域、第二缓存区域均采用哈希表来组织;第一缓存区域的哈希表的键为检索词而值包括:检索词、访问次数、写入缓存时间及检索结果集对应的数据库表的记录ID;第二缓存区域的哈希表的键为记录ID而值为记录信息。
7.根据权利要求4或6所述的方法,其特征在于:所述第二缓存区域的记录还包括关联检索词数,用于标识所述记录被第一数据缓存区域的多少个检索词所引用;当新写入第二缓存区域记录时,所述关联检索词数为1;每次当判断到有已存在的记录要写入第二缓存区域时,则将所述记录的所述关联检索词数加1;每次当要从第二缓存区域移除缓存记录时,将所述记录的所述关联检索词数减1,并判断所述关联检索词数是否为0,若为0,则将所述记录从第二缓存区域中移除,否则不移除。
8.根据权利要求2所述的方法,其特征在于:所述访问频次f定义为:
其中,N为访问次数,Tnow为当前时间,Tcached为写入缓存时间。
9.根据权利要求1所述的方法,其特征在于:当接收到数据变更消息,根据所述数据变更消息更新所述数据缓存。
10.根据权利要求1所述的方法,其特征在于:每隔一预定时间将所述数据缓存以备份文件的形式保存到磁盘中,在断电、异常或重启后从磁盘中读取备份文件以恢复所述数据缓存。
11.一种数据库检索系统中提高检索速度的装置,其特征在于,包括:
缓存构建单元,用于在内存中建立数据缓存;缓存记录包括:检索词、访问次数、写入缓存时间以及对应于检索词的检索结果集;所述数据缓存的大小由预定的最大缓存记录数决定;所述数据缓存进一步分为两个区域:第一缓存区域和第二缓存区域;第一缓存区域的记录与第二缓存区域的记录为一对多的关系;第一缓存区域、第二缓存区由两个哈希表构成,第一缓存区域的哈希表的键为检索词而值包括:检索词、访问次数、写入缓存时间及检索结果集对应的数据库表的记录ID;第二缓存区域的哈希表的键为记录ID而值为记录信息;
数据查找单元,用于在数据缓存中查找检索词,具体包括:获得的有效检索词后,在数据缓存中查找检索词,将查找到的数据缓存记录封装并返回结果集;每次在所述数据缓存中查找到缓存记录后,将所述缓存记录的访问次数加1;如果在数据缓存中没有查找到,则检索数据库;
缓存写入单元,用于接收数据查找单元提供的检索词及检索结果集并将检索词及检索结果集写入所述数据缓存,具体包括:在获得检索结果集后,如果所述数据缓存未满,则将检索词及检索结果集写入所述数据缓存中;如果所述数据缓存已满,则计算访问频次,找出访问频次最低的数据缓存记录,将所述数据缓存中访问频次最低的n条缓存记录移除,再将检索词及检索结果集写入所述数据缓存中;如果存在大于n条的相同访问频次的缓存记录,则将写入缓存时间最早的n条缓存记录移除后,再将检索词及检索结果集写入所述数据缓存中;其中,所述数据缓存的大小由预定的最大缓存记录数决定,如果预定的最大缓存记录数为M,则n的取值范围为:M﹥n≧1;所述第二缓存区域的记录还包括关联检索词数,用于标识所述记录被第一数据缓存区域的多少个检索词所引用;当新写入第二缓存区域记录时,所述关联检索词数为1;每次当判断到有已存在的记录要写入第二缓存区域时,则将所述记录的所述关联检索词数加1;每次当要从第二缓存区域移除缓存记录时,将所述记录的所述关联检索词数减1,并判断所述关联检索词数是否为0,若为0,则将所述记录从第二缓存区域中移除,否则不移除;所述结果集新写入所述数据缓存时,默认访问次数为1;所述访问频次f定义为:
其中,N为访问次数,Tnow为当前时间,Tcached为写入缓存时间;
缓存更新单元,用于更新数据缓存,具体包括:当接收到数据变更消息,根据数据变更消息更新所述数据缓存;
缓存备份与恢复单元,用于备份和恢复所述数据缓存,具体包括:每隔一预定时间将所述数据缓存以备份文件的形式保存到磁盘中,在断电、异常或重启后从磁盘中读取备份文件以恢复所述数据缓存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于昆明理工大学,未经昆明理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310311814.2/1.html,转载请声明来源钻瓜专利网。