課程
/數據庫
/MySQL
/數據庫設計那些事
能不能講個具體怎么個橫向和縱向拆分!
2018-02-01
源自:數據庫設計那些事 4-5
正在回答
數據的切分(Sharding)根據其切分規則的類型,可以分為兩種切分模式。一種是按照不同的表(或者Schema)來切分到不同的數據庫(主機)之上,這種切可以稱之為數據的垂直(縱向)切分;另外一種則是根據表中的數據的邏輯關系,將同一個表中的
數據按照某種條件拆分到多臺數據庫(主機)上面,這種切分稱之為數據的水平(橫向)切分。
垂直切分
一個數據庫由很多表的構成,每個表對應著不同的業務,垂直切分是指按照業務將表進行分類,分布到不同的數據庫上面,這樣也就將數據或者說壓力分擔到不同的庫上面, 如下圖:
垂直切分的優缺點介紹:
優點:
拆分后業務清晰,拆分規則明確。
系統之間整合或擴展容易。
數據維護簡單。
缺點:
部分業務表無法join,只能通過接口方式解決,提高了系統復雜度。
受每種業務不同的限制存在單庫性能瓶頸,不易數據擴展跟性能提高。
事務處理復雜。
由于垂直切分是按照業務的分類將表分散到不同的庫,所以有些業務表會過于龐大,存在單庫讀寫與存儲瓶頸,所以就需要水平
拆分來做解決。
水平切分
相對于垂直拆分,水平拆分不是將表做分類,而是按照某個字段的某種規則來分散到多個庫之中,每個表中包含一部分數據。簡單來說,我們可以將數據的水平切分理解為是按照數據行的切分,就是將表中的某些行切分到一個數據庫,而另外的某些行又切
分到其他的數據庫中,如下圖:
水平切分的優缺點介紹:
拆分規則抽象好,join操作基本可以數據庫做。
不存在單庫大數據,高并發的性能瓶頸。
應用端改造較少。
提高了系統的穩定性跟負載能力。
拆分規則難以抽象。
分片事務一致性難以解決。
數據多次擴展難度跟維護量極大。
跨庫join性能較差。
垂直切分和水平切分共同的特點和缺點有:
引入分布式事務的問題。
跨節點Join的問題。
跨節點合并排序分頁問題。
多數據源管理問題。
舉報
本教程從數據庫設計基本理論入手,教你設計簡潔高效數據庫結構
3 回答怎么進行表的水平拆分和垂直拆分
2 回答數據庫案例分析
1 回答如何分庫分表?
3 回答拆分后飲料一廠有倆聯系人,會影響正常使用吧?若把商品id也加進拆分后的第二章表中,貌似是數據冗余。剛接觸數據庫,很菜求指點
1 回答數據庫項目表的存儲過程
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-02-03
數據的切分(Sharding)根據其切分規則的類型,可以分為兩種切分模式。一種是按照不同的表(或者Schema)來切分到不同的數據庫(主機)之上,這種切可以稱之為數據的垂直(縱向)切分;另外一種則是根據表中的數據的邏輯關系,將同一個表中的
數據按照某種條件拆分到多臺數據庫(主機)上面,這種切分稱之為數據的水平(橫向)切分。
垂直切分
一個數據庫由很多表的構成,每個表對應著不同的業務,垂直切分是指按照業務將表進行分類,分布到不同的數據庫上面,這樣也就將數據或者說壓力分擔到不同的庫上面, 如下圖:
垂直切分的優缺點介紹:
優點:
拆分后業務清晰,拆分規則明確。
系統之間整合或擴展容易。
數據維護簡單。
缺點:
部分業務表無法join,只能通過接口方式解決,提高了系統復雜度。
受每種業務不同的限制存在單庫性能瓶頸,不易數據擴展跟性能提高。
事務處理復雜。
由于垂直切分是按照業務的分類將表分散到不同的庫,所以有些業務表會過于龐大,存在單庫讀寫與存儲瓶頸,所以就需要水平
拆分來做解決。
水平切分
相對于垂直拆分,水平拆分不是將表做分類,而是按照某個字段的某種規則來分散到多個庫之中,每個表中包含一部分數據。簡單來說,我們可以將數據的水平切分理解為是按照數據行的切分,就是將表中的某些行切分到一個數據庫,而另外的某些行又切
分到其他的數據庫中,如下圖:
水平切分的優缺點介紹:
拆分規則抽象好,join操作基本可以數據庫做。
不存在單庫大數據,高并發的性能瓶頸。
應用端改造較少。
提高了系統的穩定性跟負載能力。
拆分規則難以抽象。
分片事務一致性難以解決。
數據多次擴展難度跟維護量極大。
跨庫join性能較差。
垂直切分和水平切分共同的特點和缺點有:
引入分布式事務的問題。
跨節點Join的問題。
跨節點合并排序分頁問題。
多數據源管理問題。