基于云計算的大數據檢索方法
【技術領域】
[0001]本發明涉及數據處理,特別涉及一種基于云計算的大數據檢索方法。
【背景技術】
[0002]云計算系統能夠提供海量存儲、可靠服務,因此日益受到重視。在云基礎設施中,由成千上萬臺互相連接在一起的計算機構成提供服務的“云”,大量的用戶可以同時共享這塊“云”,并根據自己的實際需求對所需資源進行剪裁。作為云數據處理中的一個重要組成部分,當前的云存儲系統絕大部分都采用分布式散列表的方式來構建索引,數據被組織成鍵值對的形式。因此,這類云存儲系統只支持關鍵字查找,并通過點式檢索來訪問數據。然而,在對于如今發展起來的大數據的實際應用中,用戶可能傾向于采用多個鍵值來進行多維度檢索,此時現有的解決方案只能通過運行一個后臺批處理任務來掃描整個數據集然后得到檢索結果。然而,這類解決方案缺乏實時性,新存入的數據元組不能被及時地檢索到,必須等到后臺的批處理任務完成掃描才可被檢索。
【發明內容】
[0003]為解決上述現有技術所存在的問題,本發明提出了一種基于云計算的大數據檢索方法,包括:
[0004]—種基于云計算的大數據檢索方法,其特征在于,包括:
[0005]將云存儲系統的索引結構分為主索引和本地索引兩級,將數據內容存儲于本地索引中,并在主索引中利用鏈式隊列為所有的本地索引發布的元數據建立索引,通過元數據的關聯實現檢索。
[0006]優選地,所述將云存儲系統的索引結構分為主索引和本地索引兩級,進一步包括:
[0007]I)對下級的云存儲系統的存儲空間進行劃分,按照等量和有序的原則設定好各本地索引管理的空間范圍;
[0008]2)按照步驟I)分配好的本地索引管理的空間范圍,將云存儲系統中的數據映射到對應的本地索引中,當映射過程完成以后,各本地索引內部以及各本地索引之間均為有序;
[0009]3)下級的各本地索引分別將其最高級的節點發布到上級的主索引中,主索引通過下級發布過來的節點,構造全局的鏈式隊列索引,然后將各本地索引關聯起來,構成完整的索引空間;
[0010]4)下級各本地索引逐步向下進行節點的迭代發布,根據發布后預估的檢索速度增加比和發布后主索引內存占用的增長比,來判斷是否要繼續向下發布本地索引的節點;若預估檢索速度增加比低于主索引內存占用增加比,則停止向下級發布。
[0011]優選地,所述通過元數據的關聯實現檢索,進一步包括:
[0012]首先以主索引作為檢索的入口,通過檢索主索引,來確定實際包含待檢索數據的本地索引;其次,將檢索處理轉發給該本地索引,由該本地索引檢索到確定的數據后,直接返回給檢索請求的發起者,具體步驟包括:
[0013]I)將待檢索的區間發送給上級的云平臺服務器,主索引以區間的下界作為檢索的入口鍵,在主索引中進行檢索;2)當上級的主索引根據下界的鍵定位到具體本地索引后,將檢索處理轉發給發布該鍵的下級本地索引;3)當本地索引接收到轉發來的檢索處理請求時,首先根據待檢索的區間,遍歷自己的索引,直至滿足檢索區間的上界為止;若待檢索的區間已檢索一個本地索引的管理范圍,則將檢索請求轉發給該本地索引的后繼兄弟,將檢索到的數據集直接從本地索引返回給檢索的請求端。
[0014]優選地:在提交數據更新之前,每個事務先檢查在該事務讀取數據后,有沒有其他事務修改了該數據;如果其他事務有更新,將正在提交的事務進行回滾;所述的鏈式隊列每個節點中還包含2個標志位和I個鎖;其中,marked標志位用于標識該節點是否正在被刪除;linked標志位標識該節點是否完全插入,即所有層次的指針域都更新完畢,每一個節點分別維護一個鎖lock ;另外還定義2個哨兵節點head和tail,其鍵值分別為常數min_int 和 max_int ;
[0015]所述鏈式隊列的定位操作首先從哨兵節點head的最高級開始查找,依次下降,每一級查找到待查詢鍵值k所在位置或者哨兵節點tail停止,如果找到k對應的節點,則更新節點i表示該節點的最高級,記錄其每級對應的前驅節點pre[i];
[0016]所述鏈式隊列的插入操作包括:
[0017]I)首先調用定位操作,返回定位的結果,如果找到當前節點,即鍵值為k的節點已經存在,不能插入,否則,進入步驟2的操作;
[0018]2)對前驅節點數組pre自下向上加鎖;
[0019]3)驗證返回的pre和后繼節點數組succ的下一節點是否發生變化,若pre和succ的下一節點發生變化,則先釋放剛才的鎖,然后重新定位pre和succ ;如果pre和succ都沒有發生了變化,進行步驟4 ;
[0020]4)從底級開始向上進行插入操作,然后置I inked標志位為true,表示插入節點已經完全鏈接,最后釋放所有的鎖;
[0021]所述鏈式隊列的刪除操作將指定的節點刪除,首先定位節點,然后判定當前節點的狀態是否為完全鏈接,且沒有正在被刪除,如果該節點狀態合理,則對該節點上鎖,然而有可能該節點已經被其他線程刪除,此時返回false,否則,置節點marked標志位為true然后自下向上對前驅節點上鎖,如果succ和pre的狀態發生改變,則釋放之前的鎖,然后重新定位節點;最后,進行節點的物理刪除然后釋放所有鎖,返回true ;
[0022]所述鏈式隊列的檢索操作先通過定位查找節點的位置,然后返回檢索結果,以及相應的前驅節點和后繼節點;如果沒有找到相應節點,當前節點正在被刪除,或當前節點沒有完全連接,則檢索失敗;如果找到了相應節點,并且該節點沒有正在被刪除且完全鏈接,則檢索成功。
[0023]本發明相比現有技術,具有以下優點:
[0024]本發明提出了一種數據檢索方法,有效支持多種形式的檢索,可擴展性強,改善了主索引的并發性,動態實時性好,保證了索引結構整體負載均衡。
【附圖說明】
[0025]圖1是根據本發明實施例的基于云計算的大數據檢索方法的流程圖。
【具體實施方式】
[0026]下文與圖示本發明原理的附圖一起提供對本發明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發明,但是本發明不限于任何實施例。本發明的范圍僅由權利要求書限定,并且本發明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節以便提供對本發明的透徹理解。出于示例的目的而提供這些細節,并且無這些具體細節中的一些或者所有細節也可以根據權利要求書實現本發明。
[0027]本發明的一方面提供了一種基于云計算的大數據檢索方法。圖1是根據本發明實施例的基于云計算的大數據檢索方法流程圖。本發明利用自定義的索引結構,有效支持多種形式的檢索,可擴展性強,且動態實時性好;利用劃分和組合算法,解決局部服務器中的熱點問題,保證了索引結構整體的負載均衡。此外,本發明還在上級主索引中引入鏈式隊列,提尚了主索引的承載性能,改善了主索引的并發性,提尚整體索引的吞吐率。
[0028]本發明將整個索引結構分為上下兩級,索引的數據具體存儲在下級的索引中,而上級的索引則起到一個定位和導向的作用。在索引建立的時候,首先會對待索引的數據集進行分割,按照平均的原則,分成包含等量數據的子集(劃分的個數與下級的本地索引服務器相等)。然后,劃分好的數據子集與下級索引服務器一一對應,在各下級索引服務器中以鏈式隊列為基礎建立本地索引。在本地索引建立完成的基礎上,各本地索引會選擇一部分節點作為自己索引范圍的“代表”,并發布到上級的主索引中。發布時,并不是直接將下級節點原封不動的拷貝給上級節點,而是抽取這些被發布節點的元數據(包括索引的鍵、本地索引服務器IP地址、本地索引服務器磁盤物理塊號),僅將元數據發送到上級索引中,以達到減輕上級索引的內存開銷,并存儲更多節點的目的。主索引接收到下級各本地索引發布的元數據后,通過鏈式隊列的形式將這些元數據組織成一個全局的索引