和曉溪
摘要:隨著近些年大數據的蓬勃發展,作為其根基的海量信息數據庫也得到快速的發展進步。全文檢索作為海量信息數據庫中不可缺失的重要檢索技術,不僅幫助用戶在海量信息數據庫上建立起全文索引,還可以幫助用戶快速的對文本信息進行高效的檢索。達夢數據庫是我國優秀的大型高性能數據庫管理系統之一,這款具有完全自主知識產權的數據庫系統在高性能、高可用性、高安全性上投入了大量的研究成本。但在此數據庫系統上建立全文索引時仍存在一些問題,如索引膨脹率高,在對索引進行填充時耗時較長等問題。全文檢索技術較為復雜且綜合性較高,它涉及文本預處理、文檔解析、分詞技術等眾多相關技術。本文對達夢數據庫系統進行分析,探究分析其系統特性對全文索引的影響,并根據當下其它全文檢索技術提出改進意見,以提高達夢數據庫全文檢索速度。
關鍵詞:達夢數據庫;全文檢索;索引技術;索引空間膨脹
隨著網絡與計算機相關技術的高速發展,人們所生產的數據信息也是越來越多,龐大的數據信息在進行管理時就會發生查詢上的多種問題。查詢速度慢是海量數據信息查詢的主要問題,因此也應運而生各種查詢技術來提高查詢速度,方便對海量信息數據進行管理。全文檢索技術是其重要檢索技術之一,它誕生于上世紀末,當時還在使用簡單的字符串匹配和簡單的邏輯檢索技術來對文本進行檢索。發展至今全文檢索技術的內涵由內而外的發散形成新一代信息數據管理的代名詞。全文數據庫是全文檢索的主要構成部分,達夢數據庫作為國內較為成熟的海量數據庫之一,其通用性、兼容性好等多種特點被廣泛使用,其數據系統早已實現全文檢索等重要功能,但在實際使用中仍存在一些問題。基于對全文檢索技術的核心索引技術和檢索技術,及其關鍵技術分詞技術和壓縮技術等技術分析,和相關產品的特性分析,本文對達夢數據庫全文檢索系統中的問題進行歸納,并提出相關改進方法,為提高達夢數據庫全文檢索功能提出相關具有參考價值的建議。
一、相關技術
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.