一、大型互聯網系統數據的存儲處理
解釋:主庫集群並不能解決並發寫的壓力
因為是一個集群,集群上的每一個節點上面存的數據是要保證是一樣的。在任何一台節點上去插入一條數據,最終這些數據都要同步到集群的各個節點上面去的,也就是說個個節點上面的也會進行一次寫操作,所以並沒有起到緩解的作用。
帶來負面的影響:1.數據庫的一致性,2.主鍵唯一性的問題
分區表和分表:
優先選擇的是分區表,評估一下數據的量,有沒有超出單個庫的處理能力,如果沒有,完全可以采用分區表的這種方式來做,因為使用分區表呢,就把處理數據的難度就交給了數據庫自身來處理了。
分區表是只能在單個庫里,對一個表進行分區的,那么如果並發的壓力超過了單個庫的處理能力,就要考慮使用分表策略了,
分表:指一個數據庫中的某個表數據量特別大,把它拆成多個表,放到多個庫上面去,分散他們的壓力。
分表的規則:
1.范圍分區:適合於數值型的/時間型的就可以使用范圍分區
2.列表分區:比如:類型為字符串,有限個枚舉這類的,如城市 就可以使用列表分區
3.散列分區:不具備 1.2特點的,考慮用散列分區,對這個值求哈希值,然后用這個值去求余或其他等操作選擇合適的表
4.復合分區:是對1,2,3的綜合使用
數據庫中間件:能夠幫我們屏蔽掉后段數據存儲的變化帶來對上層代碼的影響,
總結:
[注]:分布式數據庫:就是Mysql數據庫構成的,分庫,分表的,讀寫分離的集群
二、方案選型
1.數據庫中間件的兩種實現模式:
客戶端模式:吃內存(與應用爭內存),不適用海量數據的存儲,但是適用於高並發的場景
2.常用的數據庫中間件
三、分布式數據庫原理、技術難點
1.數據庫拆分: