1.數據庫垂直拆分
1.1)什麼是垂直拆分
垂直拆分是指按照業務將表進行分類,分佈到不同的數據庫上面,這樣也就將數據或者說壓力分擔到不同的庫上面。
1.2)拆分的優缺點
優點:拆分後業務更清晰,數據和代碼維護更簡單。
缺點:表無法join,只能通過接口,事務處理複雜。
2.數據庫水平拆分
2.1)什麼是水平拆分
水平拆分不是將表做分類,而是按照某個字段的某種規則將同一個表的數據分散到多個庫中,每個表包含一部分數據。
2.2)分片規則
- 按照用戶ID求模,將數據分散到不同的數據庫。
- 按照日期,將不同月甚至日的數據分散到不同的庫中。
- 按照某個特定的字段求模,或者根據特定範圍段分散到不同的庫中。
2.3)拆分優缺點
優點:不存在單表大數據,性能瓶頸,提高了系統穩定性和負載能力。
缺點:分片規則不好把握,多次擴展難度較大。
3.mycat工作原理
mycat會攔截用戶發送過來的SQL語句, 首先對SQL語句做了一些特定的分析: 如分片分析、路由分析、讀寫分離分析、緩存分析,然後將此SQL發往後端的真實數據庫,並將返回的結果做適當的處理,最終再返回給用戶。
4.幾個重要概念
4.1)ER表
子表的記錄與所關聯的父表記錄存放在同一個數據分片上,即子表依賴於父表,這樣可保證數據join不會有跨庫操作。
4.2)全局表
一般變動不頻繁, 數據量不大的表可定義爲全局表, mycat通過數據冗餘來解決這類表的join, 即所有的分片都有一份數據的拷貝。數據冗餘是解決跨分片join的一種很好的思路。
4.3)全局序列號
數據切分後, 原有的關係數據庫中的主鍵約束在分佈式條件下將無法使用,因此需要引入外部機制保證全局性數據唯一性標識,這就是全局序列號。
5.mycat目錄結構
5.1)bin目錄
存放了一些可執行命令
5.2)conf目錄
server.xml: mycat服務器參數調整和用戶授權的配置
schema.xml: 邏輯庫定義和表以及分片定義的配置
rule.xml: 分片規則的配置
5.3)lib目錄
存放mycat依賴的一些jar文件