劉 堅(jiān) 李盛樂 陳曉琳 康 凱 劉珠妹(中國地震局地震研究所地震大地測量重點(diǎn)實(shí)驗(yàn)室,武漢 430071)
地震大數(shù)據(jù)存儲(chǔ)管理研究
劉 堅(jiān) 李盛樂 陳曉琳 康 凱 劉珠妹
(中國地震局地震研究所地震大地測量重點(diǎn)實(shí)驗(yàn)室,武漢 430071)
針對(duì)目前傳統(tǒng)關(guān)系數(shù)據(jù)庫在存儲(chǔ)大數(shù)據(jù)時(shí)遇到的諸多挑戰(zhàn),提出了一種基于Hbase的地震大數(shù)據(jù)存儲(chǔ)管理方法。Hbase表是一個(gè)分布式多維表,表中的數(shù)據(jù)通過一個(gè)行關(guān)鍵字(Row Key)、一個(gè)列族和一個(gè)列名(Columnfamily:column name)以及一個(gè)時(shí)間戳進(jìn)行索引和查詢定位。關(guān)鍵在設(shè)計(jì)好Row Key,以方便數(shù)據(jù)查詢并進(jìn)行數(shù)據(jù)分析。下面以地震觀測數(shù)據(jù)為實(shí)例,講述在Hbase的存儲(chǔ)原理和方法。
假設(shè)地震業(yè)務(wù)數(shù)據(jù)庫中有一Obs觀測數(shù)據(jù)表,如果按照傳統(tǒng)的RDBMS的話,Obs表中的列是不能隨意改變的,比如schema定義了Netid,Stationid,pointid、Intrid、Itemid、value等屬性,Obs表的屬性是不能動(dòng)態(tài)增加的。如果是Hbase列式存儲(chǔ)數(shù)據(jù)庫,在創(chuàng)建Obs表時(shí),再為它定義一個(gè)info列族,Obs的數(shù)據(jù)便可以表示為:info:value=23.4,如果欲增加新的字段屬性,只需要通過添加一個(gè)info:newProperty就可以了。
表1 關(guān)系數(shù)據(jù)庫表結(jié)構(gòu)
表1是關(guān)系數(shù)據(jù)庫定義的Obs表,一旦設(shè)計(jì)完投入運(yùn)行,該表的列是固定的,不能動(dòng)態(tài)改變,并且列值為null值時(shí),因占存儲(chǔ)空間而浪費(fèi)了這部分空間。表2是在Hbase的NoSQL數(shù)據(jù)庫,Obs表的列可通過列族動(dòng)態(tài)增加,并且空值列是不存儲(chǔ)的,這樣就節(jié)約了存儲(chǔ)空間,因此Hbase的基于列存儲(chǔ)的數(shù)據(jù)模型就非常適合地震數(shù)據(jù)頻繁擴(kuò)展的場景。另外,選用Hbase數(shù)據(jù)庫存儲(chǔ)管理數(shù)據(jù),還有另外一個(gè)好處就是能自動(dòng)切分?jǐn)?shù)據(jù),當(dāng)Obs表中的數(shù)據(jù)超過某一個(gè)閥值時(shí),Hbase就會(huì)自動(dòng)切分?jǐn)?shù)據(jù),這樣就使查詢具有了伸縮性,再加上Hbase的弱事務(wù)性的特性,因此Hbase的數(shù)據(jù)寫入效率非常高。
表2 NoSQL數(shù)據(jù)庫表結(jié)構(gòu)
將兩者針對(duì)結(jié)構(gòu)化觀測數(shù)據(jù)的存儲(chǔ)進(jìn)行效能測試,在關(guān)鍵代碼行處添加秒表,記錄執(zhí)行命令時(shí)間。數(shù)據(jù)量(條)分別為50,100,1000,10000,100000。每次插入保存完畢把所耗時(shí)長(單位:ms)寫入日志文件。連續(xù)多次測試,取平均值。當(dāng)寫入記錄條數(shù)小于1 000時(shí),可以看出兩者所耗時(shí)間差別并不明顯;但隨插入記錄條數(shù)持續(xù)增加,Mysql的插入耗時(shí)開始劇增,而Hbase耗時(shí)變化幅度相對(duì)較小,其存儲(chǔ)性能優(yōu)勢也就顯現(xiàn)出來了。
分別對(duì)Hbase-0.94.6和Mysql-5.1.48做10,50,100,200,500,1000次文件寫入試驗(yàn),文件大小約為30 KB/個(gè),兩者的二進(jìn)制文件存儲(chǔ)耗時(shí)(單位:ms)性能對(duì)比結(jié)果顯示,當(dāng)插入文件數(shù)量越來越多時(shí),Hbase的性能優(yōu)勢顯而易見。
分別對(duì)Hbase-0.94.6和Mysql-5.1.48做數(shù)據(jù)量為1 000、2000、10 000、100 000、500 000二者查詢性能測試,結(jié)果顯示,Hbase耗時(shí)(單位:ms)很少,且幅度變化不大,而Mysql查詢耗時(shí)隨數(shù)據(jù)量增長幅度上升變化快。
綜上所述,該種基于Hbase的地震大數(shù)據(jù)存儲(chǔ)方法,并與傳統(tǒng)關(guān)系數(shù)據(jù)庫Mysql在寫入與讀取效率作比對(duì)測試,結(jié)果表明,該方法在數(shù)據(jù)存儲(chǔ)與查詢等性能,特別是在數(shù)據(jù)量多時(shí),具有顯著優(yōu)勢。