一種海量數(shù)據(jù)提取的方法及裝置制造方法
【專利摘要】本發(fā)明適用于大數(shù)據(jù)處理【技術(shù)領(lǐng)域】,提供了一種海量數(shù)據(jù)提取的方法及裝置,該方法包括:在接收到數(shù)據(jù)提取請(qǐng)求信息時(shí),根據(jù)所述請(qǐng)求信息中的時(shí)間范圍通過B-Tree索引確定待提取數(shù)據(jù)所在的數(shù)據(jù)分區(qū),并確定該數(shù)據(jù)分區(qū)列內(nèi)的偏移開始位置PB和偏移結(jié)束位置PE,根據(jù)所述請(qǐng)求信息中的列信息通過列索引確定每個(gè)列相對(duì)所述數(shù)據(jù)子塊的起始位置Pi,并根據(jù)所述請(qǐng)求信息中數(shù)據(jù)主鍵對(duì)應(yīng)的數(shù)據(jù)子塊編號(hào)確定該數(shù)據(jù)主鍵的起始位置PC;提取位置范圍[PC+Pi+PB,PC+Pi+PE]內(nèi)的數(shù)據(jù)。通過本發(fā)明可有效減少索引大小,提高索引定位效率和數(shù)據(jù)提取效率。
【專利說明】一種海量數(shù)據(jù)提取的方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于大數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其涉及一種海量數(shù)據(jù)提取的方法及裝置。
【背景技術(shù)】
[0002] 隨著大數(shù)據(jù)時(shí)代的來臨,對(duì)海量數(shù)據(jù)的處理(包括數(shù)據(jù)的存儲(chǔ)、提取等)的需求越 來越大。目前主要采用關(guān)系型數(shù)據(jù)庫來存儲(chǔ)海量數(shù)據(jù)。然而,數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中, 使用B-Tree和聚簇索引的方式,索引比較大(1. 6G的數(shù)據(jù),索引超過200M),查詢數(shù)據(jù)時(shí),力口 載索引數(shù)據(jù)比較多,另外獲取一條數(shù)據(jù)需要從磁盤提取整行數(shù)據(jù),磁盤I/O比較耗時(shí)。當(dāng)提 取的數(shù)據(jù)涉及到多個(gè)表時(shí),提取效率更低,性能更差。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明實(shí)施例提供一種海量數(shù)據(jù)提取的方法及裝置,以減少索引大小,提高索引 定位效率和數(shù)據(jù)提取效率。
[0004] 本發(fā)明實(shí)施例的第一方面,提供一種海量數(shù)據(jù)提取的方法,所述方法包括:
[0005] 從原始數(shù)據(jù)庫中獲取原始數(shù)據(jù),并根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù)進(jìn)行分區(qū);
[0006] 根據(jù)分區(qū)規(guī)則建立B-Tree索引;
[0007] 根據(jù)存入數(shù)據(jù)分區(qū)中的數(shù)據(jù)列類型、數(shù)據(jù)分區(qū)的時(shí)間范圍以及數(shù)據(jù)列存入的先后 順序建立列索引;
[0008] 將所述數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊拆分成多個(gè)數(shù)據(jù)子塊,對(duì)所述數(shù)據(jù)子塊進(jìn)行編號(hào),每 個(gè)數(shù)據(jù)子塊對(duì)應(yīng)一個(gè)數(shù)據(jù)主鍵,并將所述數(shù)據(jù)主鍵的列數(shù)據(jù)根據(jù)所述列索引存入對(duì)應(yīng)的數(shù) 據(jù)子塊中;
[0009] 在接收到數(shù)據(jù)提取請(qǐng)求信息時(shí),根據(jù)所述請(qǐng)求信息中的時(shí)間范圍通過B-Tree索 引確定待提取數(shù)據(jù)所在的數(shù)據(jù)分區(qū),并確定該數(shù)據(jù)分區(qū)列內(nèi)的偏移開始位置PB和偏移結(jié) 束位置PE,根據(jù)所述請(qǐng)求信息中的列信息通過列索引確定每個(gè)列相對(duì)所述數(shù)據(jù)子塊的起始 位置Pi,并根據(jù)所述請(qǐng)求信息中數(shù)據(jù)主鍵對(duì)應(yīng)的數(shù)據(jù)子塊編號(hào)確定該數(shù)據(jù)主鍵數(shù)據(jù)的起始 位置P c;
[0010] 提取位置范圍[Pc+Pi+PB^+Pi+PE]內(nèi)的數(shù)據(jù)。
[0011] 本發(fā)明實(shí)施例的第二方面,一種海量數(shù)據(jù)提取的裝置,所述裝置包括:
[0012] 分區(qū)單元,用于從原始數(shù)據(jù)庫中獲取原始數(shù)據(jù),并根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù) 進(jìn)行分區(qū);
[0013] 第一索引單元,用于根據(jù)分區(qū)規(guī)則建立B-Tree索引;
[0014] 第二索引單元,用于根據(jù)存入數(shù)據(jù)分區(qū)中的數(shù)據(jù)列類型、數(shù)據(jù)分區(qū)的時(shí)間范圍以 及數(shù)據(jù)列存入的先后順序建立列索引;
[0015] 第一處理單元,用于將所述數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊拆分成多個(gè)數(shù)據(jù)子塊,對(duì)所述數(shù) 據(jù)子塊進(jìn)行編號(hào),每個(gè)數(shù)據(jù)子塊對(duì)應(yīng)一個(gè)數(shù)據(jù)主鍵,并將所述數(shù)據(jù)主鍵的列數(shù)據(jù)根據(jù)所述 列索引存入對(duì)應(yīng)的數(shù)據(jù)子塊中;
[0016] 第二處理單元,用于在接收到數(shù)據(jù)提取請(qǐng)求信息時(shí),根據(jù)所述請(qǐng)求信息中的時(shí)間 范圍通過B-Tree索引確定待提取數(shù)據(jù)所在的數(shù)據(jù)分區(qū),并確定該數(shù)據(jù)分區(qū)列內(nèi)的偏移開 始位置PB和偏移結(jié)束位置PE,根據(jù)所述請(qǐng)求信息中的列信息通過列索引確定每個(gè)列相對(duì) 所述數(shù)據(jù)子塊的起始位置匕,并根據(jù)所述請(qǐng)求信息中數(shù)據(jù)主鍵對(duì)應(yīng)的數(shù)據(jù)子塊編號(hào)確定該 數(shù)據(jù)主鍵數(shù)據(jù)的起始位置P c;
[0017] 數(shù)據(jù)提取單元,用于提取位置范圍[Pc+Pi+PBJc+Pi+PE]內(nèi)的數(shù)據(jù)。
[0018] 本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比存在的有益效果是:本發(fā)明實(shí)施例根據(jù)時(shí)間范圍對(duì) 數(shù)據(jù)進(jìn)行分區(qū),并根據(jù)所述數(shù)據(jù)分區(qū)建立B-Tree索引(根據(jù)時(shí)間范圍建立的索引)以及列 索引,使得數(shù)據(jù)分區(qū)中的時(shí)間范圍索引和列索引共用,有效減少索引的大小。而且,在數(shù)據(jù) 查詢時(shí),可以根據(jù)時(shí)間范圍索引、列索引以及列偏移定位數(shù)據(jù),提高索引定位效率和數(shù)據(jù)提 取效率。另外,數(shù)據(jù)按列存儲(chǔ),使得在提取數(shù)據(jù)時(shí),單列數(shù)據(jù)不需要提取整行數(shù)據(jù),有效減少 冗余數(shù)據(jù)的提取,具有較強(qiáng)的易用性和實(shí)用性。
【專利附圖】
【附圖說明】
[0019] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述 中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些 實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些 附圖獲得其他的附圖。
[0020] 圖1是本發(fā)明實(shí)施例一提供的海量數(shù)據(jù)提取方法的實(shí)現(xiàn)流程圖;
[0021] 圖2是本發(fā)明實(shí)施例二提供的海量數(shù)據(jù)提取裝置的架構(gòu)示例;
[0022] 圖3是本發(fā)明實(shí)施例三提供的海量數(shù)據(jù)提取裝置的組成結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0023] 以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、接口、技術(shù)之 類的具體細(xì)節(jié),以便透切理解本發(fā)明實(shí)施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這 些具體細(xì)節(jié)的其它實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明。在其它情況中,省略對(duì)眾所周知的系統(tǒng)、裝 置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
[0024] 為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實(shí)施例來進(jìn)行說明。
[0025] 實(shí)施例一:
[0026] 圖1示出了本發(fā)明第一實(shí)施例提供的海量數(shù)據(jù)提取方法的實(shí)現(xiàn)流程,其過程詳述 如下:
[0027] 在步驟S101中,從原始數(shù)據(jù)庫中獲取原始數(shù)據(jù),并根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù) 進(jìn)行分區(qū)。
[0028] 在本實(shí)施例中,所述對(duì)原始數(shù)據(jù)進(jìn)行分區(qū)是指根據(jù)預(yù)設(shè)規(guī)則將同類型的數(shù)據(jù)存 放在一個(gè)數(shù)據(jù)文件中。例如根據(jù)時(shí)間范圍,將連續(xù)5年的數(shù)據(jù)存放為一個(gè)數(shù)據(jù)文件,則 2000-2005數(shù)據(jù)為一個(gè)文件,2006-2010數(shù)據(jù)為一個(gè)文件。
[0029] 作為本發(fā)明的另一示例,為了方便計(jì)算索引,在根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù)進(jìn) 行分區(qū)之前,還包括:
[0030] 對(duì)獲取的所述原始數(shù)據(jù)進(jìn)行填充處理,以使得填充處理后的數(shù)據(jù)與時(shí)間點(diǎn)對(duì)齊。 由于數(shù)據(jù)與時(shí)間點(diǎn)是對(duì)齊的,從而所有的列可共用對(duì)應(yīng)的時(shí)間范圍。例如如果數(shù)據(jù)是每天 一條,則將數(shù)據(jù)按照每天一條填充,當(dāng)天沒有數(shù)據(jù)的,填充一條空數(shù)據(jù),從而保證每天都有 數(shù)據(jù)填充。
[0031] 在步驟S102中,根據(jù)分區(qū)規(guī)則建立B-Tree索引。
[0032] 在本實(shí)施例中,可以根據(jù)預(yù)定的時(shí)間范圍規(guī)則(例如,連續(xù)5年的數(shù)據(jù)存放為一個(gè) 數(shù)據(jù)文件),創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)分區(qū),在數(shù)據(jù)分區(qū)中根據(jù)時(shí)間范圍建立B-Tree索引,由于數(shù)據(jù) 與時(shí)間點(diǎn)是對(duì)齊的,從而所有的列都可共用該時(shí)間范圍。
[0033] 在步驟S103中,根據(jù)存入數(shù)據(jù)分區(qū)中的數(shù)據(jù)列類型、數(shù)據(jù)分區(qū)的時(shí)間范圍以及數(shù) 據(jù)列存入的先后順序建立列索引,并將所述列索引存入對(duì)應(yīng)的數(shù)據(jù)分區(qū)中。
[0034] 示例性的,所述列索引的計(jì)算公式可如下:
[0035]
【權(quán)利要求】
1. 一種海量數(shù)據(jù)提取的方法,其特征在于,所述方法包括: 從原始數(shù)據(jù)庫中獲取原始數(shù)據(jù),并根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù)進(jìn)行分區(qū); 根據(jù)分區(qū)規(guī)則建立B-Tree索引; 根據(jù)存入數(shù)據(jù)分區(qū)中的數(shù)據(jù)列類型、數(shù)據(jù)分區(qū)的時(shí)間范圍以及數(shù)據(jù)列存入的先后順序 建立列索引; 將所述數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊拆分成多個(gè)數(shù)據(jù)子塊,對(duì)所述數(shù)據(jù)子塊進(jìn)行編號(hào),每個(gè)數(shù) 據(jù)子塊對(duì)應(yīng)一個(gè)數(shù)據(jù)主鍵,并將所述數(shù)據(jù)主鍵的列數(shù)據(jù)根據(jù)所述列索引存入對(duì)應(yīng)的數(shù)據(jù)子 塊中; 在接收到數(shù)據(jù)提取請(qǐng)求信息時(shí),根據(jù)所述請(qǐng)求信息中的時(shí)間范圍通過B-Tree索引確 定待提取數(shù)據(jù)所在的數(shù)據(jù)分區(qū),并確定該數(shù)據(jù)分區(qū)列內(nèi)的偏移開始位置PB和偏移結(jié)束位 置PE,根據(jù)所述請(qǐng)求信息中的列信息通過列索引確定每個(gè)列相對(duì)所述數(shù)據(jù)子塊的起始位置 Pi,并根據(jù)所述請(qǐng)求信息中數(shù)據(jù)主鍵對(duì)應(yīng)的數(shù)據(jù)子塊編號(hào)確定該數(shù)據(jù)主鍵的起始位置P。; 提取位置范圍[Pc+Pi+PB^+Pi+PE]內(nèi)的數(shù)據(jù)。
2. 如權(quán)利要求1所述的方法,其特征在于,所述列索引的計(jì)算公式如下:
其中,yn為第η列索引,T為時(shí)間范圍內(nèi)總的時(shí)間點(diǎn)個(gè)數(shù),Li為第i列的單個(gè)字段數(shù)據(jù) 長(zhǎng)度,η為大于或等于2的整數(shù)。
3. 如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù)進(jìn)行分 區(qū)包括: 根據(jù)時(shí)間范圍對(duì)所述原始數(shù)據(jù)進(jìn)行分區(qū)。
4. 如權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,在根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù) 進(jìn)行分區(qū)之前,還包括: 對(duì)獲取的所述原始數(shù)據(jù)進(jìn)行填充處理,以使得填充處理后的數(shù)據(jù)與時(shí)間點(diǎn)對(duì)齊。
5. 如權(quán)利要求1所述的方法,其特征在于,所述將所述數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊拆分成多 個(gè)數(shù)據(jù)子塊包括: 將數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊根據(jù)一個(gè)數(shù)據(jù)主鍵存儲(chǔ)所有列所需的存儲(chǔ)空間拆分成多個(gè)數(shù) 據(jù)子塊。
6. -種海量數(shù)據(jù)提取的裝置,其特征在于,所述裝置包括: 分區(qū)單元,用于從原始數(shù)據(jù)庫中獲取原始數(shù)據(jù),并根據(jù)預(yù)設(shè)規(guī)則對(duì)所述原始數(shù)據(jù)進(jìn)行 分區(qū); 第一索引單元,用于根據(jù)分區(qū)規(guī)則建立B-Tree索引; 第二索引單元,用于根據(jù)存入數(shù)據(jù)分區(qū)中的數(shù)據(jù)列類型、數(shù)據(jù)分區(qū)的時(shí)間范圍以及數(shù) 據(jù)列存入的先后順序建立列索引; 第一處理單元,用于將所述數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊拆分成多個(gè)數(shù)據(jù)子塊,對(duì)所述數(shù)據(jù)子 塊進(jìn)行編號(hào),每個(gè)數(shù)據(jù)子塊對(duì)應(yīng)一個(gè)數(shù)據(jù)主鍵,并將所述數(shù)據(jù)主鍵的列數(shù)據(jù)根據(jù)所述列索 引存入對(duì)應(yīng)的數(shù)據(jù)子塊中; 第二處理單元,用于在接收到數(shù)據(jù)提取請(qǐng)求信息時(shí),根據(jù)所述請(qǐng)求信息中的時(shí)間范圍 通過B-Tree索引確定待提取數(shù)據(jù)所在的數(shù)據(jù)分區(qū),并確定該數(shù)據(jù)分區(qū)列內(nèi)的偏移開始位 置PB和偏移結(jié)束位置PE,根據(jù)所述請(qǐng)求信息中的列信息通過列索引確定每個(gè)列相對(duì)所述 數(shù)據(jù)子塊的起始位置匕,并根據(jù)所述請(qǐng)求信息中數(shù)據(jù)主鍵對(duì)應(yīng)的數(shù)據(jù)子塊編號(hào)確定該數(shù)據(jù) 主鍵的起始位置P c ; 數(shù)據(jù)提取單元,用于提取位置范圍[PfPi+PBJfPi+PE]內(nèi)的數(shù)據(jù)。
7. 如權(quán)利要求6所述的裝置,其特征在于,所述列索引的計(jì)算公式如下:
其中,yn為第η列索引,T為時(shí)間范圍內(nèi)總的時(shí)間點(diǎn)個(gè)數(shù),Li為第i列的單個(gè)字段數(shù)據(jù) 長(zhǎng)度,η為大于或等于2的整數(shù)。
8. 如權(quán)利要求6所述的裝置,其特征在于,所述分區(qū)單元用于: 根據(jù)時(shí)間范圍對(duì)所述原始數(shù)據(jù)進(jìn)行分區(qū)。
9. 如權(quán)利要求6至8任一項(xiàng)所述的裝置,其特征在于,所述分區(qū)單元還用于: 對(duì)獲取的所述原始數(shù)據(jù)進(jìn)行填充處理,以使得填充處理后的數(shù)據(jù)與時(shí)間點(diǎn)對(duì)齊。
10. 如權(quán)利要求6所述的裝置,其特征在于,所述第一處理單元用于: 將數(shù)據(jù)分區(qū)中的數(shù)據(jù)塊根據(jù)一個(gè)數(shù)據(jù)主鍵存儲(chǔ)所有列所需的存儲(chǔ)空間拆分成多個(gè)數(shù) 據(jù)子塊。
【文檔編號(hào)】G06F17/30GK104112011SQ201410340118
【公開日】2014年10月22日 申請(qǐng)日期:2014年7月16日 優(yōu)先權(quán)日:2014年7月16日
【發(fā)明者】陳工孟, 唐杰 申請(qǐng)人:深圳市國(guó)泰安信息技術(shù)有限公司