本發(fā)明涉及大數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及一種海量數(shù)據(jù)存儲(chǔ)管理方法、裝置及數(shù)據(jù)存儲(chǔ)系統(tǒng)。
背景技術(shù):
“大數(shù)據(jù)”通常指的是那些數(shù)量巨大、難于收集、處理、分析的數(shù)據(jù)集,亦指那些在傳統(tǒng)基礎(chǔ)設(shè)施中長(zhǎng)期保存的數(shù)據(jù),海量消息高效的存儲(chǔ)和管理,是大數(shù)據(jù)發(fā)展的基石。只有各個(gè)業(yè)務(wù)系統(tǒng)輸出的所有消息都得到正確存儲(chǔ),并且用戶(hù)可以通過(guò)客戶(hù)端/web展示,獲取,新建,保存,刪除,查詢(xún)消息,也可以進(jìn)行目錄操作(新建,更名,刪除,選定)。
隨著科技的發(fā)展,消息的格式越來(lái)越富媒體化(包括但不限于音頻、視頻、圖片等),而且數(shù)據(jù)量越來(lái)越大,傳統(tǒng)的海量消息存儲(chǔ)方式主要有兩種:一種是以文件格式存儲(chǔ)在dfs(distributedfilesystem,分布式文件系統(tǒng))系統(tǒng);另一種是直接將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。這兩個(gè)存儲(chǔ)方式對(duì)于海量消息的存儲(chǔ)和管理各有利弊:海量數(shù)據(jù)存儲(chǔ)在在dfs系統(tǒng)中,實(shí)施成本低,易于部署,但是磁盤(pán)io比較高,容量和讀寫(xiě)無(wú)法水平擴(kuò)展,較難支撐高并發(fā)和熱備份的要求;而海量數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)讀取很方便,但是對(duì)消息的大小存在限制,一個(gè)長(zhǎng)消息需要拆分成一個(gè)或者多個(gè)短消息,管理難度高,且消息的附件(音頻、視頻、圖片等)文件在數(shù)據(jù)庫(kù)系統(tǒng)中無(wú)法存儲(chǔ),對(duì)于新業(yè)務(wù)的擴(kuò)展存在限制。
針對(duì)上述問(wèn)題,提出一種解決現(xiàn)有對(duì)所有海量數(shù)據(jù)均采用相同存儲(chǔ)方式這一問(wèn)題的海量數(shù)據(jù)存儲(chǔ)管理方法,是本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種海量數(shù)據(jù)存儲(chǔ)管理方法、裝置及數(shù)據(jù)存儲(chǔ)系統(tǒng),以解決現(xiàn)有對(duì)所有海量數(shù)據(jù)均采用相同存儲(chǔ)方式的問(wèn)題。
本發(fā)明提供了一種海量數(shù)據(jù)存儲(chǔ)管理方法,其包括:
接收待存儲(chǔ)消息,標(biāo)準(zhǔn)化待存儲(chǔ)消息的元數(shù)據(jù);
將待存儲(chǔ)消息存儲(chǔ)到分布式文件系統(tǒng),獲取存儲(chǔ)信息,將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù);
基于數(shù)據(jù)庫(kù)中存儲(chǔ)的待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù),管理分布式文件系統(tǒng)中存儲(chǔ)的消息。
進(jìn)一步的,將待存儲(chǔ)消息存儲(chǔ)到分布式文件系統(tǒng),獲取存儲(chǔ)信息包括:將待存儲(chǔ)消息及其消息附件以文件格式存儲(chǔ)在分布式文件系統(tǒng),接收分布式文件系統(tǒng)返回的消息存儲(chǔ)路徑。
進(jìn)一步的,在將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)之后,還包括:為待存儲(chǔ)消息分配關(guān)鍵字值。
進(jìn)一步的,管理分布式文件系統(tǒng)中存儲(chǔ)的消息包括:基于關(guān)鍵字值,讀取和/或老化對(duì)應(yīng)消息。
進(jìn)一步的,元數(shù)據(jù)包括數(shù)據(jù)大??;方法還包括:根據(jù)數(shù)據(jù)大小確定待存儲(chǔ)消息為長(zhǎng)消息,還是短消息;將長(zhǎng)消息存儲(chǔ)到分布式文件系統(tǒng),將短消息直接存儲(chǔ)在數(shù)據(jù)庫(kù)。
本發(fā)明提供了一種海量數(shù)據(jù)存儲(chǔ)管理裝置,其包括:
通信模塊,用于接收待存儲(chǔ)消息,標(biāo)準(zhǔn)化待存儲(chǔ)消息的元數(shù)據(jù);
存儲(chǔ)模塊,用于將待存儲(chǔ)消息存儲(chǔ)到分布式文件系統(tǒng),獲取存儲(chǔ)信息,將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù);
管理模塊,用于基于數(shù)據(jù)庫(kù)中存儲(chǔ)的待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù),管理分布式文件系統(tǒng)中存儲(chǔ)的消息。
進(jìn)一步的,存儲(chǔ)模塊用于包括:將待存儲(chǔ)消息及其消息附件以文件格式存儲(chǔ)在分布式文件系統(tǒng),接收分布式文件系統(tǒng)返回的消息存儲(chǔ)路徑。
進(jìn)一步的,存儲(chǔ)模塊在將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)之后,還用于為待存儲(chǔ)消息分配關(guān)鍵字值。
進(jìn)一步的,管理模塊用于基于關(guān)鍵字值,讀取和/或老化對(duì)應(yīng)消息。
進(jìn)一步的,元數(shù)據(jù)包括數(shù)據(jù)大小;存儲(chǔ)模塊還用于根據(jù)數(shù)據(jù)大小確定待存儲(chǔ)消息為長(zhǎng)消息,還是短消息;將長(zhǎng)消息存儲(chǔ)到分布式文件系統(tǒng),將短消息直接存儲(chǔ)在數(shù)據(jù)庫(kù)。
本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)系統(tǒng),其包括:數(shù)據(jù)庫(kù)、分布式文件系統(tǒng),以及本發(fā)明提供的海量數(shù)據(jù)存儲(chǔ)管理裝置。
本發(fā)明的有益效果:
本發(fā)明提供了一種海量數(shù)據(jù)存儲(chǔ)管理方法,在接收到待存儲(chǔ)消息之后,針對(duì)所有消息進(jìn)行元數(shù)據(jù)標(biāo)準(zhǔn)化之后,將其在dfs系統(tǒng)存儲(chǔ)之后,將存儲(chǔ)消息發(fā)送至數(shù)據(jù)庫(kù),這樣,就可以在數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在dfs系統(tǒng)的消息進(jìn)行管理,同時(shí)還兼具了dfs存儲(chǔ)及數(shù)據(jù)庫(kù)存儲(chǔ)的優(yōu)點(diǎn),解決了現(xiàn)有對(duì)所有海量數(shù)據(jù)均采用相同存儲(chǔ) 方式的問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明第一實(shí)施例提供的海量數(shù)據(jù)存儲(chǔ)管理裝置的結(jié)構(gòu)示意圖;
圖2為本發(fā)明第二實(shí)施例提供的海量數(shù)據(jù)存儲(chǔ)管理方法的流程圖;
圖3為本發(fā)明第三實(shí)施例提供的數(shù)據(jù)存儲(chǔ)系統(tǒng)組網(wǎng)示意圖;
圖4為本發(fā)明第三實(shí)施例中海量數(shù)據(jù)存儲(chǔ)管理方法的流程圖。
具體實(shí)施方式
現(xiàn)通過(guò)具體實(shí)施方式結(jié)合附圖的方式對(duì)本發(fā)明做出進(jìn)一步的詮釋說(shuō)明。
第一實(shí)施例:
圖1為本發(fā)明第一實(shí)施例提供的海量數(shù)據(jù)存儲(chǔ)管理裝置的結(jié)構(gòu)示意圖,由圖1可知,在本實(shí)施例中,本發(fā)明提供的海量數(shù)據(jù)存儲(chǔ)管理裝置1包括:
通信模塊11,用于接收待存儲(chǔ)消息,標(biāo)準(zhǔn)化待存儲(chǔ)消息的元數(shù)據(jù);
存儲(chǔ)模塊12,用于將待存儲(chǔ)消息存儲(chǔ)到分布式文件系統(tǒng),獲取存儲(chǔ)信息,將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù);
管理模塊13,用于基于數(shù)據(jù)庫(kù)中存儲(chǔ)的待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù),管理分布式文件系統(tǒng)中存儲(chǔ)的消息。
在一些實(shí)施例中,上述實(shí)施例中的存儲(chǔ)模塊12用于包括:將待存儲(chǔ)消息及其消息附件以文件格式存儲(chǔ)在分布式文件系統(tǒng),接收分布式文件系統(tǒng)返回的消息存儲(chǔ)路徑。
在一些實(shí)施例中,上述實(shí)施例中的存儲(chǔ)模塊12在將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)之后,還用于為待存儲(chǔ)消息分配關(guān)鍵字值。
在一些實(shí)施例中,上述實(shí)施例中的管理模塊13用于基于關(guān)鍵字值,讀取和/或老化對(duì)應(yīng)消息。
在一些實(shí)施例中,上述實(shí)施例中的元數(shù)據(jù)包括數(shù)據(jù)大??;存儲(chǔ)模塊12還用于根據(jù)數(shù)據(jù)大小確定待存儲(chǔ)消息為長(zhǎng)消息,還是短消息;將長(zhǎng)消息存儲(chǔ)到分布式文件系統(tǒng),將短消息直接存儲(chǔ)在數(shù)據(jù)庫(kù)。
對(duì)應(yīng)的,本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)系統(tǒng),其包括:數(shù)據(jù)庫(kù)、分布式文件系統(tǒng),以及本發(fā)明提供的海量數(shù)據(jù)存儲(chǔ)管理裝置1。
第二實(shí)施例:
圖2為本發(fā)明第二實(shí)施例提供的海量數(shù)據(jù)存儲(chǔ)管理方法的流程圖,由圖2可知,在本實(shí)施例中,本發(fā)明提供的海量數(shù)據(jù)存儲(chǔ)管理方法包括以下步驟:
s201:接收待存儲(chǔ)消息,標(biāo)準(zhǔn)化待存儲(chǔ)消息的元數(shù)據(jù);
s202:將待存儲(chǔ)消息存儲(chǔ)到分布式文件系統(tǒng),獲取存儲(chǔ)信息,將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù);
s203:基于數(shù)據(jù)庫(kù)中存儲(chǔ)的待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù)據(jù),管理分布式文件系統(tǒng)中存儲(chǔ)的消息。
在一些實(shí)施例中,上述實(shí)施例中的將待存儲(chǔ)消息存儲(chǔ)到分布式文件系統(tǒng),獲取存儲(chǔ)信息包括:將待存儲(chǔ)消息及其消息附件以文件格式存儲(chǔ)在分布式文件系統(tǒng),接收分布式文件系統(tǒng)返回的消息存儲(chǔ)路徑。
在一些實(shí)施例中,上述實(shí)施例中的方法在將待存儲(chǔ)消息的存儲(chǔ)信息及元數(shù) 據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)之后,還包括:為待存儲(chǔ)消息分配關(guān)鍵字值。
在一些實(shí)施例中,上述實(shí)施例中的管理分布式文件系統(tǒng)中存儲(chǔ)的消息包括:基于關(guān)鍵字值,讀取和/或老化對(duì)應(yīng)消息。
在一些實(shí)施例中,上述實(shí)施例中的元數(shù)據(jù)包括數(shù)據(jù)大??;方法還包括:根據(jù)數(shù)據(jù)大小確定待存儲(chǔ)消息為長(zhǎng)消息,還是短消息;將長(zhǎng)消息存儲(chǔ)到分布式文件系統(tǒng),將短消息直接存儲(chǔ)在數(shù)據(jù)庫(kù)。
第三實(shí)施例:
現(xiàn)結(jié)合具體應(yīng)用場(chǎng)景對(duì)本發(fā)明做進(jìn)一步的詮釋說(shuō)明。
為了解決上述問(wèn)題,本發(fā)明提供了一種將海量消息根據(jù)文件大小進(jìn)行分開(kāi)存儲(chǔ)的方法。
圖3示出了本發(fā)明的數(shù)據(jù)存儲(chǔ)系統(tǒng)的示意圖,包括第三方消息系統(tǒng),消息引擎模塊301,消息管理模塊302,數(shù)據(jù)庫(kù)hbase303,dfs系統(tǒng)304等網(wǎng)元。
基于圖3,本發(fā)明采用的技術(shù)方案是,消息引擎模塊首先對(duì)海量消息進(jìn)行預(yù)處理,標(biāo)準(zhǔn)化消息本身的元數(shù)據(jù)信息(包括消息宿主信息,消息狀態(tài),消息類(lèi)型、消息來(lái)源、消息目錄、編碼類(lèi)型、消息id、消息size、消息主題、消息傳遞方式、消息內(nèi)容等信息);然后根據(jù)消息預(yù)處理的結(jié)果中的內(nèi)容size的屬性(即文件大小),將超過(guò)2m的消息及消息的附件文件存儲(chǔ)在dfs存儲(chǔ)系統(tǒng)中,而小于等于2m的消息及消息附件目錄則由消息管理模塊序列化成字符串的格式存儲(chǔ)在列式數(shù)據(jù)庫(kù)hbase中,并建立keyvalue的索引值;最后通過(guò)索引值,對(duì)消息進(jìn)行讀取和刪除,及文件的定期老化等日常管理,分析,統(tǒng)計(jì)工作。
具體來(lái)講包括以下步驟:
消息注入的步驟:
a.消息引擎模塊對(duì)消息進(jìn)行標(biāo)準(zhǔn)化預(yù)處理,并判斷消息是長(zhǎng)消息還是短消息。
b.如果是短消息,消息引擎則將短消息通知消息管理模塊;
c.消息管理模塊將短消息注入hbase數(shù)據(jù)庫(kù)。
d.如果是長(zhǎng)消息,則消息引擎模塊將長(zhǎng)消息及消息附件存儲(chǔ)在dfs存儲(chǔ)系統(tǒng),并記錄dfs文件存儲(chǔ)路徑;
e.消息引擎模塊將長(zhǎng)消息文件保存路徑及長(zhǎng)消息同時(shí)發(fā)送給消息管理模塊;
f.消息管理模塊將相關(guān)信息存儲(chǔ)在hbase,及生成相關(guān)的keyvalue值。
讀取消息使用的步驟:
a.消息引擎模塊向消息管理模塊發(fā)起讀取消息的請(qǐng)求;
b.消息管理模塊根據(jù)keyvalue值向hbase查詢(xún)相關(guān)信息;
c.消息管理模塊向消息引擎模塊返回消息查詢(xún)結(jié)果。
消息數(shù)據(jù)存儲(chǔ)更新的步驟:
a.在消息管理模塊上設(shè)置各類(lèi)消息的存儲(chǔ)周期,
b.消息管理模塊定時(shí)查詢(xún)各類(lèi)消息存儲(chǔ)狀態(tài);
c.按照查詢(xún)的結(jié)果定時(shí)老化相關(guān)消息數(shù)據(jù)。
采用上述的技術(shù)方案,實(shí)現(xiàn)了對(duì)海量消息持久化的方法,有效的實(shí)現(xiàn)了海量消息存儲(chǔ)的高性能及可擴(kuò)展性、安全性。
圖4示出了本發(fā)明的海量數(shù)據(jù)存儲(chǔ)管理流程,具體包含如下步驟:
s401:接收新增消息;
s402:根據(jù)消息大小,判斷消息是短消息還是長(zhǎng)消息;
s403-s409:如果是長(zhǎng)消息,則將長(zhǎng)消息以文件格式存儲(chǔ)在dfs存儲(chǔ)系統(tǒng)上,dfs存儲(chǔ)系統(tǒng)返回文件存儲(chǔ)路徑給消息引擎模塊;消息引擎模塊給消息管理模塊發(fā)送消息add消息;消息管理模塊將長(zhǎng)消息存儲(chǔ)路徑及相關(guān)元數(shù)據(jù)信息存儲(chǔ)在hbase數(shù)據(jù)庫(kù)中,并建立keyvalue值,用于后續(xù)查詢(xún);
s410-s413:如果是短消息,消息引擎模塊則直接向消息管理模塊發(fā)起消息add消息;消息管理模塊將短消息直接存儲(chǔ)在hbase數(shù)據(jù)庫(kù)中,用于后續(xù)的大數(shù)據(jù)應(yīng)用分析;
s414-s418:讀取消息流程包含:消息引擎接口調(diào)用消息接口讀取消息;消息管理模塊根據(jù)keyvalue從hbase中讀取消息;hbase返回消息;消息管理模塊將消息返回給消息管理引擎;
s419-s422:消息數(shù)據(jù)老化流程包含步驟:配置設(shè)定消息數(shù)據(jù)保存周期;消息管理模塊定時(shí)老化hbase數(shù)據(jù);消息管理模塊定時(shí)老化dfs的消息文件數(shù)據(jù)。
綜上可知,通過(guò)本發(fā)明的實(shí)施,至少存在以下有益效果:
本發(fā)明提供了一種海量數(shù)據(jù)存儲(chǔ)管理方法,在接收到待存儲(chǔ)消息之后,針對(duì)所有消息進(jìn)行元數(shù)據(jù)標(biāo)準(zhǔn)化之后,將其在dfs系統(tǒng)存儲(chǔ)之后,將存儲(chǔ)消息發(fā)送至數(shù)據(jù)庫(kù),這樣,就可以在數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在dfs系統(tǒng)的消息進(jìn)行管理,同時(shí)還兼具了dfs存儲(chǔ)及數(shù)據(jù)庫(kù)存儲(chǔ)的優(yōu)點(diǎn),解決了現(xiàn)有對(duì)所有海量數(shù)據(jù)均采用相同存儲(chǔ)方式的問(wèn)題。
以上僅是本發(fā)明的具體實(shí)施方式而已,并非對(duì)本發(fā)明做任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施方式所做的任意簡(jiǎn)單修改、等同變化、結(jié)合或修飾,均仍屬于本發(fā)明技術(shù)方案的保護(hù)范圍。