{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

Java開發(fā)分庫分表需要解決的問題及mycat是怎樣實(shí)現(xiàn)分庫分表的?

BicycleWarriorBicycleWarrior 回答0 收藏1
收藏問題

2條回答

susheng

susheng

回答于2022-06-28 14:38

公司做了自己的分庫分表組件,下面就自己的經(jīng)驗(yàn)來看下分庫分表的優(yōu)點(diǎn)和碰到的問題!

何為分庫分表?采取一定的策略將大量的表數(shù)據(jù)分布在不同的數(shù)據(jù)庫,表中實(shí)現(xiàn)數(shù)據(jù)的均衡存儲!

分庫分表的背景:隨著信息數(shù)據(jù)的急劇增長,單點(diǎn)數(shù)據(jù)庫會有宕機(jī),或者單庫單表性能低下,查詢和存儲效率低的問題,使用分庫分表實(shí)現(xiàn)數(shù)據(jù)的分布存儲,性能更好,適合現(xiàn)在數(shù)據(jù)量多,用戶需求高的特點(diǎn)!

分庫分表的優(yōu)點(diǎn):數(shù)據(jù)分布在不同的數(shù)據(jù)庫中,單表數(shù)據(jù)量低,查詢速度快!可以在每個節(jié)點(diǎn)搭建集群防止數(shù)據(jù)丟失!

分庫分表遇到的問題:

1,多庫多表需要不重復(fù)的ID生成策略,但是數(shù)據(jù)重復(fù)!

解決方案:UUID,全局序列號等等!

2,如果是按照hash等方式實(shí)現(xiàn)的分庫分表,可能難以擴(kuò)展

解決方案:1,使用時間段或者ID等進(jìn)行劃分,可持續(xù)擴(kuò)展(會帶來別的問題),2,數(shù)據(jù)重新遷移!

3,連接查詢,統(tǒng)計等出現(xiàn)困難:

解決方案:1,按照某個指定的分庫分表字段(ID)(分布在同一個庫中)進(jìn)行連接查詢!2,將主要字段進(jìn)行冗余,方便統(tǒng)計和連接查詢!

分庫分表的組件有很多,mycat是最流行的一個!

怎么使用mycat進(jìn)行分庫分表?

1,下載安裝mycat,配置環(huán)境變量!

2,配置文件(啟動內(nèi)存等),使用命令行啟動和停止!

3,創(chuàng)建多庫多表!

4,選擇分庫分表策略(水平和垂直),算法等!

5,配置server.xml,schema.xml,rule.xml用于配置映射,規(guī)則等!

6,連接測試!

具體的mycat應(yīng)用不是幾句話可以說的清的,最好是自己搭建環(huán)境,自己寫Demo測試,方能掌握!

我的Demo還在寫,到時候分享,需要的朋友,敬請關(guān)注。。。

評論0 贊同0
  •  加載中...
galois

galois

回答于2022-06-28 14:38

分庫/分表

顧名思義,分庫分表就是按照一定的規(guī)則,對原有的數(shù)據(jù)庫和表進(jìn)行拆分,把一個數(shù)據(jù)庫分成多個庫,把一張表拆分成為多張表。

為什么要分庫/分表

隨著時間和業(yè)務(wù)的發(fā)展,數(shù)據(jù)庫和表中的數(shù)據(jù)量會越來越多,對硬件特別是磁盤消耗是越來越大,磁盤尋址、IO操作、系統(tǒng)內(nèi)存都有很大的開銷,為了提升數(shù)據(jù)庫操作的效率,因此以空間換時間。打個比方,你把五顏六色的玻璃球放到一個籃子里,如果去找各種顏色球的數(shù)量是不是很麻煩。如果按照顏色分開放,找綠色的球直接去綠色區(qū),不用顧及其他顏色,是不是效率就高了很多。就是這個原理

垂直分庫/分表

垂直劃分?jǐn)?shù)據(jù)庫是根據(jù)業(yè)務(wù)進(jìn)行劃分,將一張表的幾個字段分成幾張表,把大表變成小表,把一個大庫按照業(yè)務(wù) 拆分幾個專門庫,比如商品,按照商品類別,商品詳情,訂單詳情,訂單 ,劃分到 商品庫,訂單庫中 。通過降低單庫(表)的大小來提高性能 放入不同的庫中。

水平分庫/分表

水平劃分是根據(jù)一定規(guī)則,例如時間或hash值等進(jìn)行數(shù)據(jù)的拆分。這種拆分都是行級別拆分,也就是所有拆分的都是完整的一條數(shù)據(jù)。比如把用戶表按照年份拆分2018年注冊的用戶,2019年的用戶,2018之前注冊的用戶。

MyCat

Mycat是一款開源的數(shù)據(jù)庫中間件,主要是用作數(shù)據(jù)庫代理,也就是消費(fèi)數(shù)據(jù)庫數(shù)據(jù)的消費(fèi)方不直接接觸數(shù)據(jù)庫,通過mycat來代理訪問。就像明星一樣,你有商演想找明星,不會直接找到明星,會找到經(jīng)紀(jì)人,經(jīng)紀(jì)人來談具體事宜,經(jīng)紀(jì)人再告訴明星。

Mycat的原理中最重要是在sql執(zhí)行前可以攔截處理一些邏輯,它攔截了用戶發(fā)送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然后將此SQL發(fā)往后端的真實(shí)數(shù)據(jù)庫,并將返回的結(jié)果做適當(dāng)?shù)奶幚恚罱K再返回給用戶。因此對于分庫分表來說把分庫分表的規(guī)則寫入攔截器,攔截器通過分析來指向真實(shí)的地址獲取數(shù)據(jù),還可以將數(shù)據(jù)進(jìn)行邏輯處理后返回消費(fèi)方。這樣就完成了分庫分表的操作。這樣就達(dá)成了對開發(fā)無感知的目的,避免分庫分表造成了路由邏輯的編寫。

以下就是網(wǎng)上找來的mycat分庫分表的示意圖,相信很容易看懂。

以上就是分庫分表和mycat分庫分表的簡單介紹。如果深入了解可到mycat社區(qū)進(jìn)一步學(xué)習(xí)。希望我的回答能夠解決你的問題,如果有不同觀點(diǎn)可留言討論。點(diǎn)個贊關(guān)注一下吧。

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<