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