本發(fā)明涉及數(shù)據(jù)庫領域,尤其涉及一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的方法及系統(tǒng)。
背景技術:
隨著信息化社會不斷的向前發(fā)展,各行各業(yè)業(yè)務的種類越來越多,使用的人群也越復雜,信息化的復雜化直接導致關系型數(shù)據(jù)庫實例中的字段增加,字段內(nèi)容也越復雜,當數(shù)據(jù)庫實例中的記錄數(shù)量和復雜字段個數(shù)達到一定程度時,使用like查詢會消耗大量時間,影響業(yè)務的通暢運作,現(xiàn)有技術中應用Lucene對數(shù)據(jù)庫查詢,是通過Lucene將索引保存至磁盤,在數(shù)據(jù)庫實例過大的情況下,創(chuàng)建索引速度不夠快,致使需要在業(yè)務空閑時間去進行Lucene索引的創(chuàng)新或更新,會導致應用的不便,查詢效率低下。
技術實現(xiàn)要素:
本發(fā)明要解決的技術問題之一,在于提供一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的方法,提高數(shù)據(jù)庫查詢效率,提高擴展性。
本發(fā)明要解決的技術問題之一是這樣實現(xiàn)的:一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的方法,需提供復數(shù)個服務器,每一服務器提供一內(nèi)存,形成集群內(nèi)存,所述方法包括如下步驟:
步驟1、在每一內(nèi)存中創(chuàng)建一內(nèi)存數(shù)據(jù)庫,將關系型數(shù)據(jù)庫實例中所有字段作為鍵值均等地加載到各個內(nèi)存的內(nèi)存數(shù)據(jù)庫中;
步驟2、在每一內(nèi)存中為內(nèi)存數(shù)據(jù)庫建立對應的索引庫;
步驟3、以廣播形式經(jīng)由檢索器對內(nèi)存中各個索引庫進行文本查詢,返回結果給應用系統(tǒng)。
進一步的,所述步驟2具體為:通過索引器解析配置文件,獲取內(nèi)存數(shù)據(jù)庫連接,根據(jù)每一內(nèi)存數(shù)據(jù)庫中存儲的內(nèi)容分別建立索引,并保存到每一內(nèi)存數(shù)據(jù)庫對應建立的一索引庫中。
進一步的,所述步驟3具體為:以廣播形式經(jīng)由Lucene索引器對各個內(nèi)存節(jié)點中的索引庫進行文本查詢,得到對應記錄的主鍵,并通過所述主鍵找到相應內(nèi)存數(shù)據(jù)庫中獲取相關記錄,最終按匹配級別由高到低將所有節(jié)點的查詢結果返回到應用系統(tǒng)。
進一步的,所述方法還包括步驟4、將每一次業(yè)務的變更實時更新到關系型數(shù)據(jù)庫中,并更新到內(nèi)存數(shù)據(jù)庫以及索引庫中。
本發(fā)明要解決的技術問題之二,在于提供一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的系統(tǒng),提高數(shù)據(jù)庫查詢效率,提高擴展性。
本發(fā)明要解決的技術問題之二是這樣實現(xiàn)的:一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的系統(tǒng),需提供復數(shù)個服務器,每一服務器提供一內(nèi)存,形成集群內(nèi)存,所述系統(tǒng)包括一內(nèi)存數(shù)據(jù)庫創(chuàng)建模塊、一索引庫創(chuàng)建模塊和一查詢模塊:
所述內(nèi)存數(shù)據(jù)庫創(chuàng)建模塊,用于在每一內(nèi)存中創(chuàng)建一內(nèi)存數(shù)據(jù)庫,將關系型數(shù)據(jù)庫實例中所有字段作為鍵值均等地加載到各個內(nèi)存的內(nèi)存數(shù)據(jù)庫中;
所述索引庫創(chuàng)建模塊,用于在每一內(nèi)存中為內(nèi)存數(shù)據(jù)庫建立對應的索引庫;
所述查詢模塊,用于以廣播形式經(jīng)由檢索器對內(nèi)存中各個索引庫進行文本查詢,返回結果給應用系統(tǒng)。
進一步的,所述索引庫創(chuàng)建模塊具體為:用于通過索引器解析配置文件,獲取內(nèi)存數(shù)據(jù)庫連接,根據(jù)每一內(nèi)存數(shù)據(jù)庫中存儲的內(nèi)容分別建立索引,并保存到每一內(nèi)存數(shù)據(jù)庫對應建立的一索引庫中。
進一步的,所述查詢模塊具體為:用于以廣播形式經(jīng)由Lucene索引器對各個內(nèi)存節(jié)點中的索引庫進行文本查詢,得到對應記錄的主鍵,并通過所述主鍵找到相應內(nèi)存數(shù)據(jù)庫中獲取相關記錄,最終按匹配級別由高到低將所有節(jié)點的查詢結果返回到應用系統(tǒng)。
進一步的,所述系統(tǒng)還包括更新模塊,用于將每一次業(yè)務的變更實時更新到關系型數(shù)據(jù)庫中,并更新到內(nèi)存數(shù)據(jù)庫以及索引庫中。
本發(fā)明具有如下優(yōu)點:
1、因使用索引器在內(nèi)存中創(chuàng)建與更新索引,大大縮短對多字段數(shù)據(jù)庫實例的復雜文本查詢的響應時間,降低索引創(chuàng)建時間;
2、將關系型數(shù)據(jù)庫實例緩存到內(nèi)存數(shù)據(jù)庫內(nèi),并以內(nèi)存Lucene索引的方式,支持全文檢索,避免使用關系型數(shù)據(jù)庫like查詢,提高查詢效率;
3、通過分布式內(nèi)存數(shù)據(jù)庫的建立,可根據(jù)關系型數(shù)據(jù)庫實例大小的變化,調(diào)整分布式內(nèi)存數(shù)據(jù)庫節(jié)點數(shù)量,提高擴展性。
附圖說明
下面參照附圖結合實施例對本發(fā)明作進一步的說明。
圖1為本發(fā)明一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的方法執(zhí)行流程圖。
圖2為本發(fā)明一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢原理示意圖。
圖3為本發(fā)明一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的系統(tǒng)框圖。
具體實施方式
如圖1和圖2所示,一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的方法,需提供復數(shù)個服務器,每一服務器提供一內(nèi)存,形成集群內(nèi)存,所述方法包括如下步驟:
步驟1、在每一內(nèi)存中創(chuàng)建一內(nèi)存數(shù)據(jù)庫,將關系型數(shù)據(jù)庫實例中所有字段作為鍵值均等地加載到各個內(nèi)存的內(nèi)存數(shù)據(jù)庫中;
步驟2、在每一內(nèi)存中為內(nèi)存數(shù)據(jù)庫建立對應的索引庫;所述步驟2具體為:通過索引器(可用Lucene索引器或其他第三方索引工具)解析配置文件,獲取內(nèi)存數(shù)據(jù)庫連接,根據(jù)每一內(nèi)存數(shù)據(jù)庫中存儲的內(nèi)容分別建立索引,通過讀取需要抽取索引的源數(shù)據(jù)庫信息,進行數(shù)據(jù)抽取與轉換建立索引,并保存到每一內(nèi)存數(shù)據(jù)庫對應建立的一索引庫中;
步驟3、以廣播形式經(jīng)由檢索器對內(nèi)存中各個索引庫進行文本查詢,返回結果給應用系統(tǒng);所述步驟3具體為:以廣播形式經(jīng)由Lucene索引器(或其他第三方索引工具)對各個內(nèi)存節(jié)點中的索引庫進行文本查詢,得到對應記錄的主鍵ID,并通過所述主鍵ID找到相應內(nèi)存數(shù)據(jù)庫中獲取相關記錄,最終按匹配級別由高到低將所有節(jié)點的查詢結果返回到應用系統(tǒng)。
所述方法還包括步驟4、將每一次業(yè)務的變更實時更新到關系型數(shù)據(jù)庫中,并更新到內(nèi)存數(shù)據(jù)庫以及索引庫中。
如圖2和圖3所示,一種基于內(nèi)存全文檢索解決數(shù)據(jù)庫復雜文本查詢的系統(tǒng),需提供復數(shù)個服務器,每一服務器提供一內(nèi)存,形成集群內(nèi)存,所述系統(tǒng)包括一內(nèi)存數(shù)據(jù)庫創(chuàng)建模塊、一索引庫創(chuàng)建模塊和一查詢模塊:
所述內(nèi)存數(shù)據(jù)庫創(chuàng)建模塊,用于在每一內(nèi)存中創(chuàng)建一內(nèi)存數(shù)據(jù)庫,將關系型數(shù)據(jù)庫實例中所有字段作為鍵值均等地加載到各個內(nèi)存的內(nèi)存數(shù)據(jù)庫中;
所述索引庫創(chuàng)建模塊,用于在每一內(nèi)存中為內(nèi)存數(shù)據(jù)庫建立對應的索引庫;所述索引庫創(chuàng)建模塊具體為:用于通過索引器(可用Lucene索引器或其他第三方索引工具)解析配置文件,獲取內(nèi)存數(shù)據(jù)庫連接,根據(jù)每一內(nèi)存數(shù)據(jù)庫中存儲的內(nèi)容分別建立索引,通過讀取需要抽取索引的源數(shù)據(jù)庫信息,進行數(shù)據(jù)抽取與轉換建立索引,并保存到每一內(nèi)存數(shù)據(jù)庫對應建立的一索引庫中;
所述查詢模塊,用于以廣播形式經(jīng)由檢索器對內(nèi)存中各個索引庫進行文本查詢,返回結果給應用系統(tǒng);所述查詢模塊具體為:用于以廣播形式經(jīng)由Lucene索引器(或其他第三方索引工具)對各個內(nèi)存節(jié)點中的索引庫進行文本查詢,得到對應記錄的主鍵ID,并通過所述主鍵ID找到相應內(nèi)存數(shù)據(jù)庫中獲取相關記錄,最終按匹配級別由高到低將所有節(jié)點的查詢結果返回到應用系統(tǒng)。
所述系統(tǒng)還包括更新模塊,用于將每一次業(yè)務的變更實時更新到關系型數(shù)據(jù)庫中,并更新到內(nèi)存數(shù)據(jù)庫以及索引庫中。
本發(fā)明通過創(chuàng)建集群內(nèi)存以及集群索引,將關系型數(shù)據(jù)庫分布到各個內(nèi)存中,并以內(nèi)存Lucene索引的方式,支持全文檢索,避免使用關系型數(shù)據(jù)庫like查詢,縮短了對多字段數(shù)據(jù)庫實例的復雜文本查詢的響應時間,提高查詢效率;且通過分布式內(nèi)存數(shù)據(jù)庫的建立,可根據(jù)關系型數(shù)據(jù)庫實例大小的變化,調(diào)整(添加或刪減)分布式內(nèi)存數(shù)據(jù)庫節(jié)點數(shù)量,提高擴展性、靈活性。
雖然以上描述了本發(fā)明的具體實施方式,但是熟悉本技術領域的技術人員應當理解,我們所描述的具體的實施例只是說明性的,而不是用于對本發(fā)明的范圍的限定,熟悉本領域的技術人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應當涵蓋在本發(fā)明的權利要求所保護的范圍內(nèi)。