初識Mycat
1. Mycat是什么
Mycat是一款數據庫中間件, 其用于分庫分表, 還實現了讀寫分離, 故障切換等功能.
2. Mycat的工作原理
用一個動詞來概括就是"攔截", 它攔截了用戶發送的SQL語句, 首先對其做了一些特定的分析: 如分片分析, 路由分析, 讀寫分離分析, 緩存分析等, 然后將其發往后端真實的數據庫, 并將返回的結果做適當處理, 最終再返回給用戶.
Mycat中的概念
1. 邏輯庫(schema)
邏輯庫是用戶直接訪問的地方, 它是由后端的一個或多個物理庫組成, 而用戶是不知道物理庫的存在的.
2. 邏輯表(table)
其和邏輯庫的概念類似, 后端是由一個或多個物理表組成的. 若是多個物理表, 該表就是分片表了, 由于數據量大, 需要切分到多個數據庫的表中, 每個分片都有一部分數據, 所有分片構成完整的數據. 若是一個物理表, 就是非分片表.
由于分片, 就讓join操作變得復雜, 據此, Mycat中提出了ER表和全局表的方式來優化join. ER表, 是通過E-R關系構成的表分組, 即子表的記錄與所關聯的父表的記錄存放在同一個分片上. 全局表, 是類似于字典表這樣的, 數據量較少, 且變更不頻繁的表, 在每個分片上都有一份完整的數據拷貝.
3. 全局序列號(sequence)
數據切分后, 原有的關系數據庫中的主鍵約束在分布式條件下將無法使用, 因此需要引入外部機制來保證數據的唯一性標識, 該保證數據全局唯一標識的機制就是全局序列號.
(編輯:武林網)