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

          評論

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 山阴县| 米泉市| 余干县| 澎湖县| 宜章县| 五指山市| 罗城| 天津市| 瓦房店市| 鄂托克前旗| 清流县| 连云港市| 津南区| 岐山县| 常山县| 托里县| 清流县| 三台县| 云和县| 阳江市| 岗巴县| 鄂托克前旗| 吉隆县| 永年县| 东阳市| 齐齐哈尔市| 西乡县| 海城市| 黄石市| 襄樊市| 潮安县| 桂东县| 梧州市| 无棣县| 宁都县| 盘锦市| 淳化县| 巴东县| 金华市| 博湖县| 南召县|