專(zhuān)利名稱:一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),特別涉及一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)方法和裝置。
背景技術(shù):
分布式數(shù)據(jù)倉(cāng)庫(kù)(TDW)中存儲(chǔ)有海量的數(shù)據(jù),相比于比傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)量高出幾個(gè)數(shù)量級(jí),這些數(shù)據(jù)是由各個(gè)業(yè)務(wù)部門(mén)(BU)提供的業(yè)務(wù)或用戶行為信息,通常以文本格式進(jìn)行存儲(chǔ)。文本格式對(duì)于順序訪問(wèn)來(lái)說(shuō)比較方便,但卻不適用于隨機(jī)訪問(wèn)。比如,要讀取指定行的記錄,那么必需從頭開(kāi)始讀取該行之前的所有數(shù)據(jù),然后才能找到所述指定行,實(shí)現(xiàn)起來(lái)非常麻煩,大量的隨機(jī)訪問(wèn)幾乎是不可能的,但在實(shí)際應(yīng)用中很多場(chǎng)合都需要用到隨機(jī)訪問(wèn),因此給用戶的使用帶來(lái)了很大的不便。另外,現(xiàn)有技術(shù)中,當(dāng)需要對(duì)分布式數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù),如一個(gè)文件進(jìn)行分布式并行處理時(shí),通常根據(jù)數(shù)據(jù)大小如64M,將文件拆分成多個(gè)段,分布式集群中的每個(gè)工作節(jié)點(diǎn)負(fù)責(zé)處理一段,但由于文本格式?jīng)]有明顯的分隔符,因此在拆分時(shí)很可能會(huì)導(dǎo)致一條完整的記錄被劃分到兩個(gè)不同的段中,即劃分給兩個(gè)不同的工作節(jié)點(diǎn),從而影響后續(xù)處理,也給用戶的使用帶來(lái)不便。再有,以文本格式,即字符串格式存儲(chǔ)數(shù)據(jù)會(huì)占用比較多的存儲(chǔ)空間,從而影響分布式數(shù)據(jù)倉(cāng)庫(kù)的存儲(chǔ)能力。還有,以文本格式存儲(chǔ)的數(shù)據(jù)用戶可直接查看, 安全性較低。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)方法,能夠方便用戶使用,且能夠節(jié)省存儲(chǔ)空間和提高數(shù)據(jù)的安全性。本發(fā)明的另一目的在于提供一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)裝置,能夠方便用戶使用,且能夠節(jié)省存儲(chǔ)空間和提高數(shù)據(jù)的安全性。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)方法,該方法包括將接收到的每個(gè)文本格式的文件轉(zhuǎn)換為結(jié)構(gòu)化格式,并進(jìn)行存儲(chǔ);每個(gè)結(jié)構(gòu)化格式的文件中包括一個(gè)文件頭Head、一個(gè)以上數(shù)據(jù)段kgment以及一個(gè)一級(jí)塊索引表,所述一級(jí)塊索引表中保存有每個(gè)kgment對(duì)應(yīng)的一級(jí)塊索引項(xiàng),每個(gè)一級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的kgment的索引信息;每個(gè)kgment中包括一個(gè)以上單元Unit以及一個(gè)二級(jí)塊索引表,所述二級(jí)塊索引表中保存有每個(gè)Unit對(duì)應(yīng)的二級(jí)塊索引項(xiàng),每個(gè)二級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的Unit的索引信息;每個(gè)Unit中包括一個(gè)以上的數(shù)據(jù)塊Chunk,每個(gè)Chunk對(duì)應(yīng)一條記錄;根據(jù)所述索引信息對(duì)所述分布式數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行訪問(wèn)。一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)裝置,該裝置包括
5
存儲(chǔ)單元,用于將接收到的每個(gè)文本格式的文件轉(zhuǎn)換為結(jié)構(gòu)化格式,并進(jìn)行存儲(chǔ); 每個(gè)結(jié)構(gòu)化格式的文件中包括一個(gè)文件頭Head、一個(gè)以上數(shù)據(jù)段kgment以及一個(gè)一級(jí)塊索引表,所述一級(jí)塊索引表中保存有每個(gè)kgment對(duì)應(yīng)的一級(jí)塊索引項(xiàng),每個(gè)一級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的kgment的索引信息;每個(gè)kgment中包括一個(gè)以上單元Unit以及一個(gè)二級(jí)塊索引表,所述二級(jí)塊索引表中保存有每個(gè)ttiit對(duì)應(yīng)的二級(jí)塊索引項(xiàng),每個(gè)二級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的Unit的索引信息;每個(gè)Unit中包括一個(gè)以上的數(shù)據(jù)塊Chunk,每個(gè)Chunk對(duì)應(yīng)一條記錄;訪問(wèn)單元,用于根據(jù)所述索引信息對(duì)所述分布式數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行訪問(wèn)??梢?jiàn),采用本發(fā)明的技術(shù)方案,將文本格式的文件轉(zhuǎn)換為結(jié)構(gòu)化格式,利用索引信息對(duì)指定行或指定記錄值進(jìn)行訪問(wèn),從而提高了訪問(wèn)效率,方便了用戶使用;另外,本發(fā)明所述方案中的數(shù)據(jù)被保存在各個(gè)kgment中,如果要對(duì)結(jié)構(gòu)化格式的文件進(jìn)行分布式并行處理,每個(gè)工作節(jié)點(diǎn)只需負(fù)責(zé)一個(gè)kgment即可,不會(huì)存在將一條完整的記錄劃分給兩個(gè)不同工作節(jié)點(diǎn)的情況;還有,按照本發(fā)明所述方案進(jìn)行處理后的數(shù)據(jù)將以二進(jìn)制格式進(jìn)行存儲(chǔ),相比于字符串格式更加節(jié)省存儲(chǔ)空間,比如存儲(chǔ)一個(gè)8位的qq號(hào)碼,現(xiàn)有技術(shù)中需要占用8個(gè)字節(jié),而采用本發(fā)明所述方案后將只需占用4個(gè)字節(jié);再有,對(duì)于以二進(jìn)制格式進(jìn)行存儲(chǔ)的數(shù)據(jù),用戶將不可直接查看,從而提高了數(shù)據(jù)的安全性。
圖1為本發(fā)明方法實(shí)施例的流程圖。圖2為本發(fā)明所述結(jié)構(gòu)化格式的文件的示意圖。圖3為本發(fā)明所述kgment的結(jié)構(gòu)示意圖。圖4為本發(fā)明所述Unit和Chunk的組成結(jié)構(gòu)示意圖。圖5為本發(fā)明裝置實(shí)施例的組成結(jié)構(gòu)示意圖。
具體實(shí)施例方式針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明中提出一種全新的分布式數(shù)據(jù)倉(cāng)庫(kù)訪問(wèn)方案,將接收到的文本格式的文件按照一定的格式進(jìn)行組織和索引,形成新的結(jié)構(gòu)化存儲(chǔ)格式,并提供便捷的訪問(wèn)接口。為使本發(fā)明的技術(shù)方案更加清楚、明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明所述方案作進(jìn)一步地詳細(xì)說(shuō)明。圖1為本發(fā)明方法實(shí)施例的流程圖。如圖1所示,包括以下步驟步驟11 將接收到的每個(gè)文本格式的文件轉(zhuǎn)換為結(jié)構(gòu)化格式,并進(jìn)行存儲(chǔ)。本步驟中,對(duì)于接收到的每個(gè)文本格式的文件,首先將其轉(zhuǎn)換為結(jié)構(gòu)化格式,然后進(jìn)行存儲(chǔ)。圖2為本發(fā)明所述結(jié)構(gòu)化格式的文件的示意圖。如圖2所示,每個(gè)文件中包括一個(gè)文件頭(Head)、一個(gè)以上數(shù)據(jù)段(kgment)以及一個(gè)一級(jí)塊索引表。其中,文件頭用于保存文件的相關(guān)信息如字段類(lèi)型和版本號(hào)等,保證結(jié)構(gòu)化格式的文件能夠被獨(dú)立的讀取和解析;各kgment用于保存具體的數(shù)據(jù);一級(jí)塊索引表用于保存每個(gè)kgment對(duì)應(yīng)的一級(jí)塊索引項(xiàng)(kgment idx),每個(gè)一級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的kgment的索引信息。
1)文件頭文件頭固定在結(jié)構(gòu)化格式的文件的開(kāi)始部分,根據(jù)表一所示FieldMap字段中涉及到的字段數(shù)的不同,文件頭的長(zhǎng)度也將不同。
字段名稱含義Ver數(shù)據(jù)版本號(hào)Var是否存在變長(zhǎng)字段Compress數(shù)據(jù)是否壓縮Encode數(shù)據(jù)是否加密FieldMap所有字段類(lèi)型定義表一文件頭中包括的信息如表一所示,文件頭中包括的信息主要為數(shù)據(jù)版本號(hào)、是否存在變長(zhǎng)字段、數(shù)據(jù)是否加密、數(shù)據(jù)是否壓縮以及所有字段類(lèi)型定義,后續(xù)可利用文件頭中的信息對(duì)數(shù)據(jù)進(jìn)行解析。各字段的具體作用為本領(lǐng)域公知,不再贅述。2) Segment通常,每個(gè)kgment的大小相同且固定,每個(gè)結(jié)構(gòu)化格式的文件中具體包括多少個(gè)kgment視文件大小而定。每個(gè)kgment中包括一個(gè)以上單元(Unit)以及一個(gè)二級(jí)塊索引表,二級(jí)塊索引表中保存有每個(gè)Unit對(duì)應(yīng)的二級(jí)塊索引項(xiàng)(Unit idx),每個(gè)二級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的Unit的索引信息。圖3為本發(fā)明所述kgment的結(jié)構(gòu)示意圖。如圖3所示,二級(jí)塊索引表位于所有 Unit之后;每個(gè)Unit被依次填充到kgment中,對(duì)于無(wú)法存放一個(gè)完整的Unit的情況,可將空閑的部分用1或0填充補(bǔ)齊,以避免一個(gè)Unit中的數(shù)據(jù)被拆分到兩fkgment中的情況。舉例說(shuō)明,假設(shè)一 kgment的大小為11M,目前已經(jīng)填充了 5個(gè)Unit (假設(shè)各Unit 的大小均為2M左右),那么剩余的空間將不足以填充一個(gè)Unit,可通過(guò)填充1或0來(lái)將該 Segment 補(bǔ)齊。3) Unit 和 Chunk每個(gè)Unit中包括一個(gè)以上的數(shù)據(jù)塊(Chunk),用戶的每個(gè)記錄被格式化為一個(gè) Chunk,并保存到Unit中。每個(gè)Unit的大小不固定,但需要保證基本一致,即位于相同的范圍內(nèi),如1. 9 2. 1M,每個(gè)Unit中的Chunk數(shù)也可能不同。每個(gè)Chunk中的數(shù)據(jù)可分為2種類(lèi)型,一種為定長(zhǎng),如Int和Long等,一種為變長(zhǎng), 如Mring等,對(duì)于定長(zhǎng)數(shù)據(jù),可直接保存數(shù)據(jù)本身,而對(duì)于變長(zhǎng)數(shù)據(jù),需要通過(guò)一個(gè)預(yù)先設(shè)置的長(zhǎng)度(Len)字段標(biāo)識(shí)該數(shù)據(jù)的長(zhǎng)度,同時(shí)保存數(shù)據(jù)本身。圖4為本發(fā)明所述Unit和Chunk的組成結(jié)構(gòu)示意圖。如圖4所示,其中的“bitmap” 字段用于指示后續(xù)各字段(如fieldl 5)是否為空;“fieldl”、“field2”、“field3”、“field4”和“field5”字段均用于存放定長(zhǎng)類(lèi)型的數(shù)據(jù),如果無(wú)對(duì)應(yīng)類(lèi)型的數(shù)據(jù),則對(duì)應(yīng)的字段置為空;“field6”字段用于存放變長(zhǎng)類(lèi)型的數(shù)據(jù),與其相鄰的字段用于指示該變長(zhǎng)類(lèi)型的數(shù)據(jù)的長(zhǎng)度,如果無(wú)變長(zhǎng)類(lèi)型的數(shù)據(jù),則這兩個(gè)字段可不存在。另外,本發(fā)明所述方案中,每個(gè)索引項(xiàng)中包括的索引信息均相同,如表二所示
權(quán)利要求
1.一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)方法,其特征在于,該方法包括 將接收到的每個(gè)文本格式的文件轉(zhuǎn)換為結(jié)構(gòu)化格式,并進(jìn)行存儲(chǔ);每個(gè)結(jié)構(gòu)化格式的文件中包括一個(gè)文件頭Head、一個(gè)以上數(shù)據(jù)段kgment以及一個(gè)一級(jí)塊索引表,所述一級(jí)塊索引表中保存有每個(gè)kgment對(duì)應(yīng)的一級(jí)塊索引項(xiàng),每個(gè)一級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的kgment的索引信息;每個(gè)kgment中包括一個(gè)以上單元Unit以及一個(gè)二級(jí)塊索引表,所述二級(jí)塊索引表中保存有每個(gè)Unit對(duì)應(yīng)的二級(jí)塊索引項(xiàng),每個(gè)二級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的Unit的索引 fn息;每個(gè)Unit中包括一個(gè)以上的數(shù)據(jù)塊Chunk,每個(gè)Chunk對(duì)應(yīng)一條記錄; 根據(jù)所述索引信息對(duì)所述分布式數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行訪問(wèn)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述文件頭中包括以下信息數(shù)據(jù)版本號(hào)、是否存在變長(zhǎng)字段、數(shù)據(jù)是否加密、數(shù)據(jù)是否壓縮以及所有字段類(lèi)型定義;所述文件頭中的信息用于數(shù)據(jù)解析。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述Chunk中的數(shù)據(jù)分為2種類(lèi)型, 一種為定長(zhǎng),一種為變長(zhǎng),對(duì)于定長(zhǎng)類(lèi)型的數(shù)據(jù),直接保存數(shù)據(jù)本身,對(duì)于變長(zhǎng)類(lèi)型的數(shù)據(jù), 通過(guò)一個(gè)預(yù)先設(shè)置的長(zhǎng)度Len字段標(biāo)識(shí)該數(shù)據(jù)的長(zhǎng)度,并保存數(shù)據(jù)本身。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述每個(gè)kgment的索引信息包括該kgment的起始行號(hào)和/或起始記錄值、該 Segment的結(jié)束行號(hào)和/或結(jié)束記錄值、該kgment的起始偏移地址、該kgment的長(zhǎng)度以及該kgment的索引號(hào);所述每個(gè)Unit的索引信息包括該Unit的起始行號(hào)和/或起始記錄值、該Unit的結(jié)束行號(hào)和/或結(jié)束記錄值、該Unit的起始偏移地址、該Unit的長(zhǎng)度以及該Unit的索引號(hào)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,每個(gè)結(jié)構(gòu)化格式的文件中進(jìn)一步包括所述一級(jí)塊索引表的起始偏移地址和長(zhǎng)度;每個(gè)kgment中進(jìn)一步包括所述二級(jí)塊索引表的起始偏移地址和長(zhǎng)度;所述根據(jù)所述索引信息對(duì)所述分布式數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行訪問(wèn)包括根據(jù)指定行號(hào)進(jìn)行訪問(wèn);所述根據(jù)指定行號(hào)進(jìn)行訪問(wèn)包括讀取文件頭中的信息和一級(jí)塊索引表的起始偏移地址和長(zhǎng)度; 根據(jù)讀取到的所述一級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述一級(jí)塊索引表; 根據(jù)所述一級(jí)塊索引表中保存的各kgment的起始行號(hào)、結(jié)束行號(hào)以及索引號(hào),找到所述指定行號(hào)所屬的kgment X,并獲取所述kgment X的起始偏移地址和長(zhǎng)度;根據(jù)所述%81^時(shí)X的起始偏移地址和長(zhǎng)度找到所述kgment X,并根據(jù)其中的二級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述kgment X中的二級(jí)塊索引表;根據(jù)找到的二級(jí)塊索引表中保存的各Unit的起始行號(hào)、結(jié)束行號(hào)以及索引號(hào),找到所述指定行號(hào)所屬的Unit Y,并獲取所述Unit Y的起始偏移地址和長(zhǎng)度;根據(jù)所述Unit Y的起始偏移地址和長(zhǎng)度找到所述Unit Y,并從所述Unit Y中找到所述指定行號(hào)對(duì)應(yīng)的Chunk Z,確定所述Chunk Z的長(zhǎng)度,獲取其中的數(shù)據(jù); 根據(jù)讀取到的文件頭中的信息對(duì)所述Chunk Z中的數(shù)據(jù)進(jìn)行解析。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,如果其中的Chunk中包括變長(zhǎng)類(lèi)型的數(shù)據(jù),則所述Unit Y中進(jìn)一步包括每個(gè)Chunk的起始偏移地址;所述從Unit Y中找到所述指定行號(hào)對(duì)應(yīng)的Chunk Z,確定所述Chunk Z的長(zhǎng)度包括根據(jù)所述Unit Y中各Chunk的起始偏移地址找到所述Chunk Z,并將所述指定行號(hào)加一,得到行號(hào)M,用行號(hào)M對(duì)應(yīng)的Chunk的起始偏移地址減去所述Chunk Z的起始偏移地址, 得到所述Chunk Z的長(zhǎng)度。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述每個(gè)結(jié)構(gòu)化格式的文件中進(jìn)一步包括所述一級(jí)塊索引表的起始偏移地址和長(zhǎng)度;每個(gè)kgment中進(jìn)一步包括所述二級(jí)塊索引表的起始偏移地址和長(zhǎng)度;所述根據(jù)所述索引信息對(duì)所述分布式數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行訪問(wèn)包括根據(jù)指定記錄值進(jìn)行訪問(wèn);所述根據(jù)指定記錄值進(jìn)行訪問(wèn)包括讀取文件頭中的信息和一級(jí)塊索引表的起始偏移地址和長(zhǎng)度; 根據(jù)讀取到的一級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述一級(jí)塊索引表; 根據(jù)所述一級(jí)塊索引表中保存的各kgment的起始記錄值、結(jié)束記錄值以及索引號(hào), 找到所述指定記錄值所屬的kgment X,并獲取所述kgment X的起始偏移地址和長(zhǎng)度;根據(jù)所述%811^壯X的起始偏移地址和長(zhǎng)度找到所述kgment X,并根據(jù)其中的二級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述kgment X中的二級(jí)塊索引表;根據(jù)找到的二級(jí)塊索引表中保存的各Unit的起始記錄值、結(jié)束記錄值以及索引號(hào),找到所述指定記錄值所屬的Unit Y,并獲取所述Unit Y的起始偏移地址和長(zhǎng)度;根據(jù)所述Unit Y的起始偏移地址和長(zhǎng)度找到所述Unit Y,遍歷所述Unit Y,找出所有符合條件的Chunk ;根據(jù)讀取到的文件頭中的信息對(duì)找到的Chunk中的數(shù)據(jù)進(jìn)行解析。
8.一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)裝置,其特征在于,該裝置包括存儲(chǔ)單元,用于將接收到的每個(gè)文本格式的文件轉(zhuǎn)換為結(jié)構(gòu)化格式,并進(jìn)行存儲(chǔ);每個(gè)結(jié)構(gòu)化格式的文件中包括一個(gè)文件頭Head、一個(gè)以上數(shù)據(jù)段kgment以及一個(gè)一級(jí)塊索引表,所述一級(jí)塊索引表中保存有每個(gè)kgment對(duì)應(yīng)的一級(jí)塊索引項(xiàng),每個(gè)一級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的kgment的索引信息;每個(gè)kgment中包括一個(gè)以上單元Unit以及一個(gè)二級(jí)塊索引表,所述二級(jí)塊索引表中保存有每個(gè)ttiit對(duì)應(yīng)的二級(jí)塊索引項(xiàng),每個(gè)二級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的Unit的索引信息;每個(gè)Unit中包括一個(gè)以上的數(shù)據(jù)塊Chunk,每個(gè) Chunk對(duì)應(yīng)一條記錄;訪問(wèn)單元,用于根據(jù)所述索引信息對(duì)所述分布式數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行訪問(wèn)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述文件頭中包括以下信息數(shù)據(jù)版本號(hào)、是否存在變長(zhǎng)字段、數(shù)據(jù)是否加密、數(shù)據(jù)是否壓縮以及所有字段類(lèi)型定義;所述文件頭中的信息用于數(shù)據(jù)解析。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述Chunk中的數(shù)據(jù)分為2種類(lèi)型, 一種為定長(zhǎng),一種為變長(zhǎng),對(duì)于定長(zhǎng)類(lèi)型的數(shù)據(jù),直接保存數(shù)據(jù)本身,對(duì)于變長(zhǎng)類(lèi)型的數(shù)據(jù), 通過(guò)一個(gè)預(yù)先設(shè)置的長(zhǎng)度Len字段標(biāo)識(shí)該數(shù)據(jù)的長(zhǎng)度,并保存數(shù)據(jù)本身。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述每個(gè)kgment的索引信息包括該kgment的起始行號(hào)和/或起始記錄值、該 Segment的結(jié)束行號(hào)和/或結(jié)束記錄值、該kgment的起始偏移地址、該kgment的長(zhǎng)度以及該kgment的索引號(hào);所述每個(gè)Unit的索引信息包括該Unit的起始行號(hào)和/或起始記錄值、該Unit的結(jié)束行號(hào)和/或結(jié)束記錄值、該Unit的起始偏移地址、該Unit的長(zhǎng)度以及該Unit的索引號(hào)。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述每個(gè)結(jié)構(gòu)化格式的文件中進(jìn)一步包括所述一級(jí)塊索引表的起始偏移地址和長(zhǎng)度;每個(gè)kgment中進(jìn)一步包括所述二級(jí)塊索引表的起始偏移地址和長(zhǎng)度;所述訪問(wèn)單元中進(jìn)一步包括第一訪問(wèn)子單元和/或第二訪問(wèn)子單元; 所述第一訪問(wèn)子單元,用于讀取文件頭中的信息和一級(jí)塊索引表的起始偏移地址和長(zhǎng)度,根據(jù)讀取到的所述一級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述一級(jí)塊索引表;根據(jù)所述一級(jí)塊索引表中保存的各^^??!^肚的起始行號(hào)、結(jié)束行號(hào)以及索引號(hào),找到指定行號(hào)所屬的kgment X,并獲取所述kgment X的起始偏移地址和長(zhǎng)度;根據(jù)所述kgment X的起始偏移地址和長(zhǎng)度找到所述kgment X,并根據(jù)其中的二級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述kgment X中的二級(jí)塊索引表;根據(jù)找到的二級(jí)塊索引表中保存的各Unit的起始行號(hào)、結(jié)束行號(hào)以及索引號(hào),找到所述指定行號(hào)所屬的Unit Y,并獲取所述Unit Y的起始偏移地址和長(zhǎng)度;根據(jù)所述Unit Y的起始偏移地址和長(zhǎng)度找到所述Unit Y,并從中找到所述指定行號(hào)對(duì)應(yīng)的Chunk Z,確定所述Chunk Z的長(zhǎng)度,獲取其中的數(shù)據(jù);根據(jù)讀取到的文件頭中的信息對(duì)所述Chunk Z中的數(shù)據(jù)進(jìn)行解析;所述第二訪問(wèn)子單元,用于讀取文件頭中的信息和一級(jí)塊索引表的起始偏移地址和長(zhǎng)度;根據(jù)讀取到的一級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述一級(jí)塊索引表;根據(jù)所述一級(jí)塊索引表中保存的各kgment的起始記錄值、結(jié)束記錄值以及索引號(hào),找到指定記錄值所屬Wkgment X,并獲取所述kgment X的起始偏移地址和長(zhǎng)度;根據(jù)所述kgment X 的起始偏移地址和長(zhǎng)度找到所述kgment X,并根據(jù)其中的二級(jí)塊索引表的起始偏移地址和長(zhǎng)度找到所述^^!^肚X中的二級(jí)塊索引表;根據(jù)找到的二級(jí)塊索引表中保存的各Unit 的起始記錄值、結(jié)束記錄值以及索引號(hào),找到所述指定記錄值所屬的Unit Y,并獲取所述 Unit Y的起始偏移地址和長(zhǎng)度;根據(jù)所述Unit Y的起始偏移地址和長(zhǎng)度找到所述Unit Y,遍歷所述Unit Y,找出所有符合條件的Chunk ;根據(jù)讀取到的文件頭中的信息對(duì)找到的 Chunk中的數(shù)據(jù)進(jìn)行解析。
全文摘要
本發(fā)明提供了一種分布式數(shù)據(jù)倉(cāng)庫(kù)的訪問(wèn)方法和裝置將接收到的每個(gè)文本格式的文件轉(zhuǎn)換為結(jié)構(gòu)化格式,并進(jìn)行存儲(chǔ);每個(gè)結(jié)構(gòu)化格式的文件中包括一個(gè)文件頭(Head)、一個(gè)以上數(shù)據(jù)段(Segment)以及一個(gè)一級(jí)塊索引表,一級(jí)塊索引表中保存有每個(gè)Segment對(duì)應(yīng)的一級(jí)塊索引項(xiàng),每個(gè)一級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的Segment的索引信息;每個(gè)Segment中包括一個(gè)以上單元(Unit)和一個(gè)二級(jí)塊索引表,二級(jí)塊索引表中保存有每個(gè)Unit對(duì)應(yīng)的二級(jí)塊索引項(xiàng),每個(gè)二級(jí)塊索引項(xiàng)中保存有其對(duì)應(yīng)的Unit的索引信息;每個(gè)Unit中包括一個(gè)以上的數(shù)據(jù)塊(Chunk),每個(gè)Chunk對(duì)應(yīng)一個(gè)記錄;根據(jù)索引信息對(duì)分布式數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行訪問(wèn)。應(yīng)用本發(fā)明所述方案,能夠方便用戶使用,且能夠節(jié)省存儲(chǔ)空間和提高數(shù)據(jù)的安全性。
文檔編號(hào)G06F17/30GK102385606SQ20101027468
公開(kāi)日2012年3月21日 申請(qǐng)日期2010年9月3日 優(yōu)先權(quán)日2010年9月3日
發(fā)明者張書(shū)彬, 徐釗, 李均, 洪坤乾, 趙偉, 郭瑋 申請(qǐng)人:騰訊科技(深圳)有限公司