Mysql海量資料儲存和解決方案之一—分散式DB方案
阿新 • • 發佈:2018-12-25
面對這樣的一個表,我們怎樣切分呢?怎樣將這樣的資料分佈到不同的資料庫中的表中去呢?其實分析blog的應用,我們不難得出這樣的結論:blog的應用中,使用者分為兩種:瀏覽者和blog的主人。瀏覽者瀏覽某個blog,實際上是在一個特定的使用者的blog下進行瀏覽的,而blog的主人管理自己的blog,也同樣是在特定的使用者blog下進行操作的(在自己的空間下)。所謂的特定的使用者,用資料庫的欄位表示就是“user_id”。就是這個“user_id”,它就是我們需要的分庫的依據和規則的基礎。我們可以這樣做,將user_id為1~10000的所有的文章資訊放入DB1中的article表中,將user_id 為10001~20000的所有文章資訊放入DB2中的article表中,以此類推,一直到DBn。這樣一來,文章資料就很自然的被分到了各個資料庫中,達到了資料切分的目的。接下來要解決的問題就是怎樣找到具體的資料庫呢?其實問題也是簡單明顯的,既然分庫的時候我們用到了區分欄位user_id,那麼很自然,資料庫路由的過程當然還是少不了user_id的。考慮一下我們剛才呈現的blog應用,不管是訪問別人的blog還是管理自己的blog,總之我都要知道這個blog的使用者是誰吧,也就是我們知道了這個blog的user_id,就利用這個user_id,利用分庫時候的規則,反過來定位具體的資料庫,比如user_id是234 ,利用該才的規則,就應該定位到DB1,假如user_id是12343,利用該才的規則,就應該定位到DB2。以此類推,利用分庫的規則,反向的路由到具體的DB,這個過程我們稱之為“DB路由”。