分庫解決方案—實際操作

K戰神發表於2015-01-07

目錄

  • 流程圖
  • 資料庫設計
  • 測試資料說明

一、流程圖

說明:

  1、 資訊資料彙總後,有處理程式處理,根據演算法,分發到演算法指定的資料庫伺服器上的索引庫,直到存到對應索引庫下面的資料儲存表。

  2、每個地域也就是國家,下面可以有多臺資料伺服器,但是此地域(國家)下面的索引庫不能重複。因為這樣方便後續資料查詢。

  3、當有資料到達索引庫後,需要儲存資料的情況下。預設情況下,索引庫下沒有儲存表。此時程式會建立第一個儲存表。當資料達到我們規定此存            儲表的儲存上限時,就會建立第二個儲存表,後續的資料,就會存到第二個儲存表中。以此類推。

 

二、資料庫設計

  1、資料庫伺服器配置表:DBServer                

             [ID] : 主鍵

           [DBTypeID]:資料庫型別ID(例如:國內1=D1、國內2=D2、國外1=H1)

           [ServerIP]  :資料庫伺服器IP

             [UID] :使用者名稱

           [Pwd]:密碼

           [Remark]:備註說明

           [MaxDataDBCount] :最多可以建立多少個資料儲存表

           [Sequence]:排序

   問題:

      為什麼要有 [MaxDataDBCount] 欄位? —— 限制資料儲存表的建立,因為每臺伺服器的效能不一樣。要求也不一樣。

      為什麼要有 [Sequence]欄位? —— 調整資料庫先後順序,方便資料插入

      [DBTypeID]與[ServerIP]的關係 —— 這裡的資料庫型別我們可以比作是區域,一個區域可以分佈多臺資料庫。

 

   2、索引資料庫配置表:IndexServerConfig

              [ID]:主鍵

              [DBTypeID]:資料庫型別ID(例如:國內1=D1、國內2=D2、國外1=H1)

              [IndexDBNo]:索引庫編號

              [ServerID]:當前索引庫所在的資料庫伺服器ID

              [HashValues]:資料根據演算法生成的HashValues(0~255)

              [CurrentDataDBNo]:當前索引庫對應的資料儲存表編號

              [MaxDataCount]:對應的當前資料儲存表的最大資料儲存量

    說明:

      1、[HashValues]:就是我們根據資料特性和定義的相關演算法生成的對應的值,此處的[HashValues]是這些值得集合。

      2、 [IndexDBNo]與 [HashValues]的對應關係

        例如:

            IndexDBNo     HashValues

               1               0,1,2,3,4,5,6,7

               2      11,12,13

               5      221,222,223,224,225 

       3、如上流程圖所示,每個地域國家[DBTypeID]可以對應多臺資料庫伺服器,但是地域下面的索引 [IndexDBNo]與【HashValues】一一對應不能重複。

 

   3、儲存資訊資料庫配置:DataServerConfig

              [ID]:主鍵

                [DBTypeID]:資料庫型別ID(例如:國內1=D1、國內2=D2、國外1=H1) 

              [DataDBNo]:資料儲存表編號

              [IndexDBNo]:索引庫編號

              [ServerID]:伺服器編號

              [MaxDataCount]:當前資料儲存表自定義的最大儲存量

 

 

三、測試流程

 資料庫伺服器配置表:DBServer

 

索引資料庫配置表:IndexServerConfig

 

儲存資訊資料庫配置:DataServerConfig

一條資訊資料過來後,通過演算法轉換成HashValue=2,此資訊是國家地域編號 DBTypeID=1的資料。

根據 HashValue=2 和  DBTypeID=1 ,我們到 索引資料庫配置表:IndexServerConfig中找到相關索引資料

 

我們看到上圖中的第一條資料符合我們的標準,它所對應的資料庫伺服器編號IndexDBNo=1,ServerID=11

這樣我們就可以根據 DBTypeID=1   和  ServerID=11 和 IndexDBNo=1。找到具體什麼地域下的哪臺資料庫中的索引庫下的資料儲存表。

如果當前沒有儲存表,就程式自動建立一個儲存表。隨之將IndexServerConfig中對應的CurrentDataDBNo欄位修改成當前程式獲取的編號。

或者噹噹前儲存表已經滿了,也會建立新的儲存表,同時將新的儲存表編號更新到IndexServerConfig表中對應的CurrentDataDBNo欄位。

 

總結:

資料儲存

 

資料查詢:

 

 

相關文章