頁定位到實(shí)際存儲(chǔ)位置進(jìn)行數(shù)據(jù)讀取,否則將按各版本更替時(shí)間點(diǎn)進(jìn)行查詢范圍分 害J,各分割區(qū)間內(nèi)使用最新版本的數(shù)據(jù)進(jìn)行擬合,從而完成本地?cái)?shù)據(jù)查詢流程。
[0062] 根據(jù)上述分布式文件數(shù)據(jù)庫的存儲(chǔ)方式,本發(fā)明進(jìn)一步采用分布式文件來存儲(chǔ)圖 像的索引數(shù)據(jù),所有索引數(shù)據(jù)寫入文件中,然后將索引數(shù)據(jù)文件分布存儲(chǔ)到各節(jié)點(diǎn),在各節(jié) 點(diǎn)將索引數(shù)據(jù)加載到內(nèi)存中進(jìn)行處理,極大地減輕了主節(jié)點(diǎn)的壓力。
[0063] 在寫入階段,圖像數(shù)據(jù)和索引數(shù)據(jù)并不是同步寫入,而是采用I/O通道分離的方 式:圖像數(shù)據(jù)直接寫入分布式文件系統(tǒng),索引數(shù)據(jù)采用緩沖機(jī)制,等緩沖隊(duì)列滿或計(jì)時(shí)器時(shí) 間到,再統(tǒng)一寫入索引數(shù)據(jù)文件,并實(shí)現(xiàn)分布式存儲(chǔ)。
[0064] 在主節(jié)點(diǎn)內(nèi)存中建立索引數(shù)據(jù)緩沖區(qū),索引數(shù)據(jù)記錄項(xiàng)以順序?qū)懛绞綄懭刖彌_ 區(qū)。緩沖區(qū)中以索引數(shù)據(jù)記錄為單位,索引數(shù)據(jù)緩沖機(jī)制為,緩沖區(qū)頭結(jié)構(gòu)中存在唯一標(biāo)識(shí) 此次緩沖的信息。索引數(shù)據(jù)以追加的方式寫入緩沖,當(dāng)緩沖區(qū)中的索引數(shù)據(jù)記錄達(dá)到某一 閾值或者計(jì)時(shí)器時(shí)間到,存儲(chǔ)系統(tǒng)以緩沖區(qū)為單位進(jìn)行分布式位置分配,將整個(gè)緩沖區(qū)的 索引數(shù)據(jù)記錄通過對(duì)緩沖區(qū)頭結(jié)構(gòu)中的標(biāo)識(shí)信息作Hash找到索引數(shù)據(jù)文件在分布式文件 系統(tǒng)中的對(duì)應(yīng)存儲(chǔ)節(jié)點(diǎn),并將索引數(shù)據(jù)文件存儲(chǔ)到相應(yīng)的節(jié)點(diǎn)上。索引數(shù)據(jù)存儲(chǔ)單元索引 數(shù)據(jù)緩沖區(qū)。
[0065] 為加快分布式文件系統(tǒng)中的索引數(shù)據(jù)檢索,采用并行程序來檢索索引數(shù)據(jù)。并行 檢索程序?qū)z索空間劃分成多個(gè)子空間,然后通過任務(wù)調(diào)度在各子空間進(jìn)行并行檢索,最 后通過匯總形成最終結(jié)果。本發(fā)明采用Hadoop框架中的分布式文件系統(tǒng)HDFS為小文件索 引數(shù)據(jù)提供大量可擴(kuò)展的存儲(chǔ)空間,并采用MapReduce并行編程模型對(duì)小文件索引數(shù)據(jù)的 并行檢索進(jìn)行了實(shí)現(xiàn)。通過在多屬性上建立分布式局部葉節(jié)點(diǎn)索引可以對(duì)并行檢索進(jìn)行優(yōu) 化。
[0066] 考慮在索引數(shù)據(jù)的數(shù)值屬性A2、…、An* η個(gè)屬性上進(jìn)行排序,屬性值必須是 數(shù)值型或能轉(zhuǎn)化為數(shù)值形式(連續(xù)或離散的數(shù)值屬性值均可以采用區(qū)間劃分,非數(shù)值型屬 性值轉(zhuǎn)化為數(shù)值型)。首先指定屬性A1Q e [1…η])的順序,并將數(shù)值屬性~值域劃分為 D1個(gè)子域,接下來建立多屬性的排序?qū)哟螛洌?br>[0067] 第1層為根節(jié)點(diǎn);第2層為屬性A1的所有子域,按照從左到右由小到大排序;第3 層對(duì)第2層的每一個(gè)節(jié)點(diǎn)均按屬性A2的子域從左到右由小到大排序;第(η+1)層對(duì)第η層 的每一個(gè)節(jié)點(diǎn)按屬性總的子域從左到右由小到大排序,則第(η+1)層共有B個(gè)葉子節(jié)點(diǎn),B 值計(jì)算公式為
[0068] 對(duì)所有葉子節(jié)點(diǎn)按照從左到右的順序分別進(jìn)行編號(hào),對(duì)任意元組t在屬性ΑρΑ2、、 總上的取值都可以映射到圖中的一個(gè)葉子節(jié)點(diǎn),將該葉子節(jié)點(diǎn)的編號(hào)記作元組的排序值 Re [1…B],且任何包含屬性六^^、…、An的檢索條件也具有唯一的排序值W。
[0069] 確定元組的排序之后,需要在數(shù)據(jù)節(jié)點(diǎn)建立局部葉節(jié)點(diǎn)索引,在每一個(gè)數(shù)據(jù)節(jié)點(diǎn) 建立一個(gè)長(zhǎng)度為B的葉節(jié)點(diǎn)索引,葉節(jié)點(diǎn)索引只與本地元組的情況有關(guān),只采用局部指示 索引來對(duì)本地元組的存在情況進(jìn)行指示。檢查本地所有的元組,若至少存在一個(gè)排序值為 Re [1…B]的元組,則將葉節(jié)點(diǎn)索引的第R位設(shè)置為1,否則設(shè)為0。這樣僅通過一個(gè)長(zhǎng)度 為B的葉節(jié)點(diǎn)就可以實(shí)現(xiàn)對(duì)本地所有元組在屬性A2、…、An上的指示。
[0070] 建立葉節(jié)點(diǎn)索引后,利用其進(jìn)行檢索必須是輸入的檢索條件包含建立了葉節(jié)點(diǎn)索 引的數(shù)值屬性上的取值。檢索進(jìn)行時(shí),首先根據(jù)檢索條件在指定屬性上的取值,生成檢索條 件的排序值R',檢索在數(shù)據(jù)節(jié)點(diǎn)進(jìn)行時(shí),通過指示葉節(jié)點(diǎn)索引來判斷該數(shù)據(jù)節(jié)點(diǎn)有沒有滿 足檢索條件的元組記錄,查找指示葉節(jié)點(diǎn)的第R'位,若為1,表示該節(jié)點(diǎn)可能存在滿足條 件的元組,繼續(xù)在該節(jié)點(diǎn)檢索;若為0,表示該節(jié)點(diǎn)不存在滿足條件的元組,直接返回空值, 不進(jìn)行該節(jié)點(diǎn)的檢索任務(wù)。通過以上葉節(jié)點(diǎn)索引機(jī)制,可以有效避免大量返回空集的檢索 任務(wù),在節(jié)約了檢索資源的同時(shí),提高了檢索效率。
[0071] 綜上所述,本發(fā)明提出了一種基于大數(shù)據(jù)的檢索方法,通過分布式系統(tǒng)對(duì)圖像數(shù) 據(jù)的存儲(chǔ)和檢索過程進(jìn)行了優(yōu)化,提高了檢索效率,克服了性能瓶頸。
[0072] 顯然,本領(lǐng)域的技術(shù)人員應(yīng)該理解,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算系統(tǒng)來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算系統(tǒng)上,或者分布在多個(gè)計(jì)算系統(tǒng)所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算系統(tǒng)可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ) 在存儲(chǔ)系統(tǒng)中由計(jì)算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0073] 應(yīng)當(dāng)理解的是,本發(fā)明的上述【具體實(shí)施方式】?jī)H僅用于示例性說明或解釋本發(fā)明的 原理,而不構(gòu)成對(duì)本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何 修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨 在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修 改例。
【主權(quán)項(xiàng)】
1. 一種基于大數(shù)據(jù)的檢索方法,其特征在于,包括: 采用分布式文件來存儲(chǔ)圖像的索引數(shù)據(jù),將所有索引數(shù)據(jù)寫入索引數(shù)據(jù)文件中,然后 將索引數(shù)據(jù)文件分布存儲(chǔ)到分布式文件系統(tǒng)的各個(gè)節(jié)點(diǎn); 采用MapReduce并行編程模型實(shí)現(xiàn)索引數(shù)據(jù)的檢索,將檢索空間劃分成多個(gè)子空間, 然后通過任務(wù)調(diào)度在各子空間進(jìn)行并行檢索,最后匯總形成最終檢索結(jié)果。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在圖像寫入階段,將圖像數(shù)據(jù)直接寫入分 布式文件系統(tǒng),而索引數(shù)據(jù)采用緩沖機(jī)制,當(dāng)緩沖隊(duì)列滿或計(jì)時(shí)器時(shí)間到達(dá)時(shí)統(tǒng)一寫入索 引數(shù)據(jù)文件,并實(shí)現(xiàn)分布式存儲(chǔ);在主節(jié)點(diǎn)內(nèi)存中建立索引數(shù)據(jù)緩沖區(qū),索引數(shù)據(jù)記錄項(xiàng)以 順序?qū)懛绞綄懭?,緩沖區(qū)中以索引數(shù)據(jù)記錄為單位,索引數(shù)據(jù)以追加的方式寫入緩沖,當(dāng)緩 沖隊(duì)列滿或計(jì)時(shí)器時(shí)間到達(dá)時(shí),以緩沖區(qū)為單位進(jìn)行分布式位置分配,將整個(gè)緩沖區(qū)的索 引數(shù)據(jù)記錄通過對(duì)緩沖區(qū)頭結(jié)構(gòu)中的標(biāo)識(shí)信息作散列運(yùn)算,找到索引數(shù)據(jù)文件在分布式文 件系統(tǒng)中的對(duì)應(yīng)存儲(chǔ)節(jié)點(diǎn),并將索引數(shù)據(jù)文件存儲(chǔ)到相應(yīng)的節(jié)點(diǎn)上。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過任務(wù)調(diào)度在各子空間進(jìn)行并行 檢索,還包括: 指定索引數(shù)據(jù)的n個(gè)數(shù)值屬性&的順序,其中i G [ 1…n],并將數(shù)值屬性A ^直域劃分 為Di個(gè)子域,建立多屬性的排序?qū)哟螛洌? 第1層為根節(jié)點(diǎn);第2層為屬性&的所有子域,按照從左到右由小到大排序;第3層對(duì) 第2層的每一個(gè)節(jié)點(diǎn)均按屬性A2的子域從左到右由小到大排序;第(n+1)層對(duì)第n層的每 一個(gè)節(jié)點(diǎn)按屬性總的子域從左到右由小到大排序,則第(n+1)層共有B個(gè)葉子節(jié)點(diǎn),B值計(jì) 算公式為對(duì)所有葉子節(jié)點(diǎn)按照從左到右的順序分別進(jìn)行編號(hào),對(duì)任意元組t在屬性ApA2、…、A n 上的取值均映射到圖中的一個(gè)葉子節(jié)點(diǎn),將該葉子節(jié)點(diǎn)的編號(hào)記作元組的排序值R e [1~ B],且任何包含屬性六^^、…、An的檢索條件也具有唯一的排序值R'; 確定元組的排序之后,在每一個(gè)數(shù)據(jù)節(jié)點(diǎn)建立一個(gè)長(zhǎng)度為B的葉節(jié)點(diǎn)索引,對(duì)本地元 組的存在情況進(jìn)行指示,檢查本地所有的元組,若至少存在一個(gè)排序值為RG [1…B]的元 組,則將葉節(jié)點(diǎn)索引的第R位設(shè)置為1,否則設(shè)為0 ; 檢索進(jìn)行時(shí),首先根據(jù)檢索條件在指定屬性上的取值,生成檢索條件的排序值R',檢 索在數(shù)據(jù)節(jié)點(diǎn)進(jìn)行時(shí),通過指示葉節(jié)點(diǎn)索引來判斷該數(shù)據(jù)節(jié)點(diǎn)是否滿足檢索條件的元組記 錄,查找指示葉節(jié)點(diǎn)的第R'位,若為1,繼續(xù)在該節(jié)點(diǎn)檢索;若為〇,直接返回空值。
【專利摘要】本發(fā)明提供了一種基于大數(shù)據(jù)的檢索方法,該方法包括:采用分布式文件來存儲(chǔ)圖像的索引數(shù)據(jù),將所有索引數(shù)據(jù)寫入索引數(shù)據(jù)文件中,然后將索引數(shù)據(jù)文件分布存儲(chǔ)到分布式文件系統(tǒng)的各個(gè)節(jié)點(diǎn);采用MapReduce并行編程模型實(shí)現(xiàn)索引數(shù)據(jù)的檢索,將檢索空間劃分成多個(gè)子空間,然后通過任務(wù)調(diào)度在各子空間進(jìn)行并行檢索,最后匯總形成最終檢索結(jié)果。本發(fā)明提出了一種基于大數(shù)據(jù)的檢索方法,通過分布式系統(tǒng)對(duì)圖像數(shù)據(jù)的存儲(chǔ)和檢索過程進(jìn)行了優(yōu)化,提高了檢索效率,克服了性能瓶頸。
【IPC分類】G06F17/30
【公開號(hào)】CN105117502
【申請(qǐng)?zhí)枴緾N201510658014
【發(fā)明人】郭亮, 惠孛
【申請(qǐng)人】四川中科騰信科技有限公司
【公開日】2015年12月2日
【申請(qǐng)日】2015年10月13日