一種大數(shù)據(jù)有效存儲(chǔ)的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,具體涉及一種大數(shù)據(jù)有效存儲(chǔ)的方法和裝置。
【背景技術(shù)】
[0002]隨著移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等應(yīng)用的飛速發(fā)展,全球數(shù)據(jù)量出現(xiàn)了爆炸式增長(zhǎng)。數(shù)據(jù)量的飛速增長(zhǎng)預(yù)示著現(xiàn)在已經(jīng)進(jìn)入了大數(shù)據(jù)時(shí)代。
[0003]數(shù)據(jù)按類型分為結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),其中結(jié)構(gòu)化數(shù)據(jù)是指能夠以二維結(jié)構(gòu)表示的一種數(shù)據(jù)類型,能通過(guò)關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ);半結(jié)構(gòu)化數(shù)據(jù)是指具有一定結(jié)構(gòu),但語(yǔ)義不夠明確的一種數(shù)據(jù)類型,如郵件、HTML網(wǎng)頁(yè)等,它們有些字段是確定的,也有些字段是不確定的;非結(jié)構(gòu)化數(shù)據(jù)是指無(wú)法用二維結(jié)構(gòu)表示的一種數(shù)據(jù)類型,主要包括辦公文檔、文本、圖片、音視頻文件等,無(wú)法采用關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行處理。伴隨社交網(wǎng)絡(luò)的興起和發(fā)展,產(chǎn)生了大量的UGC(User Generated Content,用戶生成內(nèi)容),包括音頻、視頻、文本和圖片等非結(jié)構(gòu)化數(shù)據(jù)。在所有數(shù)據(jù)中,結(jié)構(gòu)化數(shù)據(jù)占數(shù)據(jù)總量的20%,半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)占數(shù)據(jù)總量的80 %,如何科學(xué)管理和合理應(yīng)用這些數(shù)據(jù)顯得日益重要。
[0004]傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)具有非常優(yōu)異的性能,但由于強(qiáng)一致性與強(qiáng)事務(wù)性等規(guī)則約束,關(guān)系型數(shù)據(jù)不適宜于大規(guī)模的橫向擴(kuò)展,從而使得關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用在半結(jié)構(gòu)化或非結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)時(shí)存在諸多問(wèn)題。大數(shù)據(jù)給傳統(tǒng)的數(shù)據(jù)分析處理技術(shù)(例如并行數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù))帶來(lái)的技術(shù)挑戰(zhàn)。傳統(tǒng)數(shù)據(jù)分析處理技術(shù)無(wú)法處理大數(shù)據(jù)的高擴(kuò)展性和海量需求。針對(duì)億萬(wàn)的用戶,數(shù)據(jù)呈現(xiàn)出多源化、異構(gòu)化的趨勢(shì),不同的應(yīng)用對(duì)數(shù)據(jù)的一致性、數(shù)據(jù)交互、傳輸延時(shí)等均有不同的需求。
[0005]現(xiàn)有技術(shù)中對(duì)大數(shù)據(jù)的處理采用基于Hadoop的平臺(tái)。Hadoop是一個(gè)開源分布式計(jì)算平臺(tái),其核心包括HDFS (Hadoop Distributed Files System, Hadoop分布式文件系統(tǒng))。HDFS的眾多優(yōu)點(diǎn)(主要包括高容錯(cuò)性、高伸縮性等)允許用戶將Hadoop部署在低廉的硬件上,搭建分布式集群,構(gòu)成分布式系統(tǒng)。HBase (Hadoop DataBase,Hadoop數(shù)據(jù)庫(kù))是建立在分布式文件系統(tǒng)HDFS之上的提供高可靠性、高性能、列存儲(chǔ)、可伸縮、實(shí)時(shí)讀寫的分布式數(shù)據(jù)庫(kù)系統(tǒng),主要用來(lái)存儲(chǔ)非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。
[0006]如何實(shí)現(xiàn)對(duì)不同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)的有效存儲(chǔ),是大數(shù)據(jù)存儲(chǔ)領(lǐng)域面臨的一個(gè)問(wèn)題。
【發(fā)明內(nèi)容】
[0007]為解決現(xiàn)有技術(shù)中存在的上述技術(shù)問(wèn)題,本發(fā)明提出一種大數(shù)據(jù)有效存儲(chǔ)的方法和裝置。
[0008]本發(fā)明提出的一種大數(shù)據(jù)有效存儲(chǔ)的方法,包括:
[0009]步驟S100,對(duì)待存儲(chǔ)數(shù)據(jù)進(jìn)行預(yù)處理;將所述待存儲(chǔ)數(shù)據(jù)封裝成對(duì)象數(shù)據(jù),所述對(duì)象數(shù)據(jù)中添加有對(duì)象數(shù)據(jù)的屬性信息,所述屬性信息包括對(duì)象數(shù)據(jù)的數(shù)據(jù)類型;
[0010]步驟S200,接收對(duì)象數(shù)據(jù),根據(jù)對(duì)象數(shù)據(jù)的屬性信息確定對(duì)象數(shù)據(jù)的數(shù)據(jù)類型;
[0011]步驟S300,根據(jù)對(duì)象數(shù)據(jù)的數(shù)據(jù)類型將對(duì)象數(shù)據(jù)存儲(chǔ)到不同的存儲(chǔ)單元中。
[0012]其中,步驟SlOO中所述的對(duì)象數(shù)據(jù)的數(shù)據(jù)類型包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù);步驟S300中所述的不同的存儲(chǔ)單元包括HDFS分布式文件系統(tǒng)單元、HBase數(shù)據(jù)庫(kù)單元和關(guān)系數(shù)據(jù)庫(kù)單元;其中,HDFS分布式文件系統(tǒng)單元用于存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),HBase數(shù)據(jù)庫(kù)單元用于存儲(chǔ)半結(jié)構(gòu)化數(shù)據(jù),關(guān)系數(shù)據(jù)庫(kù)用于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)。
[0013]其中,步驟SlOO中被封裝的對(duì)象數(shù)據(jù)具有統(tǒng)一的數(shù)據(jù)操作接口,所述數(shù)據(jù)操作接口接收對(duì)對(duì)象數(shù)據(jù)的操作;
[0014]不同的存儲(chǔ)單元分別具有各自的數(shù)據(jù)操作解析單元,用于接收對(duì)象數(shù)據(jù)的數(shù)據(jù)操作接口發(fā)送的數(shù)據(jù)操作,并對(duì)所述數(shù)據(jù)操作進(jìn)行解析,將數(shù)據(jù)操作接口發(fā)送的數(shù)據(jù)操作轉(zhuǎn)換為本存儲(chǔ)單元可以執(zhí)行的操作。
[0015]其中,采用樹型結(jié)構(gòu)保存對(duì)象數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,一方面,樹型結(jié)構(gòu)的每個(gè)節(jié)點(diǎn)保存了指向一個(gè)對(duì)象數(shù)據(jù)的鏈接,即樹型結(jié)構(gòu)并沒有存儲(chǔ)實(shí)際的對(duì)象數(shù)據(jù),樹型結(jié)構(gòu)的節(jié)點(diǎn)與對(duì)象數(shù)據(jù)是一一對(duì)應(yīng)的關(guān)系,另一方面,樹型結(jié)構(gòu)父子節(jié)點(diǎn)之間的關(guān)系表示了對(duì)象數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系。
[0016]本發(fā)明提出的大數(shù)據(jù)有效存儲(chǔ)的方法,進(jìn)一步包括:
[0017]步驟S400,對(duì)各存儲(chǔ)單元中的對(duì)象數(shù)據(jù)進(jìn)行同步,所述同步是指客戶端的對(duì)象數(shù)據(jù)與服務(wù)器端的對(duì)象數(shù)據(jù)之間的同步。
[0018]本發(fā)明提出的大數(shù)據(jù)有效存儲(chǔ)的方法,進(jìn)一步包括:
[0019]在對(duì)象數(shù)據(jù)的屬性信息中包括實(shí)時(shí)同步標(biāo)志,在客戶端進(jìn)行同步時(shí),首先檢測(cè)網(wǎng)絡(luò)環(huán)境,如果數(shù)據(jù)傳輸速率大于第一閾值,則進(jìn)行實(shí)時(shí)同步,如果數(shù)據(jù)傳輸速率不大于第一閾值,則檢測(cè)對(duì)象數(shù)據(jù)的實(shí)時(shí)同步標(biāo)志,如果實(shí)時(shí)同步標(biāo)志為“是”,則進(jìn)行實(shí)時(shí)同步,如果實(shí)時(shí)同步標(biāo)志為“否”,則暫時(shí)不進(jìn)行實(shí)時(shí)同步,等待數(shù)據(jù)傳輸速率大于指定閾值時(shí)再進(jìn)行同步操作。
[0020]本發(fā)明提出的大數(shù)據(jù)有效存儲(chǔ)的方法,進(jìn)一步包括:
[0021]對(duì)于非實(shí)時(shí)同步的情況,在進(jìn)行同步時(shí)包括兩種同步處理方式,一種是全部同步方式,即不用考慮單個(gè)對(duì)象數(shù)據(jù)是否需要同步,將全部對(duì)象數(shù)據(jù)進(jìn)行同步,另一種是增量同步方式,即僅同步需要同步的對(duì)象數(shù)據(jù),即有變化的對(duì)象數(shù)據(jù);在同步操作時(shí),通過(guò)同步方式判斷來(lái)決定采用增量同步方式或者全部同步方式,所述同步方式判斷包括:判斷所有對(duì)象數(shù)據(jù)的最早同步時(shí)間,當(dāng)最早同步時(shí)間與當(dāng)前時(shí)間的差值大于第二閾值,則采用全部同步方式。
[0022]本發(fā)明還提出了一種大數(shù)據(jù)有效存儲(chǔ)的裝置,包括:
[0023]預(yù)處理模塊,用于對(duì)待存儲(chǔ)數(shù)據(jù)進(jìn)行預(yù)處理;將所述待存儲(chǔ)數(shù)據(jù)封裝成對(duì)象數(shù)據(jù),所述對(duì)象數(shù)據(jù)中添加有對(duì)象數(shù)據(jù)的屬性信息,所述屬性信息包括對(duì)象數(shù)據(jù)的數(shù)據(jù)類型;
[0024]接收模塊,接收對(duì)象數(shù)據(jù),根據(jù)對(duì)象數(shù)據(jù)的屬性信息確定對(duì)象數(shù)據(jù)的數(shù)據(jù)類型;
[0025]存儲(chǔ)模塊,根據(jù)對(duì)象數(shù)據(jù)的數(shù)據(jù)類型將對(duì)象數(shù)據(jù)存儲(chǔ)到不同的存儲(chǔ)單元中。
[0026]本發(fā)明提出的一種大數(shù)據(jù)有效存儲(chǔ)的方法和裝置,通過(guò)利用不同的存儲(chǔ)單元分別存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù),從而可以發(fā)揮不同存儲(chǔ)單元的存儲(chǔ)優(yōu)勢(shì)。通過(guò)對(duì)象數(shù)據(jù)的方式將不同數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行封裝,并提供統(tǒng)一的數(shù)據(jù)操作接口,可以實(shí)現(xiàn)對(duì)不同存儲(chǔ)單元中的數(shù)據(jù)的統(tǒng)一操作。通過(guò)樹型結(jié)構(gòu)組織不同存儲(chǔ)單元中的對(duì)象數(shù)據(jù),可以方便操作離散的對(duì)象數(shù)據(jù)。
【附圖說(shuō)明】
[0027]圖1為本發(fā)明數(shù)據(jù)存儲(chǔ)方法的流程圖;
[0028]圖2為本發(fā)明數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0029]下面將結(jié)合本發(fā)明的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述。這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
[0030]參見圖1,本發(fā)明提出的一種大數(shù)據(jù)有效存儲(chǔ)的方法,包括:
[0031]步驟S100,對(duì)待存儲(chǔ)數(shù)據(jù)進(jìn)行預(yù)處理;將所述待存儲(chǔ)數(shù)據(jù)封裝成對(duì)象數(shù)據(jù),所述對(duì)象數(shù)據(jù)中添加有對(duì)象數(shù)據(jù)的屬性信息,所述屬性信息包括對(duì)象數(shù)據(jù)的數(shù)據(jù)類型;
[0032]待存儲(chǔ)數(shù)據(jù)可以是各種類型的數(shù)據(jù),結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)。對(duì)待存儲(chǔ)數(shù)據(jù)的預(yù)處理包括分析并確定待存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型。將待存儲(chǔ)數(shù)據(jù)封裝成對(duì)象數(shù)據(jù),并將待存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型添加到對(duì)象數(shù)據(jù)的屬性信息中,即通過(guò)對(duì)象數(shù)據(jù)的屬性信息即可確定對(duì)象數(shù)據(jù)的數(shù)據(jù)類型。
[0033]步驟S200,接收對(duì)象數(shù)據(jù),根據(jù)對(duì)象數(shù)據(jù)的屬性信息確定對(duì)象數(shù)據(jù)的數(shù)據(jù)類型;
[0034]根據(jù)對(duì)象數(shù)據(jù)的屬性信息中包括的對(duì)象數(shù)據(jù)的數(shù)據(jù)類型,可以確定對(duì)象數(shù)據(jù)的數(shù)據(jù)類型為結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)或非結(jié)構(gòu)化數(shù)據(jù)。
[0035]步驟S300,根據(jù)對(duì)象數(shù)據(jù)的數(shù)據(jù)類型將對(duì)象數(shù)據(jù)存儲(chǔ)到不同的存儲(chǔ)單元中。
[0036]進(jìn)一步的,步驟S300中所述的不同的存儲(chǔ)單元包括HDFS分布式文件系統(tǒng)單元、HBase數(shù)據(jù)庫(kù)單元和關(guān)系數(shù)據(jù)庫(kù)單元;其中,HDFS分布式文件系統(tǒng)單元用于存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),HBase數(shù)據(jù)庫(kù)單元用于存儲(chǔ)半結(jié)構(gòu)化數(shù)據(jù),關(guān)系數(shù)據(jù)庫(kù)用于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)。
[0037]進(jìn)一步的,步驟SlOO中被封裝的對(duì)象數(shù)據(jù)具有統(tǒng)一的數(shù)據(jù)操作接口,所述數(shù)據(jù)操作接口接收對(duì)對(duì)象數(shù)據(jù)的操作。不同的存儲(chǔ)單元分別具有各自的數(shù)據(jù)操作解析單元,用于接收對(duì)象數(shù)據(jù)的數(shù)據(jù)操作接口發(fā)送的數(shù)據(jù)操作,并對(duì)所述數(shù)據(jù)操作進(jìn)行解析,將數(shù)據(jù)操作接口發(fā)送的數(shù)據(jù)操作轉(zhuǎn)換為本存儲(chǔ)單元可以執(zhí)行的操作。
[0038]由于不同的數(shù)據(jù)類型的結(jié)構(gòu)差異,不同數(shù)據(jù)類型的數(shù)據(jù)在存儲(chǔ)和查詢操作上具有不同的要求,如果對(duì)不同數(shù)據(jù)類型的數(shù)據(jù)都使用單一的存儲(chǔ)和查詢方法,所述單一的存儲(chǔ)和查詢方法在對(duì)一種數(shù)據(jù)類型的數(shù)據(jù)的操作有利時(shí),對(duì)另一種數(shù)據(jù)類型的數(shù)據(jù)的操作可能不利。本發(fā)明提出的一種大數(shù)據(jù)有效存儲(chǔ)的方法,對(duì)不同數(shù)據(jù)類型的數(shù)據(jù),都能夠提供有效的存儲(chǔ)和查詢方法。
[0039]本發(fā)明提供的一種大數(shù)據(jù)有效存儲(chǔ)的方法,進(jìn)一步包括:采用樹型結(jié)構(gòu)保存對(duì)象數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,一方面,樹型結(jié)構(gòu)的每個(gè)節(jié)點(diǎn)保存了指向一個(gè)對(duì)象數(shù)據(jù)的鏈接,即樹型結(jié)構(gòu)并沒有存儲(chǔ)實(shí)際的對(duì)象數(shù)據(jù),樹型結(jié)構(gòu)的節(jié)點(diǎn)與對(duì)象數(shù)據(jù)是一一對(duì)應(yīng)的關(guān)系,另一方面,樹型結(jié)構(gòu)父子節(jié)點(diǎn)之間的關(guān)系表示了對(duì)象數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系。不同的存儲(chǔ)單元存儲(chǔ)的是離散的數(shù)據(jù)對(duì)象,而樹型結(jié)構(gòu)則將這些對(duì)象數(shù)據(jù)進(jìn)行了關(guān)聯(lián),方便對(duì)數(shù)據(jù)的應(yīng)用操作。
[0040]本發(fā)明提供的一種大數(shù)據(jù)有效存儲(chǔ)的方法,進(jìn)一步包括:
[0041]步驟S400,對(duì)各存儲(chǔ)單元中的對(duì)象數(shù)據(jù)進(jìn)行同步。
[0042]在大量的互聯(lián)網(wǎng)應(yīng)用中,服務(wù)器端維護(hù)一個(gè)大的數(shù)據(jù)集,每個(gè)客戶端分別維護(hù)大數(shù)據(jù)集的一個(gè)子集,這樣就需要在客戶端和服務(wù)器端進(jìn)行數(shù)據(jù)的同步