Mycat多租戶/分佈數據庫/集羣數據庫以及SAAS研究進度報告

一、mycat操做java

(1)垂直切分配置mysql

(2)水平切分配置web

(3)mycat修改schema.xml以後熱重啓sql

(4)mycat註解的實現數據庫

(5)mycat高可用(搭配HAproxy等一塊兒作集羣,多個mycat節點)app

 

二、mycat能夠配置多schema、多用戶、多數據庫節點進行數據水平、垂直切分測試

(1)java的程序demo測試經過,並能夠用jdbc或jpa來進行數據操做,可是demo只針對一個schema、一個用戶進行鏈接,跟之前一個庫的狀況差很少大數據

(2)多數據庫用mycat進行切分的話,join表的狀況只支持子父兩級表的join,多於兩個表的關聯有難度,建議用程序解決,屆時開發要注意優化

 

三、mycat熱啓動xml

用mysql鏈接的mycat終端,進行reload configuration能夠作到在運行中的mycat熱重啓,從新加載修改過配置文件的配置

 

四、mycat註解注入schema來進行分數據庫執行語句

這是多租戶(一個租戶一個數據庫)的關鍵,可是試了好屢次不行,也找不到對應的解決的帖子,由於各個帖子都是抄攻略的,恰恰攻略一句帶過。。。

 

五、mycat-eye:能夠對mycat的狀況進行監控,配置mycat節點、物理數據庫節點能夠進行監測,還能有統計信息,數據庫優化的一些統計。是一個web程序

 

SAAS的數據庫部署方案

  1. mycat鏈接多個數據庫,一個租戶一個數據庫,假設有一個後臺程序始終對mycat進行管理,例如動態添加刪除schema、熱重啓mycat等,這個後臺程序要寫的比較複雜,而且還須要實現mysql的請求轉發(用mycat的註解來進行區分schema,這個很底層了)

 

優勢:一個租戶一個數據庫,數據隔離性好,數據庫的結構清晰不須要多加appID來區分不一樣的租戶數據

 

缺點:目前技術難題是沒實現到mycat的註解,並且不知道中間怎麼進行轉發;另外,很難維護每一個數據庫的表結構等等,隨着租戶的增多,數據庫的更新會愈來愈難,且須要專門維護增長schema和熱重啓mycat的程序

 

  1. mycat鏈接多個數據庫,通常的數據量的表根據功能用垂直切分,大數據量的業務表用水平切分以達到攤開數據量的目的,每一個表都有appID這個字段做爲區分租戶的key,業務程序底層作支持appID的程序開發

 

優勢:可實現,較容易開發,且數據庫的數量不會輕易改變,數據庫的更新維護比較方便,不須要特意去實現一個專門維護增長schema和熱重啓mycat的程序

 

缺點:數據隔離性通常,業務程序要注意隔離性。另外每一個庫每一個表都要有appID這個字段做爲冗餘判斷字段

相關文章
相關標籤/搜索