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