眾所周知,在現實世界中,每一個資源都有其提供能力的最大上限,當單一資源達到最大上限後就得讓多個資源同時提供其能力來滿足使用方的需求。同理,在電腦世界中,單一資料庫資源不能滿足使用需求時,我們也會考慮使用多個資料庫同時提供服務來滿足需求。當使用了多個資料庫來提供服務時,最為關鍵的點是如何讓每一個數據 ...
一、 水平、垂直拆分
-
垂直拆分:簡單的說就是將資料庫及表由一個拆分為多個,如我們這裡的電商資料庫,可以垂直拆分為用戶資料庫、商品資料庫和訂單資料庫,訂單表可以垂直拆分為訂單基本信息表,訂單收貨地址表、訂單商品表等,每一個表裡保存了一個訂單的一部分數據。
-
水平拆分:簡單地說就是將一個庫、一個表擴展為多個庫,多個表,每一個拆分後的表中保存的依然是一個訂單的完整信息。如電商資料庫,我們按水平拆分資料庫和表後,每一個拆分後的資料庫表與現有未拆分前的都保持一致。
-
常用拆分方法:上述僅從理論上講解了可行的水平、垂直拆分方法,在實際的生產上,我們拆分一般是按照水平拆表、垂直拆庫這一原則進行,在業務比較複雜的場景下也會對錶進行垂直拆分。
拆分鍵 | 商品編號 | 收貨地址 |
Order_id | Sku_code | address |
拆分鍵 | 訂單號 | 重量 |
Waybill_code | Order_Id | weight |
非拆分鍵查詢條件 | 拆分鍵 |
用戶編碼 | 訂單號 |
運單號 | 訂單號 |
拆分鍵 | 商品編號 | 收貨地址 |
Order_id | Sku_code | address |
拆分鍵 | 訂單號 | 重量 |
Waybill_code | Order_Id | weight |
三、 拆分鍵的生成
本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Design-of-Splitting-Keys-for-Database-and-Table-Segmentation.html