本發(fā)明屬于大數(shù)據(jù)檢索,尤其涉及一種針對大規(guī)模數(shù)據(jù)的檢索方法。
背景技術(shù):
1、大規(guī)模數(shù)據(jù)指代的是千萬量級及以上的數(shù)據(jù)量,通常是通過多表多庫進行儲存。在如此大的數(shù)據(jù)量中,想要通過某一個字段,查詢出與此字段關(guān)聯(lián)的其他所有字段,并排除錯誤字段,僅僅使用單獨的常用數(shù)據(jù)查詢算法無法完成查詢?nèi)蝿?wù)。常用數(shù)據(jù)查詢算法包括:順序查找、二分查找、插值查找、斐波那契查找、分塊查找、哈希查找和樹表查找。
2、其中二分查找時間復(fù)雜度為o(log2?n),由于數(shù)據(jù)結(jié)構(gòu)原因,查詢速度快但編輯數(shù)據(jù)速度極慢,不符合可擴展性,通常用于幾千到幾百萬的數(shù)據(jù)量級;哈希查找通過大量使用哈希表來實現(xiàn)快速查找的功能,而哈希表的格式為key:value,這也意味著一個鍵只會對應(yīng)一條數(shù)據(jù),時間復(fù)雜度為o(1)。理論上能處理任何量級的數(shù)據(jù),但實際上出于成本的考慮,不可能購買如此大的磁盤空間只用來存放哈希表。b樹,一種適合大規(guī)模查詢的數(shù)據(jù)結(jié)構(gòu),每次搜索都會盡量訪問磁盤的較少層,適用于大規(guī)模數(shù)據(jù)集,尤其是在存儲設(shè)備上的數(shù)據(jù),能夠處理從幾百萬到數(shù)十億的數(shù)據(jù)記錄,但存在編輯數(shù)據(jù)可能會對數(shù)進行重構(gòu)的問題。全表掃描,由于數(shù)據(jù)結(jié)構(gòu)問題,只適用于中、小型數(shù)據(jù)查詢。為了實現(xiàn)對大量數(shù)據(jù)的快速關(guān)聯(lián)查詢,快速響應(yīng),提高用戶服務(wù)體驗,如何縮短對海量數(shù)據(jù)進行關(guān)聯(lián)查詢的響應(yīng)時間已成為近年來學(xué)術(shù)界廣泛關(guān)注的問題。
3、目前,關(guān)于大規(guī)模數(shù)據(jù)快速精準關(guān)聯(lián)查詢主要面臨以下困難:數(shù)據(jù)量龐大,并且分庫分表存儲,面對龐大的數(shù)據(jù)量,繁多的數(shù)據(jù)庫和數(shù)據(jù)表,想要進行關(guān)聯(lián)查詢,勢必會消耗大量的時間,并且無法滿足快速響應(yīng)的要求;數(shù)據(jù)具備強動態(tài)變化性,數(shù)據(jù)庫中數(shù)據(jù)會隨著用戶的行為進行更新、新增等,若無法迅速的更新數(shù)據(jù)庫,在查詢相關(guān)數(shù)據(jù)時,會存在遺漏、缺失等現(xiàn)象;數(shù)據(jù)維度過高,也稱為數(shù)據(jù)種類過多。查詢出的數(shù)據(jù)如何計算與元數(shù)據(jù)的關(guān)聯(lián)性,如何設(shè)置閾值來判斷兩者是否相關(guān),也是一個問題;傳統(tǒng)查詢算法依據(jù)關(guān)鍵詞進行查詢,并且僅支持一層查詢,無法根據(jù)查詢出的信息進行關(guān)聯(lián)查詢,也無法區(qū)分查詢數(shù)據(jù)的有效性。更無法實現(xiàn)精準關(guān)聯(lián)。
4、針對大規(guī)模數(shù)據(jù)快速精準檢索,現(xiàn)有技術(shù)提出,將b樹、哈希索引等進行結(jié)合使用,通過優(yōu)化索引結(jié)構(gòu),來提高檢索效率以及檢索數(shù)據(jù)的準確性。現(xiàn)有技術(shù)表示,數(shù)據(jù)壓縮可以顯著提高數(shù)據(jù)庫系統(tǒng)的響應(yīng)時間,通過使用輕量級的壓縮技術(shù),可在不顯著增加cpu密集型查詢運行時間的情況下,達到提高檢索效率的目的;現(xiàn)有技術(shù)提出,使用分布式架構(gòu),可充沛利用硬件資源,將大規(guī)模數(shù)據(jù)分布在多臺計算機上,并利用分布式共享內(nèi)存架構(gòu)使其成為一個邏輯整體,以多臺計算機并行處理的方式,來加快數(shù)據(jù)處理速度,在提高數(shù)據(jù)檢索效率的同時,提升檢索精準率;現(xiàn)有技術(shù)提出可通過優(yōu)化查詢過程,組合隨機搜索randomsearch、單次啟動single?start、多次啟動multi?start、模擬退火算法simulatedannealing等技術(shù),來達到提高查詢的精確度與效率的目的。
5、針對大規(guī)模數(shù)據(jù)進行關(guān)聯(lián)檢索,現(xiàn)有技術(shù)提出,利用并行計算框架對時空關(guān)聯(lián)關(guān)系進行發(fā)現(xiàn)與挖掘,以提高數(shù)據(jù)關(guān)聯(lián)的完整性;現(xiàn)有技術(shù)提出,使用基于散列的近似相似性搜索,來處理高維度數(shù)據(jù)(多特征數(shù)據(jù)),以確保數(shù)據(jù)關(guān)聯(lián)的完整性。
6、現(xiàn)有技術(shù)的解決方案,數(shù)據(jù)關(guān)聯(lián)算法是數(shù)據(jù)關(guān)聯(lián)算法,數(shù)據(jù)快速查詢算法是數(shù)據(jù)快速查詢算法,兩者涇渭分明。數(shù)據(jù)關(guān)聯(lián)算法未提及查詢效率,數(shù)據(jù)快速檢索算法又未提及如何進行關(guān)聯(lián)查詢,無法滿足現(xiàn)如今大規(guī)模快速精準關(guān)聯(lián)查詢的市場需求。
技術(shù)實現(xiàn)思路
1、針對現(xiàn)有技術(shù)中的上述不足,本發(fā)明提供的一種針對大規(guī)模數(shù)據(jù)的檢索方法,解決了對于大規(guī)模數(shù)據(jù)無法做到快速精準關(guān)聯(lián)查詢的問題。
2、為了達到以上目的,本發(fā)明采用的技術(shù)方案為:一種針對大規(guī)模數(shù)據(jù)的檢索方法,包括以下步驟:
3、s1、根據(jù)大規(guī)模數(shù)據(jù)的不同信息來源,對大規(guī)模數(shù)據(jù)進行分庫操作和分表操作,將大規(guī)模數(shù)據(jù)切分成多個數(shù)據(jù)庫和數(shù)據(jù)表進行儲存,在數(shù)據(jù)庫和數(shù)據(jù)表中構(gòu)建索引,并對數(shù)據(jù)庫和數(shù)據(jù)表建立分布式架構(gòu);
4、s2、獲取用戶輸入的原始特征,利用分布式架構(gòu),在各數(shù)據(jù)庫中檢索出與原始特征相關(guān)聯(lián)的第一關(guān)聯(lián)數(shù)據(jù),對第一關(guān)聯(lián)數(shù)據(jù)進行篩查得到原始特征集;利用動態(tài)規(guī)劃算法處理原始特征集,并將經(jīng)處理的原始特征集中的第一關(guān)聯(lián)數(shù)據(jù)作為查詢條件分布式查詢各數(shù)據(jù)庫,得到第二關(guān)聯(lián)數(shù)據(jù),由第二關(guān)聯(lián)數(shù)據(jù)得到關(guān)聯(lián)數(shù)據(jù)集;
5、s3、判斷是否繼續(xù)檢索,若是,則利用動態(tài)規(guī)劃算法處理關(guān)聯(lián)數(shù)據(jù)集,并將經(jīng)處理的關(guān)聯(lián)數(shù)據(jù)集中的數(shù)據(jù)作為查詢條件分布式查詢各數(shù)據(jù)庫,得到最終原始數(shù)據(jù),并利用動態(tài)規(guī)劃算法處理最終原始數(shù)據(jù)得到最終數(shù)據(jù),并將最終數(shù)據(jù)添加至關(guān)聯(lián)數(shù)據(jù)集中;若否,則輸出關(guān)聯(lián)數(shù)據(jù)集,完成大規(guī)模數(shù)據(jù)的檢索。
6、本發(fā)明的有益效果為:本發(fā)明將大規(guī)模數(shù)據(jù)化整為零地切分成多個數(shù)據(jù)庫和數(shù)據(jù)表,并構(gòu)建分布式架構(gòu)確保各數(shù)據(jù)庫和數(shù)據(jù)表為一個整體;本發(fā)明在數(shù)據(jù)處理流程中,通過將分布式查詢算法與動態(tài)規(guī)劃算法進行結(jié)合,利用動態(tài)規(guī)劃算法實現(xiàn)對大規(guī)模數(shù)據(jù)的精準檢索,并且動態(tài)規(guī)劃算法會對處理多個子查詢進行優(yōu)化,再利用分布式查詢算法實現(xiàn)對大規(guī)模數(shù)據(jù)的快速檢索,實現(xiàn)針對大規(guī)模數(shù)據(jù)的快速精準檢索。
7、進一步地,所述s2包括以下步驟:
8、s201、獲取用戶輸入的原始特征,利用分布式架構(gòu),在各個數(shù)據(jù)庫中并行使用索引,檢索出與原始特征相關(guān)聯(lián)的第一關(guān)聯(lián)數(shù)據(jù),利用數(shù)據(jù)篩查,處理缺失和錯誤的第一關(guān)聯(lián)數(shù)據(jù),并將經(jīng)篩查后的第一關(guān)聯(lián)數(shù)據(jù)保存,得到原始特征集;
9、s202、利用動態(tài)規(guī)劃算法,將原始特征集中的第一關(guān)聯(lián)數(shù)據(jù)進行拆分,并將關(guān)聯(lián)性強的第一關(guān)聯(lián)數(shù)據(jù)重新組合,將經(jīng)處理的第一關(guān)聯(lián)數(shù)據(jù)作為查詢條件,從各數(shù)據(jù)庫中進行分布式查詢,得到查詢數(shù)據(jù),使用加權(quán)數(shù)據(jù)和降權(quán)數(shù)據(jù)的方法處理查詢數(shù)據(jù),并剔除不合理的查詢數(shù)據(jù)保存為第二關(guān)聯(lián)數(shù)據(jù),由第二關(guān)聯(lián)數(shù)據(jù)得到關(guān)聯(lián)數(shù)據(jù)集。
10、上述進一步方案的有益效果為:本發(fā)明根據(jù)分布式架構(gòu),利用分布式查詢,提高了查詢效率,并結(jié)合動態(tài)規(guī)劃算法處理查詢所得的數(shù)據(jù),提高了查詢的準確性;通過將分布式查詢與動態(tài)規(guī)劃算法相結(jié)合,在利用分布式查詢確保進行特征查詢時快速和高效的同時,還利用動態(tài)規(guī)劃算法兼顧了數(shù)據(jù)的準確性。
11、再進一步地,所述s3包括以下步驟:
12、s301、判斷是否由用戶控制繼續(xù)檢索,若是,則進入步驟s302,否則,輸出關(guān)聯(lián)數(shù)據(jù)集,完成大規(guī)模數(shù)據(jù)的檢索;
13、s302、利用動態(tài)規(guī)劃算法處理得到的關(guān)聯(lián)數(shù)據(jù)集,將關(guān)聯(lián)數(shù)據(jù)集中的數(shù)據(jù)進行拆分,并將關(guān)聯(lián)性強的數(shù)據(jù)重新組合,將經(jīng)處理的關(guān)聯(lián)數(shù)據(jù)集中的數(shù)據(jù)作為查詢條件,從各數(shù)據(jù)庫中進行分布式查詢,得到最終原始數(shù)據(jù);
14、s303、利用動態(tài)規(guī)劃算法對最終原始數(shù)據(jù)進行處理,使用加權(quán)數(shù)據(jù)和降權(quán)數(shù)據(jù)的方法處理最終原始數(shù)據(jù),并剔除不合理的最終原始數(shù)據(jù),得到最終數(shù)據(jù),將最終數(shù)據(jù)添加至上一次檢索的關(guān)聯(lián)數(shù)據(jù)集中。
15、上述進一步方案的有益效果為:本發(fā)明采用多輪分布式查詢和動態(tài)規(guī)劃算法處理,將存在許多數(shù)據(jù)的輸入特征關(guān)聯(lián)數(shù)據(jù)集,劃分為小數(shù)據(jù)集,并將其作為檢索條件,使用分布式查詢對各數(shù)據(jù)庫進行查詢,再次進行權(quán)重計算篩選出準確的輸入特征關(guān)聯(lián)數(shù)據(jù)集,使檢索數(shù)據(jù)過程更加快速,得到的檢索數(shù)據(jù)更加精準。