張春波 徐翠娟 李曉會 哈爾濱職業技術學院
隨著科技的不斷發展,人們正在十分高速的產生著各種類型的數據。特別是云計算產業的形成,使得大數據被更多人多關注,也成為了一個很多人都知道的概念。數據的存儲和查詢是大數據中的一個問題,也對人們對數據的應用有較大的影響,所以必須做好相關方面的工作。
目前,數據存儲和查詢主要分為兩個內容,一個是傳統的關系型數據庫,另外一個就是NoSQL數據庫,下面做具體分析。
傳統關系型數據庫是以關系代數模型為基礎,然后使用集合代數等數學方面的概念來處理其中的數據。過去,在數據量不大的時候,關系型數據庫也只是在單機的環境下運行,或者是在規模不大的服務器上運行。但是,隨著數據量的不斷增加,單機版的數據庫已經不能滿足實際的需求,也開發出來了能夠在集群上運行的關系型數據庫版本。但是集群版存在一些問題。首先就是技術問題,如果磁盤子系統發生問題,整個系統可能就會出現問題。其次就是許可費的問題。很多關系型數據庫都是按照單臺服務器的方式進行收費,所以在集群中使用就會比較貴,特別是在大數據時代,隨著數據量的增加,收費也在不斷增加,所以使用這種數據庫的人越來越少。
NoSQL數據庫相比傳統關系數據庫有更多的優勢。應用NoSQL數據庫,不需要使用“模式”,也就不用對結構定義進行修改,可以隨意的添加字段,在對不規則數據的處理上有很好的作用,而在關系型數據庫中,必須使用自定義的字段表,理解起來比較難。另外一個優勢就是可以“列存”。通過列存的方法,在讀取數據的過程中,只需要訪問相關的屬性就行,不但可以提高速度,還能夠進行數據的壓縮。
Pregel是一種大塊同步并行計算模型,主要依據點的ID,將圖劃分成很多不同的板塊,每一個板塊都是由一組點以及他們出發的邊組合而成。在沒有錯誤的情況下,Pregel主要分為下面幾個部分。第一,就是任務分配和主節點的初始化。用戶可以將編寫完成的程序傳輸到集群上,然后并行執行,可以將其中的一個當成主節點,其不屬于任何一個部分,只需要負責從節點活躍性的協調工作;第二,是劃分方案決定的階段,主節點決定可以將圖分成幾份,也不指定一個節點有多少塊,將一個節點劃分成很多塊,可以很好的提高并行性,從而可以增強計算的效率。每一個節點都需要負責維護其板塊的狀態和執行計算的工作,對其他節點的信息進行管理;第三,就是圖數據的劃分階段。主節點可以將用戶輸入進來的數據傳給從節點,如果從節點收到了屬于自己的點,就可以對自己的數據結構進行更新。當輸入徹底結束之后,所有的點都應該處于激活的狀態;第四,計算。從節點應該按照主節點的指示實施超級步,從節點需要在激活狀態的點中執行,每一個點都應該有一個線程可以進行計算,然后對上邊一個超級步中的信息進行傳遞。在所有計算都完成之后,從節點需要按照主節點的指導保存自己的圖。
對于任何一個頂點,GraphLab都可以將其分配到多臺機器上邊,并且將其中的一臺當成主頂點,其他的機器作為鏡像頂點。主頂點應該管理鏡像頂點,可以給鏡像頂點安排計算的任務。而鏡像頂點主要就是一個代理者,需要和主頂點上的數據保持一致。而針對邊的存儲,一臺機器和一條邊需要保持一對一的形式,這樣也可以解決邊的數量過多的問題。另外,可以將一個機器上的點和邊構成一個地圖,每個機器都有本地ID到全局ID的映射。
GBase模型更加側重于圖數據的存儲與查詢,將圖先進行劃分,再進行壓縮,最后進行計算。GBase可以簡單的分為兩個部分,索引階段和查詢階段。在索引階段中,可以將一個比較大的邊數據文件分成很多同構的板塊,然后結合劃分的結果,重新排序定點的位置,使同一個劃分中的點能夠放在一起。然后,可以將劃分好的數據進行壓縮,最后存儲到數據庫中。在查詢階段,GBase可以提供一個有效的基本算法,比如歸類、異常檢測等。這種以圖結構為基礎的方法,能夠更好的利用圖的信息提高存儲和查詢的效率。雖然這種方法的使用難度略大,但是效率相比要更高,因為不需要使用較多的網絡通訊,也不用等到最慢的節點徹底完成計算。
隨著大數據時代的到來,人們生活、工作中需要的數據也越來越多,對數據的存儲和查詢也變得更加困難。但是隨著技術的發展,人們也在不斷更新數據庫,應用更多的模型,希望可以提高大數據環境下數據存儲和查詢的效率。
[1]劉曉.大數據環境下數據中心的數據生命周期管理研究[J].中國金融電腦,2014,(10):71-75.
[2]顧榮,仇紅劍,楊文家等.Goldfish:基于矩陣分解的大規模RDF數據存儲與查詢系統[J].計算機學報,2017,40(10):2212-2230.
[3]伍晉博,宋杰,張莉等.基于概率的大數據查詢系統——Probery[J].計算機應用,2016,36(1):8-12.