-
1 # 此生唯一
-
2 # 會點程式碼的大叔
關於資料庫中介軟體,我談談自己的見解,並介紹一下常見的資料庫中介軟體。
中介軟體是什麼首先看看中介軟體的定義:和業務無關的的技術類元件。這種解釋還是稍微有些抽象,下面我舉個例子:
我辭職去賣羊肉串(業務端),聯絡了很多養殖場(底層),為了羊肉的質量和降低成本,我得一家一家地去考察、談判、比價,然後選一個羊肉供貨商合作。經營了一段時間,這個賣羊肉的漲價了,或者提供的羊肉質量沒原來好了,那麼我就重新考察、談判、比價,如此反覆,我會浪費大量的時間和經歷。
於是我找了個信得過的代理公司(中介軟體),約定好羊肉的質量規格,談好價錢,以後我只找代理拿貨,具體代理找哪個養殖場合作,掙多少差價,我不管。
所以中介軟體的作用是:讓業務端和底層解耦,遮蔽底層困難的邏輯,提供更簡單的服務,讓業務端的開發更簡單。
資料庫中介軟體再來看看什麼是資料庫中介軟體。
在這裡,資料庫就是底層,我們寫的程式就是業務端,資料庫中介軟體就是(和業務無關)的可以實現資料庫一些功能的元件。還是有些抽象,那麼看看常見的資料庫元件有哪些吧。
分庫分表(分散式):當資料量大的時候,單臺數據庫已經不足以支撐我們的業務量,所以會採用分庫分表的策略。現在支援分庫分表的元件有很多,例如MyCat、MySQL-Proxy、Atlas(360)、Cobar(阿里)、TDDL(淘寶,新名字DRDS)。
資料庫同步:顧名思義,是對資料庫進行同步的;Otter(阿里),基於資料庫增量日誌解析,準實時同步資料,支援兩個庫都可以寫入,寫入的資料同步到另外的庫。
資料庫遷移:這個主要用於不同型別資料庫的遷移;yugong(阿里),支援Oracle到Mysql的遷移。
資料增量訂閱與消費:這個是對資料庫增量日誌解析,提供增量資料訂閱和消費;canal(阿里)。
聽過了這些資料庫中介軟體的介紹,是不是理解起來更深刻了。
比如分庫分表的中介軟體,如果自己實現的話,就需要連線多個數據源(或多個表),執行一次查詢,每個資料來源都需要呼叫一次,查詢回來的資料還需要自己處理;
如果有了中介軟體做這些工作,我們的開發會更加的簡單。
回覆列表
我是做JAVA開發的,可以說資料庫中介軟體用的還是比較多的,下面結合自己的經歷講下!
何謂中介軟體?不同伺服器之間負責資料傳遞,服務控制或者效能監控的元件!經常使用的中介軟體有訊息中介軟體(redis,kafka等),資料庫中介軟體(mycat,druid等),應用伺服器中介軟體,PRC中介軟體等等!中介軟體最大的特點是解耦服務,讓不同的服務之間可以採用某種規範進行互動!
回到本文的關注點,資料庫中介軟體怎麼分類?
①資料庫與應用伺服器之間的中介軟體(效能監控,連線池最佳化):典型的有druid連線池,不同於c3p0等傳統連線池,druid元件會對執行過的sql進行統計,並記錄併發量,sql執行的耗時情況等,對於資料庫效能監控提供十分方便的介面化顯示!不僅如此,druid針對oracle的ps cache記憶體進行了最佳化!
②資料庫與資料庫或者其他的服務(快取等)的同步中介軟體:多用於資料庫之間的,或者資料庫與快取等儲存系統之間的資料同步,比如Canal,Otter等!Canal是一個增量同步工具,根據資料庫執行sql的日誌檔案,獲取增量資料進行同步到快取或者資料庫中!
分庫分表一般來說有多種策略,水平分表通常使用時間,狀態等欄位進行,也可使用hash某個欄位等進行,垂直分庫分表通常用於拆分常用和不常用的欄位或者大欄位到不同的庫中,提高對常用欄位的查詢效率!
分庫分表通常需要關注的問題有全域性唯一ID的產生,連線查詢,統計等問題!