APP下载

达梦数据库全文检索系统研究

2020-11-16和晓溪

数码世界 2020年10期

和晓溪

摘要:随着近些年大数据的蓬勃发展,作为其根基的海量信息数据库也得到快速的发展进步。全文检索作为海量信息数据库中不可缺失的重要检索技术,不仅帮助用户在海量信息数据库上建立起全文索引,还可以帮助用户快速的对文本信息进行高效的检索。达梦数据库是我国优秀的大型高性能数据库管理系统之一,这款具有完全自主知识产权的数据库系统在高性能、高可用性、高安全性上投入了大量的研究成本。但在此数据库系统上建立全文索引时仍存在一些问题,如索引膨胀率高,在对索引进行填充时耗时较长等问题。全文检索技术较为复杂且综合性较高,它涉及文本预处理、文档解析、分词技术等众多相关技术。本文对达梦数据库系统进行分析,探究分析其系统特性对全文索引的影响,并根据当下其它全文检索技术提出改进意见,以提高达梦数据库全文检索速度。

关键词:达梦数据库;全文检索;索引技术;索引空间膨胀

随着网络与计算机相关技术的高速发展,人们所生产的数据信息也是越来越多,庞大的数据信息在进行管理时就会发生查询上的多种问题。查询速度慢是海量数据信息查询的主要问题,因此也应运而生各种查询技术来提高查询速度,方便对海量信息数据进行管理。全文检索技术是其重要检索技术之一,它诞生于上世纪末,当时还在使用简单的字符串匹配和简单的逻辑检索技术来对文本进行检索。发展至今全文检索技术的内涵由内而外的发散形成新一代信息数据管理的代名词。全文数据库是全文检索的主要构成部分,达梦数据库作为国内较为成熟的海量数据库之一,其通用性、兼容性好等多种特点被广泛使用,其数据系统早已实现全文检索等重要功能,但在实际使用中仍存在一些问题。基于对全文检索技术的核心索引技术和检索技术,及其关键技术分词技术和压缩技术等技术分析,和相关产品的特性分析,本文对达梦数据库全文检索系统中的问题进行归纳,并提出相关改进方法,为提高达梦数据库全文检索功能提出相关具有参考价值的建议。

一、相关技术

Lucene全文索引检索引擎工具包。这是一个使用JAVA语言开发的开源的检索工具包,平台的高可移植性使得其被广泛的使用到各种数据库应用中。该工具包含以下几个功能特点:在进行索引填充维护索引文件过程中不断将新文件的小索引放入原先的大索引中进而实现的检索速度快;该工具包使用倒排索引对索引数据进行存储,并使用基于自己的压缩方式进行压缩,使得索引空间的占用率低;该工具包在设计之初就想到了扩展性问题,因此使用文档对接其相关接口就可以实现其不擅长的中文分词功能。

Oracle Text是甲骨文公司旗下的Oracle数据所使用的全文检索模块名。该索引方法有着以下几种特点:对多语言的支持,且支持的文档格式也较为全面,此外不仅能够对表建立索引,还能对其他多种索引源进行索引的建立;支持并行索引的填充,可根据并发线数将划分好的分表同时进行操作,提高索引性能;Oracle Text的索引能力极强,对多种索引内容如模糊查找、通配符、布尔、词典等都提供支持且对混合搜索也有很大的支持。但该种检索方式的索引空间膨胀率很高。

SQL Server是微软提供的功能较为简单的全文检索功能,该索引功能提供的特点主要包括以下几种:其建立索引时会将索引文件放在本地目录中,并对索引内容进行像主键和非空这样的严格限制,使得索引文件空间得到严格把控;支持较多的索引格式并能通过相关接口辨识并整合到其全文索引中;其索引的生成过程可以放到线上,并且使用线上的方式来对索引文件进行维护。SQL Server的全文检索较为简单且速度也很普通。

达梦数据库系统也提供全文检索功能,且支持多种文本数据。其在建立索引的过程中,对文本进行短句分出较为细碎的若干个词和片段,进而实现对词的精确匹配,且不区分字符的大小写。但该系统的索引空间膨胀率过高,填充时间也偏长。

二、达梦数据库全文检索系统中存在的问题

要探究达梦数据库全文索引系统中存在的问题,首先要对其索引机制进行了解。当下主流的数据库索引,都以B/B+树作为其主要结构。该方式能够很好的解决各种量级的数据库对数据检索的定位速度问题,其次对比外部索引文件的存储方式,其集合索引文档来进行数据库备份的功能和它的文档纠错能力是其优势所在。但并非B/B+树是完善的技术,它的存储特性导致它在实际使用中必须保持固定程度的冗余,因此在对空间开销上有较大需求。

在达梦数据库的全文检索系统中,它使用B+树来存放生成好的倒排索引并用此方法来管理、增改查倒排索引数据。在查找过程中使用二级索引来定位找到已经存储记录的主关键字,进而找到相应数据记录。

达梦数据库的倒排索引表设计,通常是在文档为单位的文本文档中进行操作,根据关键词断词后将分好的N个词条存入B+树中。如果存在一个文档集合,其中文档数为P那么它插入到B+树中的相异词的索引数的个数为文档个数在分词后的个数总和。并且达梦数据库使用链和自由块的方式来管理B+树的空间,导致其在进行存储过程中要对链做频繁的插入操作,会导致空间大幅度增加。在存储和索引的操作过程中也会高频次的访问B+树,导致I/O吞吐过于频繁,最后增加索引的填充时间。

达梦数据库在进行分词的时候,过于依赖自己的字典,特别是它的字典的词库类似与微软办公文档的词,过于的分散细碎。导致其在使用中容易将完整的句子通过简短的词汇分开后,产生两个完全不通顺甚至歧义的句子。此外,由于没有噪音词的过滤机制,达梦数据库在使用中也会产生过多冗余不可使用无意义的信息数据。

三、达梦数据库全文检索问题解决建议

达梦数据库完全使用B+树来管理索引的填充,而其技术本身就可以实现索引合并,因此可从索引合并入手,等到索引数量达到上线或期工作停止时,再进行索引信息存储到B+树的工作,通过实验和进行相关空间和时间上的计算,不难得出这种方法有效的减少B+数的访问次数和使用空间。

此外,可以对达梦数据库全文检索的倒排索引表结构进行重新设计,在使用词做为主要索引字段还可以加入其他字段进而有利于快速定位到文档的快排数据中,同时还可以加入文档表和字典表等,为文档的扩展性和存储的压缩都带来极大的便利性。

四、结束语

达梦数据库管理系统是达梦公司推出的高性能数据库管理系统,在实际其全文检索功能使用过程中存在索引空间膨胀和分词粒度不够细腻等问题。本文通过对其全文索引使用技术分析,并借鉴其它全文检索工具对其提出索引合并、改进索引表结构等建议,并利用空间和时间复杂度计算等技术进行检验展现改进建议的可行性。为达梦数据库的全文检索系统提出具有参考价值的建议。

参考文献

[1]张瑞.达梦数据库在人口基础信息和防汛管理中的应用研究[D].2015.

[2]黄小文.基于NoSQL存储的海量文档全文检索系统的研究与实现[D].2015.

[3]范蕾.基于Lucene的全文检索系统的设计与实现[J].Lucene,2015.

[4]李聪颖,王瑞刚,于金良.大数据分布式全文检索系统的设计与实现[J].计算机与数字工程,2016(12).

[5]闫海忠.数据库全文检索引擎的设计与实现[J].电脑编程技巧与维护,2018,000(002):105-109,142.

[6]王建永,林俊,黃杰韬,等.达梦数据库中大规模数据可扩展并行算法[J].科学技术与工程,2019(7):134-138.