一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法及系統(tǒng),方法包括:分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的小文件輸入事件,將所述小文件放入合并隊列,將每個合并隊列所包括的小文件分別合并后得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中,所述小文件的文件長度小于預(yù)設(shè)小文件長度閾值;分布式數(shù)據(jù)庫的管理節(jié)點為每個所述合并文件所包括的每個小文件構(gòu)建索引并保存在分布式數(shù)據(jù)庫的管理節(jié)點中;客戶端根據(jù)所述索引,從所述合并文件中獲取所述小文件。本發(fā)明從HDFS的文件存取流程出發(fā),使用合并隊列算法將小文件合并為大文件,減少小文件數(shù)量,同時,構(gòu)建索引提高文件檢索性能。
【專利說明】
-種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及分布式數(shù)據(jù)庫相關(guān)技術(shù)領(lǐng)域,特別是一種分布式數(shù)據(jù)庫中海量小文件 的多級優(yōu)化存儲方法及系統(tǒng)。
【背景技術(shù)】
[0002] 在光纜網(wǎng)管系統(tǒng)中,系統(tǒng)數(shù)據(jù)庫服務(wù)器負責(zé)光纖信息數(shù)據(jù)的分析、統(tǒng)計W及告警 處理。所有的配置信息、狀態(tài)信息、告警信息均經(jīng)過應(yīng)用服務(wù)器分析處理,將數(shù)據(jù)存儲于數(shù) 據(jù)庫中或從數(shù)據(jù)庫中查詢。由于配置信息、告警信息和狀態(tài)信息可通過海量小文件的方式 進行存儲,因此采用化doop分布式文件系統(tǒng)(化doop Distributed File System,皿FS)存 儲和管理海量數(shù)據(jù)。然而,化doop平臺存儲和處理海量小文件,即文件尺寸遠小于HDFS塊大 小(通常為64MB)的文件時,卻會引起"小文件問題"。直接存儲運類海量小文件時,會產(chǎn)生相 應(yīng)數(shù)量的目錄對象和元數(shù)據(jù)信息,迅速耗盡管理節(jié)點(NameNode)內(nèi)存。其次,訪問大量小文 件需要不斷在工作節(jié)點(DateNode)間跳轉(zhuǎn),造成HDFS吞吐量大幅降低,產(chǎn)生無法忍受的時 延。此外,處理大量小文件中的數(shù)據(jù)需要大量MapReduce任務(wù),任務(wù)間調(diào)度和執(zhí)行耗費的資 源會成倍增長,使化doop集群整體性能大幅下降。
[0003] 然而,現(xiàn)有的分布式數(shù)據(jù)庫,或稱為分布式文件系統(tǒng),其主要通過利用分布式數(shù)據(jù) 庫提供的原生工具如化doop的HAR存儲小文件,或是通過改變NameNode中對元數(shù)據(jù)的管理 方式來提高小文件存儲效率。
[0004] 現(xiàn)有對小文件的處理方式性能不高,通用性較差。
【發(fā)明內(nèi)容】
[0005] 基于此,有必要針對現(xiàn)有技術(shù)的分布式數(shù)據(jù)庫對小文件的處理方式性能不高的技 術(shù)問題,提供一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法及系統(tǒng)。
[0006] 本發(fā)明提供一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法,包括:
[0007] 文件合并步驟,分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的小文件輸 入事件,將所述小文件放入合并隊列,將每個合并隊列所包括的小文件分別合并后得到合 并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中,所述小文件的文件長度小于預(yù)設(shè)小文件長度 闊值;
[000引文件索引步驟,分布式數(shù)據(jù)庫的管理節(jié)點為每個所述合并文件所包括的每個小文 件構(gòu)建索引并保存在分布式數(shù)據(jù)庫的管理節(jié)點中;
[0009] 文件讀取步驟,客戶端根據(jù)所述索引,從所述合并文件中獲取所述小文件。
[0010] 本發(fā)明提供一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng),包括:
[0011] 文件合并模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的小 文件輸入事件,將所述小文件放入合并隊列,將每個合并隊列所包括的小文件分別合并后 得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中,所述小文件的文件長度小于預(yù)設(shè)小文 件長度闊值;
[0012] 文件索引模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點為每個所述合并文件所包括的每 個小文件構(gòu)建索引并保存在分布式數(shù)據(jù)庫的管理節(jié)點中;
[0013] 文件讀取模塊,用于:客戶端根據(jù)所述索引,從所述合并文件中獲取所述小文件。
[0014] 本發(fā)明從HDFS的文件存取流程出發(fā),使用合并隊列算法將小文件合并為大文件, 減少小文件數(shù)量,同時,構(gòu)建索引提高文件檢索性能。
【附圖說明】
[0015] 圖1為本發(fā)明一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法的工作流程 圖;
[0016] 圖2為本發(fā)明最佳實施例的工作流程圖;
[0017] 圖3為本發(fā)明一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng)的系統(tǒng)模塊 圖。
【具體實施方式】
[0018] 下面結(jié)合附圖和具體實施例對本發(fā)明做進一步詳細的說明。
[0019] 如圖1所示為本發(fā)明一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法的工作 流程圖,包括:
[0020] 步驟Sioi,分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的小文件輸入事 件,將所述小文件放入合并隊列,將每個合并隊列所包括的小文件分別合并后得到合并文 件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中,所述小文件的文件長度小于預(yù)設(shè)小文件長度闊 值;
[0021] 步驟S102,分布式數(shù)據(jù)庫的管理節(jié)點為每個所述合并文件所包括的每個小文件構(gòu) 建索引并保存在分布式數(shù)據(jù)庫的管理節(jié)點中;
[0022] 步驟S103,客戶端根據(jù)所述索引,從所述合并文件中獲取所述小文件。
[0023] 本發(fā)明從HDFS的文件存取流程出發(fā),使用合并隊列算法將小文件合并為大文件, 減少小文件數(shù)量,同時,構(gòu)建索引提高文件檢索性能。
[0024] 在其中一個實施例中,所述步驟SlOl,具體包括:
[0025] 小文件輸入響應(yīng)子步驟,分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的 小文件輸入事件;
[0026] 小文件選擇子步驟,選擇所述小文件輸入事件所包括的其中一個小文件作為當(dāng)前 小文件;
[0027] 長度比較子步驟,獲取預(yù)設(shè)的合并隊列組中所有合并隊列的剩余長度,如果所述 當(dāng)前小文件的文件長度小于或等于所有合并隊列的剩余長度的最大值,則將剩余長度大于 或等于所述當(dāng)前小文件的文件長度的合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步 驟,如果所述當(dāng)前小文件的文件長度大于所有合并隊列的剩余長度的最大值,則執(zhí)行合并 隊列選擇子步驟;
[0028] 合并緩沖選擇子步驟,將剩余長度最小的合并隊列作為待判斷合并隊列,如果所 述待判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包括的小文件合并 得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并隊列,將所述待 判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步驟,如果所述待判斷合并隊列不滿 足預(yù)設(shè)均衡合并條件,則從預(yù)設(shè)的緩沖隊列組中選擇一個緩沖隊列作為當(dāng)前合并隊列,從 緩沖隊列組中移除并加入合并隊列組,執(zhí)行小文件加入子步驟;
[0029] 小文件加入子步驟,將所述當(dāng)前小文件加入所述當(dāng)前合并隊列,如果所述小文件 輸入事件還包括其小文件,則執(zhí)行小文件選擇子步驟,否則將所述合并隊列組中每個合并 隊列所包括的小文件分別合并后得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中。
[0030] 本實施例通過緩沖隊列和合并隊列對小文件進行合并,其中,均衡合并條件優(yōu)選 為:預(yù)設(shè)合并闊值減去合并隊列的剩余長度大于或等于預(yù)設(shè)均衡值。優(yōu)選地,C-4.35《P《 C,其中C為合并闊值,一般為64MB,P為均衡值。
[0031 ]在其中一個實施例中,所述合并緩沖選擇子步驟,具體包括:
[0032] 將剩余長度最小的合并隊列作為待判斷合并隊列;
[0033] 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量小于或等于1,則將所述待判斷 合并隊列所包括的小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所 述待判斷合并隊列,將所述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步驟;
[0034] 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量大于1,則判斷所述待判斷合并 隊列是否滿足預(yù)設(shè)均衡合并條件:
[0035] 如果所述待判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包 括的小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并 隊列,如果所述合并隊列組所包括的合并隊列的數(shù)量大于預(yù)設(shè)合并隊列闊值,則將所述待 判斷合并隊列從所述合并隊列組中移除并作為緩沖隊列加入緩沖隊列組,執(zhí)行長度比較子 步驟,如果所述合并隊列組所包括的合并隊列的數(shù)量小于或等于預(yù)設(shè)合并隊列闊值,則將 所述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步驟;
[0036] 如果所述待判斷合并隊列不滿足預(yù)設(shè)均衡合并條件,則選擇一個預(yù)設(shè)的緩沖隊列 作為當(dāng)前合并隊列加入合并隊列組,執(zhí)行小文件加入子步驟。
[0037] 本實施例中,通過對緩沖隊列和合并隊列的切換,避免緩沖隊列不足。
[0038] 在其中一個實施例中,所述步驟S102,具體包括:
[0039] 小文件預(yù)設(shè)置子步驟,分布式數(shù)據(jù)庫的管理節(jié)點將每個所述合并文件所包括的每 個小文件的文件名映射為哈希值,將每個小文件所對應(yīng)的合并文件的文件名和每個小文件 在所對應(yīng)的合并文件中的位置信息作為索引內(nèi)容;
[0040] 索引樹構(gòu)建子步驟,構(gòu)建包括至少一層的文件名索引樹,W所述文件名索引樹的 根節(jié)點為當(dāng)前節(jié)點,所述文件名索引樹的每一層與一個質(zhì)數(shù)對應(yīng);
[0041] 插入小文件選擇子步驟,選擇其中一個小文件作為當(dāng)前插入小文件;
[0042] 節(jié)點判斷子步驟,若當(dāng)前節(jié)點置為未使用,則將所述當(dāng)前插入小文件的哈希值和 索引內(nèi)容插入當(dāng)前節(jié)點,并將當(dāng)前節(jié)點置為使用,若當(dāng)前節(jié)點置為使用,則計算所述當(dāng)前插 入小文件的哈希值與當(dāng)前層所對應(yīng)質(zhì)數(shù)的余數(shù)i ;
[0043] 子節(jié)點判斷子步驟,如果當(dāng)前節(jié)點的第i個子節(jié)點為空,則創(chuàng)建當(dāng)前節(jié)點的第i個 子節(jié)點,將當(dāng)前節(jié)點的第i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子步驟,否則,將當(dāng)前節(jié)點 的第i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子步驟。
[0044] 本實施例通過文件名索引樹對全局的小文件進行索引。
[0045] 在其中一個實施例中:
[0046] 所述步驟S102,具體包括:分布式數(shù)據(jù)庫的管理節(jié)點構(gòu)建用于指示所有每個小文 件所對應(yīng)的合并文件的文件名和每個小文件在所對應(yīng)的合并文件中的位置信息的文件名 索引樹,為每個合并文件構(gòu)建一個平衡多路查找樹,每個所述平衡多路查找樹包括對應(yīng)的 合并文件所包括的每個小文件在所對應(yīng)的合并文件中的位置信息;
[0047] 所述步驟S103,具體包括:
[0048] 客戶端響應(yīng)于包括小文件標(biāo)識的小文件讀取請求,從本地緩存中查找關(guān)于所述小 文件標(biāo)識所指定的小文件所在的合并文件的平衡多路查找樹;
[0049] 如果所述本地緩存中有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件的 平衡多路查找樹,則根據(jù)所述平衡多路查找樹,從分布式數(shù)據(jù)庫的工作節(jié)點中獲取所述小 文件標(biāo)識所指定的小文件;
[0050] 如果所述本地緩存中沒有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件 的平衡多路查找樹,則所述客戶端向所述分布式數(shù)據(jù)庫的管理節(jié)點發(fā)送包括小文件標(biāo)識的 小文件讀取請求,所述分布式數(shù)據(jù)庫的管理節(jié)點根據(jù)所述文件名索引樹查找所述小文件標(biāo) 識所指定的小文件,并獲取所述小文件標(biāo)識所指定的小文件所對應(yīng)的合并文件的平衡多路 查找樹,將所述小文件和所述平衡多路查找樹返回客戶端,所述客戶端保存小文件并在緩 存中保存所述平衡多路查找樹。
[0051] 本實施例通過文件名索引樹和平衡多路查找樹進行兩級預(yù)取緩存策略,提前緩存 相關(guān)數(shù)據(jù),最終實現(xiàn)海量小文件的高效存儲。
[0052] 如圖2所示為本發(fā)明最佳實施例的工作流程圖,包括:
[0053] 步驟S201,對于用戶輸入的大文件直接存入HDFS,將小文件使用均衡合并隊列算 法進行合并;
[0054] 步驟S202,對存入HDFS的合并文件構(gòu)建全局文件名索引樹(FNI-樹)與合并文件的 平衡多路查找樹(化樹);
[0055] 步驟S203,客戶端讀取文件時采取索引預(yù)取、合并文件預(yù)取的策略,并使用LFU淘 汰策略管理緩存信息;
[0化6] 其中,步驟S201具體包括:
[0057] S211、初始化數(shù)據(jù)結(jié)構(gòu)。設(shè)合并隊列集合M= {Qi,化,…,Qm},記初始合并隊列個數(shù) 為Mm?;設(shè)緩沖隊列集合N={ql,q2,???,qn},且card(N)<card(M)。設(shè)W上隊列長度均為合并 闊值C,一般為64MB。均衡值為P,取值范圍為C-4.35《P《C;
[005引S212、對于當(dāng)前輸入文件Fj,長度為Wj,當(dāng)前合并隊列化,Q2,…,Qm所余長度為 <,相,…,的。若、>苗芳的則轉(zhuǎn)至步驟S213,否則,從Wj <1<的91^中選取一個化使 得Wj=我,即Qi為能容下F迫咕最接近Wj的隊列,將Fj放入Qi中。重復(fù)步驟 S212,直到無新文件輸入后轉(zhuǎn)至步驟S216;
[0059] S213、選取一個Qs(l《s《m)使W,-想援若當(dāng)前C曰rd(N)聲1,轉(zhuǎn)至步驟S214,否 O 則將Qs中文件合并,清空Qs, Fj入隊列Qs,并重復(fù)步驟S212,其中Card(N)表示緩沖隊列集合N 中緩沖隊列的數(shù)量;
[0060] S214、若<尸,即Qs未符合均衡合并條件,則Fj入隊列qi,N^N-{qi},M^MU ^1}(1《1《11),并轉(zhuǎn)至步驟5212,否則轉(zhuǎn)至步驟5215;
[OOW] S215、Qs符合均衡合并條件,合并Qs,合并后若card(M)>Mnum,則M戶M-{Qs},N^NU {Qs},對Fj重新執(zhí)行步驟(S12),否則Fj入隊列Qs,其中card(M)表示合并隊列集合M中合并隊 列的數(shù)量;
[0062] S216、已無新的待合并文件輸入后,將M中隊列內(nèi)文件依次合并輸出,存入HDFS。
[0063] 其中,步驟S202具體包括:
[0064] S221、使用哈希算法將小文件名映射為唯一的非負整數(shù)關(guān)鍵字,索引內(nèi)容為該小 文件對應(yīng)合并文件名和在合并文件中的位置信息;
[00化]S222、初始化FNI-樹;使用2、3、5、7、11、13、17、19、23、29作為構(gòu)建。化-樹的質(zhì)數(shù)數(shù) 列;設(shè)當(dāng)前要插入的小文件名哈希值為k,索引內(nèi)容為v,l表示當(dāng)前層數(shù),Zi為當(dāng)前層對應(yīng)的 質(zhì)數(shù),N表示當(dāng)前節(jié)點,Ni表示N第i個子節(jié)點地址;根節(jié)點使用標(biāo)識符置為化Ue;從根節(jié)點開 始,按步驟S223至步驟S224插入節(jié)點,按步驟S225至步驟S227查找節(jié)點,按步驟S228刪除節(jié) 占. '?、、,
[0066] S223、若當(dāng)前節(jié)點N未被使用,則將k、v插入該節(jié)點,并將使用標(biāo)識符置為化ue,結(jié) 束插入;若N已被使用,則計算k與當(dāng)前層對應(yīng)質(zhì)數(shù)的余數(shù)i,即i = kmodZi;
[0067] S224、若Ni為空,則創(chuàng)建該子節(jié)點,令N^Ni,1^1+1,重復(fù)步驟S223;否則令N^Ni,1 ^1+1,重復(fù)步驟S223;
[0068] S225、若當(dāng)前節(jié)點N已被使用,則比較該節(jié)點關(guān)鍵字是否與k相等,若相等,返回該 節(jié)點索引內(nèi)容,查找結(jié)束,若不等則轉(zhuǎn)至步驟S227;
[0069] S226、若N未被使用,轉(zhuǎn)至步驟S227;
[0070] S227、計算i=kmodZi,令1^^仍,1^1+1。若1《1《1+1,重復(fù)步驟5225,否則結(jié)束查 找,返回失??;
[0071] S228、對于刪除操作,只需按步驟S225至步驟S227找到目標(biāo)節(jié)點,將其使用標(biāo)識符 置為^lse即可;
[0072] S229、對于每個合并文件,使用一棵W小文件名為節(jié)點關(guān)鍵字、小文件位置為葉子 節(jié)點內(nèi)容的化樹,保存于磁盤中;
[0073] 其中,步驟S203具體包括:
[0074] S231、若客戶端需要讀取某小文件且本地緩存中并不存在其對應(yīng)的索引,觸發(fā)索 引預(yù)取機制,客戶端向NameNode發(fā)出小文件訪問請求的同時請求返回小文件對應(yīng)的索引, 即NameNode磁盤中合并文件的B+樹索引。收到索引文件后,客戶端緩存該索引和一并返回 的元數(shù)據(jù)信息。若客戶端再次讀取屬于該合并文件的小文件時,可直接由索引和元數(shù)據(jù)完 成定位,直接從化化Node中讀取該文件。
[0075] S232、在步驟S331索引預(yù)取機制的基礎(chǔ)上,若客戶端讀取某小文件時,在緩存中命 中其索引,觸發(fā)合并文件預(yù)取機制,在讀取目標(biāo)文件時將所屬的合并文件預(yù)取至緩存中。若 并未命中該小文件的索引緩存,則只觸發(fā)索引預(yù)取機制。
[0076] S233、客戶端緩存的預(yù)取信息采用LFlKLeast化equent Iy Used,最近最不常用) 淘汰策略,客戶端定時更新預(yù)取信息緩存,避免緩存內(nèi)容過多??蛻舳嗽陬A(yù)取的索引和合并 文件首部增加文件訪問頻率標(biāo)識,每次訪問該條信息將訪問頻率加1,每次到更新時間后將 訪問頻率最少的f目息移除。
[0077] 本發(fā)明利用包含均衡合并隊列算法、混合索引策略和預(yù)取緩存策略的多級優(yōu)化方 法,使得化doop在存儲海量小文件時,NameNode名字節(jié)點負載得到有效降低,查找小文件的 響應(yīng)速度提高,頻繁傳輸小文件時的集群網(wǎng)絡(luò)壓力得到緩解,達到高效存儲海量小文件的 效果。
[0078] 本發(fā)明的實例中,取某用戶整個輸入過程中的2個小文件:小文件曰,體積為1MB;小 文件b,體積為2MB,作為步驟Sl均衡合并算法部分的實例數(shù)據(jù)。分別W 78、469、321為步驟S2 部分中小文件a、小文件b、小文件C對應(yīng)的小文件名關(guān)鍵字實例數(shù)據(jù)。W合并文件H和其包含 的小文件a、小文件b作為步驟S203的實例數(shù)據(jù)。
[0079] S211、設(shè)共有3個合并隊列化,Q2,化、2個緩沖隊列qi,Q2,合并闊值C為64MB,均衡值P 為63MB。
[0080] S212、假設(shè)當(dāng)前合并隊列剩余長度分別為"―I =1. 1MB,唯=300拙,旬 =600KB。對于輸入文件小文件a,化為最適隊列,將小文件a放入扣,此時"'1=102. 4拙。接 著輸入小文件b,> 1巧轉(zhuǎn)至步驟S213。 .〇
[0081] S213、化剩余空間最少且當(dāng)前緩沖隊列個數(shù)不為1,轉(zhuǎn)至步驟S214。
[0082] S214、C-wr >滬,因此轉(zhuǎn)入步驟S215。
[0083] S215、合并化中的文件并將其清空,將小文件b放入化中,轉(zhuǎn)至步驟S212。
[0084] S216、當(dāng)已無新的文件輸入后,將合并隊列中的文件依次合并,存入HDFS2。
[00化]8221、5222、5223、對于關(guān)鍵字78,78對2取余,結(jié)果為0,將關(guān)鍵字78及其索引內(nèi)容 插入根節(jié)點的第一個子節(jié)點A中。對于關(guān)鍵字469,469對2取余,結(jié)果為1,將關(guān)鍵字469及其 索引內(nèi)容插入根節(jié)點的第二個子節(jié)點B中。對于關(guān)鍵字321,321對2取余,結(jié)果為1,但節(jié)點B 已被469占用,計算321對3的余數(shù)為0,轉(zhuǎn)至步驟S224.
[0086] S224、節(jié)點B的第一個子節(jié)點C未被占用,將關(guān)鍵字321及其索引內(nèi)容插入節(jié)點C中。
[0087] S225、S226、S227、要查找關(guān)鍵字78,先對根節(jié)點構(gòu)造質(zhì)數(shù)2取余,得到余數(shù)為0,比 較根節(jié)點第一個子節(jié)點A中關(guān)鍵字是否等于78。結(jié)果相等,查找成功,返回A中索引內(nèi)容。
[008引S228、欲刪除關(guān)鍵字為78的節(jié)點,按上述步驟查找到其在節(jié)點A中,將A的使用標(biāo)識 符置為化Ise,完成操作。
[0089] S231、客戶端欲讀取小文件曰,且未在本地緩存中命中其索引,則客戶端將請求 NameNode返回小文件a的元數(shù)據(jù)和小文件a所在的合并文件H的B+樹索引,并將返回結(jié)果保 存在客戶端。
[0090] S232、客戶端欲讀取小文件b,由于其所在的合并文件H的索引已由步驟S231取得, 故命中小文件b索引,客戶端讀取化taNode中小文件b內(nèi)容的同時,讀取并保存合并文件H的 內(nèi)容。
[0091 ] S233、客戶端每次訪問預(yù)取信息時將該信息訪問頻率加1,定期將訪問頻率為0的 信息移除。
[0092] 如圖3所示為本發(fā)明一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng)的系統(tǒng) 模塊圖,包括:
[0093] 文件合并模塊301,用于:分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的 小文件輸入事件,將所述小文件放入合并隊列,將每個合并隊列所包括的小文件分別合并 后得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中,所述小文件的文件長度小于預(yù)設(shè)小 文件長度闊值;
[0094] 文件索引模塊302,用于:分布式數(shù)據(jù)庫的管理節(jié)點為每個所述合并文件所包括的 每個小文件構(gòu)建索引并保存在分布式數(shù)據(jù)庫的管理節(jié)點中;
[0095] 文件讀取模塊303,用于:客戶端根據(jù)所述索引,從所述合并文件中獲取所述小文 件。
[0096] 在其中一個實施例中,所述文件合并模塊,具體用于:
[0097] 小文件輸入響應(yīng)子模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小 文件的小文件輸入事件;
[0098] 小文件選擇子模塊,用于:選擇所述小文件輸入事件所包括的其中一個小文件作 為當(dāng)前小文件;
[0099] 長度比較子模塊,用于:獲取預(yù)設(shè)的合并隊列組中所有合并隊列的剩余長度,如果 所述當(dāng)前小文件的文件長度小于或等于所有合并隊列的剩余長度的最大值,則將剩余長度 大于或等于所述當(dāng)前小文件的文件長度的合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子 模塊,如果所述當(dāng)前小文件的文件長度大于所有合并隊列的剩余長度的最大值,則執(zhí)行合 并隊列選擇子模塊;
[0100] 合并緩沖選擇子模塊,用于:將剩余長度最小的合并隊列作為待判斷合并隊列,如 果所述待判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包括的小文件 合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并隊列,將所 述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子模塊,如果所述待判斷合并隊列 不滿足預(yù)設(shè)均衡合并條件,則從預(yù)設(shè)的緩沖隊列組中選擇一個緩沖隊列作為當(dāng)前合并隊 列,從緩沖隊列組中移除并加入合并隊列組,執(zhí)行小文件加入子模塊;
[0101] 小文件加入子模塊,用于:將所述當(dāng)前小文件加入所述當(dāng)前合并隊列,如果所述小 文件輸入事件還包括其小文件,則執(zhí)行小文件選擇子模塊,否則將所述合并隊列組中每個 合并隊列所包括的小文件分別合并后得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中。
[0102] 在其中一個實施例中,所述合并緩沖選擇子模塊,具體用于:
[0103] 將剩余長度最小的合并隊列作為待判斷合并隊列;
[0104] 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量小于或等于6,則將所述待判斷 合并隊列所包括的小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所 述待判斷合并隊列,將所述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子模塊;
[0105] 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量大于6,則判斷所述待判斷合并 隊列是否滿足預(yù)設(shè)均衡合并條件:
[0106] 如果所述待判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包 括的小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并 隊列,如果所述合并隊列組所包括的合并隊列的數(shù)量大于預(yù)設(shè)合并隊列闊值,則將所述待 判斷合并隊列從所述合并隊列組中移除并作為緩沖隊列加入緩沖隊列組,執(zhí)行長度比較子 模塊,如果所述合并隊列組所包括的合并隊列的數(shù)量小于或等于預(yù)設(shè)合并隊列闊值,則將 所述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子模塊;
[0107] 如果所述待判斷合并隊列不滿足預(yù)設(shè)均衡合并條件,則選擇一個預(yù)設(shè)的緩沖隊列 作為當(dāng)前合并隊列加入合并隊列組,執(zhí)行小文件加入子模塊。
[0108] 在其中一個實施例中,所述文件索引模塊,具體用于:
[0109] 小文件預(yù)設(shè)置子模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點將每個所述合并文件所包 括的每個小文件的文件名映射為哈希值,將每個小文件所對應(yīng)的合并文件的文件名和每個 小文件在所對應(yīng)的合并文件中的位置信息作為索引內(nèi)容;
[0110] 索引樹構(gòu)建子模塊,用于:構(gòu)建包括至少一層的文件名索引樹,W所述文件名索引 樹的根節(jié)點為當(dāng)前節(jié)點,所述文件名索引樹的每一層與一個質(zhì)數(shù)對應(yīng);
[0111] 插入小文件選擇子模塊,用于:選擇其中一個小文件作為當(dāng)前插入小文件;
[0112] 節(jié)點判斷子模塊,用于:若當(dāng)前節(jié)點置為未使用,則將所述當(dāng)前插入小文件的哈希 值和索引內(nèi)容插入當(dāng)前節(jié)點,并將當(dāng)前節(jié)點置為使用,若當(dāng)前節(jié)點置為使用,則計算所述當(dāng) 前插入小文件的哈希值與當(dāng)前層所對應(yīng)質(zhì)數(shù)的余數(shù)i ;
[0113] 子節(jié)點判斷子模塊,用于:如果當(dāng)前節(jié)點的第i個子節(jié)點為空,則創(chuàng)建當(dāng)前節(jié)點的 第i個子節(jié)點,將當(dāng)前節(jié)點的第i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子模塊,否則,將當(dāng) 前節(jié)點的第i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子模塊。
[0114] 在其中一個實施例中:
[0115] 所述文件索引模塊,具體用于:分布式數(shù)據(jù)庫的管理節(jié)點構(gòu)建用于指示所有每個 小文件所對應(yīng)的合并文件的文件名和每個小文件在所對應(yīng)的合并文件中的位置信息的文 件名索引樹,為每個合并文件構(gòu)建一個平衡多路查找樹,每個所述平衡多路查找樹包括對 應(yīng)的合并文件所包括的每個小文件在所對應(yīng)的合并文件中的位置信息;
[0116] 所述文件讀取模塊,具體用于:
[0117] 客戶端響應(yīng)于包括小文件標(biāo)識的小文件讀取請求,從本地緩存中查找關(guān)于所述小 文件標(biāo)識所指定的小文件所在的合并文件的平衡多路查找樹;
[0118] 如果所述本地緩存中有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件的 平衡多路查找樹,則根據(jù)所述平衡多路查找樹,從分布式數(shù)據(jù)庫的工作節(jié)點中獲取所述小 文件標(biāo)識所指定的小文件;
[0119] 如果所述本地緩存中沒有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件 的平衡多路查找樹,則所述客戶端向所述分布式數(shù)據(jù)庫的管理節(jié)點發(fā)送包括小文件標(biāo)識的 小文件讀取請求,所述分布式數(shù)據(jù)庫的管理節(jié)點根據(jù)所述文件名索引樹查找所述小文件標(biāo) 識所指定的小文件,并獲取所述小文件標(biāo)識所指定的小文件所對應(yīng)的合并文件的平衡多路 查找樹,將所述小文件和所述平衡多路查找樹返回客戶端,所述客戶端保存小文件并在緩 存中保存所述平衡多路查找樹。
[0120] W上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并 不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員 來說,在不脫離本發(fā)明構(gòu)思的前提下,還可W做出若干變形和改進,運些都屬于本發(fā)明的保 護范圍。因此,本發(fā)明專利的保護范圍應(yīng)W所附權(quán)利要求為準(zhǔn)。
【主權(quán)項】
1. 一種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法,其特征在于,包括: 文件合并步驟,分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的小文件輸入事 件,將所述小文件放入合并隊列,將每個合并隊列所包括的小文件分別合并后得到合并文 件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中,所述小文件的文件長度小于預(yù)設(shè)小文件長度閾 值; 文件索引步驟,分布式數(shù)據(jù)庫的管理節(jié)點為每個所述合并文件所包括的每個小文件構(gòu) 建索引并保存在分布式數(shù)據(jù)庫的管理節(jié)點中; 文件讀取步驟,客戶端根據(jù)所述索引,從所述合并文件中獲取所述小文件。2. 根據(jù)權(quán)利要求1所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法,其特征在 于,所述文件合并步驟,具體包括: 小文件輸入響應(yīng)子步驟,分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的小文 件輸入事件; 小文件選擇子步驟,選擇所述小文件輸入事件所包括的其中一個小文件作為當(dāng)前小文 件; 長度比較子步驟,獲取預(yù)設(shè)的合并隊列組中所有合并隊列的剩余長度,如果所述當(dāng)前 小文件的文件長度小于或等于所有合并隊列的剩余長度的最大值,則將剩余長度大于或等 于所述當(dāng)前小文件的文件長度的合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步驟,如 果所述當(dāng)前小文件的文件長度大于所有合并隊列的剩余長度的最大值,則執(zhí)行合并隊列選 擇子步驟; 合并緩沖選擇子步驟,將剩余長度最小的合并隊列作為待判斷合并隊列,如果所述待 判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包括的小文件合并得到 合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并隊列,將所述待判斷 合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步驟,如果所述待判斷合并隊列不滿足預(yù) 設(shè)均衡合并條件,則從預(yù)設(shè)的緩沖隊列組中選擇一個緩沖隊列作為當(dāng)前合并隊列,從緩沖 隊列組中移除并加入合并隊列組,執(zhí)行小文件加入子步驟; 小文件加入子步驟,將所述當(dāng)前小文件加入所述當(dāng)前合并隊列,如果所述小文件輸入 事件還包括其小文件,則執(zhí)行小文件選擇子步驟,否則將所述合并隊列組中每個合并隊列 所包括的小文件分別合并后得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中。3. 根據(jù)權(quán)利要求2所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法,其特征在 于,所述合并緩沖選擇子步驟,具體包括: 將剩余長度最小的合并隊列作為待判斷合并隊列; 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量小于或等于1,則將所述待判斷合并 隊列所包括的小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待 判斷合并隊列,將所述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步驟; 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量大于1,則判斷所述待判斷合并隊列 是否滿足預(yù)設(shè)均衡合并條件: 如果所述待判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包括的 小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并隊 列,如果所述合并隊列組所包括的合并隊列的數(shù)量大于預(yù)設(shè)合并隊列閾值,則將所述待判 斷合并隊列從所述合并隊列組中移除并作為緩沖隊列加入緩沖隊列組,執(zhí)行長度比較子步 驟,如果所述合并隊列組所包括的合并隊列的數(shù)量小于或等于預(yù)設(shè)合并隊列閾值,則將所 述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子步驟; 如果所述待判斷合并隊列不滿足預(yù)設(shè)均衡合并條件,則選擇一個預(yù)設(shè)的緩沖隊列作為 當(dāng)前合并隊列加入合并隊列組,執(zhí)行小文件加入子步驟。4. 根據(jù)權(quán)利要求1所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法,其特征在 于,所述文件索引步驟,具體包括: 小文件預(yù)設(shè)置子步驟,分布式數(shù)據(jù)庫的管理節(jié)點將每個所述合并文件所包括的每個小 文件的文件名映射為哈希值,將每個小文件所對應(yīng)的合并文件的文件名和每個小文件在所 對應(yīng)的合并文件中的位置信息作為索引內(nèi)容; 索引樹構(gòu)建子步驟,構(gòu)建包括至少一層的文件名索引樹,以所述文件名索引樹的根節(jié) 點為當(dāng)前節(jié)點,所述文件名索引樹的每一層與一個質(zhì)數(shù)對應(yīng); 插入小文件選擇子步驟,選擇其中一個小文件作為當(dāng)前插入小文件; 節(jié)點判斷子步驟,若當(dāng)前節(jié)點置為未使用,則將所述當(dāng)前插入小文件的哈希值和索引 內(nèi)容插入當(dāng)前節(jié)點,并將當(dāng)前節(jié)點置為使用,若當(dāng)前節(jié)點置為使用,則計算所述當(dāng)前插入小 文件的哈希值與當(dāng)前層所對應(yīng)質(zhì)數(shù)的余數(shù)i ; 子節(jié)點判斷子步驟,如果當(dāng)前節(jié)點的第i個子節(jié)點為空,則創(chuàng)建當(dāng)前節(jié)點的第i個子節(jié) 點,將當(dāng)前節(jié)點的第i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子步驟,否則,將當(dāng)前節(jié)點的第 i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子步驟。5. 根據(jù)權(quán)利要求1所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲方法,其特征在 于: 所述文件索引步驟,具體包括:分布式數(shù)據(jù)庫的管理節(jié)點構(gòu)建用于指示所有每個小文 件所對應(yīng)的合并文件的文件名和每個小文件在所對應(yīng)的合并文件中的位置信息的文件名 索引樹,為每個合并文件構(gòu)建一個平衡多路查找樹,每個所述平衡多路查找樹包括對應(yīng)的 合并文件所包括的每個小文件在所對應(yīng)的合并文件中的位置信息; 所述文件讀取步驟,具體包括: 客戶端響應(yīng)于包括小文件標(biāo)識的小文件讀取請求,從本地緩存中查找關(guān)于所述小文件 標(biāo)識所指定的小文件所在的合并文件的平衡多路查找樹; 如果所述本地緩存中有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件的平衡 多路查找樹,則根據(jù)所述平衡多路查找樹,從分布式數(shù)據(jù)庫的工作節(jié)點中獲取所述小文件 標(biāo)識所指定的小文件; 如果所述本地緩存中沒有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件的平 衡多路查找樹,則所述客戶端向所述分布式數(shù)據(jù)庫的管理節(jié)點發(fā)送包括小文件標(biāo)識的小文 件讀取請求,所述分布式數(shù)據(jù)庫的管理節(jié)點根據(jù)所述文件名索引樹查找所述小文件標(biāo)識所 指定的小文件,并獲取所述小文件標(biāo)識所指定的小文件所對應(yīng)的合并文件的平衡多路查找 樹,將所述小文件和所述平衡多路查找樹返回客戶端,所述客戶端保存小文件并在緩存中 保存所述平衡多路查找樹。6. -種分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng),其特征在于,包括: 文件合并模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件的小文件 輸入事件,將所述小文件放入合并隊列,將每個合并隊列所包括的小文件分別合并后得到 合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中,所述小文件的文件長度小于預(yù)設(shè)小文件長 度閾值; 文件索引模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點為每個所述合并文件所包括的每個小 文件構(gòu)建索引并保存在分布式數(shù)據(jù)庫的管理節(jié)點中; 文件讀取模塊,用于:客戶端根據(jù)所述索引,從所述合并文件中獲取所述小文件。7. 根據(jù)權(quán)利要求6所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng),其特征在 于,所述文件合并模塊,具體用于: 小文件輸入響應(yīng)子模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點響應(yīng)于包括至少一個小文件 的小文件輸入事件; 小文件選擇子模塊,用于:選擇所述小文件輸入事件所包括的其中一個小文件作為當(dāng) 前小文件; 長度比較子模塊,用于:獲取預(yù)設(shè)的合并隊列組中所有合并隊列的剩余長度,如果所述 當(dāng)前小文件的文件長度小于或等于所有合并隊列的剩余長度的最大值,則將剩余長度大于 或等于所述當(dāng)前小文件的文件長度的合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子模 塊,如果所述當(dāng)前小文件的文件長度大于所有合并隊列的剩余長度的最大值,則執(zhí)行合并 隊列選擇子模塊; 合并緩沖選擇子模塊,用于:將剩余長度最小的合并隊列作為待判斷合并隊列,如果所 述待判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包括的小文件合并 得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并隊列,將所述待 判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子模塊,如果所述待判斷合并隊列不滿 足預(yù)設(shè)均衡合并條件,則從預(yù)設(shè)的緩沖隊列組中選擇一個緩沖隊列作為當(dāng)前合并隊列,從 緩沖隊列組中移除并加入合并隊列組,執(zhí)行小文件加入子模塊; 小文件加入子模塊,用于:將所述當(dāng)前小文件加入所述當(dāng)前合并隊列,如果所述小文件 輸入事件還包括其小文件,則執(zhí)行小文件選擇子模塊,否則將所述合并隊列組中每個合并 隊列所包括的小文件分別合并后得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點中。8. 根據(jù)權(quán)利要求7所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng),其特征在 于,所述合并緩沖選擇子模塊,具體用于: 將剩余長度最小的合并隊列作為待判斷合并隊列; 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量小于或等于6,則將所述待判斷合并 隊列所包括的小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待 判斷合并隊列,將所述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子模塊; 如果預(yù)設(shè)的緩沖隊列組所包括的緩沖隊列的數(shù)量大于6,則判斷所述待判斷合并隊列 是否滿足預(yù)設(shè)均衡合并條件: 如果所述待判斷合并隊列滿足預(yù)設(shè)均衡合并條件,則將所述待判斷合并隊列所包括的 小文件合并得到合并文件并保存在分布式數(shù)據(jù)庫的工作節(jié)點后,清空所述待判斷合并隊 列,如果所述合并隊列組所包括的合并隊列的數(shù)量大于預(yù)設(shè)合并隊列閾值,則將所述待判 斷合并隊列從所述合并隊列組中移除并作為緩沖隊列加入緩沖隊列組,執(zhí)行長度比較子模 塊,如果所述合并隊列組所包括的合并隊列的數(shù)量小于或等于預(yù)設(shè)合并隊列閾值,則將所 述待判斷合并隊列作為當(dāng)前合并隊列,執(zhí)行小文件加入子模塊; 如果所述待判斷合并隊列不滿足預(yù)設(shè)均衡合并條件,則選擇一個預(yù)設(shè)的緩沖隊列作為 當(dāng)前合并隊列加入合并隊列組,執(zhí)行小文件加入子模塊。9. 根據(jù)權(quán)利要求6所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng),其特征在 于,所述文件索引模塊,具體用于: 小文件預(yù)設(shè)置子模塊,用于:分布式數(shù)據(jù)庫的管理節(jié)點將每個所述合并文件所包括的 每個小文件的文件名映射為哈希值,將每個小文件所對應(yīng)的合并文件的文件名和每個小文 件在所對應(yīng)的合并文件中的位置信息作為索引內(nèi)容; 索引樹構(gòu)建子模塊,用于:構(gòu)建包括至少一層的文件名索引樹,以所述文件名索引樹的 根節(jié)點為當(dāng)前節(jié)點,所述文件名索引樹的每一層與一個質(zhì)數(shù)對應(yīng); 插入小文件選擇子模塊,用于:選擇其中一個小文件作為當(dāng)前插入小文件; 節(jié)點判斷子模塊,用于:若當(dāng)前節(jié)點置為未使用,則將所述當(dāng)前插入小文件的哈希值和 索引內(nèi)容插入當(dāng)前節(jié)點,并將當(dāng)前節(jié)點置為使用,若當(dāng)前節(jié)點置為使用,則計算所述當(dāng)前插 入小文件的哈希值與當(dāng)前層所對應(yīng)質(zhì)數(shù)的余數(shù)i ; 子節(jié)點判斷子模塊,用于:如果當(dāng)前節(jié)點的第i個子節(jié)點為空,則創(chuàng)建當(dāng)前節(jié)點的第i個 子節(jié)點,將當(dāng)前節(jié)點的第i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子模塊,否則,將當(dāng)前節(jié)點 的第i個子節(jié)點作為當(dāng)前節(jié)點,執(zhí)行節(jié)點判斷子模塊。10. 根據(jù)權(quán)利要求6所述的分布式數(shù)據(jù)庫中海量小文件的多級優(yōu)化存儲系統(tǒng),其特征在 于: 所述文件索引模塊,具體用于:分布式數(shù)據(jù)庫的管理節(jié)點構(gòu)建用于指示所有每個小文 件所對應(yīng)的合并文件的文件名和每個小文件在所對應(yīng)的合并文件中的位置信息的文件名 索引樹,為每個合并文件構(gòu)建一個平衡多路查找樹,每個所述平衡多路查找樹包括對應(yīng)的 合并文件所包括的每個小文件在所對應(yīng)的合并文件中的位置信息; 所述文件讀取模塊,具體用于: 客戶端響應(yīng)于包括小文件標(biāo)識的小文件讀取請求,從本地緩存中查找關(guān)于所述小文件 標(biāo)識所指定的小文件所在的合并文件的平衡多路查找樹; 如果所述本地緩存中有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件的平衡 多路查找樹,則根據(jù)所述平衡多路查找樹,從分布式數(shù)據(jù)庫的工作節(jié)點中獲取所述小文件 標(biāo)識所指定的小文件; 如果所述本地緩存中沒有關(guān)于所述小文件標(biāo)識所指定的小文件所在的合并文件的平 衡多路查找樹,則所述客戶端向所述分布式數(shù)據(jù)庫的管理節(jié)點發(fā)送包括小文件標(biāo)識的小文 件讀取請求,所述分布式數(shù)據(jù)庫的管理節(jié)點根據(jù)所述文件名索引樹查找所述小文件標(biāo)識所 指定的小文件,并獲取所述小文件標(biāo)識所指定的小文件所對應(yīng)的合并文件的平衡多路查找 樹,將所述小文件和所述平衡多路查找樹返回客戶端,所述客戶端保存小文件并在緩存中 保存所述平衡多路查找樹。
【文檔編號】G06F17/30GK105956183SQ201610375410
【公開日】2016年9月21日
【申請日】2016年5月30日
【發(fā)明人】張華琛, 高如超, 盧樂書, 陳振輝, 雷通, 黃琦
【申請人】廣東電網(wǎng)有限責(zé)任公司電力調(diào)度控制中心, 中國能源建設(shè)集團廣東省電力設(shè)計研究院有限公司