少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          切分(Sharding)并不是特定數據庫產品所附屬的功能,而是在具體技術細節之上的抽象處理。是水平擴展(Scale Out)的解決方案,主要目的是解決單節點數據庫服務器的能力限制,以及整個應用其架構的可擴展性(Scalability)。

          切分主要有兩種方式:水平切分(Horizental Sharding)和垂直切分(Vertical Sharding)。

          水平切分所指的是通過一系列的切分規則將數據水平分布到不同的DB或table中,在通過相應的DB路由 或者table路由規則找到需要查詢的具體的DB或者table以進行Query操作,比如根據用戶ID將用戶表切分到多臺數據庫上。

          垂直切分指的是按業務、產品切分,將不同類型的數據且分到不同的服務器上,通過數據庫代理疏通程序與多個數據庫的通訊、降低應用的復雜度。

          讀寫分離簡單的說是把對數據庫讀和寫的操作分開對應不同的數據庫服務器,這樣能有效地減輕數據庫壓力,也能減輕io壓力。主數據庫提供寫操作,從數據庫提供讀操作,這樣既避免了主數據庫服務器(Master)的過載,也有效地利用了從數據庫服務器(Slave)的資源。

          這里ebay工程師的文章:《可伸縮性最佳實踐:來自eBay的經驗》更詳細地介紹了一些概念及業務場景。

          --End--

          posted on 2013-05-27 10:14 abin 閱讀(853) 評論(0)  編輯  收藏 所屬分類: mysql
          主站蜘蛛池模板: 太白县| 荣昌县| 南川市| 天水市| 伊通| 龙南县| 深泽县| 长丰县| 温泉县| 抚州市| 绥江县| 宁夏| 荣昌县| 宣武区| 磐安县| 绍兴市| 江门市| 名山县| 治县。| 克拉玛依市| 娄底市| 武汉市| 罗田县| 启东市| 璧山县| 双城市| 乌拉特后旗| 胶州市| 岱山县| 武邑县| 扎囊县| 南乐县| 东城区| 台山市| 德令哈市| 固始县| 满城县| 绍兴县| 黄梅县| 临澧县| 顺义区|