資料的切分(sharding)根據其切分規則的型別,可以分為兩種切分模式。一種是按照不同的表(或者schema)來切分到不同的資料庫(主機)之上,這種切可以稱之為資料的垂直(縱向)切分;另外一種則是根據表中的資料的邏輯關係,將同乙個表中的資料按照某種條件拆分到多台資料庫(主機)上面,這種切分稱之為資料的水平(橫向)切分。
一、垂直切分
乙個資料庫由很多表構成,每個表對應著不同的業務,垂直切分是按照業務將表進行分類,分布到不同的資料庫上面
乙個架構設計較好的應用系統,其總體功能肯定是由很多個功能模組所組成的,而每乙個功能模組所需要的資料對應到資料庫中就是乙個或者多個表。而在架構設計中,各個功能模組相互之間的互動點越統一越少,系統的耦合度就越低,系統各個模組的維護性以及擴充套件性也就越好。這樣的系統,實現資料的垂直切分也就越容易。
二、水平切分
相對於垂直拆分,水平拆分不是將表做分類,而是按照某個欄位的某種規則來分散到多個庫之中,每個表中包含一部分資料。簡單來說,我們可以將資料的水平切分理解為是按照資料行的切分,就是將表中的某些行切分到乙個資料庫,而另外的某些行又切分到其他的資料庫中。
拆分資料就是定義分片規則。關係型資料庫是行列的二維模型,拆分的第一原則就是找到拆分維度。
幾種典型的分片規則:
三、分片比較
分片型別
優點缺點
垂直分割槽
1.拆分後業務清晰,拆分規則明確;
2.系統之間整合或擴充套件容易;
3.資料維護簡單
1.部分業務表無法join,只能通過介面方式解決,提高了系統複雜度;
2.受每種業務不同的限制存在單庫效能瓶頸,不易資料擴充套件效能提高;
3.事務處理複雜
水平切分
1.拆分規則抽象好,join操作基本可以資料庫做;
2.不存在單庫大資料,高併發的效能瓶頸
3.應用端改造少
4.提高了系統的穩定性和負載能力
1.拆分規則難以抽象
2.分片事務一致性難以解決
3.資料多次擴充套件難度跟維護量極大
4.跨庫join效能較差
四、資料來源管理
客戶端模式:在每個應用程式模組中配置管理自己需要的乙個(或多個)資料來源,直接訪問各個資料庫,在模組內完成資料的整合。
**模式:通過中間**層來統一管理所有的資料來源,後端資料庫集群對前端應用程式透明。
資料庫分片
隨著網際網路的發展,資料的量級也是指數的增長,從 gb 到tb到 pb。對資料的各種操作也是愈加的困難,傳統的關係性資料庫已經無法滿足快速查詢與插入資料的需求。這個時候 nosql 的出現暫時解決了這一危機。它通過降低資料的安全性,減少對事務的支援,減少對複雜查詢的支援,來獲取效能上的提公升。但是,...
資料庫分片
引用 分片 sharding 是一種與水平切分 horizontal partitioning 相關的資料庫架構模式 將乙個表裡面的行,分成多個不同的表的做法 稱為分割槽 每個區都具有相同的模式和列,但每個表有完全不同的行。同樣,每個分割槽中儲存的資料都是唯一的,並且與其他分割槽中儲存的資料無關。從...
資料庫分片技術
假如您有乙個應用程式,隨著業務越來越有起色,系統所牽涉到的資料量也就越來越大,此時您要涉及到對系統進行伸縮 scale 的問題了。一種典型的擴充套件方法叫做 向上伸縮 scale up 它的意思是通過使用更好的硬體來提高系統的效能引數。而另一種方法則叫做 向外伸縮 scale out 它是指通過增加...