儲存選型
要搞懂大資料儲存選型,首先必須得了解資料庫的發展歷史,了解關聯式資料庫的優勢和缺點,才能進一步考慮如何處理這些問題。
簡單來說,資料庫的發展是跟隨資料量的發展來發展的,最開始的時候lamp已經足夠使用,當海量大資料出現後,如何儲存和查詢這些資料就成了人們考慮的問題,這時候人們自然想到從兩方面入手:
1. 增加單機效能,加cpu加記憶體,也就是垂直擴充套件,但是提公升有限
2. 改用主備,增加讀效能,寫效能存在同步鎖問題
3. 分庫分表,也就是水平擴充套件
1. 優化索引,減少查詢
2. 快取查詢結果
3. 反正規化,快速查詢
這些手段在一段時間內滿足了要求,但是擴充套件性、易用性、效能等諸多方面都存在較大問題,這時候人們開始思考關聯式資料庫的本質和提公升的可能。
關聯式資料庫(rdbms)需要如下四點要求(acid):
事務操作的成功失敗標準,比如匯錢,乙個賬號取錢另乙個賬號收錢,整個過程是最小化單元,不能中斷
不同使用者同一時刻看到的資料一致,也就是事務操作前後的邏輯不能變,比如兩個人的總餘額固定,轉賬過程中的中間結果別人是看不到的,能看到的只有一致性的資料
事務操作過程中,不同事務的操作中間和結果如何相關影響,這涉及到不同的隔離級別,比如常見的讀已提交和重複讀
事務修改儲存在磁碟上,宕機也不會丟失
acid主要依賴事務,這就帶來了諸多限制,比如多行事務原子性保證涉及到整個分布式集群鎖住的問題,這完全喪失了分布式的優點,因此分布式可擴充套件資料庫可從如下兩個方面入手:
nosql,指的是非關係型的資料庫。nosql有時也稱作not only sql的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。
nosql其實就是弱化了了acid的一些特性,來獲得其他方面的提公升,需要滿足cap理論:
對應關聯式資料庫的事務級別,這裡的一致性也分為幾個等級:
cap指出乙個分布式系統不可能同時很好的滿足一致性,可用性和分割槽容錯性這三個需求,最多只能同時較好的滿足兩個。因此,根據cap原理將nosql資料庫分成了滿足 ca 原則、滿足 cp 原則和滿足 ap 原則三 大類:
這裡ca也就是對應傳統關聯式資料庫,網路發生**時,主節點被剝離,無法正常工作。nosql常用的是實際p固定,可選c或a。
可以看到這裡,cassandar強調ap,因此一致性沒那麼好,滿足最終一致性,但是寫入效能非常高,常用和spark等配合實施寫入,目前國外nosql排名第一;mongodb/hbase/redis等強調cp,因此相對來說寫入效能沒那麼好(相對來說,比關聯式資料庫還是高很多),但是一致性非常好,對於訊息系統、訂單系統等場合是必須的。
原則就是按照一定的規則將資料分片互不相干的部分,這樣減少資源訪問的衝突,加快速度,基本上分布式的資料庫都要使用這種原則,比如hbase/cassandra的rowkey,mongodb的分片等等,常用的分片原則如下:
2.鍵值拆分,比如hash值或時間
3.乙個統一的管理節點或目錄,通過查表快速定位資料
基於這個原則,人們還對傳統的關聯式資料庫進行改造,最有名的就是基於postgresql改造的greenplum,依賴mpp架構(即大規模並行處理-massively parallel processor),通過多個segmen並行工作,達到極高的查詢速度。
有了前面的歷史背景描述,再來看大資料儲存選型會簡單很多,主要從如下幾個方面展開:
資料儲存空間和儲存記錄數
併發訪問量
寫入、查詢速度
分析的複雜程度(對二級索引、事務、join的支援)成本
首先資料規模限制了如何儲存的問題,海量資料關聯式資料庫肯定存不下,常見的資料庫和對應的資料量級簡單列如下:
大數運算 1 大數儲存
int 16位 32768 32767 注 現在大多數的編譯器的int型是32位的 也就是說跟long型的大小一樣 long long或 int64 64位 9223372036854775808 9223372036854775807 float 32位 精確到小數點後6 7位 double 64...
1 大資料概述
大資料時代的三種標誌 大資料,雲計算,物聯網。雲計算概念 通過網路以服務的方式為使用者提供非常廉價的it資源。雲計算通俗點講就是把以前需要本地處理器計算的任務交到了遠端伺服器上去做。幾個雲計算的應用例項 第二是網頁遊戲。這其實也是一種雲計算應用,把以前需要在本地安裝的客戶端放到了網頁上,通過基於網頁...
1 大資料概述
1.借鑑網圖 2.兩者的各方面比較 1 spark對標於hadoop中的計算模組mr,但是速度和效率比mr要快得多 2 spark沒有提供檔案管理系統,所以,它必須和其他的分布式檔案系統進行整合才能運作,它只是乙個計算分析框架,專門用來對分布式儲存的資料進行計算處理,它本身並不能儲存資料 3 spa...