Mycat原理 應用場景

2021-09-07 10:05:37 字數 1186 閱讀 1782

mycat原理

mycat的原理並不複雜,複雜的是**,如果**也不複雜,那麼早就成為乙個傳說了。

mycat的原理中最重要的乙個動詞是「攔截」,它攔截了使用者傳送過來的sql語句,首先對sql語句做了一些特定的分析:如分

片分析、路由分析、讀寫分離分析、快取分析等,然後將此sql發往後端的真實資料庫,並將返回的結果做適當的處理,最終再

返回給使用者。

上述裡,orders表被分為三個分片datanode(簡稱dn),這三個分片是分布在兩台mysql server上(datahost),即

datanode=database@datahost方式,因此你可以用一台到n臺伺服器來分片,分片規則為(sharding rule)典型的字串列舉

分片規則,乙個規則的定義是分片字段(sharding column)+分片函式(rule function),這裡的分片欄位為prov而分片函式為字

符串列舉方式。

當mycat收到乙個sql時,會先解析這個sql,查詢涉及到的表,然後看此表的定義,如果有分片規則,則獲取到sql裡分片字

段的值,並匹配分片函式,得到該sql對應的分片列表,然後將sql發往這些分片去執行,最後收集和處理所有分片返回的結果

資料,並輸出到客戶端。以select * from orders where prov=?語句為例,查到prov=wuhan,按照分片函式,wuhan返回

dn1,於是sql就發給了mysql1,去取db1上的查詢結果,並返回給使用者。

如果上述sql改為select * from orders where prov in (『wuhan』,『beijing』),那麼,sql就會發給mysql1與mysql2去

執行,然後結果集合並後輸出給使用者。但通常業務中我們的sql會有order by 以及limit翻頁語法,此時就涉及到結果集在

mycat端的二次處理,這部分的**也比較複雜,而最複雜的則屬兩個表的jion問題,為此,mycat提出了創新性的er分片、全

局表、hbt(human brain tech)人工智慧的catlet、以及結合storm/spark引擎等十八般武藝的解決辦法,從而成為目前業界

最強大的方案,這就是開源的力量!

應用場景

收錄於:mycat權威指南,感謝作者

Mycat原理 應用場景

mycat的原理並不複雜,複雜的是 如果 也不複雜,那麼早就成為乙個傳說了。mycat的原理中最重要的乙個動詞是 攔截 它攔截了使用者傳送過來的sql語句,首先對sql語句做了一些特定的分析 如分 片分析 路由分析 讀寫分離分析 快取分析等,然後將此sql發往後端的真實資料庫,並將返回的結果做適當的...

Mycat原理 應用場景

mycat原理 mycat的原理並不複雜,複雜的是 如果 也不複雜,那麼早就成為乙個傳說了。mycat的原理中最重要的乙個動詞是 攔截 它攔截了使用者傳送過來的sql語句,首先對sql語句做了一些特定的分析 如分 片分析 路由分析 讀寫分離分析 快取分析等,然後將此sql發往後端的真實資料庫,並將返...

MyCat概念,作用,應用場景及原理

mycat是乙個開源的分布式資料庫系統,是乙個實現了mysql協議的伺服器,前端使用者可以把它看作是乙個資料庫 用mysql客戶端工具和命令列訪問,而其後端可以用mysql原生協議與多個mysql伺服器通訊,也可以用jdbc協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,即將乙個大表水平分割...