大數據:數據分片和數據路由(一)


常見的數據分片有:哈希分片范圍分片

用圖進行分析,圖畫的實在是不咋地:

  

 


可以將上圖看成是一個二級映射關系:

  第一級:key-partition映射:將數據記錄映射到數據分片空間,特點:多對一的映射關系

  第二級:partition-machine映射:將數據分片映射到物理機器中 特點:多對一的映射關系

 


哈希分片和范圍分片都可以映射到上面畫的這個抽象模型中,哈希分片:采用 哈希函數來建立key-partition映射關系,支持 點查詢(根據某條記錄的主鍵可以獲得記錄內容),但是它無法支持范圍查詢。

范圍分片:既支持點查詢 ,也支持范圍查詢(指定記錄的主鍵范圍內一次讀取多條滿足條件的數據),向支持范圍查詢的系統就有 Google的BigTable 系統。


通過哈希函數來進行數據分片比較常見:其中最為常見的三種:

 

 

  1.Round Robin(哈希取模法)

                   H(key)=hash(key)mod K

    假設有k台物理機,對它進行編號 0到k-1,根據上面的hash函數 ,H(Key)的數值就是存儲物理機的編號,將數據全部分配到 K 台物理機上,在查找的時候也可以通過這個函數來找打存儲相應信息的物理機。

  優點:實現起來非常簡單。

  缺點:缺乏靈活性。

 一旦新增一個物理機到分布式存儲系統,此時哈希函數就變成了:

                  H(key)=hash(key)mod (K+1)

為什么缺乏靈活性:

  從上面的模型圖中我們可以看到 Round robin 是將物理機和數據分片兩個功能 合二為一了,這樣造成的結果就是一個物理機對應一個數據分片,這樣 key-partition和partition-machine映射也成為一體 ,都由同一個哈希函數來承擔,  造成機器個數 K 出現在 映射函數,過度的緊密耦合。只要機器個數變動了,哈希函數也會 跟着變動。 

 

  2.虛擬桶(Virtual Buckets)

    

  如上圖所示,在待存儲記錄和物理機之間引入了虛擬桶層,所有記錄先通過哈希函數映射到對應的虛擬桶,記錄和虛擬桶的映射關系:多對一

第二層映射是 虛擬桶到物理機之間的映射:多對一。 其具體實現方式通過查表來實現,通過內存表來管理這層關系 。

對照第一個圖的抽象模型可以看出,虛擬桶層就是對應的 “數據分片” 層,key-partition映射采用哈希函數,而partition-machine 映射采用表格管理來實現。

 

  與Round Robin相比,引入了虛擬桶層,將原先記錄到物理機的單層映射解耦成兩層映射 ,阿達加強了系統的可擴展性。新的機器加入時,只需要修改partition-machine映射表中的個別條目就能實現擴展。

  優點:具有較強的靈活性。

 

  3.一致性哈希算法

    《數據分片與數據路由 》(二)...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM