謝邀~
關(guān)于數(shù)據(jù)庫(kù)中間件,我談?wù)勛约旱囊娊猓⒔榻B一下常見的數(shù)據(jù)庫(kù)中間件。
中間件是什么首先看看中間件的定義:和業(yè)務(wù)無關(guān)的的技術(shù)類組件。這種解釋還是稍微有些抽象,下面我舉個(gè)例子:
我辭職去賣羊肉串(業(yè)務(wù)端),聯(lián)系了很多養(yǎng)殖場(chǎng)(底層),為了羊肉的質(zhì)量和降低成本,我得一家一家地去考察、談判、比價(jià),然后選一個(gè)羊肉供貨商合作。經(jīng)營(yíng)了一段時(shí)間,這個(gè)賣羊肉的漲價(jià)了,或者提供的羊肉質(zhì)量沒原來好了,那么我就重新考察、談判、比價(jià),如此反復(fù),我會(huì)浪費(fèi)大量的時(shí)間和經(jīng)歷。
于是我找了個(gè)信得過的代理公司(中間件),約定好羊肉的質(zhì)量規(guī)格,談好價(jià)錢,以后我只找代理拿貨,具體代理找哪個(gè)養(yǎng)殖場(chǎng)合作,掙多少差價(jià),我不管。
所以中間件的作用是:讓業(yè)務(wù)端和底層解耦,屏蔽底層困難的邏輯,提供更簡(jiǎn)單的服務(wù),讓業(yè)務(wù)端的開發(fā)更簡(jiǎn)單。
數(shù)據(jù)庫(kù)中間件再來看看什么是數(shù)據(jù)庫(kù)中間件。
在這里,數(shù)據(jù)庫(kù)就是底層,我們寫的程序就是業(yè)務(wù)端,數(shù)據(jù)庫(kù)中間件就是(和業(yè)務(wù)無關(guān))的可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)一些功能的組件。還是有些抽象,那么看看常見的數(shù)據(jù)庫(kù)組件有哪些吧。
分庫(kù)分表(分布式):當(dāng)數(shù)據(jù)量大的時(shí)候,單臺(tái)數(shù)據(jù)庫(kù)已經(jīng)不足以支撐我們的業(yè)務(wù)量,所以會(huì)采用分庫(kù)分表的策略。現(xiàn)在支持分庫(kù)分表的組件有很多,例如MyCat、MySQL-Proxy、Atlas(360)、Cobar(阿里)、TDDL(淘寶,新名字DRDS)。
數(shù)據(jù)庫(kù)同步:顧名思義,是對(duì)數(shù)據(jù)庫(kù)進(jìn)行同步的;Otter(阿里),基于數(shù)據(jù)庫(kù)增量日志解析,準(zhǔn)實(shí)時(shí)同步數(shù)據(jù),支持兩個(gè)庫(kù)都可以寫入,寫入的數(shù)據(jù)同步到另外的庫(kù)。
數(shù)據(jù)庫(kù)遷移:這個(gè)主要用于不同類型數(shù)據(jù)庫(kù)的遷移;yugong(阿里),支持Oracle到Mysql的遷移。
數(shù)據(jù)增量訂閱與消費(fèi):這個(gè)是對(duì)數(shù)據(jù)庫(kù)增量日志解析,提供增量數(shù)據(jù)訂閱和消費(fèi);canal(阿里)。
聽過了這些數(shù)據(jù)庫(kù)中間件的介紹,是不是理解起來更深刻了。
比如分庫(kù)分表的中間件,如果自己實(shí)現(xiàn)的話,就需要連接多個(gè)數(shù)據(jù)源(或多個(gè)表),執(zhí)行一次查詢,每個(gè)數(shù)據(jù)源都需要調(diào)用一次,查詢回來的數(shù)據(jù)還需要自己處理;
如果有了中間件做這些工作,我們的開發(fā)會(huì)更加的簡(jiǎn)單。
我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計(jì)、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。