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 閱讀(1778) 評論(1)  編輯  收藏

          評論

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 南漳县| 东阿县| 勃利县| 屯留县| 西平县| 苍南县| 临漳县| 三原县| 舟曲县| 保山市| 柞水县| 安庆市| 丹巴县| 澄城县| 屯门区| 清河县| 昌平区| 灯塔市| 鹿泉市| 克山县| 原平市| 榆社县| 泾源县| 荥经县| 封开县| 海林市| 凤冈县| 娄底市| 玉环县| 旬阳县| 龙岩市| 涿鹿县| 仁化县| 富源县| 棋牌| 庆云县| 青神县| 同心县| 虹口区| 周至县| 南涧|