03.02 數據庫中間件是什麼?

黃影子法定


我是做JAVA開發的,可以說數據庫中間件用的還是比較多的,下面結合自己的經歷講下!

何謂中間件?不同服務器之間負責數據傳遞,服務控制或者性能監控的組件!經常使用的中間件有消息中間件(redis,kafka等),數據庫中間件(mycat,druid等),應用服務器中間件,PRC中間件等等!中間件最大的特點是解耦服務,讓不同的服務之間可以採用某種規範進行交互!


回到本文的關注點,數據庫中間件怎麼分類?

①數據庫與應用服務器之間的中間件(性能監控,連接池優化):典型的有druid連接池,不同於c3p0等傳統連接池,druid組件會對執行過的sql進行統計,並記錄併發量,sql執行的耗時情況等,對於數據庫性能監控提供十分方便的界面化顯示!不僅如此,druid針對oracle的ps cache內存進行了優化!

②數據庫與數據庫或者其他的服務(緩存等)的同步中間件:多用於數據庫之間的,或者數據庫與緩存等存儲系統之間的數據同步,比如Canal,Otter等!Canal是一個增量同步工具,根據數據庫執行sql的日誌文件,獲取增量數據進行同步到緩存或者數據庫中!


③數據庫分庫分表中間件:分佈式下數據量記錄增多,對於讀寫數據有大量的要求,所以分庫分表對於大型系統是必不可缺的數據庫技術,使用mycat,sharding-jdbc等進行數據庫的分庫分表是一個很好的選擇!

分庫分表一般來說有多種策略,水平分表通常使用時間,狀態等字段進行,也可使用hash某個字段等進行,垂直分庫分表通常用於拆分常用和不常用的字段或者大字段到不同的庫中,提高對常用字段的查詢效率!

分庫分表通常需要關注的問題有全局唯一ID的產生,連接查詢,統計等問題!

以上就是我的工作中接觸到的數據庫中間件知識,說的不好,有錢的捧個錢場,沒錢的關注我,更多的技術分享,敬請關注。。


此生唯一


關於數據庫中間件,我談談自己的見解,並介紹一下常見的數據庫中間件。

中間件是什麼

首先看看中間件的定義:和業務無關的的技術類組件。這種解釋還是稍微有些抽象,下面我舉個例子:

我辭職去賣羊肉串(業務端),聯繫了很多養殖場(底層),為了羊肉的質量和降低成本,我得一家一家地去考察、談判、比價,然後選一個羊肉供貨商合作。經營了一段時間,這個賣羊肉的漲價了,或者提供的羊肉質量沒原來好了,那麼我就重新考察、談判、比價,如此反覆,我會浪費大量的時間和經歷。

於是我找了個信得過的代理公司(中間件),約定好羊肉的質量規格,談好價錢,以後我只找代理拿貨,具體代理找哪個養殖場合作,掙多少差價,我不管。

所以中間件的作用是:讓業務端和底層解耦,屏蔽底層困難的邏輯,提供更簡單的服務,讓業務端的開發更簡單。

數據庫中間件

再來看看什麼是數據庫中間件。

在這裡,數據庫就是底層,我們寫的程序就是業務端,數據庫中間件就是(和業務無關)的可以實現數據庫一些功能的組件。還是有些抽象,那麼看看常見的數據庫組件有哪些吧。

  • 分庫分表(分佈式):當數據量大的時候,單臺數據庫已經不足以支撐我們的業務量,所以會採用分庫分表的策略。現在支持分庫分表的組件有很多,例如MyCat、MySQL-Proxy、Atlas(360)、Cobar(阿里)、TDDL(淘寶,新名字DRDS)。

  • 數據庫同步:顧名思義,是對數據庫進行同步的;Otter(阿里),基於數據庫增量日誌解析,準實時同步數據,支持兩個庫都可以寫入,寫入的數據同步到另外的庫。

  • 數據庫遷移:這個主要用於不同類型數據庫的遷移;yugong(阿里),支持Oracle到Mysql的遷移。

  • 數據增量訂閱與消費:這個是對數據庫增量日誌解析,提供增量數據訂閱和消費;canal(阿里)。

聽過了這些數據庫中間件的介紹,是不是理解起來更深刻了。

比如分庫分表的中間件,如果自己實現的話,就需要連接多個數據源(或多個表),執行一次查詢,每個數據源都需要調用一次,查詢回來的數據還需要自己處理;

如果有了中間件做這些工作,我們的開發會更加的簡單。

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。


會點代碼的大叔


面向數據庫的中間件是促進與數據庫通信的中間件,無論是來自應用程序還是數據庫之間。 開發人員通常使用面向數據庫的中間件作為從本地或遠程數據庫提取信息的機制。 例如,為了從Oracle數據庫提取信息,開發人員可以調用面向數據庫的中間件來登錄到數據庫,請求信息並處理從數據庫中提取的信息。

儘管CLI是跨越多種數據庫的通用API,通過定義良好的通用接口提供對任意數量的數據庫的訪問,但它們通常被發現可用於關係數據庫。 Microsoft ODBC就是這種情況。 ODBC公開一個接口以便於訪問數據庫。 然後使用驅動程序來適應數據庫之間的差異。 ODBC還提供對同一接口的同時多個數據庫訪問 - 在ODBC體系結構中,驅動程序管理器可以加載和卸載驅動程序以促進不同數據庫(例如Oracle,Informix和DB2)之間的通信。

JavaSoft的Java數據庫連接(JDBC)是CLI的另一個例子。 JDBC是一種接口標準,它使用一組Java方法來方便訪問多個數據庫。 JDBC非常像ODBC,可以從任何Java應用程序訪問任意數量的數據庫:applet,servlet,JSP,EJB或獨立應用程序。 Microsoft數據庫中間件的未來由其OLE DB表示。 OLE DB提供了一種標準機制來訪問任意數量的資源(包括數據庫,Excel電子表格和平面文件)作為標準對象(例如COM對象)。 OLE DB提供了一個對象框架來檢索結果集,然後在內存中導航和操作結果集。 OLE DB依靠OLE Transactions事務管理框架來確保ACID屬性(原子性,一致性,隔離性和持久性)

本地數據庫中間件不是使用單個多數據庫API,而是僅使用本機機制來訪問特定數據庫的功能。 這種限制 - 僅與一種類型的數據庫進行通信 - 是本地數據庫中間件的主要缺點。 其優點包括提高了性能並可以訪問特定類型數據庫的所有功能。


獨立的互聯網從業者


分庫分表使用的中間應用


蔡回雲


我的理解是:類似一種數據庫操作代理,雖然我只用過mycat!

越來越多的數據,讓我們不得不進行分庫分表!

然而,我們自己手動一個個建表,維護表結構是非常麻煩的!

mycat的方案就是:我們自己有一張原始的數據庫大表,mycat通過我們設置的配置文件,就能幫我們快速的進行分表分庫,從而減少了數據庫管理的成本!


分享到:


相關文章: