用于管理數(shù)據(jù)庫(kù)的方法和系統(tǒng)的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明的實(shí)施例總體上涉及數(shù)據(jù)存儲(chǔ)技術(shù),更具體地,涉及用于管理數(shù)據(jù)庫(kù)的方法和系統(tǒng)。【
背景技術(shù):
】[0002]時(shí)間序列數(shù)據(jù)(timeseriesdata)是指隨時(shí)間而收集的一系列數(shù)據(jù)。一般而言,時(shí)間序列數(shù)據(jù)可以根據(jù)預(yù)定的時(shí)間間隔從多個(gè)數(shù)據(jù)監(jiān)測(cè)點(diǎn)(簡(jiǎn)稱“數(shù)據(jù)點(diǎn)”)被獲取。由此,時(shí)間序列數(shù)據(jù)與時(shí)間信息和數(shù)據(jù)點(diǎn)二者相關(guān)聯(lián)。時(shí)間序列數(shù)據(jù)的典型示例之一是電網(wǎng)中的電表數(shù)據(jù)。這些數(shù)據(jù)由分布在給定地理區(qū)域(例如,街道、社區(qū)、城市,等等)中的電表測(cè)量,并且被定期存儲(chǔ)到例如電力公司的中央數(shù)據(jù)庫(kù)中。[0003]與其他類型的數(shù)據(jù)相比,時(shí)間序列數(shù)據(jù)的增長(zhǎng)速度快。隨著時(shí)間的增加,每一個(gè)數(shù)據(jù)點(diǎn)都會(huì)產(chǎn)生數(shù)據(jù)導(dǎo)致需要存儲(chǔ)的數(shù)據(jù)總量將急劇增長(zhǎng)。另外,由于時(shí)間序列數(shù)據(jù)同時(shí)與數(shù)據(jù)點(diǎn)和時(shí)間二者相關(guān)聯(lián),因此在訪問(wèn)此類數(shù)據(jù)時(shí)需要這兩方面的信息。這些特點(diǎn)使傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)不適于時(shí)間序列數(shù)據(jù)的存儲(chǔ)。例如,由于關(guān)系型數(shù)據(jù)庫(kù)的ACID(原子性、一致性、獨(dú)立性和持久性)要求,大規(guī)模的時(shí)間序列數(shù)據(jù)將會(huì)導(dǎo)致并發(fā)問(wèn)題(例如死鎖)、過(guò)于頻繁(例如,每秒鐘數(shù)千次)的SQL操作等各種問(wèn)題。因此,關(guān)系型數(shù)據(jù)庫(kù)在查詢性能方面無(wú)法滿足實(shí)際需求。[0004]已經(jīng)提出了使用面向列的數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)時(shí)間序列數(shù)據(jù)。例如,Hadoop數(shù)據(jù)庫(kù)(簡(jiǎn)稱“HBase”)是一種已知的面向列的數(shù)據(jù)庫(kù),并且將在下文作為示例被加以討論。在HBase中的,數(shù)據(jù)表(table)中的列被劃分到列族(columnfamily)中,每個(gè)列族可以包含一個(gè)或多個(gè)列。當(dāng)數(shù)據(jù)不斷增大時(shí),數(shù)據(jù)表的大小也隨之增大。此時(shí),數(shù)據(jù)表中的數(shù)據(jù)被劃分到多個(gè)區(qū)域(Reg1n)中存儲(chǔ),每個(gè)區(qū)域可由相應(yīng)的稱為HReg1n的對(duì)象管理。在底層Hadoop分布式文件系統(tǒng)(HDFS)中,每個(gè)區(qū)域中的數(shù)據(jù)被存儲(chǔ)在對(duì)應(yīng)數(shù)據(jù)節(jié)點(diǎn)的一個(gè)或多個(gè)塊(block)中。[0005]然而,對(duì)于時(shí)間序列數(shù)據(jù)而言,HBase等已知的面向列的數(shù)據(jù)庫(kù)同樣存在數(shù)據(jù)訪問(wèn)性能方面的缺陷,這將在下文詳細(xì)討論。由此,本領(lǐng)域中需要一種用于管理時(shí)間序列數(shù)據(jù)存儲(chǔ)的技術(shù)方案,以支持對(duì)此類數(shù)據(jù)更加高效和有效的訪問(wèn)?!?br/>發(fā)明內(nèi)容】[0006]對(duì)于時(shí)間序列數(shù)據(jù)而言,表的行通常與時(shí)間維度相關(guān)聯(lián)。換言之,在同一時(shí)間段(例如,同一天、同一個(gè)月,等等)獲得的數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)表的一行中。由此,時(shí)間信息可以作為行鍵(rowkey)來(lái)定位待訪問(wèn)數(shù)據(jù)所在的行。時(shí)間數(shù)據(jù)序列的數(shù)據(jù)點(diǎn)信息被用來(lái)檢索列。也即,與同一數(shù)據(jù)點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)被依序存儲(chǔ)在給定列族的一個(gè)列中。發(fā)明人發(fā)現(xiàn):當(dāng)查詢集中在同一行或者少數(shù)幾行時(shí),這種面向列的數(shù)據(jù)庫(kù)能夠提供較好的數(shù)據(jù)訪問(wèn)性能。然而,當(dāng)用戶的查詢跨數(shù)目較多的行時(shí),數(shù)據(jù)訪問(wèn)性能將顯著下降。[0007]為了解決上述以及其他潛在問(wèn)題,本發(fā)明提出了一種用于管理時(shí)間序列數(shù)據(jù)的存儲(chǔ)的技術(shù)方案。[0008]在本發(fā)明的一個(gè)方面,提供一種用于管理數(shù)據(jù)庫(kù)的方法,所述數(shù)據(jù)庫(kù)中的每項(xiàng)數(shù)據(jù)與時(shí)間戳和數(shù)據(jù)點(diǎn)相關(guān)聯(lián),所述時(shí)間戳被用作所述數(shù)據(jù)庫(kù)中的表的行鍵。所述方法包括:基于用戶針對(duì)所述數(shù)據(jù)庫(kù)的先前數(shù)據(jù)訪問(wèn),獲取所述用戶的行為特征;基于獲取的所述行為特征以及所述數(shù)據(jù)庫(kù)的系統(tǒng)配置,將所述表中的列劃分為列族;以及使所述數(shù)據(jù)庫(kù)中的數(shù)據(jù)至少部分地基于相關(guān)聯(lián)的所述數(shù)據(jù)點(diǎn)而被存儲(chǔ)于相應(yīng)的列族。[0009]在本發(fā)明的另一方面,一種用于管理數(shù)據(jù)庫(kù)的系統(tǒng),所述數(shù)據(jù)庫(kù)中的每項(xiàng)數(shù)據(jù)與時(shí)間戳和數(shù)據(jù)點(diǎn)相關(guān)聯(lián),所述時(shí)間戳被用作所述數(shù)據(jù)庫(kù)中的表的行鍵。所述系統(tǒng)包括:行為特征獲取單元,被配置為基于用戶針對(duì)所述數(shù)據(jù)庫(kù)的先前數(shù)據(jù)訪問(wèn),獲取所述用戶的行為特征;列族劃分單元,被配置為基于獲取的所述行為特征以及所述數(shù)據(jù)庫(kù)的系統(tǒng)配置,將所述表中的列劃分為列族;以及數(shù)據(jù)存儲(chǔ)管理單元,被配置為使所述數(shù)據(jù)庫(kù)中的數(shù)據(jù)至少部分地基于相關(guān)聯(lián)的所述數(shù)據(jù)點(diǎn)而被存儲(chǔ)于相應(yīng)的列族。[0010]通過(guò)下文描述將會(huì)理解,不同于現(xiàn)有技術(shù),根據(jù)本發(fā)明的實(shí)施例,用戶在訪問(wèn)時(shí)間序列數(shù)據(jù)中變現(xiàn)出的規(guī)律性行為特征被獲取,并且被用于配置數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)。具體而言,數(shù)據(jù)庫(kù)表的列族中包含的列數(shù)可以基于用戶的時(shí)間行為特征和數(shù)據(jù)庫(kù)的具體配置而靈活確定。以此方式,能夠有效地避免數(shù)據(jù)訪問(wèn)中的跨塊操作,從而顯著提升數(shù)據(jù)訪問(wèn)的性能。本發(fā)明的其他特征和優(yōu)點(diǎn)將通過(guò)下文描述而變得容易理解?!靖綀D說(shuō)明】[0011]通過(guò)結(jié)合附圖對(duì)本發(fā)明示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯其中:[0012]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器的示意性框圖;[0013]圖2示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)管理方法的示意性流程圖;[0014]圖3示出了根據(jù)本發(fā)明實(shí)施例的將數(shù)據(jù)庫(kù)表中的列劃分為列族的方法的示意性流程圖;[0015]圖4示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)配置的示意圖;以及[0016]圖5示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)管理系統(tǒng)的示意性框圖。[0017]在所有附圖中,相同或相似的標(biāo)號(hào)被用來(lái)表示相同或相似的元素?!揪唧w實(shí)施方式】[0018]下面將參照附圖更詳細(xì)地描述本公開(kāi)的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開(kāi)的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開(kāi)更加透徹和完整,并且能夠?qū)⒈竟_(kāi)的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。[0019]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的方框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來(lái)任何限制。[0020]如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。[0021]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來(lái)說(shuō),這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。[0022]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問(wèn)的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。[0023]系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可以用于讀寫不可移動(dòng)的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤驅(qū)動(dòng)器”)。盡管圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。[0024]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。[0025]計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14(例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過(guò)輸入/輸出(I/O)接口22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過(guò)網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過(guò)總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。[0026]下面將詳細(xì)描述本發(fā)明的實(shí)施例。本發(fā)明的若干示例性實(shí)施例的核心思想之一是:通過(guò)對(duì)用戶訪問(wèn)時(shí)間序列數(shù)據(jù)時(shí)的行為特征進(jìn)行統(tǒng)計(jì),來(lái)配置數(shù)據(jù)庫(kù)中的表當(dāng)前第1頁(yè)1 2 3 4