陈睿:架构设计之数据库拆分六大原则
架構設計之數據庫拆分原則
數據拆分前其實是要首先做準備工作的,然后才是開始數據拆分,我先講拆分前需要做的事情:
數據庫拆分原則:就是指通過某種特定的條件,按照某個維度,將我們存放在同一個數據庫中的數據分散存放到多個數據庫(主機)上面以達到分散單庫(主機)負載的效果。
第一步,首選垂直拆分
一個數據庫由很多表的構成,每個表對應著不同的業務,垂直切分是指按照業務將表進行分類,分布到不同的數據庫上面,這樣也就將數據或者說壓力分擔到不同的庫上面 。
比如淘寶中期開始的數據庫端按照業務垂直拆分:按照業務交易數據庫、用戶數據庫、商品數據庫、店鋪數據庫等進行拆分。
優點:
1. 拆分后業務清晰,拆分規則明確。
2. 系統之間整合或擴展容易。
3. 數據維護簡單。
缺點:
1. 部分業務表無法join,只能通過接口方式解決,提高了系統復雜度。
2. 受每種業務不同的限制存在單庫性能瓶頸,不易數據擴展跟性能提高。
3. 事務處理復雜。
第二步:其次水平拆分
水平拆分的典型場景就是大家熟知的分庫分表。
垂直拆分后遇到單機瓶頸,可以使用水平拆分。相對于垂直拆分的區別是:垂直拆分是把不同的表拆到不同的數據庫中,而水平拆分是把同一個表拆到不同的數據庫中。
相對于垂直拆分,水平拆分不是將表的數據做分類,而是按照某個字段的某種規則來分散到多個庫之中,每個表中包含一部分數據。簡單來說,我們可以將數據的水平切分理解為是按照數據行的切分,就是將表中 的某些行切分到一個數據庫,而另外的某些行又切分到其他的數據庫中。
分庫分表需要涉及到對應的SQL路由規則主庫備庫等,例如:淘寶設計了一套TDDL來解決這些問題,應用端只需配置對應的規則即可,對應用端的沒有任何侵入的設計。?
水平拆分,總之,一般先分庫,如果分庫后查詢仍然慢,于是按照分庫的思想開始做分表的工作數據庫采用分布式數據庫(所有節點的數據加起來才算是整體數據),文件系統采用分布式文件系統任何強大的單一服務器都滿足不了大型系統持續增長的業務需求,數據庫讀寫分離隨著業務的發展最終也將無法滿足需求,需要使用分布式數據庫及分布式文件系統來支撐。
總結,數據庫拆分原則:
1.優先考慮緩存降低對數據庫的讀操作。
2.再考慮讀寫分離,降低數據庫寫操作。
3.最后開始數據拆分,切分模式: 垂直(縱向)拆分、水平拆分。?
4.首先考慮按照業務垂直拆分。
5.再考慮水平拆分:先分庫(設置數據路由規則,把數據分配到不同的庫中)
6.最后再考慮分表。
你可能也喜歡:
總結
以上是生活随笔為你收集整理的陈睿:架构设计之数据库拆分六大原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文浅尝 | 基于文本关联的知识图谱的无
- 下一篇: 论文浅尝 | GNN with Gene