Druid--高性能數據庫組件

Druid是什麼?

Druid是一個JDBC組件,它包括四個部分:

Druid可以做什麼?

  • 可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。
  • 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
  • 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行爲,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。
  • SQL執行日誌,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。
  • 擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter機制,很方便編寫JDBC層的擴展插件。

DruidDriver,是一個ProxyJdbcDriver,它提供了Filter-Chain模式的擴展機制,使得在Jdbc擴展編程特別方便。

Druid提供了一些內置的擴展機制,包括StatLogTrace、HA等擴展。


DruidDataSource是一個數據庫連接池的實現,它的設計目標是提供一個當前最好的數據庫連接池,在性能、擴展性等方面取得最合適的平衡,取代DBCP、C3P0等連接池。

  • 高性能。測試數據表明,Druid比DBCP、C3P0、BoneCP的性能都好很多。具體請看測試數據
  • 可管理性,DruidDataSource本身提供了很多監控屬性,具體看這裏。DruidDataSource支持StatFilter,具體配置看 這裏
  • 可擴展性,提供基於Filter-Chain模式的擴展機制。具體自定義擴展的例子看這裏
  • 替換DBCP,配置和DBCP兼容,可以方便替換DBCP。
  • 適合大規模應用。結合Alibaba使用數據庫連接池的經驗,避免一些已知問題,例如數據庫不可用恢復之後產生的連接風暴問題等。

設計

這是DruidDataSource的設計圖示:
http://code.alibabatech.com/svn/druid/trunk/doc/druid-pool.txt
如果發現有亂碼,請選擇utf-8的編碼方式查看。


Druid提供一個手工編寫的高性能的方便擴展的SQL Parser。將會支持MySQL、Oracle等流行關係數據庫的SQL Parser。

Parser組件包括如下幾個部分:

  • Lexer 詞法解析
  • Parser,Parser包括ExprParser,各種StatementParser。
  • AST, Abstract Syntax Tree。ParserParse出來的結果就是AST。
  • Visitor。對AST做各種處理,比如FormatOutput,遍歷等等。

簡介

Druid提供了強大的監控功能,能夠監控連接池行爲和SQL執行情況,讓你能夠詳細瞭解應用的數據庫訪問行爲。

監控對象

  • Druid的統計信息定義代碼實現在com/alibaba/druid/stat下。所有的Stat都全局靜態變量的方式保存,這樣做使得外部獲取監控信息更容易。
  • 獲取Druid監控信息的入口是com.alibaba.druid.stat.JdbcStatManager
  • Druid的監控統計信息都是通過StatFilter來實現的,如果你需要數據源進行監控,那你需要啓用StatFilter

Subversion

http://code.alibabatech.com/svn/druid/trunk/

Download

Binary: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2.jar
Source: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2-sources.jar

Maven

Alibaba Open Source Repository

<repositories>
	<repository>
		<id>alibaba-opensource</id>
		<name>alibaba-opensource</name>
		<url>http://code.alibabatech.com/mvn/releases/</url>
		<layout>default</layout>
	</repository>
	<repository>
		<id>alibaba-opensource-snapshot</id>
		<name>alibaba-opensource-snapshot</name>
		<url>http://code.alibabatech.com/mvn/snapshots/</url>
		<layout>default</layout>
	</repository>
</repositories>

依賴配置

<dependencies>
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>0.1.2</version>
	</dependency>
</dependencies>
發佈了79 篇原創文章 · 獲贊 41 · 訪問量 219萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章