一種時(shí)間序列數(shù)據(jù)的存儲(chǔ)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種時(shí)間序列數(shù)據(jù)的存儲(chǔ)方法及裝置。
【背景技術(shù)】
[0002]在工業(yè)信息化進(jìn)程中,實(shí)時(shí)歷史數(shù)據(jù)庫(kù)一直都是工業(yè)領(lǐng)域重點(diǎn)研究的方向,所涉及的行業(yè)包括石油、電力、冶金、化工等。實(shí)時(shí)歷史數(shù)據(jù)庫(kù)在數(shù)據(jù)監(jiān)控、管理和存儲(chǔ)等方向均具有核心的地位,其以測(cè)點(diǎn)作為基本單元來(lái)描述生產(chǎn)數(shù)據(jù),一個(gè)測(cè)點(diǎn)代表著一個(gè)實(shí)際的數(shù)據(jù)源,例如某一條輸電線上的電壓、某一個(gè)檢測(cè)點(diǎn)的溫度等。為了滿足工業(yè)應(yīng)用中日益增長(zhǎng)的事務(wù)需求,各個(gè)領(lǐng)域都對(duì)實(shí)時(shí)歷史數(shù)據(jù)庫(kù)開(kāi)展了大量的系統(tǒng)研究。
[0003]隨著物聯(lián)網(wǎng)的飛速發(fā)展,各種智能設(shè)備被廣泛地應(yīng)用于工業(yè)領(lǐng)域,越來(lái)越多的數(shù)據(jù)被采集到實(shí)時(shí)歷史數(shù)據(jù)庫(kù)中。由于生產(chǎn)控制過(guò)程是24小時(shí)不間斷運(yùn)行的,因此隨著時(shí)間的推移,歷史數(shù)據(jù)的總量不斷累積,產(chǎn)生的歷史數(shù)據(jù)總量可以達(dá)到TB甚至PB級(jí)別。當(dāng)前的實(shí)時(shí)歷史數(shù)據(jù)庫(kù)被部署在性能良好的服務(wù)器上,但是海量的歷史數(shù)據(jù)仍然會(huì)給目前主流的服務(wù)器硬件帶來(lái)壓力,甚至很難通過(guò)硬件擴(kuò)展的方式解決問(wèn)題。
[0004]工業(yè)數(shù)據(jù)具有典型的時(shí)間序列數(shù)據(jù)的特征,由智能設(shè)備上傳的數(shù)據(jù)通常是帶有時(shí)間標(biāo)簽的數(shù)據(jù)流,時(shí)間標(biāo)簽是歷史數(shù)據(jù)查詢的重要篩選條件。當(dāng)前的實(shí)時(shí)歷史數(shù)據(jù)庫(kù)均采用了特殊的存儲(chǔ)方式,以提高對(duì)相關(guān)時(shí)間序列數(shù)據(jù)的處理能力,但是其存儲(chǔ)的可擴(kuò)展性仍然存在瓶頸。
[0005]Hbase (Hadoop Database,分布式存儲(chǔ)系統(tǒng))底層的分布式文件系統(tǒng)作為一種低成本的分布式存儲(chǔ)解決方案,近年來(lái)得到了廣泛的應(yīng)用。但是,Hbase在面對(duì)大量數(shù)據(jù)寫(xiě)入時(shí)會(huì)有一定的延時(shí),海量數(shù)據(jù)進(jìn)入Hbase會(huì)不停地觸發(fā)Hbase內(nèi)的大文件分割操作,而文件的分割通常發(fā)生在文件合并操作之后,此時(shí)集群內(nèi)的I/O負(fù)載是極其高的。同時(shí),文件分割會(huì)造成服務(wù)器的暫時(shí)下線,數(shù)據(jù)歸檔請(qǐng)求會(huì)被阻塞,系統(tǒng)響應(yīng)時(shí)間會(huì)極其不穩(wěn)定,數(shù)據(jù)的歸檔速度無(wú)法得到保障。
[0006]綜上所述,面對(duì)工業(yè)領(lǐng)域的海量數(shù)據(jù),目前沒(méi)有一種既可以滿足當(dāng)前數(shù)據(jù)的存儲(chǔ)容量要求,又可以保證數(shù)據(jù)存儲(chǔ)穩(wěn)定性的方法。
【發(fā)明內(nèi)容】
[0007]本申請(qǐng)?zhí)峁┮环N時(shí)間序列數(shù)據(jù)的存儲(chǔ)方法及裝置,解決了現(xiàn)有技術(shù)中無(wú)法滿足數(shù)據(jù)的存儲(chǔ)容量要求和無(wú)法保證數(shù)據(jù)存儲(chǔ)穩(wěn)定性的技術(shù)問(wèn)題。
[0008]本發(fā)明實(shí)施例提供了一種時(shí)間序列數(shù)據(jù)的存儲(chǔ)方法,包括:
[0009]將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中;
[0010]對(duì)所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量進(jìn)行統(tǒng)計(jì),獲得統(tǒng)計(jì)結(jié)果;
[0011]在第N個(gè)合并統(tǒng)計(jì)周期內(nèi)對(duì)所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行合并,獲得合并后的文件;
[0012]根據(jù)所述統(tǒng)計(jì)結(jié)果得到第N+1個(gè)合并統(tǒng)計(jì)周期內(nèi)的數(shù)據(jù)存儲(chǔ)量s ;
[0013]判斷所述數(shù)據(jù)存儲(chǔ)量s是否超過(guò)第N+1個(gè)合并統(tǒng)計(jì)周期的預(yù)設(shè)數(shù)據(jù)存儲(chǔ)量;
[0014]若否,則對(duì)所述合并后的文件進(jìn)行分割。
[0015]進(jìn)一步地,所述將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中,具體包括:
[0016]將所述待存儲(chǔ)數(shù)據(jù)存入緩存區(qū)中;
[0017]判斷所述緩存區(qū)中的數(shù)據(jù)容量是否達(dá)到預(yù)設(shè)數(shù)據(jù)容量閾值;
[0018]和/ 或,
[0019]判斷所述緩存區(qū)的存儲(chǔ)周期是否達(dá)到預(yù)設(shè)存儲(chǔ)周期閾值;
[0020]若所述緩存區(qū)中的數(shù)據(jù)容量達(dá)到所述預(yù)設(shè)數(shù)據(jù)容量閾值和/或所述緩存區(qū)的存儲(chǔ)周期達(dá)到所述預(yù)設(shè)存儲(chǔ)周期閾值,將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到所述Hbase數(shù)據(jù)庫(kù)中。
[0021]進(jìn)一步地,所述將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到所述Hbase數(shù)據(jù)庫(kù)中,具體包括:
[0022]將所述待存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)和存儲(chǔ)時(shí)間戳作為所述Hbase數(shù)據(jù)庫(kù)的行鍵;
[0023]將所述待存儲(chǔ)數(shù)據(jù)的內(nèi)容作為所述Hbase數(shù)據(jù)庫(kù)的歸檔數(shù)據(jù);
[0024]將所述行鍵和所述歸檔數(shù)據(jù)作為所述Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)項(xiàng)存儲(chǔ)到所述Hbase數(shù)據(jù)庫(kù)中。
[0025]進(jìn)一步地,所述對(duì)所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量進(jìn)行統(tǒng)計(jì),具體包括:
[0026]判斷所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻T。是否早于預(yù)設(shè)的最早統(tǒng)計(jì)時(shí)刻;
[0027]若是,將所述待存儲(chǔ)數(shù)據(jù)丟棄;
[0028]判斷所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻T。是否介于所述預(yù)設(shè)的最早統(tǒng)計(jì)時(shí)刻和預(yù)設(shè)的最晚統(tǒng)計(jì)時(shí)刻之間;
[0029]若是,將原所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量加上所述待存儲(chǔ)數(shù)據(jù),完成統(tǒng)計(jì);
[0030]判斷所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻TO是否晚于所述預(yù)設(shè)的最晚統(tǒng)計(jì)時(shí)刻;
[0031]若是,將所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻TO作為新的最晚統(tǒng)計(jì)時(shí)刻,并將原所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量加上所述待存儲(chǔ)數(shù)據(jù),完成統(tǒng)計(jì)。
[0032]進(jìn)一步地,所述對(duì)所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行合并,具體包括:
[0033]判斷所述Hbase數(shù)據(jù)庫(kù)在所述第N個(gè)合并統(tǒng)計(jì)周期內(nèi)的數(shù)據(jù)寫(xiě)入量是否達(dá)到預(yù)設(shè)數(shù)據(jù)寫(xiě)入量閾值;
[0034]若是,將所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)按行列鍵升序?qū)懭胍粋€(gè)獨(dú)立的文件;
[0035]判斷所述Hbase數(shù)據(jù)庫(kù)中對(duì)應(yīng)服務(wù)器下文件的個(gè)數(shù)是否超過(guò)預(yù)設(shè)文件合并閾值;
[0036]若是,合并所述對(duì)應(yīng)服務(wù)器中的文件。
[0037]本發(fā)明實(shí)施例還提供了一種時(shí)間序列數(shù)據(jù)的存儲(chǔ)裝置,包括:
[0038]數(shù)據(jù)存儲(chǔ)模塊,用于將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中;
[0039]數(shù)據(jù)統(tǒng)計(jì)模塊,用于對(duì)所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量進(jìn)行統(tǒng)計(jì),獲得統(tǒng)計(jì)結(jié)果;
[0040]數(shù)據(jù)合并模塊,用于在第N個(gè)合并統(tǒng)計(jì)周期內(nèi)對(duì)所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行合并,獲得合并后的文件;
[0041 ]數(shù)據(jù)處理模塊,用于所述根據(jù)統(tǒng)計(jì)結(jié)果得到第N+1個(gè)合并統(tǒng)計(jì)周期內(nèi)的數(shù)據(jù)存儲(chǔ)量s ;
[0042]判斷模塊,用于判斷所述數(shù)據(jù)存儲(chǔ)量s是否超過(guò)第N+1個(gè)合并統(tǒng)計(jì)周期的預(yù)設(shè)數(shù)據(jù)的存儲(chǔ)量;
[0043]分割模塊,用于若所述判斷模塊的判斷結(jié)果為否,對(duì)所述合并后的文件進(jìn)行分割。
[0044]進(jìn)一步地,所述數(shù)據(jù)存儲(chǔ)模塊,具體包括:
[0045]數(shù)據(jù)存儲(chǔ)執(zhí)行單元,用于將所述待存儲(chǔ)數(shù)據(jù)存入緩存區(qū)中;
[0046]第一判斷單元,用于判斷所述緩存區(qū)中的數(shù)據(jù)容量是否達(dá)到預(yù)設(shè)數(shù)據(jù)容量閾值;
[0047]第一數(shù)據(jù)存儲(chǔ)子單元,用于若所述第一判斷單元的判斷結(jié)果為是,將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到所述Hbase數(shù)據(jù)庫(kù)中;
[0048]第二判斷單元,用于判斷所述緩存區(qū)的存儲(chǔ)周期是否達(dá)到預(yù)設(shè)存儲(chǔ)周期閾值;
[0049]第二數(shù)據(jù)存儲(chǔ)子單元,用于若所述第二判斷單元的判斷結(jié)果為是,將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到所述Hbase數(shù)據(jù)庫(kù)中。
[0050]進(jìn)一步地,所述第一數(shù)據(jù)存儲(chǔ)子單元,具體用于若所述第一判斷單元的判斷結(jié)果為是,將所述待存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)和存儲(chǔ)時(shí)間戳作為所述Hbase數(shù)據(jù)庫(kù)的行鍵,將所述待存儲(chǔ)數(shù)據(jù)的內(nèi)容作為所述Hbase數(shù)據(jù)庫(kù)的歸檔數(shù)據(jù);將所述行鍵和所述歸檔數(shù)據(jù)作為所述Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)項(xiàng)存儲(chǔ)到所述Hbase數(shù)據(jù)庫(kù)中;
[0051]所述第二數(shù)據(jù)存儲(chǔ)子單元,具體用于若所述第二判斷單元的判斷結(jié)果為是,將所述待存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)和存儲(chǔ)時(shí)間戳作為所述Hbase數(shù)據(jù)庫(kù)的行鍵,將所述待存儲(chǔ)數(shù)據(jù)的內(nèi)容作為所述Hbase數(shù)據(jù)庫(kù)的歸檔數(shù)據(jù);將所述行鍵和所述歸檔數(shù)據(jù)作為所述Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)項(xiàng)存儲(chǔ)到所述Hbase數(shù)據(jù)庫(kù)中。
[0052]進(jìn)一步地,所述數(shù)據(jù)統(tǒng)計(jì)模塊,具體包括:
[0053]第三判斷單元,用于判斷所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻T。是否早于預(yù)設(shè)的最早統(tǒng)計(jì)時(shí)刻;
[0054]數(shù)據(jù)丟棄單元,用于若所述第三判斷單元的判斷結(jié)果為是,將所述待存儲(chǔ)數(shù)據(jù)丟棄;
[0055]第四判斷單元,用于判斷所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻T。是否介于所述預(yù)設(shè)的最早統(tǒng)計(jì)時(shí)刻和預(yù)設(shè)的最晚統(tǒng)計(jì)時(shí)刻之間;
[0056]第一統(tǒng)計(jì)對(duì)象,用于若所述第四判斷單元的判斷結(jié)果為是,將原所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量加上所述待存儲(chǔ)數(shù)據(jù),完成統(tǒng)計(jì),獲得所述統(tǒng)計(jì)結(jié)果;
[0057]第五判斷單元,用于判斷所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻T。是否晚于所述預(yù)設(shè)的最晚統(tǒng)計(jì)時(shí)刻;
[0058]第二統(tǒng)計(jì)對(duì)象,用于若所述第五判斷單元的判斷結(jié)果為是,將所述待存儲(chǔ)數(shù)據(jù)的存儲(chǔ)時(shí)刻T。作為新的最晚統(tǒng)計(jì)時(shí)刻,并將原所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量加上所述待存儲(chǔ)數(shù)據(jù),完成統(tǒng)計(jì),獲得所述統(tǒng)計(jì)結(jié)果。
[0059]進(jìn)一步地,所述數(shù)據(jù)合并模塊,具體包括:
[0060]第六判斷單元,用于判斷所述Hbase數(shù)據(jù)庫(kù)在所述第N個(gè)合并統(tǒng)計(jì)周期內(nèi)的數(shù)據(jù)寫(xiě)入量是否達(dá)到預(yù)設(shè)數(shù)據(jù)寫(xiě)入量閾值;
[0061]文件生成單元,用于若所述第六判斷單元的判斷結(jié)果為是,將所述Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)按行列鍵升序?qū)懭胍粋€(gè)獨(dú)立的文件;
[0062]第七判斷單元,用于判斷所述Hbase數(shù)據(jù)庫(kù)中對(duì)應(yīng)服務(wù)器下文件的個(gè)數(shù)是否超過(guò)預(yù)設(shè)文件合并閾值;
[0063]合并執(zhí)行單元,用于若所述第七判斷單元的判斷結(jié)果為是,合并所述對(duì)應(yīng)服務(wù)器中的文件,獲得所述合并后的文件。
[0064]本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
[0065]1、將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中,并對(duì)Hbase數(shù)據(jù)庫(kù)中的數(shù)據(jù)量進(jìn)行統(tǒng)計(jì),獲得統(tǒng)計(jì)結(jié)果;根據(jù)統(tǒng)計(jì)結(jié)果得到下一個(gè)合并統(tǒng)計(jì)周期內(nèi)的數(shù)據(jù)存儲(chǔ)量s ;判斷數(shù)據(jù)存儲(chǔ)量S是否超出預(yù)設(shè)的