1. 程式人生 > >開源分散式資料庫中介軟體

開源分散式資料庫中介軟體

雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。

MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速增長情況下的資料瓶頸問題。2014年MyCat首次在上海的《中華架構師》大會上對外宣講引發圍觀,更多的人蔘與進來,隨後越來越多的專案採用了MyCat。

MyCat截至到2015年4月,保守估計已經有超過60個專案在使用,主要應用在電信領域、網際網路專案,大部分是交易和管理系統,少量是資訊系統。比較大的系統中,資料規模單表單月30億。

MyCat是什麼?

從定義和分類來看,它是一個開源的分散式資料庫系統,是一個實現了MySQL協議的伺服器,前端使用者可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令列訪問,而其後端可以用MySQL原生協議與多個MySQL伺服器通訊,也可以用JDBC協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,即將一個大表水平分割為N個小表,儲存在後端MySQL伺服器裡或者其他資料庫裡。

MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支援MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流資料庫,也支援MongoDB這種新型NoSQL方式的儲存,未來還會支援更多型別的儲存。而在終端使用者看來,無論是那種儲存方式,在MyCat裡,都是一個傳統的資料庫表,支援標準的SQL語句進行資料的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度


圖1 MyCat架構設計圖

MyCat解決了哪些問題

1. 連線過多問題,可以通過MyCat統一管理所有的資料來源,後端資料庫叢集對前端應用程式透明。使用MyCat之前系統結構如圖2。


圖2  MyCat早前系統架構

MyCat引入連線複用解決多應用競爭問題,通過MyCat改造後,如圖3所示。


圖3  改造後的MyCat

2. 獨創的ER關係分片,解決E-R分片難處理問題,存在關聯關係的父子表在資料插入的過程中,子表會被MyCat路由到其相關父表記錄的節點上,從而父子表的Join查詢可以下推到各個資料庫節點上完成,這是最高效的跨節點Join處理技術,也是MyCat首創。


圖4  獨創的ER關係分片,是MyCat首創

3. 採用全域性分片技術,每個節點同時併發插入和更新資料,每個節點都可以讀取資料,提升讀效能的同時,也解決跨節點Join的效率。


圖5 採用全域性分片技術

4. 通過人工智慧的catlet支援跨分片複雜SQL實現以及儲存過程支援等。使用方式主要通過MyCat註釋的方式來執行,如下:

(1)跨分片聯合查詢註解支援:

/*!MyCat:catlet=demo.catlets.ShareJoin / select bu. ,sg.* from base_user bu,sam_glucose sg where bu.id_=sg.user_id;

注:sam_glucose是跨分片表。

(2)儲存過程註解支援:

/*!MyCat: sql=select * from base_user where id_=1;*/ CALL proc_test();

注:目前執行儲存過程通過MyCat註解的方式執行,注意需要把儲存過程中的sql寫到註解中。

(3)批量插入與ID自增長結合的支援:

/*!MyCat:catlet=demo.catlets.BatchInsertSequence */ insert into sam_test(name_) values(‘t1’),(‘t2’);
注:此方式不需要在sql語句中顯示的設定主鍵欄位,程式在後臺根據primaryKey配置的主鍵列,自動生成主鍵的sequence值並替換原sql中相關的列和值;

(4)獲取批量sequence值的支援:

/*!MyCat:catlet=demo.catlets.BatchGetSequence */SELECT MyCat_get_seq(‘MyCat_TEST’,100);
注:此方法表示獲取MyCat_TEST表的100個sequence值,例如當前MyCat_TEST表的最大sequence值為5000,則通過此方式返回的是5001,同時更新資料庫中的MyCat_TEST表的最大sequence值為5100。

(5)更好地支援資料庫讀寫分離與高可用性,MyCat支援基於MySQL主從複製狀態的高階讀寫分離控制機制(比如Slave_behind_master <100則開啟),而一旦檢測到主從同步出錯或者延時超過發展,則自動排除readHost,防止程式讀到很久的舊資料。


圖6  Mycat支援基於MySQL主從複製狀態的高階讀寫分離控制機制

MyCat技術原理

MyCat技術原理中最重要的一個動詞是“攔截”,它攔截了使用者傳送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、快取分析等,然後將此SQL發往後端的真實資料庫,並將返回的結果做適當的處理,最終再返回給使用者。


圖7  Orders被分為三個分片datanode

如圖7所示,Orders表被分為三個分片datanode(簡稱dn),這三個分片是分佈在兩臺MySQL Server上(DataHost),即[email protected]方式,因此你可以用一臺到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等。

MyCat下一步規劃

強化分散式資料庫中介軟體的面的功能,使之具備豐富的外掛、強大的資料庫智慧優化功能、全面的系統監控能力、以及方便的資料運維工具,實現線上資料擴容、遷移等高階功能。

進一步挺進大資料計算領域,深度結合Spark Stream和Storm等分散式實時流引擎,能夠完成快速的巨表關聯、排序、分組聚合等OLAP方向的能力,並整合一些熱門常用的實時分析演算法,讓工程師以及DBA們更容易用MyCat實現一些高階資料分析處理功能。

相關推薦

MyCat:開源分散式資料庫中介軟體

為什麼需要MyCat? 雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。 MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速

開源分散式資料庫中介軟體

雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。 MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速增長情況下的資料瓶頸問題。2014年MyCat首次

華為雲分散式資料庫中介軟體DDM和開源MyCAT對比

前言 華為雲分散式資料庫中介軟體(Distributed Database Middleware)是解決資料庫容量、效能瓶頸和分散式擴充套件問題的中介軟體服務,提供分庫分表、讀寫分離、彈性擴容等能力,應對海量資料的高併發訪問場景,有效提升資料庫讀寫效能。 圖1:DDM產品介紹   DDM

開源分散式資料庫中介軟體系統Mycat和阿里巴巴Cobar的對比

1,愕然回首,它在燈火闌珊處關於mysql叢集中介軟體,以前寫在應用程式裡面,由開發人員實現,在配置檔案裡面寫多個數據源,寫庫一個數據源,讀庫一個數據源,笨拙不高效,由於程式設計師的差異化,效果並不是特別理想。後來,組織了開發人員寫了一個自動識別讀寫的功能模組介面,讓開發人員呼叫,這樣能滿足特定場景的業務需求

【華為雲分散式資料庫中介軟體 DDM】sidecar負載均衡配置

目錄 福利發放 產品介紹 配置方法 福利發放 目前華為雲分散式資料庫中介軟體DDM有試用體驗活動,申請華為雲賬號後可以單擊如下圖片一鍵體驗: 產品介紹 華為雲分散式資料庫中介軟體(Distributed Database Middleware,簡稱DDM),

網格式大型分散式資料庫中介軟體(Cluster Killer)

1       背景我們知道資料是一個公司的命脈,隨著業務越做越大,資料量也會越來越大,計算也會越來越複雜,效能,可靠性,可擴充套件性的需求就會越來越強烈,這個時候一個集中式的資料庫顯然已經滿足不了需求了。對於技術決策者來說有兩條路可以走,第一:按照現有的大型資料庫的解決

從零開發分散式資料庫中介軟體 一、讀寫分離的資料庫中介軟體

  在傳統的單機體系中,我們在操作資料庫時,只需要直接得到資料庫的連線,然後操作資料庫即可,可是在現在的資料爆炸時代,只靠單機是無法承載如此大的使用者量的,即我們不能縱向擴充套件,那麼我們就只能水平進行擴充套件,即使用讀寫分離的主從資料庫來緩解資料庫的壓力,而在讀寫分離之後

【乾貨】淺談分散式資料庫中介軟體之分庫分表

分庫分表,顧名思義就是把原本儲存於一個庫的資料分塊儲存到多個庫上,把原本儲存於一個表的資料分塊儲存到多個表上。那麼關於分庫分表,你瞭解多少呢?接下來,我們將從什麼是資料分片及如何進行分片兩方面對DDM分庫分表做一個闡釋。什麼是資料分片分片是解決資料庫儲存容量限制的直接途徑。分

分散式資料庫中介軟體、產品——sharding-jdbc、mycat、drds

        一般對於業務記錄類隨時間會不斷增加的資料,當資料量增加到一定量(一般認為整型值為主的表達到千萬級,字串為主的表達到五百萬)的時候,效能將遇到瓶頸,同時調整表結構也會變得非常困難。為了避免生產遇到這樣的問題,在做系統設計時需要預估可能產生的資料量:預估記錄主體個

入門篇-連線華為雲分散式資料庫中介軟體(DDM)

在成功配置DDM例項後,即可連線訪問DDM例項以及例項下的邏輯庫。 華為雲分散式資料庫中介軟體(DDM)服務目前管理的關係型資料庫,是基於MySQL作為儲存引擎,因此DDM服務相容MySQL大部分語法以及客戶端。關於DDM的使用受限說明,請參見SQL相容性。 DDM例項提

淺談分散式資料庫中介軟體之分庫分表

     分庫分表,顧名思義就是把原本儲存於一個庫的資料分塊儲存到多個庫上,把原本儲存於一個表的資料分塊儲存到多個表上。那麼關於分庫分表,你瞭解多少呢?接下來,我們將從什麼是華為雲大資料解決方案的分片及如何進行分片兩方面對DDM分庫分表做一個闡釋。   

分散式資料庫中介軟體 MyCat 搞起來!

關於 MyCat 的鋪墊文章已經寫了三篇了: MySQL 只能做小專案?鬆哥要說幾句公道話! 北冥有 Data,其名為鯤,鯤之大,一個 MySQL 放不下! What?Tomcat 竟然也算中介軟體? 今天終於可以迎接我們的大 Boss 出場了! MyCat 簡介 前面文章我們提到,如果資料量比較大的話

分散式資料庫中介軟體 MyCat | 分庫分表實踐

### MyCat 簡介 `MyCat` 是一個功能強大的分散式資料庫中介軟體,是一個實現了 `MySQL` 協議的 `Server`,前端人員可以把它看做是一個數據庫代理中介軟體,用 `MySQL` 客戶端工具和命令列訪問;而後端人員可以用 `MySQL` 原生協議與多個 `MySQL` 伺服器通訊,也可

開源資料庫中介軟體- MyCat 學習筆記

1、簡介        MyCat 曾是阿里開源產品Cobar,Cobar核心功能和優勢是 MySQL 資料庫分片。Mycat 是基於 cobar 演變而來,對 cobar 的程式碼進行了徹底的重構,使用 NIO 重構了網路模組,並且優化了 Buffer

相容MySQL的開源分散式資料庫SequoiaDB在去哪兒網的實踐

在開源資料庫大會(ODF)在京舉辦成功落幕之際,也許很多人依然沉浸在技術大餐中,因為這些技術正是每個從業者所關注甚至是自己的飯碗。只有這樣的技術會議,才會引起技術的碰撞以及共鳴。正如會議很大的一個亮點,“MariaDB/MySQL vs PostgreSQL世紀大決戰”,現場火藥味十足。本人

MySQL開源資料傳輸中介軟體架構設計實踐

本文根據洪斌10月27日在「3306π」技術 Meetup - 武漢站現場演講內容整理而成。 主要內容: 本次分享將介紹目前資料遷移、資料同步、資料消費,多IDC架構中資料複製技術所面臨問題及現有的產品和方案,並分享新開源的能在異構資料儲存之間提供高效能和強大複製功能的DTLE相關技術

為什麼你要使用這麼強大的分散式訊息中介軟體——kafka

為什麼是kafka? 在我們大量使用分散式資料庫、分散式計算叢集的時候,是否會遇到這樣的一些問題: 我們想分析下使用者行為(pageviews),以便我們設計出更好的廣告位 我想對使用者的搜尋關鍵詞進行統計,分析出當前的流行趨勢 有些資料,儲存資料庫浪費,直接儲存硬碟效率又低

Mycat資料庫中介軟體

Mycat介紹       中介軟體:代理;       面向企業的開源的資料庫叢集,效能極高;淘寶正在使用;       京東,美團;       資料庫中介

Java架構-spring+springmvc+kafka分散式訊息中介軟體整合方案

Honghu的訊息服務平臺已經拋棄了之前的ActiveMQ,改用高吞吐量比較大的Kafka分散式訊息中介軟體方案: kafka訊息平臺使用spring+kafka的整合方案,詳情如下: 使用最高版本2.1.0.RELEASE整合jar包:spring-integration

分散式架構】分散式訊息中介軟體MQ開發教程

關於分散式訊息中介軟體MQ的詳細介紹: 【分散式架構】分散式訊息中介軟體MQ開發教程 (阿里雲訊息佇列MQ(Message Queue)是企業級網際網路架構的核心產品,服務於整個阿里巴巴集團已超過8年,經過阿里巴巴交易核心鏈路反覆打磨與歷年雙十一嚴苛考驗,是一個真正具備低延遲、高併發、高可用