轻量级缓存策略的关系型数据库全文搜索加强与扩展.pdf
《轻量级缓存策略的关系型数据库全文搜索加强与扩展.pdf》由会员分享,可在线阅读,更多相关《轻量级缓存策略的关系型数据库全文搜索加强与扩展.pdf(8页珍藏版)》请在咨信网上搜索。
1、2023 08 10计算机应用,Journal of Computer Applications2023,43(8):2431-2438ISSN 10019081CODEN JYIIDUhttp:/轻量级缓存策略的关系型数据库全文搜索加强与扩展杨婷,莫若玉,张秀娟,朱洲森*(四川师范大学 物理与电子工程学院,成都 610101)(通信作者电子邮箱)摘要:针对关系型数据库(RDB)现有的全文搜索方案存在的效率低下、资源占用高的问题,提出一种具有增强式辅助缓存的轻量级关系型数据库全文搜索模型。首先,该模型构建基于Redis的倒排索引,并利用缓存索引缩小搜索范围,从而用内存高效的数据处理能力解决关系
2、型数据库I/O瓶颈,并提升系统整体性能;其次,为保证搜索结果的准确性和时效性,进一步提出索引同步策略,而且设计并实现了增量索引组件来隐藏索引处理细节,从而提高模型的易用性和通用性;最后,对于热点数据提供一种基于访问热度的索引更新机制,以降低倒排索引的内存占用。实验结果表明,所提模型在保证关系型数据库全文搜索响应速度和准确度的前提下,空间资源消耗比MySQL全文索引降低了48.8%60.9%,比Elasticsearch降低了85.2%96.2%,证明所提模型在实际应用中可行且有效。关键词:MySQL;Redis;全文搜索;倒排索引;一致性中图分类号:TP311 文献标志码:AEnhanceme
3、nt and expansion of full-text search in relational databases based on lightweight caching strategyYANG Ting,MO Ruoyu,ZHANG Xiujuan,ZHU Zhousen*(School of Physics and Electronic Engineering,Sichuan Normal University,Chengdu Sichuan 610101,China)Abstract:Aiming at the problems of low efficiency and hi
4、gh resource consumption in the existing full-text search schemes of Relational DataBase(RDB),a lightweight full-text search model for relational databases with enhanced secondary cache was proposed.Firstly,an inverted index based on Redis was built in the proposed model and cache index was used to r
5、educe the search scope,which solved the I/O bottleneck of relational database with efficient data processing capacity in memory,and the overall performance of the system was improved.Secondly,in order to ensure the accuracy and real time performance of the search results,the index synchronization st
6、rategy was further proposed,and the incremental index component was designed and implemented to hide the index processing details,so as to improve the usability and universality of the model.Finally,an index update mechanism based on access heat was provided for hotspot data to reduce memory usage o
7、f the inverted index.Experimental results show that on the premise of ensuring the response speed and accuracy of full-text search in relational databases,the space resource consumption of the proposed model is 48.8%-60.9%lower than that of MySQL full-text index and 85.2%-96.2%lower than that of Ela
8、sticsearch,verifying that the proposed model is feasible and effective in practical applications.Key words:MySQL;Redis;full-text search;inverted index;consistency0 引言 现阶段数据库管理技术持续发展,广泛应用的数据库系统分为两大类1:关系型数据库(Relational DataBase,RDB)和非关系型数据库(Not Only SQL,NoSQL)。尽管 NoSQL 发展迅速,占据了一定比例的市场份额,但关系型数据库仍是存储和管理
9、数据的普遍选择2-3,是信息化建设的重要基础。erek等4指出,很多企业产生的数据必须借助RDB进行存储。RDB全文搜索是针对数据库中文本类型字段,通过对任意位置、任意内容的文本匹配,快速提取相关记录完整信息的手段,是实现海量数据快速查询的有效方式,也是影响RDB查询性能的关键因素之一。文献 5 中的研究表明,RDB全文搜索是数据处理中充分发挥海量数据资源优势的关键技术。因此,如何高效地实现RDB全文搜索也成为近年来的研究热点之一。在各类RDB中,MySQL因其稳定性、低成本、高可用和成熟生态等优点,成为应用最广泛、最具代表性的RDB6。根据不同的应用场景,MySQL提供了多种方式支持全文搜索
10、,其中应用较为广泛的是Like匹配和RegExp正则匹配7。此外,也可通过内置函数Instr()、Locate()和Position()判断子字符串是否存在于目标字段。基于模糊查询语法构建结构化查询语言(Structured Query Language,SQL),是MySQL实现全文搜索的传统方式,但这些方法都存在一定局限性:文章编号:1001-9081(2023)08-2431-08DOI:10.11772/j.issn.1001-9081.2022071108收稿日期:20220729;修回日期:20220919;录用日期:20220919。基金项目:国家社会科学基金资助项目(20BMZ
11、092)。作者简介:杨婷(1997),女,四川广元人,硕士研究生,主要研究方向:智能信息处理;莫若玉(1994),女,四川广元人,硕士研究生,主要研究方向:智能信息处理;张秀娟(1996),女,四川南充人,硕士研究生,主要研究方向:智能信息处理;朱洲森(1966),男,陕西西安人,教授,硕士,主要研究方向:智能信息处理、数据计算与分析、大数据。第 43 卷计算机应用1)Like 匹 配、RegExp 正 则 匹 配、Instr()、Locate()和Position()等内置函数均需要扫描全表,效率极低;2)三种查询方式的匹配规则单一,不支持分词查询。RDB数据存储在磁盘上,对于海量数据、高并
12、发的全文搜索应用场景,频繁的全表扫描会造成大量系统资源消耗,甚至导致数据库崩溃。随着信息化建设深入推进,RDB中的数据量呈指数增长,以上传统方法的性能无法满足企业级深度检索信息的需求。文献 5-10 均指出,传统的模糊查询方式已无法满足全文搜索需求。MySQL为弥补Like、RegExp等传统模糊查询方式效率低下的缺陷,提供了全文索引(Full-Text)9,并在5.7.6版本之后内置了 n-gram parser 全文检索插件,用于支持中文分词。此方式对MyISAM和InnoDB引擎都有效,支持的字段类型包括 CHAR、VARCHAR 和 TEXT 三种10。FullText 索引在检索速度
13、方面有了一定提升,但仍存在诸多弊端:1)创 建 FullText 索 引 十 分 消 耗 资 源,对 INSERT、UPDATE、DELETE操作不友好,不适用于有频繁增删改操作的表。2)仅5.7.6版本之后支持中文,且中文分词效果不佳,如果要实现较完美的中文分词,还需额外安装插件。3)使用全文索引并不是对应用透明的,必须修改查询语句为全文索引规定的语法。4)全文索引文件会占用大量空间。无论是传统的模糊查询还是MySQL提供的全文索引,都不是RDB全文搜索的理想解决方案,当前对于RDB全文搜索的研究主要由Elasticsearch等搜索引擎实现,相关研究主要有文献 11-18。Elastics
14、earch是当下最流行的全文检索工具,是实现RDB全文搜索的常用手段,基于Elasticsearch的全文搜索方案主要设计思路为:1)搭建Elasticsearch服务并建立搜索引擎数据库。2)读取RDB完整数据,并将它序列化为JSON数据格式,JSON文档中的字段(Field)类似于数据库中的列。3)将转换后的数据存储于Elasticsearch中。4)构建基于Elasticsearch的查询语句进行检索。5)此外,还需建立数据源与Elasticsearch的数据同步,目前常用方式是消息队列14或额外同步插件15,如 logstash-input-jdbc、go-mysql-elastics
15、earch和Kafka等。文献 16 中研究了Elasticsearch在构建服务时面临的数据索引、接入技术选型等问题,并提出分布式的全文搜索实现方案;但这种分布式架构消耗资源巨大,更适用于一些专注于信息检索或复杂数据分析的应用,如维基百科、GitHub和电商网站等。此外,Elasticsearch数据同步较为复杂,梁爽等17对SQL Server 的数据导入 Elasticsearch 测试,将 SQL Server 中的 900万条记录(约15 GB)同步到Elasticsearch中,共占空间35 GB左右。文献 17 中的研究表明,Elasticsearch主要以空间换时间,占用空间大
16、,使用成本较高,并且数据库同步更新需建立较复杂的逻辑关系。文献 18 也指出 Elasticsearch 是面向文档的搜索引擎。文档中的文本具有复杂、多样的特性,但RDB中的文本信息有其自身特点:数据冗余度小、共享性高,通常文本长度较短,一般不超过 100个字符。对于以 RDB作数据存储的应用系统,额外部署Elasticsearch做全文搜索不仅成本高,开发和维护难度也大。针对RDB全文搜索研究现状,本文设计并实现了基于轻量级缓存策略的全文搜索模型。该模型利用Redis极高的读写性能和倒排索引检索优势,以极低的内存资源占用,有效提高了RDB全文搜索的速度和准确性。1 基于轻量级缓存的全文搜索模
17、型 本文基于轻量级缓存的RDB全文搜索模型,致力于以低资源形式突破RDB全文搜索性能瓶颈,提升系统总体性能。得益于非易失存储技术和新型3D堆叠技术迅速发展19,内存性能持续提升、设备造价迅速降低,最大单机内存容量已达TB数量级,在实时大数据处理的业务应用中扮演着关键的角色。利用内存提升大数据处理性能已成为趋势,葛薇等20、Zulfa等21和Su等22都利用内存数据库Redis提高数据查询速度。Redis是一款优秀的内存数据库,在高并发场景中表现出性能高和配置简单等优势23-25,此全文搜索模型通过Redis实现索引缓存,主要包含分词模块、检索模块、全量索引模块和增量索引模块,整体架构如图1所示
18、。2 索引缓存机制 本章详细介绍了基于缓存实现全文索引的具体设计,主要包含索引结构及存储模型、建立索引前的数据清洗与分词、数据库全量索引的构建以及数据检索的完整流程。2.1索引结构及存储模型2.1.1倒排索引数据结构倒排索引是信息检索中典型的数据结构26,由单词词典(Term Dictionary)和倒排列表(Posting List)两部分形成映射27。本文结合RDB全文搜索实际需求,设计倒排索引结构如图2所示,其中单词词典由MySQL表中部分字段文本分词后得到的词元(表示为T=t1,t2,tn)构成,倒排列表则包含字段信息和主键集合。例如,MySQL中question表中存在数据如表1所示
19、。表1question表数据Tab.1Data from table questionid123stemRedis支持的数据类型消息队列在存取消息时要满足的3个需求Redis中Hash的实现answerString,Hash,List,Set和Zset消息保序、处理重复的消息和保证消息可靠性Hash类型的底层数据结构是由压缩列表或哈希表实现的假设对question表中stem字段和answer字段的文本内容图1基于辅助缓存的全文搜索模型的整体架构Fig.1Overall architecture of full-text search model based on secondary cach
20、e图2倒排索引数据结构Fig.2Inverted index data structure2432第 8 期杨婷等:轻量级缓存策略的关系型数据库全文搜索加强与扩展建立缓存索引(创建索引前需要对文本做分词处理,不同分词组件得到的结果不同,本节暂不展开讨论),按照上述倒排索引结构,可得表2的部分索引数据结构。由表2可知,同一词元映射的倒排列表可能包含多个表字段对应的主键列表,以词元“Hash”为例,对应倒排列表为question:stem;1,question:answer;1,3 ,表示词元“Hash”在表question的stem字段和answer字段存储的文本中均有出现。其中,questio
21、n表中主键为1的记录在stem字段存在关键词“Hash”,主键为1和3的记录在answer字段存在关键词“Hash”。倒排列表中字段实质上由表名和字段名拼接而成,为便于解析,对其用“:”进行分隔。2.1.2Redis存储模型在Redis中,数据以键值对的形式进行组织和存储,这种键值映射存储模型与倒排索引数据结构类似。Redis规定,键值映射中的键只能为String类型,值可以在Redis支持的全部数据结构中选择,常见包括:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Zset)28。随着版本的更新,Redis 又 增 加 了 4 种 数 据 类 型:Bi
22、tMap(2.2 版 新 增)、HyperLogLog(2.8版新增)、GEO(3.2版新增)和Stream(5.0版新增)。倒排索引结构由词典和倒排列表构成映射,与Redis键值映射形成对应,故本文设计Redis的键存储词元,值存储倒排列表。由2.1.1节分析可知,同一词元映射的倒排列表中可以包含多个键值对元素,针对索引构建实际需求,本文选择Hash结构存储倒排列表,其中Hash的Filed由数据库表名和字段名构成,Hash中的Value由命中主键组成。索引存储模型如图3所示。但当数据量较多时(TB级别),倒排索引中过大的主键列表会引起Redis单个Key映射的Value占用空间过大问题。因
23、Redis 单线程运行的特点,若一次操作的 Value 很大(超过10 KB)则需要较长的读写时间,阻塞后续请求,严重影响Redis的性能,故本文采用Key分段和Value压缩的方式构建Redis键值对。2.2数据清洗与分词建立索引前需进行数据清洗与分词:首先,通过大小写转换对文本作统一格式处理;其次,去空格、标点和特殊字符;最后,调用分词器进行分词处理。分词是指通过特定语法规则将一段连续的字符序列按照一定规范切分成独立的单词,分词效果也是影响全文搜索结果的重要因素。英文字符串可以直接通过空格进行分割,但中文由于复杂的语言特性,分词也要复杂得多。本文通过分析对比主流的、应用广泛的中文分词器,选
24、择一个更适合RDB文本分词的分词器。此外,还可通过配合附加词库等方法提高分词的精度和准确度,使分词效率更高,分词效果更准确。常用中文分词组件包括word分词器、IK分词器、Ansj分词器、Jieba分词器等。通过比较4种分词器的特点得出:Ansj在中文分词方面功能强大,能够达到其他分词器的效果,支持词典拓展,并且分词速度极快,故本文使用Ansj实现分词功能。Ansj提供了4种分词方法:基本分词(BaseAnalysis)、精准分 词(ToAnalysis)、nlp 分 词(NlpAnalysis)和 面 向 索 引(IndexAnalysis)的分词。各方法支持功能如表3所示。精准分词是Ans
25、j官方最推荐的分词方式,在易用性、稳定性、准确性以及分词效率上,都取得较好的平衡29,能够满足RDB文本分词需求,故本文采用精准分词ToAnalysis方法进行分词处理。本模型对从MySQL提取出来的文本信息和用户输入的查询关键语句都需进行数据清洗与分词处理,这两个步骤必须采用同样的分词器才能保证匹配结果的一致性。2.3全量索引构建全量索引(Full-index)即索引的初始化,主要工作是从RDB加载需要建立索引的字段文本信息,对获取的文本内容做分词处理后生成索引,并缓存在 Redis 中。Redis 不负责MySQL中数据的存储,只存储分词后的词元和数据库记录的主键信息,用于在MySQL中查
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 轻量级 缓存 策略 关系 数据库 全文 搜索 加强 扩展
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。