一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,包括:對(duì)待存儲(chǔ)的數(shù)據(jù)進(jìn)行整體元數(shù)據(jù)定義,定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè)屬性列的存儲(chǔ)策略;將所述各個(gè)屬性列按照鍵值對(duì)模型組織為不同的數(shù)據(jù)子集;根據(jù)所述屬性列的存儲(chǔ)策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式,并按所述物理存儲(chǔ)格式存儲(chǔ)所述數(shù)據(jù)子集。本發(fā)明實(shí)施例還提供了相應(yīng)的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)裝置。使用本發(fā)明實(shí)施例公開(kāi)的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法和裝置,通過(guò)分層、可配置的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,可同時(shí)滿足大數(shù)據(jù)處理中“稀疏數(shù)據(jù)和稠密數(shù)據(jù)集”的存儲(chǔ)需求。
【專利說(shuō)明】一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法及裝置。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)以及ICT產(chǎn)業(yè)的高速發(fā)展,相關(guān)業(yè)務(wù)數(shù)據(jù)呈現(xiàn)出爆發(fā)式增長(zhǎng) 的態(tài)勢(shì),據(jù)IDC報(bào)告,未來(lái)10年全球數(shù)據(jù)量將以40+%的速度增長(zhǎng)。對(duì)中國(guó)移動(dòng)經(jīng)營(yíng)分析系 統(tǒng)(下稱經(jīng)分系統(tǒng))而言,隨著互聯(lián)網(wǎng)等新興業(yè)務(wù)數(shù)據(jù)的引入,數(shù)據(jù)存儲(chǔ)難度、系統(tǒng)支撐壓力 陡增,而作為業(yè)務(wù)分析的核心系統(tǒng),"經(jīng)分系統(tǒng)"的支撐質(zhì)量將直接影響領(lǐng)導(dǎo)決策,關(guān)乎公司 的運(yùn)營(yíng)與發(fā)展。
[0003] 隨著經(jīng)分系統(tǒng)數(shù)據(jù)量的爆發(fā)式增長(zhǎng),如何對(duì)各類業(yè)務(wù)數(shù)據(jù)進(jìn)行合理劃分、高效存 儲(chǔ),實(shí)現(xiàn)支撐系統(tǒng)的高質(zhì)量、低成本建設(shè)是目前亟需解決的問(wèn)題,目前常用的數(shù)據(jù)存儲(chǔ)方法 包括以下兩種:
[0004] 行存儲(chǔ):數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的存儲(chǔ)技術(shù),由Oracle承載,以存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)為主,如: 產(chǎn)品、賬單、服務(wù)、清單類業(yè)務(wù)數(shù)據(jù)。行存儲(chǔ)的主要優(yōu)勢(shì)在于按元組直接存儲(chǔ),寫(xiě)數(shù)據(jù)的效率 較高;數(shù)據(jù)的完整性、可靠性高;適用〇ltp(〇n_Line Transaction Processing聯(lián)機(jī)事務(wù)處 理系統(tǒng))場(chǎng)景。
[0005] 列存儲(chǔ):互聯(lián)網(wǎng)數(shù)據(jù)平臺(tái)的存儲(chǔ)技術(shù),由Hadoop Hbase承載,以存儲(chǔ)結(jié)構(gòu)化、半結(jié) 構(gòu)化數(shù)據(jù)為主,如:網(wǎng)頁(yè)數(shù)據(jù)、WAP清單類數(shù)據(jù)。列存儲(chǔ)的主要優(yōu)勢(shì)在于數(shù)據(jù)讀取時(shí)不存在 冗余列,數(shù)據(jù)命中率高;每個(gè)列(文件)的數(shù)據(jù)類型都是同質(zhì)的,不存在二義性,數(shù)據(jù)解析效 率高;可獲得較高的數(shù)據(jù)壓縮比,針對(duì)稀疏數(shù)據(jù)的處理效果更為明顯;模式變更成本低,理 論上可無(wú)限地?cái)U(kuò)充屬性列;適用于olap (On-Line Analytical Processing聯(lián)機(jī)分析處理) 場(chǎng)景。
[0006] 行存儲(chǔ)和列存儲(chǔ)是目前經(jīng)分系統(tǒng)采用的主流存儲(chǔ)方案,但隨著物聯(lián)網(wǎng)、互聯(lián)網(wǎng)等 "新興業(yè)務(wù)數(shù)據(jù)"的引入,此方案的瓶頸逐漸顯現(xiàn),主要體現(xiàn)以下幾個(gè)方面:
[0007] 存儲(chǔ)方案單一、存在技術(shù)短板;存儲(chǔ)空間浪費(fèi)情況嚴(yán)重;部分業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)方 案不夠合理、靈活性差;無(wú)法實(shí)現(xiàn)稀疏數(shù)據(jù)和稠密數(shù)據(jù)的混合、高效存儲(chǔ);部分業(yè)務(wù)的數(shù)據(jù) 質(zhì)量較差,對(duì)"缺失值"的處理不夠準(zhǔn)確。
【發(fā)明內(nèi)容】
[0008] 為了解決現(xiàn)有技術(shù)中數(shù)據(jù)存儲(chǔ)方面存在的上述問(wèn)題,本發(fā)明實(shí)施例提出一種動(dòng)態(tài) 的數(shù)據(jù)存儲(chǔ)方法和裝置。
[0009] 本發(fā)明的一個(gè)方面,提供一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,包括:
[0010] 對(duì)待存儲(chǔ)的數(shù)據(jù)進(jìn)行整體元數(shù)據(jù)定義,定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè)屬性列的存 儲(chǔ)策略;
[0011] 將所述各個(gè)屬性列按照鍵值對(duì)模型組織為不同的數(shù)據(jù)子集;
[0012] 根據(jù)所述屬性列的存儲(chǔ)策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式,并按所述物理存 儲(chǔ)格式存儲(chǔ)所述數(shù)據(jù)子集。
[0013] 本發(fā)明的另一個(gè)方面,提供一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)裝置,包括:
[0014] 定義單元,用于對(duì)待存儲(chǔ)的數(shù)據(jù)進(jìn)行整體元數(shù)據(jù)定義,定義所述待存儲(chǔ)的數(shù)據(jù)中 各個(gè)屬性列的存儲(chǔ)策略;
[0015] 組織單元,用于將所述各個(gè)屬性列按照鍵值對(duì)模型組織為不同的數(shù)據(jù)子集;
[0016] 存儲(chǔ)單元,用于根據(jù)所述屬性列的存儲(chǔ)策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式, 并按所述物理存儲(chǔ)格式存儲(chǔ)所述數(shù)據(jù)子集。
[0017] 使用本發(fā)明實(shí)施例公開(kāi)的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法和裝置,通過(guò)分層、可配置的存儲(chǔ) 結(jié)構(gòu)實(shí)現(xiàn)一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,可同時(shí)滿足大數(shù)據(jù)處理中"稀疏數(shù)據(jù)和稠密數(shù)據(jù)集"的 存儲(chǔ)需求,解決了目前經(jīng)分系統(tǒng)"存儲(chǔ)方案單一"的問(wèn)題,為物聯(lián)網(wǎng)、互聯(lián)網(wǎng)等海量數(shù)據(jù)存儲(chǔ) 提供了一種靈活的存儲(chǔ)方案,可有效支撐"新業(yè)務(wù)模式"下的數(shù)據(jù)存儲(chǔ)與分析;
[0018] RCFILE存儲(chǔ)方法(先水平劃分,再垂直劃分)的內(nèi)部結(jié)構(gòu)復(fù)雜、模式變更代價(jià)高,t匕 較適合于"只讀型"數(shù)據(jù)倉(cāng)庫(kù),而本發(fā)明實(shí)現(xiàn)存儲(chǔ)結(jié)構(gòu)的分層定義、鍵值分離,結(jié)構(gòu)簡(jiǎn)單、耦 合度低,可快速實(shí)現(xiàn)模式變更(如:"增加或刪除列"僅需在"表格化軟模式層"配置增加或 刪除一個(gè)文件);
[0019] RCFILE將"實(shí)體的所有屬性列"按照"一個(gè)原則"處理(先水平劃分,再垂直劃分), 靈活度不夠,而本發(fā)明可針對(duì)實(shí)體屬性列的"數(shù)據(jù)特征"針對(duì)性地選擇行存儲(chǔ)或列存儲(chǔ),如: 針對(duì)實(shí)體的稀疏數(shù)據(jù)列選擇列存儲(chǔ),實(shí)現(xiàn)存儲(chǔ)節(jié)約,針對(duì)稠密數(shù)據(jù)列選擇行存儲(chǔ),實(shí)現(xiàn)高效 寫(xiě)入;
[0020] 針對(duì)物聯(lián)網(wǎng)、互聯(lián)網(wǎng)等業(yè)務(wù)普遍存在海量缺失數(shù)據(jù)的問(wèn)題,本發(fā)明完成了缺失值 的類型定義,為提高大數(shù)據(jù)"分析質(zhì)量"提供了一種有效的技術(shù)手段;
[0021] 該發(fā)明的技術(shù)實(shí)現(xiàn)位于經(jīng)分系統(tǒng)"信息服務(wù)域"的數(shù)據(jù)層,與上層業(yè)務(wù)應(yīng)用之間通 過(guò)"透明訪問(wèn)層"實(shí)現(xiàn)數(shù)據(jù)交互,業(yè)務(wù)耦合度低、加工邏輯簡(jiǎn)明,完全滿足經(jīng)分?jǐn)?shù)據(jù)倉(cāng)庫(kù)海量 數(shù)據(jù)存儲(chǔ)訪問(wèn)需求。
【專利附圖】
【附圖說(shuō)明】
[0022] 圖1所示是本發(fā)明實(shí)施例提供的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法示意圖;
[0023] 圖2所示是本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)層次的示意圖;
[0024] 圖3所示是本發(fā)明實(shí)施例提供的一種結(jié)構(gòu)化的鍵值模型示意圖;
[0025] 圖4所示是本發(fā)明實(shí)施例提供的數(shù)據(jù)對(duì)象的"多版本"數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)示意圖;
[0026] 圖5所示是本發(fā)明實(shí)施例提供的行列混合存儲(chǔ)的整體實(shí)現(xiàn)邏輯示意圖;
[0027] 圖6所示為本發(fā)明實(shí)施例提供的行存儲(chǔ)的整體實(shí)現(xiàn)邏輯示意圖;
[0028] 圖7所示是本發(fā)明實(shí)施例提供的列存儲(chǔ)的整體實(shí)現(xiàn)邏輯示意圖;
[0029] 圖8所示是本發(fā)明實(shí)施例提供的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0030] 結(jié)合對(duì)現(xiàn)有技術(shù)的分析,構(gòu)建一種既支持列存儲(chǔ)、具有良好的讀性能,又支持行存 儲(chǔ)、具有良好的寫(xiě)性能,從而同時(shí)支持Oltp和Olap應(yīng)用的"混合存儲(chǔ)結(jié)構(gòu)"存在巨大的現(xiàn)實(shí) 需求,本發(fā)明通過(guò)行列混合存儲(chǔ)布局提供一種混合搭配的物理存儲(chǔ)格式,不僅可實(shí)現(xiàn)實(shí)體 的行式存儲(chǔ)或列式存儲(chǔ),同時(shí)在一個(gè)實(shí)體內(nèi)部,可針對(duì)不同字段的稀疏、稠密等數(shù)據(jù)特征, 選擇適合的行存儲(chǔ)或列存儲(chǔ)格式,從而實(shí)現(xiàn)動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ),為大數(shù)據(jù)處理提供一種動(dòng)態(tài) 的數(shù)據(jù)存儲(chǔ)方法,該方法既能適應(yīng)傳統(tǒng)稠密數(shù)據(jù)的特點(diǎn),又可兼顧海量稀疏數(shù)據(jù)的存儲(chǔ)需 求,解決了經(jīng)分系統(tǒng)海量稀疏數(shù)據(jù)存儲(chǔ)空間浪費(fèi)的問(wèn)題。
[0031] 本發(fā)明重點(diǎn)支撐的典型存儲(chǔ)場(chǎng)景的應(yīng)用舉例:
[0032] 行存儲(chǔ):為獲得更好的寫(xiě)性能,可將數(shù)據(jù)完整性、可靠性要求較高的實(shí)體配置為行 存儲(chǔ)格式;如:經(jīng)分系統(tǒng)的用戶表、帳單表、訂購(gòu)關(guān)系表等;
[0033] 列存儲(chǔ):為獲得更好的統(tǒng)計(jì)分析性能,可將數(shù)據(jù)量大、模式變更頻繁、缺失值較多 的實(shí)體配置為列存儲(chǔ)格式;如:經(jīng)分系統(tǒng)的wap網(wǎng)關(guān)表等;
[0034] 行列混合存儲(chǔ):
[0035] 在一個(gè)實(shí)體內(nèi)部,可針對(duì)不同字段的稀疏、稠密等數(shù)據(jù)特征,選擇適合的行存儲(chǔ)或 列存儲(chǔ)格式,從而實(shí)現(xiàn)行列混合的數(shù)據(jù)存儲(chǔ);如:將語(yǔ)音信令表的主叫號(hào)碼、imsi、開(kāi)始時(shí) 間等稠密數(shù)據(jù)列"按行存儲(chǔ)",將源信令點(diǎn)、CGI碼等稀疏數(shù)據(jù)列"按列存儲(chǔ)"。
[0036] 以下結(jié)合附圖詳細(xì)說(shuō)明本發(fā)明實(shí)施例提供的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法。
[0037] 圖1所示為本發(fā)明一個(gè)實(shí)施例提供的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法示意圖,根據(jù)該圖,詳 述各步驟如下:
[0038] 步驟101、對(duì)待存儲(chǔ)的數(shù)據(jù)進(jìn)行整體元數(shù)據(jù)定義,定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè)屬 性列的存儲(chǔ)策略;
[0039] 其中,所述定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè)屬性列的存儲(chǔ)策略,包括:
[0040] 構(gòu)建表格化的軟模式,并增加對(duì)所述各個(gè)屬性列的模式定義,以可視化的角度將 鍵值對(duì)集合定義為數(shù)據(jù)存儲(chǔ)的彈性容器。
[0041] 所述定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè)屬性列的存儲(chǔ)策略,包括:
[0042] 若所述屬性列中的數(shù)據(jù)為稠密數(shù)據(jù),則采用行存儲(chǔ);
[0043] 若所述屬性列中的數(shù)據(jù)為稀疏數(shù)據(jù),則采用行存儲(chǔ)。
[0044] 步驟102、將所述各個(gè)屬性列按照鍵值對(duì)模型組織為不同的數(shù)據(jù)子集;
[0045] 其中,所述將所述各個(gè)屬性列按照鍵值對(duì)模型組織為不同的數(shù)據(jù)子集,包括:
[0046] 分別定義所述鍵值對(duì)模型中的鍵域和值域,并將所述鍵域和值域分開(kāi)保存;
[0047] 所述鍵域中包括至少一個(gè)子鍵,且所述屬性對(duì)的模式定義保存在所述鍵域中;
[0048] 在所述值域中存儲(chǔ)和所述鍵域?qū)?yīng)的數(shù)據(jù)內(nèi)容。
[0049] 所述鍵域中的子鍵包括RK、CG和CA,所述RK、CG和CA子鍵的組合構(gòu)成查詢主鍵, 和一個(gè)數(shù)據(jù)單元唯一對(duì)應(yīng)。
[0050] 步驟103、根據(jù)所述屬性列的存儲(chǔ)策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式,并按所 述物理存儲(chǔ)格式存儲(chǔ)所述數(shù)據(jù)子集。
[0051] 其中,所述根據(jù)所述屬性列的存儲(chǔ)策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式,包 括:
[0052] 將所述每個(gè)屬性列劃分為至少一個(gè)分區(qū),針對(duì)每一個(gè)分區(qū),
[0053] 若所述分區(qū)適用于行存儲(chǔ),則將所述分區(qū)映射到一個(gè)單獨(dú)的文件,形成一個(gè)行 組;
[0054] 若所述分區(qū)適用于列存儲(chǔ),則將所述分區(qū)中的至少一個(gè)列存儲(chǔ)到一個(gè)文件中。
[0055] 所述值域中存儲(chǔ)的數(shù)據(jù)內(nèi)容還包括時(shí)間戳,將所述數(shù)據(jù)內(nèi)容按照時(shí)間戳的順序排 列。
[0056] 上述方法還包括:預(yù)設(shè)保存的數(shù)據(jù)內(nèi)容的版本個(gè)數(shù),根據(jù)所述數(shù)據(jù)內(nèi)容的時(shí)間戳 保存預(yù)設(shè)個(gè)數(shù)的版本;或者,
[0057] 預(yù)設(shè)保存的數(shù)據(jù)內(nèi)容的時(shí)間段,根據(jù)所述時(shí)間戳保存預(yù)設(shè)時(shí)間段內(nèi)的版本。
[0058] 上述方法中,將所述屬性列中的缺失數(shù)據(jù)定義為缺失并不適用和缺失并適用兩種 類型。
[0059] 使用本發(fā)明實(shí)施例公開(kāi)的動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,通過(guò)分層、可配置的存儲(chǔ)結(jié)構(gòu)實(shí) 現(xiàn)一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,可同時(shí)滿足大數(shù)據(jù)處理中"稀疏數(shù)據(jù)和稠密數(shù)據(jù)集"的存儲(chǔ)需 求,解決了目前經(jīng)分系統(tǒng)"存儲(chǔ)方案單一"的問(wèn)題,為物聯(lián)網(wǎng)、互聯(lián)網(wǎng)等海量數(shù)據(jù)存儲(chǔ)提供了 一種靈活的存儲(chǔ)方案,可有效支撐"新業(yè)務(wù)模式"下的數(shù)據(jù)存儲(chǔ)與分析;
[0060] RCFILE存儲(chǔ)方法(先水平劃分,再垂直劃分)的內(nèi)部結(jié)構(gòu)復(fù)雜、模式變更代價(jià)高,t匕 較適合于"只讀型"數(shù)據(jù)倉(cāng)庫(kù),而本發(fā)明實(shí)現(xiàn)存儲(chǔ)結(jié)構(gòu)的分層定義、鍵值分離,結(jié)構(gòu)簡(jiǎn)單、耦 合度低,可快速實(shí)現(xiàn)模式變更(如:"增加或刪除列"僅需在"表格化軟模式層"配置增加或 刪除一個(gè)文件);
[0061] RCFILE將"實(shí)體的所有屬性列"按照"一個(gè)原則"處理(先水平劃分,再垂直劃分), 靈活度不夠,而本發(fā)明可針對(duì)實(shí)體屬性列的"數(shù)據(jù)特征"針對(duì)性地選擇行存儲(chǔ)或列存儲(chǔ),如: 針對(duì)實(shí)體的稀疏數(shù)據(jù)列選擇列存儲(chǔ),實(shí)現(xiàn)存儲(chǔ)節(jié)約,針對(duì)稠密數(shù)據(jù)列選擇行存儲(chǔ),實(shí)現(xiàn)高效 寫(xiě)入;
[0062] 針對(duì)物聯(lián)網(wǎng)、互聯(lián)網(wǎng)等業(yè)務(wù)普遍存在海量缺失數(shù)據(jù)的問(wèn)題,本發(fā)明完成了缺失值 的類型定義,為提高大數(shù)據(jù)"分析質(zhì)量"提供了一種有效的技術(shù)手段;
[0063] 該發(fā)明的技術(shù)實(shí)現(xiàn)位于經(jīng)分系統(tǒng)"信息服務(wù)域"的數(shù)據(jù)層,與上層業(yè)務(wù)應(yīng)用之間通 過(guò)"透明訪問(wèn)層"實(shí)現(xiàn)數(shù)據(jù)交互,業(yè)務(wù)耦合度低、加工邏輯簡(jiǎn)明,完全滿足經(jīng)分?jǐn)?shù)據(jù)倉(cāng)庫(kù)海量 數(shù)據(jù)存儲(chǔ)訪問(wèn)需求。
[0064] 以下通過(guò)具體的應(yīng)用實(shí)例來(lái)對(duì)本發(fā)明實(shí)施例提供的方法進(jìn)行詳細(xì)說(shuō)明。
[0065] 本發(fā)明通過(guò)分層、可配置的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,在大數(shù)據(jù)處 理過(guò)程中可同時(shí)滿足稀疏和稠密數(shù)據(jù)集的行、列混合存儲(chǔ)需求。圖2所示為本發(fā)明實(shí)施例 提供的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)層次的示意圖。依據(jù)該圖介紹本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法的三 個(gè)基本步驟:
[0066] 步驟一:表格化的軟模式定義,相當(dāng)于整體元數(shù)據(jù)定義;在邏輯上體現(xiàn)為一種表 格化的軟模式,總體定義各個(gè)屬性列的存儲(chǔ)策略和數(shù)據(jù)約束等;
[0067] 步驟二:基于Key-Value的鍵值模型定義,相當(dāng)于鍵值數(shù)據(jù)定義層定義;各類混合 數(shù)據(jù)集體現(xiàn)為(鍵,值)對(duì)的集合,每個(gè)(鍵,值)對(duì)對(duì)應(yīng)一個(gè)實(shí)體屬性值,通過(guò)鍵值模型把各 個(gè)屬性列組織為不同的數(shù)據(jù)子集;
[0068] 步驟三:可選的物理存儲(chǔ)格式定義,相當(dāng)于業(yè)務(wù)數(shù)據(jù)的物理存儲(chǔ)層定義;根據(jù)元 數(shù)據(jù)和鍵值模型定義,為各個(gè)數(shù)據(jù)子集定義面向行或面向列的物理存儲(chǔ)格式。
[0069] 以下對(duì)各分層結(jié)構(gòu)進(jìn)行詳細(xì)描述:
[0070] 分層、可配置的存儲(chǔ)結(jié)構(gòu)
[0071] 表格化的軟模式
[0072] 傳統(tǒng)的"鍵-值模型"具有查找迅速、擴(kuò)展性高的特點(diǎn),并且提供一種分層方式描 述數(shù)據(jù)結(jié)構(gòu),但其"鍵-值對(duì)"僅僅包含屬性值,缺少模式定義,而本發(fā)明在傳統(tǒng)(鍵-值)對(duì) 基礎(chǔ)上,構(gòu)建一種表格化的軟模式,融入了模式定義,以可視化的角度將"鍵值對(duì)集合"定義 為數(shù)據(jù)存儲(chǔ)的彈性容器,支持模式定義與擴(kuò)展,包括以下主要構(gòu)件,應(yīng)用示例可見(jiàn)下表1 :
[0073] 表(Table):數(shù)據(jù)的邏輯存儲(chǔ)容器,表由單獨(dú)的列和一個(gè)或多個(gè)列組構(gòu)成,單獨(dú)的 RowKey列存儲(chǔ)元組的關(guān)鍵詞,列組被定義為列的集合,不同的列組彼此互不重疊;
[0074] 列組(ColumnGroup):本發(fā)明給出 了兩種列組:ColumnGroup_R 和 ColumnGroup_C, 對(duì)于ColumnGroup_R,數(shù)據(jù)以面向行的形式存儲(chǔ),對(duì)于ColumnGroup_C,數(shù)據(jù)以面向列的形 式存儲(chǔ);
[0075] 列(Column):列無(wú)差別地定義實(shí)體的屬性域,除了 RowKey列,其余的列必須屬于 某一特定的列組;
[0076] 鍵域文件(KeyFile):鍵域數(shù)據(jù)的物理存儲(chǔ)容器,通常同一個(gè)表的不同列組可以共 享鍵域文件;
[0077] 值域文件(DataFiIe):值域數(shù)據(jù)的物理存儲(chǔ)容器,可針對(duì)列祖、列的特點(diǎn)將其掛載 到不同的數(shù)據(jù)文件,如:可針對(duì)ColumnGroup_R定義一個(gè)數(shù)據(jù)文件,針對(duì)ColumnGroup_C可 定義一個(gè)或多個(gè)數(shù)據(jù)文件與各個(gè)屬性列對(duì)應(yīng);
[0078] 位置類型(PosType):定義各屬性列的位置定位方法,如:行固定、分隔符等;
[0079] 位置信息(PosValue):根據(jù)"位置類型"定位屬性列的詳細(xì)位置,如:位置類型為 "分隔符",可定義第5個(gè)域是"姓名"列,或者定義位置類型為"行固定",可定義第30到第 45個(gè)字符是"地址"列等;
[0080] 數(shù)據(jù)類型(DataType):記錄各屬性列的數(shù)據(jù)類型。
[0081]
【權(quán)利要求】
1. 一種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)方法,其特征在于,包括: 對(duì)待存儲(chǔ)的數(shù)據(jù)進(jìn)行整體元數(shù)據(jù)定義,定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè)屬性列的存儲(chǔ)策 略; 將所述各個(gè)屬性列按照鍵值對(duì)模型組織為不同的數(shù)據(jù)子集; 根據(jù)所述屬性列的存儲(chǔ)策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式,并按所述物理存儲(chǔ)格 式存儲(chǔ)所述數(shù)據(jù)子集。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè)屬性 列的存儲(chǔ)策略,包括: 構(gòu)建表格化的軟模式,并增加對(duì)所述各個(gè)屬性列的模式定義,以可視化的角度將鍵值 對(duì)集合定義為數(shù)據(jù)存儲(chǔ)的彈性容器。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將所述各個(gè)屬性列按照鍵值對(duì)模型 組織為不同的數(shù)據(jù)子集,包括: 分別定義所述鍵值對(duì)模型中的鍵域和值域,并將所述鍵域和值域分開(kāi)保存; 所述鍵域中包括至少一個(gè)子鍵,且所述屬性對(duì)的模式定義保存在所述鍵域中; 在所述值域中存儲(chǔ)和所述鍵域?qū)?yīng)的數(shù)據(jù)內(nèi)容。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述鍵域中的子鍵包括RK、CG和CA,所述 RK、CG和CA子鍵的組合構(gòu)成查詢主鍵,和一個(gè)數(shù)據(jù)單元唯一對(duì)應(yīng)。
5. 根據(jù)權(quán)利要求1-4中任意一項(xiàng)所述的方法,其特征在于,所述定義所述待存儲(chǔ)的數(shù) 據(jù)中各個(gè)屬性列的存儲(chǔ)策略,包括: 若所述屬性列中的數(shù)據(jù)為稠密數(shù)據(jù),則采用行存儲(chǔ); 若所述屬性列中的數(shù)據(jù)為稀疏數(shù)據(jù),則采用行存儲(chǔ)。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述屬性列的存儲(chǔ)策略為所述 數(shù)據(jù)子集定義物理存儲(chǔ)格式,包括: 將所述每個(gè)屬性列劃分為至少一個(gè)分區(qū),針對(duì)每一個(gè)分區(qū), 若所述分區(qū)適用于行存儲(chǔ),則將所述分區(qū)映射到一個(gè)單獨(dú)的文件,形成一個(gè)行組; 若所述分區(qū)適用于列存儲(chǔ),則將所述分區(qū)中的至少一個(gè)列存儲(chǔ)到一個(gè)文件中。
7. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述值域中存儲(chǔ)的數(shù)據(jù)內(nèi)容還包括時(shí)間 戳,將所述數(shù)據(jù)內(nèi)容按照時(shí)間戳的順序排列。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括: 預(yù)設(shè)保存的數(shù)據(jù)內(nèi)容的版本個(gè)數(shù),根據(jù)所述數(shù)據(jù)內(nèi)容的時(shí)間戳保存預(yù)設(shè)個(gè)數(shù)的版本; 或者, 預(yù)設(shè)保存的數(shù)據(jù)內(nèi)容的時(shí)間段,根據(jù)所述時(shí)間戳保存預(yù)設(shè)時(shí)間段內(nèi)的版本。
9. 根據(jù)權(quán)利要求1-8中任意一項(xiàng)所述的方法,其特征在于,將所述屬性列中的缺失數(shù) 據(jù)定義為缺失并不適用和缺失并適用兩種類型。
10. -種動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)裝置,其特征在于,包括: 定義單元,用于對(duì)待存儲(chǔ)的數(shù)據(jù)進(jìn)行整體元數(shù)據(jù)定義,定義所述待存儲(chǔ)的數(shù)據(jù)中各個(gè) 屬性列的存儲(chǔ)策略; 組織單元,用于將所述各個(gè)屬性列按照鍵值對(duì)模型組織為不同的數(shù)據(jù)子集; 存儲(chǔ)單元,用于根據(jù)所述屬性列的存儲(chǔ)策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式,并按 所述物理存儲(chǔ)格式存儲(chǔ)所述數(shù)據(jù)子集。
11. 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述定義單元定義所述待存儲(chǔ)的數(shù)據(jù) 中各個(gè)屬性列的存儲(chǔ)策略,包括: 構(gòu)建表格化的軟模式,并增加對(duì)所述各個(gè)屬性列的模式定義,以可視化的角度將鍵值 對(duì)集合定義為數(shù)據(jù)存儲(chǔ)的彈性容器。
12. 根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述組織單元將所述各個(gè)屬性列按照 鍵值對(duì)模型組織為不同的數(shù)據(jù)子集,包括: 分別定義所述鍵值對(duì)模型中的鍵域和值域,并將所述鍵域和值域分開(kāi)保存; 所述鍵域中包括至少一個(gè)子鍵,且所述屬性對(duì)的模式定義保存在所述鍵域中; 在所述值域中存儲(chǔ)和所述鍵域?qū)?yīng)的數(shù)據(jù)內(nèi)容。
13. 根據(jù)權(quán)利要求10-12中任一項(xiàng)所述的裝置,其特征在于,所述定義單元定義所述待 存儲(chǔ)的數(shù)據(jù)中各個(gè)屬性列的存儲(chǔ)策略,包括: 若所述屬性列中的數(shù)據(jù)為稠密數(shù)據(jù),則采用行存儲(chǔ); 若所述屬性列中的數(shù)據(jù)為稀疏數(shù)據(jù),則采用行存儲(chǔ)。
14. 根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述存儲(chǔ)單元根據(jù)所述屬性列的存儲(chǔ) 策略為所述數(shù)據(jù)子集定義物理存儲(chǔ)格式,包括: 將所述每個(gè)屬性列劃分為至少一個(gè)分區(qū),針對(duì)每一個(gè)分區(qū), 若所述分區(qū)適用于行存儲(chǔ),則將所述分區(qū)映射到一個(gè)單獨(dú)的文件,形成一個(gè)行組; 若所述分區(qū)適用于列存儲(chǔ),則將所述分區(qū)中的至少一個(gè)列存儲(chǔ)到一個(gè)文件中。
15. 根據(jù)權(quán)利要求10-14中任一項(xiàng)所述的裝置,其特征在于,所述定義單元還用于,將 所述屬性列中的缺失數(shù)據(jù)定義為缺失并不適用和缺失并適用兩種類型。
【文檔編號(hào)】G06F17/30GK104516912SQ201310459768
【公開(kāi)日】2015年4月15日 申請(qǐng)日期:2013年9月29日 優(yōu)先權(quán)日:2013年9月29日
【發(fā)明者】蘇燕, 趙洪松, 關(guān)德軍, 李振嘉, 段云峰, 李紅燕, 張美鷗, 王依興, 孫德志, 遲建德, 李宏昌, 王雅文 申請(qǐng)人:中國(guó)移動(dòng)通信集團(tuán)黑龍江有限公司, 中國(guó)移動(dòng)通信集團(tuán)公司