MySQL中如何實(shí)現(xiàn)分庫(kù)分表-創(chuàng)新互聯(lián)

本篇文章為大家展示了MySQL中如何實(shí)現(xiàn)分庫(kù)分表,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比蘭溪網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式蘭溪網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋蘭溪地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

一、    背景介紹

1.大數(shù)據(jù)量的存儲(chǔ)需要大量的資源;

2.?dāng)?shù)據(jù)量的不斷增長(zhǎng)要求數(shù)據(jù)庫(kù)存儲(chǔ)具有可擴(kuò)展性;

3.在保證大數(shù)據(jù)量的情況下,要保證性能、高可用性等質(zhì)量要求;

4.現(xiàn)有框架中沒(méi)有徹底解決大數(shù)據(jù)量的存儲(chǔ)問(wèn)題;

5.等海量存儲(chǔ)方案價(jià)格不菲,采用MySQL進(jìn)行分庫(kù)分表節(jié)約IT成本。

二、    可行性分析

1.     風(fēng)險(xiǎn)評(píng)估

1)       DBA數(shù)據(jù)庫(kù)管理的資源和規(guī)范要求;

2.    業(yè)務(wù)數(shù)據(jù)量規(guī)模和變化的影響

1)       對(duì)于事先可規(guī)劃的中等以上數(shù)據(jù)規(guī)模,采用單庫(kù)分表(一個(gè)數(shù)據(jù)庫(kù)實(shí)例,分多張表)、讀寫(xiě)分離、或者多庫(kù)多表(多個(gè)數(shù)據(jù)庫(kù)實(shí)例,多張表)可以滿足業(yè)務(wù)需求,且相應(yīng)設(shè)計(jì)和實(shí)現(xiàn)相對(duì)簡(jiǎn)單,不易出錯(cuò)。

2)       對(duì)于初期數(shù)據(jù)規(guī)模不可準(zhǔn)確預(yù)知,但隨著業(yè)務(wù)發(fā)展數(shù)據(jù)規(guī)模不斷增長(zhǎng)的系統(tǒng),要求數(shù)據(jù)存儲(chǔ)具有可擴(kuò)展性。這種可擴(kuò)展性通過(guò)分庫(kù)分表解決,要求分庫(kù)分表在路由上具有極強(qiáng)的伸縮性,這也是分庫(kù)分表的難點(diǎn),本方案提出一個(gè)循序漸進(jìn)的實(shí)現(xiàn)路線逐步解決這個(gè)問(wèn)題。

3.    技術(shù)積累

1)       公司已有簡(jiǎn)單的分庫(kù)分表方案

2)       這個(gè)方案缺乏擴(kuò)展性

3)       本方案將提出短期實(shí)現(xiàn)一定擴(kuò)展性、中長(zhǎng)期高可擴(kuò)展性的方案

4.    開(kāi)源或產(chǎn)品

1)       商業(yè)版數(shù)據(jù)庫(kù)Sharding:MySQL Proxy,提供MySQL協(xié)議接口(非JDBC),主從結(jié)構(gòu),可以負(fù)載平衡,讀寫(xiě)分離,failover等,lua語(yǔ)法復(fù)雜,不支持大數(shù)據(jù)量的分庫(kù)分表;

2)       Amoeba,支持分?jǐn)?shù)據(jù)庫(kù)實(shí)例,每個(gè)數(shù)據(jù)相同的表,不支持事務(wù);類似MySQL Proxy,設(shè)計(jì)上拋棄lua,更簡(jiǎn)單;

3)       阿里集團(tuán)研究院開(kāi)源的CobarClient,主要面向小規(guī)模的數(shù)據(jù)庫(kù)sharding集群訪問(wèn),基于ibatis,需要規(guī)劃數(shù)據(jù)規(guī)模,缺乏擴(kuò)展性;另外有Cobar,阿里集團(tuán)內(nèi)部的一個(gè)完整DAL層,實(shí)現(xiàn)完整JDBC代理;

4)       HibernateShards,Hibernate提供的sharding,支持分?jǐn)?shù)據(jù)庫(kù)實(shí)例,比較復(fù)雜,事先規(guī)劃數(shù)據(jù)規(guī)模,和框架不符;

5)       guzz,多庫(kù)(虛擬的數(shù)據(jù)庫(kù),實(shí)際數(shù)據(jù)庫(kù)的路由規(guī)則仍然自定義)、表分切、讀寫(xiě)分離,以及多臺(tái)數(shù)據(jù)庫(kù)之間透明的分布式事務(wù)支持,設(shè)計(jì)目標(biāo)是支持大型在線生產(chǎn)應(yīng)用;需完全替換ibatis;完全和框架不符。

6)    TDDL,淘寶的DAL,很強(qiáng)的分庫(kù)分表能力,仍然需要數(shù)據(jù)量實(shí)現(xiàn)規(guī)劃,動(dòng)態(tài)擴(kuò)展有限。

7)       以上某些產(chǎn)品在一定程度上可以滿足我們的需求,但不能徹底解決我們大數(shù)據(jù)量可擴(kuò)展的問(wèn)題。

三、    性能指標(biāo)

1.       和沒(méi)有引入分庫(kù)分表時(shí)相比,每次操作較大延遲<1ms;

四、    特性列表和RoadMap

1.     垂直分庫(kù),不同業(yè)務(wù)數(shù)據(jù)使用不同數(shù)據(jù)庫(kù)實(shí)例存儲(chǔ)

2.     數(shù)據(jù)切分:

a)       根據(jù)切分字段Hash取模;

b)       確定需要切分的數(shù)據(jù),盡量將可能進(jìn)行關(guān)聯(lián)的分片數(shù)據(jù)放在一個(gè)數(shù)據(jù)庫(kù)實(shí)例中,例如同一用戶的基本信息、好友信息或者文件信息等;

3.     短期:分庫(kù)分表

a)       數(shù)據(jù)庫(kù)實(shí)例編號(hào)遞增

b)       每個(gè)數(shù)據(jù)庫(kù)內(nèi)分表序號(hào)從1遞增,不全局編號(hào)

c)       基于數(shù)據(jù)源(ibatis基礎(chǔ)上)攔截建立訪問(wèn)層,應(yīng)用感知

d)       應(yīng)用需在底層進(jìn)行數(shù)據(jù)源、分布式事務(wù)考慮和管理等

e)       可擴(kuò)展性:只支持向上擴(kuò)展,不支持收縮

4.     長(zhǎng)期:數(shù)據(jù)庫(kù)訪問(wèn)層

a)       建立靈活的數(shù)據(jù)切分和路由規(guī)則

b)       支持MySQL集群

c)       讀寫(xiě)分離和負(fù)載均衡

d)       可用性探測(cè)

e)       分布式事務(wù)

f)        對(duì)應(yīng)用透明

上述內(nèi)容就是MySQL中如何實(shí)現(xiàn)分庫(kù)分表,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章標(biāo)題:MySQL中如何實(shí)現(xiàn)分庫(kù)分表-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://muchs.cn/article4/pshoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、域名注冊(cè)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司