1. 程式人生 > >海量數據存儲的解決方案(分布式數據庫)

海量數據存儲的解決方案(分布式數據庫)

分區表 插入 分享圖片 表數據 特點 原理 枚舉 讀寫 超過

一、大型互聯網系統數據的存儲處理

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

解釋:主庫集群並不能解決並發寫的壓力

? 因為是一個集群,集群上的每一個節點上面存的數據是要保證是一樣的。在任何一臺節點上去插入一條數據,最終這些數據都要同步到集群的各個節點上面去的,也就是說個個節點上面的也會進行一次寫操作,所以並沒有起到緩解的作用。

? 帶來負面的影響:1.數據庫的一致性,2.主鍵唯一性的問題

技術分享圖片

技術分享圖片

技術分享圖片

分區表和分表:

? 優先選擇的是分區表,評估一下數據的量,有沒有超出單個庫的處理能力,如果沒有,完全可以采用分區表的這種方式來做,因為使用分區表呢,就把處理數據的難度就交給了數據庫自身來處理了。

? 分區表是只能在單個庫裏,對一個表進行分區的,那麽如果並發的壓力超過了單個庫的處理能力,就要考慮使用分表策略了,

? 分表:指一個數據庫中的某個表數據量特別大,把它拆成多個表,放到多個庫上面去,分散他們的壓力。

? 分表的規則:

? 1.範圍分區:適合於數值型的/時間型的就可以使用範圍分區

? 2.列表分區:比如:類型為字符串,有限個枚舉這類的,如城市 就可以使用列表分區

? 3.散列分區:不具備 1.2特點的,考慮用散列分區,對這個值求哈希值,然後用這個值去求余或其他等操作選擇合適的表

? 4.復合分區:是對1,2,3的綜合使用

數據庫中間件:能夠幫我們屏蔽掉後段數據存儲的變化帶來對上層代碼的影響,

總結:

技術分享圖片

[註]:分布式數據庫:就是Mysql數據庫構成的,分庫,分表的,讀寫分離的集群

二、方案選型

1.數據庫中間件的兩種實現模式:

技術分享圖片

客戶端模式:吃內存(與應用爭內存),不適用海量數據的存儲,但是適用於高並發的場景

技術分享圖片

2.常用的數據庫中間件

技術分享圖片

技術分享圖片

三、分布式數據庫原理、技術難點

1.數據庫拆分:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

四、高級技能

技術分享圖片

海量數據存儲的解決方案(分布式數據庫)