和曉溪
摘要:隨著近些年大數(shù)據(jù)的蓬勃發(fā)展,作為其根基的海量信息數(shù)據(jù)庫也得到快速的發(fā)展進(jìn)步。全文檢索作為海量信息數(shù)據(jù)庫中不可缺失的重要檢索技術(shù),不僅幫助用戶在海量信息數(shù)據(jù)庫上建立起全文索引,還可以幫助用戶快速的對文本信息進(jìn)行高效的檢索。達(dá)夢數(shù)據(jù)庫是我國優(yōu)秀的大型高性能數(shù)據(jù)庫管理系統(tǒng)之一,這款具有完全自主知識產(chǎn)權(quán)的數(shù)據(jù)庫系統(tǒng)在高性能、高可用性、高安全性上投入了大量的研究成本。但在此數(shù)據(jù)庫系統(tǒng)上建立全文索引時(shí)仍存在一些問題,如索引膨脹率高,在對索引進(jìn)行填充時(shí)耗時(shí)較長等問題。全文檢索技術(shù)較為復(fù)雜且綜合性較高,它涉及文本預(yù)處理、文檔解析、分詞技術(shù)等眾多相關(guān)技術(shù)。本文對達(dá)夢數(shù)據(jù)庫系統(tǒng)進(jìn)行分析,探究分析其系統(tǒng)特性對全文索引的影響,并根據(jù)當(dāng)下其它全文檢索技術(shù)提出改進(jìn)意見,以提高達(dá)夢數(shù)據(jù)庫全文檢索速度。
關(guān)鍵詞:達(dá)夢數(shù)據(jù)庫;全文檢索;索引技術(shù);索引空間膨脹
隨著網(wǎng)絡(luò)與計(jì)算機(jī)相關(guān)技術(shù)的高速發(fā)展,人們所生產(chǎn)的數(shù)據(jù)信息也是越來越多,龐大的數(shù)據(jù)信息在進(jìn)行管理時(shí)就會發(fā)生查詢上的多種問題。查詢速度慢是海量數(shù)據(jù)信息查詢的主要問題,因此也應(yīng)運(yùn)而生各種查詢技術(shù)來提高查詢速度,方便對海量信息數(shù)據(jù)進(jìn)行管理。全文檢索技術(shù)是其重要檢索技術(shù)之一,它誕生于上世紀(jì)末,當(dāng)時(shí)還在使用簡單的字符串匹配和簡單的邏輯檢索技術(shù)來對文本進(jìn)行檢索。發(fā)展至今全文檢索技術(shù)的內(nèi)涵由內(nèi)而外的發(fā)散形成新一代信息數(shù)據(jù)管理的代名詞。全文數(shù)據(jù)庫是全文檢索的主要構(gòu)成部分,達(dá)夢數(shù)據(jù)庫作為國內(nèi)較為成熟的海量數(shù)據(jù)庫之一,其通用性、兼容性好等多種特點(diǎn)被廣泛使用,其數(shù)據(jù)系統(tǒng)早已實(shí)現(xiàn)全文檢索等重要功能,但在實(shí)際使用中仍存在一些問題?;趯θ臋z索技術(shù)的核心索引技術(shù)和檢索技術(shù),及其關(guān)鍵技術(shù)分詞技術(shù)和壓縮技術(shù)等技術(shù)分析,和相關(guān)產(chǎn)品的特性分析,本文對達(dá)夢數(shù)據(jù)庫全文檢索系統(tǒng)中的問題進(jìn)行歸納,并提出相關(guān)改進(jìn)方法,為提高達(dá)夢數(shù)據(jù)庫全文檢索功能提出相關(guān)具有參考價(jià)值的建議。
一、相關(guān)技術(shù)
Lucene全文索引檢索引擎工具包。這是一個(gè)使用JAVA語言開發(fā)的開源的檢索工具包,平臺的高可移植性使得其被廣泛的使用到各種數(shù)據(jù)庫應(yīng)用中。該工具包含以下幾個(gè)功能特點(diǎn):在進(jìn)行索引填充維護(hù)索引文件過程中不斷將新文件的小索引放入原先的大索引中進(jìn)而實(shí)現(xiàn)的檢索速度快;該工具包使用倒排索引對索引數(shù)據(jù)進(jìn)行存儲,并使用基于自己的壓縮方式進(jìn)行壓縮,使得索引空間的占用率低;該工具包在設(shè)計(jì)之初就想到了擴(kuò)展性問題,因此使用文檔對接其相關(guān)接口就可以實(shí)現(xiàn)其不擅長的中文分詞功能。
Oracle Text是甲骨文公司旗下的Oracle數(shù)據(jù)所使用的全文檢索模塊名。該索引方法有著以下幾種特點(diǎn):對多語言的支持,且支持的文檔格式也較為全面,此外不僅能夠?qū)Ρ斫⑺饕?,還能對其他多種索引源進(jìn)行索引的建立;支持并行索引的填充,可根據(jù)并發(fā)線數(shù)將劃分好的分表同時(shí)進(jìn)行操作,提高索引性能;Oracle Text的索引能力極強(qiáng),對多種索引內(nèi)容如模糊查找、通配符、布爾、詞典等都提供支持且對混合搜索也有很大的支持。但該種檢索方式的索引空間膨脹率很高。
SQL Server是微軟提供的功能較為簡單的全文檢索功能,該索引功能提供的特點(diǎn)主要包括以下幾種:其建立索引時(shí)會將索引文件放在本地目錄中,并對索引內(nèi)容進(jìn)行像主鍵和非空這樣的嚴(yán)格限制,使得索引文件空間得到嚴(yán)格把控;支持較多的索引格式并能通過相關(guān)接口辨識并整合到其全文索引中;其索引的生成過程可以放到線上,并且使用線上的方式來對索引文件進(jìn)行維護(hù)。SQL Server的全文檢索較為簡單且速度也很普通。
達(dá)夢數(shù)據(jù)庫系統(tǒng)也提供全文檢索功能,且支持多種文本數(shù)據(jù)。其在建立索引的過程中,對文本進(jìn)行短句分出較為細(xì)碎的若干個(gè)詞和片段,進(jìn)而實(shí)現(xiàn)對詞的精確匹配,且不區(qū)分字符的大小寫。但該系統(tǒng)的索引空間膨脹率過高,填充時(shí)間也偏長。
二、達(dá)夢數(shù)據(jù)庫全文檢索系統(tǒng)中存在的問題
要探究達(dá)夢數(shù)據(jù)庫全文索引系統(tǒng)中存在的問題,首先要對其索引機(jī)制進(jìn)行了解。當(dāng)下主流的數(shù)據(jù)庫索引,都以B/B+樹作為其主要結(jié)構(gòu)。該方式能夠很好的解決各種量級的數(shù)據(jù)庫對數(shù)據(jù)檢索的定位速度問題,其次對比外部索引文件的存儲方式,其集合索引文檔來進(jìn)行數(shù)據(jù)庫備份的功能和它的文檔糾錯(cuò)能力是其優(yōu)勢所在。但并非B/B+樹是完善的技術(shù),它的存儲特性導(dǎo)致它在實(shí)際使用中必須保持固定程度的冗余,因此在對空間開銷上有較大需求。
在達(dá)夢數(shù)據(jù)庫的全文檢索系統(tǒng)中,它使用B+樹來存放生成好的倒排索引并用此方法來管理、增改查倒排索引數(shù)據(jù)。在查找過程中使用二級索引來定位找到已經(jīng)存儲記錄的主關(guān)鍵字,進(jìn)而找到相應(yīng)數(shù)據(jù)記錄。
達(dá)夢數(shù)據(jù)庫的倒排索引表設(shè)計(jì),通常是在文檔為單位的文本文檔中進(jìn)行操作,根據(jù)關(guān)鍵詞斷詞后將分好的N個(gè)詞條存入B+樹中。如果存在一個(gè)文檔集合,其中文檔數(shù)為P那么它插入到B+樹中的相異詞的索引數(shù)的個(gè)數(shù)為文檔個(gè)數(shù)在分詞后的個(gè)數(shù)總和。并且達(dá)夢數(shù)據(jù)庫使用鏈和自由塊的方式來管理B+樹的空間,導(dǎo)致其在進(jìn)行存儲過程中要對鏈做頻繁的插入操作,會導(dǎo)致空間大幅度增加。在存儲和索引的操作過程中也會高頻次的訪問B+樹,導(dǎo)致I/O吞吐過于頻繁,最后增加索引的填充時(shí)間。
達(dá)夢數(shù)據(jù)庫在進(jìn)行分詞的時(shí)候,過于依賴自己的字典,特別是它的字典的詞庫類似與微軟辦公文檔的詞,過于的分散細(xì)碎。導(dǎo)致其在使用中容易將完整的句子通過簡短的詞匯分開后,產(chǎn)生兩個(gè)完全不通順甚至歧義的句子。此外,由于沒有噪音詞的過濾機(jī)制,達(dá)夢數(shù)據(jù)庫在使用中也會產(chǎn)生過多冗余不可使用無意義的信息數(shù)據(jù)。
三、達(dá)夢數(shù)據(jù)庫全文檢索問題解決建議
達(dá)夢數(shù)據(jù)庫完全使用B+樹來管理索引的填充,而其技術(shù)本身就可以實(shí)現(xiàn)索引合并,因此可從索引合并入手,等到索引數(shù)量達(dá)到上線或期工作停止時(shí),再進(jìn)行索引信息存儲到B+樹的工作,通過實(shí)驗(yàn)和進(jìn)行相關(guān)空間和時(shí)間上的計(jì)算,不難得出這種方法有效的減少B+數(shù)的訪問次數(shù)和使用空間。
此外,可以對達(dá)夢數(shù)據(jù)庫全文檢索的倒排索引表結(jié)構(gòu)進(jìn)行重新設(shè)計(jì),在使用詞做為主要索引字段還可以加入其他字段進(jìn)而有利于快速定位到文檔的快排數(shù)據(jù)中,同時(shí)還可以加入文檔表和字典表等,為文檔的擴(kuò)展性和存儲的壓縮都帶來極大的便利性。
四、結(jié)束語
達(dá)夢數(shù)據(jù)庫管理系統(tǒng)是達(dá)夢公司推出的高性能數(shù)據(jù)庫管理系統(tǒng),在實(shí)際其全文檢索功能使用過程中存在索引空間膨脹和分詞粒度不夠細(xì)膩等問題。本文通過對其全文索引使用技術(shù)分析,并借鑒其它全文檢索工具對其提出索引合并、改進(jìn)索引表結(jié)構(gòu)等建議,并利用空間和時(shí)間復(fù)雜度計(jì)算等技術(shù)進(jìn)行檢驗(yàn)展現(xiàn)改進(jìn)建議的可行性。為達(dá)夢數(shù)據(jù)庫的全文檢索系統(tǒng)提出具有參考價(jià)值的建議。
參考文獻(xiàn)
[1]張瑞.達(dá)夢數(shù)據(jù)庫在人口基礎(chǔ)信息和防汛管理中的應(yīng)用研究[D].2015.
[2]黃小文.基于NoSQL存儲的海量文檔全文檢索系統(tǒng)的研究與實(shí)現(xiàn)[D].2015.
[3]范蕾.基于Lucene的全文檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].Lucene,2015.
[4]李聰穎,王瑞剛,于金良.大數(shù)據(jù)分布式全文檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2016(12).
[5]閆海忠.數(shù)據(jù)庫全文檢索引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2018,000(002):105-109,142.
[6]王建永,林俊,黃杰韜,等.達(dá)夢數(shù)據(jù)庫中大規(guī)模數(shù)據(jù)可擴(kuò)展并行算法[J].科學(xué)技術(shù)與工程,2019(7):134-138.