久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中如何實現(xiàn)分庫分表

140次閱讀
沒有評論

共計 1493 個字符,預(yù)計需要花費(fèi) 4 分鐘才能閱讀完成。

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

一、  背景介紹

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

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

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

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

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

二、  可行性分析

1.  風(fēng)險評估

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

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

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

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

3.  技術(shù)積累

1)  公司已有簡單的分庫分表方案

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

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

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

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

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

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

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

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

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

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

三、  性能指標(biāo)

1.  和沒有引入分庫分表時相比,每次操作最大延遲 1ms;

四、  特性列表和 RoadMap

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

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

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

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

3.  短期:分庫分表

a)  數(shù)據(jù)庫實例編號遞增

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

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

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

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

4.  長期:數(shù)據(jù)庫訪問層

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

b)  支持 MySQL 集群

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

d)  可用性探測

e)  分布式事務(wù)

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

上述內(nèi)容就是 MySQL 中如何實現(xiàn)分庫分表,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計1493字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 平利县| 依兰县| 巴林右旗| 浙江省| 南皮县| 洪湖市| 横峰县| 五寨县| 昂仁县| 钦州市| 长春市| 威宁| 绵阳市| 诏安县| 文山县| 公安县| 府谷县| 溧阳市| 江北区| 新建县| 高雄市| 兴城市| 连云港市| 桂阳县| 沐川县| 视频| 平和县| 天门市| 肃宁县| 鄂托克旗| 乌海市| 阜城县| 宣武区| 牟定县| 株洲市| 浮梁县| 班戈县| 社旗县| 开原市| 汉寿县| 讷河市|