badqiu

          XPer
          隨筆 - 46, 文章 - 3, 評論 - 195, 引用 - 0
          數據加載中……

          數據庫sharding下的主鍵生成策略

          數據庫水平分區(sharding),即對同一張數據庫表,按照規則將數據切分至多個數據庫。

           


          如上圖,將user表切分至三個數據庫中.

           

          在對數據庫水平分區的情況下,面對多個數據庫,想要生成一個唯一性的主鍵這是一個問題。

           

          通常解決辦法有兩種:

           

          UUID:

          使用UUID很容易就可以生成唯一性主鍵,并且不用擔心主鍵生成效率問題,當然缺點是UUID的長度過長,浪費空間,所以下面介紹另外一種方法。

           

          單獨一臺服務器負責主鍵生成:

          即我們使用一臺單獨的服務器(如mysql) 負責主鍵的生成

           

          如果我們是使用mysql數據庫,可以創建一張表來模擬oracle的sequence:

          表sql:

           

           create table tab_sequence (value bigint not null)

           oracle數據庫直接使用sequence即可.

           


           

          但現在我們又會碰到單點問題,即如果master掛了,對我們的應用影響非常大。

           

          所以我們可以配合使用mysql 的復制功能。

           


           

          配合使用linux HA: heartbeat,就算master服務器或是硬盤故障了,我們也可以很快的切換至slave.保障高可用性。



          posted on 2009-11-23 18:31 badqiu 閱讀(1777) 評論(1)  編輯  收藏

          評論

          # re: 數據庫sharding下的主鍵生成策略  回復  更多評論   

          金卡十九世紀
          2009-11-24 13:23 | 99書城

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 乌兰县| 灌云县| 鄢陵县| 青田县| 龙里县| 绿春县| 军事| 和政县| 景洪市| 浏阳市| 四子王旗| 阿瓦提县| 获嘉县| 白山市| 丘北县| 彰武县| 筠连县| 德惠市| 获嘉县| 渭南市| 齐河县| 兰坪| 洪洞县| 威远县| 子长县| 武清区| 大安市| 栖霞市| 剑阁县| 桑日县| 石泉县| 敦煌市| 丘北县| 枝江市| 绵竹市| 高密市| 馆陶县| 留坝县| 桐柏县| 新绛县| 合水县|