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協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,即將乙個大表水平分割...