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原理與應用
mycart是資料庫中介軟體 是一類連線軟體元件 和應用的計算機軟體,以便於軟體各部件之間的溝通 例子 nginx,web中介軟體 資料庫中介軟體 連線php應用程式和資料庫的工具 2.高訪問量高併發對資料庫壓力,一般都會部署多台伺服器來抵禦併發訪問需自己做流量分配 3.資料庫儲存大量的資料,分庫分...
Mycat分庫分表原理
1 什麼是mycat mycat是乙個開源的分布式資料庫系統,是乙個實現了mysql協議的伺服器,前端使用者可以把它看作是乙個資料庫 用mysql客戶端工具和命令列訪問,而其後端可以用mysql原生協議與多個mysql伺服器通訊,也可以用jdbc協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫...
mycat是什麼 MYCAT學習2
1.mycat的使用 rule 1 的作用是什麼?指定使用的分片演算法 2 中name屬性的作用是什麼?name 屬性指定唯一的名字,用於標識不同的分片規則。內嵌的 rule 標籤則指定對物理表中的哪一列進行拆分和使用什麼分演算法 3 中columns屬性的作用是什麼?指定要拆分的列名字 4 中al...