Back to Druid

Alibaba Druid

README_EN.md

1.2.286.9 KB
Original Source

Alibaba Druid

English | 中文


Druid is a high-performance database connection pool and SQL parser open-sourced by Alibaba. It deeply integrates JDBC connection pooling, SQL parsing and analysis, security protection, and monitoring statistics into one package, making it one of the most comprehensive database middleware solutions in the Java ecosystem.

Key Features

CapabilityDescription
JDBC Connection PoolHigh-performance, monitorable pool implementation DruidDataSource with connection warm-up, PSCache, KeepAlive and more
SQL ParserFull parser for 30 SQL dialects, generating AST (Abstract Syntax Tree) with support for formatting, rewriting and analysis
SQL FirewallAST-based WallFilter for SQL injection protection, blocking dangerous operations
Monitoring & StatsBuilt-in StatFilter for real-time SQL execution statistics, connection pool status, and Web monitoring console
Filter ExtensionPluggable Filter-Chain architecture supporting logging, encryption, statistics and custom extensions
Spring Boot IntegrationStarters for Spring Boot 2.x / 3.x / 4.x with auto-configuration
High AvailabilityHighAvailableDataSource supporting multi-datasource load balancing, health checks and failover

Quick Start

Maven Dependency

xml
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.24</version>
</dependency>

Choose the starter matching your Spring Boot version:

Spring Boot VersionStarter
2.xdruid-spring-boot-starter
3.xdruid-spring-boot-3-starter
4.xdruid-spring-boot-4-starter
xml
<!-- Spring Boot 3.x example -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.24</version>
</dependency>
yaml
# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
    druid:
      initial-size: 5
      max-active: 20
      min-idle: 5
      max-wait: 60000
      filter:
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 2000
        wall:
          enabled: true

Direct DruidDataSource Usage

java
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setInitialSize(5);
dataSource.setMaxActive(20);
dataSource.setMinIdle(5);
dataSource.init();

try (Connection conn = dataSource.getConnection()) {
    // execute SQL
}

SQL Parser

java
// Parse SQL
String sql = "SELECT id, name FROM users WHERE age > 18 ORDER BY name";
List<SQLStatement> stmts = SQLUtils.parseStatements(sql, DbType.mysql);

// Format SQL
String formatted = SQLUtils.format(sql, DbType.mysql);

// Extract schema information
SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(DbType.mysql);
stmts.get(0).accept(visitor);
System.out.println("Tables: " + visitor.getTables());
System.out.println("Columns: " + visitor.getColumns());

Project Modules

druid/
├── core/                           # Core library (pool, SQL parser, security, monitoring)
├── druid-spring-boot-starter/      # Spring Boot 2.x auto-configuration
├── druid-spring-boot-3-starter/    # Spring Boot 3.x auto-configuration
├── druid-spring-boot-4-starter/    # Spring Boot 4.x auto-configuration
├── druid-wrapper/                  # Wrapper utilities
├── druid-admin/                    # Cluster monitoring admin
└── doc/                            # Documentation

SQL Dialect Support

The Druid SQL parser supports 30 database dialects, each with full Lexer, Parser, AST and Visitor implementations:

CategorySupported Databases
Major RDBMSMySQL, PostgreSQL, Oracle, SQL Server, DB2, H2, Informix
Chinese DatabasesDameng (DM), Oscar, GaussDB
Analytical / MPPClickHouse, Doris, StarRocks, Teradata, Redshift
Cloud / Data WarehouseBigQuery, Snowflake, Synapse, Hologres, ODPS (MaxCompute)
Compute EnginesHive, Spark, Presto, Impala, Athena, Blink, Databricks
OtherPhoenix, SuperSQL, Transact-SQL

Documentation

DocumentDescription
Architecture OverviewSystem architecture and core component interactions
Connection Pool GuideDruidDataSource configuration, tuning and best practices
SQL Parser GuideSQL parsing, formatting, rewriting and dialect extensions
SQL Dialect SupportComplete dialect support matrix and per-dialect features
Filter MechanismFilter-Chain architecture and custom Filter development
SQL FirewallWallFilter configuration and SQL security
Monitoring & StatisticsStatFilter and Web monitoring console
High AvailabilityHighAvailableDataSource configuration and usage
Spring Boot IntegrationSpring Boot Starter configuration guide
WikiFAQ and additional documentation

Building from Source

bash
git clone https://github.com/alibaba/druid.git
cd druid
mvn clean install

Requirements: Java 8+ JDK, Apache Maven 3.6+

Contributing

Contributions are welcome! Please read the Contributing Guide for details.

Security

Please do not report security vulnerabilities through public issues. See Security Policy.

License

Druid is open-sourced under Apache License 2.0.