溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

什么是MyCat

發(fā)布時間:2021-09-29 16:37:52 來源:億速云 閱讀:155 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“什么是MyCat”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“什么是MyCat”吧!

一、MyCat簡介

1. 什么是MyCat

??MyCat 是目前最流行的基于 java 語言編寫的數(shù)據(jù)庫中間件,是一個實現(xiàn)了 MySQL 協(xié)議的服務(wù)器,前端用戶可以把它看作是一個數(shù)據(jù)庫代理,用 MySQL 客戶端工具和命令行訪問,而其后端可以用 MySQL 原生協(xié)議與多個 MySQL 服務(wù)器通信,也可以用 JDBC 協(xié)議與大多數(shù)主流數(shù)據(jù)庫服務(wù)器通信,其核心功能是分庫分表。配合數(shù)據(jù)庫的主從模式還可實現(xiàn)讀寫分離。
??MyCat 是基于阿里開源的 Cobar 產(chǎn)品而研發(fā),Cobar 的穩(wěn)定性、可靠性、優(yōu)秀的架構(gòu)和性能以及眾多成熟的使用案例使得 MyCat 變得非常的強(qiáng)大。
??MyCat 發(fā)展到目前的版本,已經(jīng)不是一個單純的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流數(shù)據(jù)庫,也支持 MongoDB 這種新型NoSQL 方式的存儲,未來還會支持更多類型的存儲。而在最終用戶看來,無論是那種存儲方式,在 MyCat 里,都是一個傳統(tǒng)的數(shù)據(jù)庫表,支持標(biāo)準(zhǔn)的 SQL 語句進(jìn)行數(shù)據(jù)的操作,這樣一來,對前端業(yè)務(wù)系統(tǒng)來說,可以大幅降低開發(fā)難度,提升開發(fā)速度。
??MyCat 官網(wǎng): http://www.mycat.io/

2. MyCat的結(jié)構(gòu)

什么是MyCat

3. 使用MyCat的好處

3.1 數(shù)據(jù)量級

??單一的 MySQL 其數(shù)據(jù)存儲量級和操作量級有限.
??Mycat 可以管理若干 MySQL 數(shù)據(jù)庫,同時實現(xiàn)數(shù)據(jù)的存儲和操作.

3.2 開源性質(zhì)

  1. Mycat 是 java 編寫的中間件. 開源,免費(fèi).

  2. 有非常多的人和組織對 Mycat 實行開發(fā),維護(hù),管理,更新.

  3. Mycat 版本提升較快,可以跟隨環(huán)境發(fā)展.如果有問題,可以快速解決.

  4. Mycat 有開源網(wǎng)站和開源社區(qū).且有官方發(fā)布的電子書籍.

  5. Mycat 是阿里原應(yīng)用 corba 轉(zhuǎn)型而來的.

3.3 市場應(yīng)用

??MyCat 在互聯(lián)網(wǎng)應(yīng)用中占比非常高.

二、MyCat中的概念介紹

1. 切分

??邏輯上的切分. 在物理層面,是使用多庫[database],多表[table]實現(xiàn)的切分.

1.1 縱向切分/垂直切分

??就是把原本存儲于一個庫的數(shù)據(jù)存儲到多個庫上。
??由于對數(shù)據(jù)庫的讀寫都是對同一個庫進(jìn)行操作,所以單庫并不能解決大規(guī)模并發(fā)寫入的問題。例如,我們會建立定義數(shù)據(jù)庫 workDB、商品數(shù)據(jù)庫 payDB、用戶數(shù)據(jù)庫 userDB、日志數(shù)據(jù)庫 logDB 等,分別用于存儲項目數(shù)據(jù)定義表、商品定義表、用戶數(shù)據(jù)表、日志數(shù)據(jù)表等。

優(yōu)點

  1. 減少增量數(shù)據(jù)寫入時的鎖對查詢的影響。

  2. 由于單表數(shù)量下降,常見的查詢操作由于減少了需要掃描的記錄,使得單表單次查詢所需的檢索行數(shù)變少,減少了磁盤 IO,時延變短。

缺點:無法解決單表數(shù)據(jù)量太大的問題。

1.2橫向切分/水平切分

??把原本存儲于一個表的數(shù)據(jù)分塊存儲到多個表上。
??當(dāng)一個表中的數(shù)據(jù)量過大時,我們可以把該表的數(shù)據(jù)按照某種規(guī)則,進(jìn)行劃分,然后存儲到多個結(jié)構(gòu)相同的表,和不同的庫上。例如,我們 userDB 中的 userTable 中數(shù)據(jù)量很大,那么可以把 userDB 切分為結(jié)構(gòu)相同的多個 userDB:part0DB、part1DB 等,再將 userDB 上的 userTable,切分為很多userTable:userTable0、userTable1 等,然后將這些表按照一定的規(guī)則存儲到多個 userDB 上。

優(yōu)點

  1. 單表的并發(fā)能力提高了,磁盤 I/O 性能也提高了。

  2. 如果出現(xiàn)高并發(fā)的話,總表可以根據(jù)不同的查詢,將并發(fā)壓力分到不同的小表里面。

缺點:無法實現(xiàn)表連接查詢。

2. 邏輯庫-Schema

??Mycat 中定義的 database.是邏輯上存在的.但是物理上是不存在的.主要是針對縱向切分提供的概念.

3. 邏輯表-table

??Mycat 中定義的 table.是邏輯上存在,物理上是不存在的.主要是針對橫向切分提供的概念.

4. 默認(rèn)端口

應(yīng)用端口
MySQL3306
Mycat8066
tomcat8080
Oracle1521
nginx80
http80
redis6379

5. 數(shù)據(jù)主機(jī) - dataHost

??物理 MySQL 存放的主機(jī)地址.可以使用主機(jī)名,IP,域名定義.

6. 數(shù)據(jù)節(jié)點 - dataNode

??配置物理的 database. 數(shù)據(jù)保存的物理節(jié)點.就是 database.

7. 分片規(guī)則

??當(dāng)控制數(shù)據(jù)的時候,如何訪問物理 database 和 table.就是訪問 dataHost 和 dataNode 的算法. 在 Mycat 處理具體的數(shù)據(jù) CRUD 的時候,如何訪問 dataHost 和 dataNode 的算法.如:哈希算法,crc32 算法等.

感謝各位的閱讀,以上就是“什么是MyCat”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對什么是MyCat這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI