Databases

Supported Databases

Eleven native database adapters, from embedded SQLite and DuckDB to cloud warehouses (Snowflake, StarRocks, ClickZetta) and lake engines (Hive, Spark, Trino, ClickHouse). All plug in via Python entry points — no adapter code required on your side.

Built-in

SQLite

Typesqlite
PackageBuilt-in
HighlightZero-config file store — perfect for demos and tests.
Built-in

DuckDB

Typeduckdb
PackageBuilt-in
HighlightEmbedded OLAP for local analytics on Parquet / CSV.

PostgreSQL

Typepostgresql
Packagedatus-postgresql
HighlightSix SSL modes, multi-schema, materialized views.

MySQL

Typemysql
Packagedatus-mysql
HighlightINFORMATION_SCHEMA + SHOW CREATE for rich metadata.

Snowflake

Typesnowflake
Packagedatus-snowflake
HighlightNative SDK with Arrow transport for fast reads.

StarRocks

Typestarrocks
Packagedatus-starrocks
HighlightMulti-catalog + materialized views, MySQL-wire.
v0.2.6

ClickHouse

Typeclickhouse
Packagedatus-clickhouse
HighlightHTTP protocol; database ≡ schema, lightweight DELETE.

ClickZetta

Typeclickzetta
Packagedatus-clickzetta
HighlightWorkspace + Volume/Stage ops; lakehouse partner.
v0.2.6

Hive

Typehive
Packagedatus-hive
HighlightHiveServer2 / Thrift with LDAP & Kerberos auth.
v0.2.6

Spark

Typespark
Packagedatus-spark
HighlightSpark Thrift Server; NONE / PLAIN / Kerberos auth.
v0.2.6

Trino

Typetrino
Packagedatus-trino
HighlightCross-catalog queries over HTTP/HTTPS SSL.
One interface

Four Categories, one interface

Every adapter implements the same CRUD, DDL, metadata and sampling contract — so subagents work identically across your OLTP, warehouse and lake engines.

Relational

PostgreSQL, MySQL — the classic OLTP stack with rich metadata endpoints.

Cloud Warehouse

Snowflake, StarRocks, ClickZetta — MPP engines with catalog + workspace models.

Lake & Distributed

Hive, Spark, Trino — Thrift and HTTP engines over your data lake.

Analytical & Embedded

DuckDB, ClickHouse, SQLite — from local files to columnar OLAP.
databases.ymlyaml
DatabaseTypePackageHighlight
SQLitesqlite Built-inZero-config file store — perfect for demos and tests.
DuckDBduckdb Built-inEmbedded OLAP for local analytics on Parquet / CSV.
PostgreSQLpostgresqldatus-postgresqlSix SSL modes, multi-schema, materialized views.
MySQLmysqldatus-mysqlINFORMATION_SCHEMA + SHOW CREATE for rich metadata.
Snowflakesnowflakedatus-snowflakeNative SDK with Arrow transport for fast reads.
StarRocksstarrocksdatus-starrocksMulti-catalog + materialized views, MySQL-wire.
ClickHouseclickhousedatus-clickhouseHTTP protocol; database ≡ schema, lightweight DELETE.
ClickZettaclickzettadatus-clickzettaWorkspace + Volume/Stage ops; lakehouse partner.
Hivehivedatus-hiveHiveServer2 / Thrift with LDAP & Kerberos auth.
Sparksparkdatus-sparkSpark Thrift Server; NONE / PLAIN / Kerberos auth.
Trinotrinodatus-trinoCross-catalog queries over HTTP/HTTPS SSL.

See the Database Adapters documentation for configuration, connection strings, and advanced options.

Migration

Cross-database Migration hints

Every adapter implements MigrationTargetMixin so subagents can generate DDL for the target dialect, propose OLAP-friendly layouts, and validate the result with a dry-run.

get_migration_capabilities()suggest_table_layout()validate_ddl()
layout-suggestions.sqlsql
# datus-agent generates layout hints per target:

# StarRocks
CREATE TABLE orders_agg (
  user_id BIGINT,
  order_day DATE,
  gmv DECIMAL(18,2)
)
DUPLICATE KEY(user_id, order_day)
DISTRIBUTED BY HASH(user_id) BUCKETS 16;

# ClickHouse
CREATE TABLE orders_agg (
  user_id UInt64,
  order_day Date,
  gmv Decimal(18,2)
)
ENGINE = MergeTree
ORDER BY (user_id, order_day);
Configuration

Drop-in datasource config

One YAML file wires every warehouse. Environment variables keep credentials out of source control.

agent.ymlyaml
agent:
  service:
    databases:
      production:                 # Snowflake
        type: snowflake
        account: ${SNOWFLAKE_ACCOUNT}
        username: ${SNOWFLAKE_USER}
        password: ${SNOWFLAKE_PASSWORD}
        warehouse: ${SNOWFLAKE_WAREHOUSE}
        database: ${SNOWFLAKE_DATABASE}

      analytics:                  # PostgreSQL
        type: postgresql
        host: ${PG_HOST}
        port: 5432
        username: ${PG_USER}
        password: ${PG_PASSWORD}
        database: mydb
        schema: public

      local_demo:                 # DuckDB
        type: duckdb
        uri: ./data/demo.duckdb
        default: true

      bird_benchmark:             # SQLite (glob multi-file)
        type: sqlite
        path_pattern: benchmark/bird/**/*.sqlite
FAQ

Frequently asked questions

Supported databases, installing adapters, custom drivers, and access requirements.

Which databases does Datus support out of the box?

Datus supports 11+ databases: SQLite, DuckDB, PostgreSQL, MySQL, Snowflake, StarRocks, ClickHouse, ClickZetta, Hive, Spark and Trino. SQLite and DuckDB are built in; the rest ship as installable adapters (datus-postgresql, datus-snowflake, and so on).

How do I install a database adapter?

Install the adapter package alongside the Datus CLI — for example, pip install datus-snowflake — then add a datasource block in your config with the connection details. The Database Adapters docs cover every option and connection string.

Can I connect to a database not on this list?

Yes. The adapter interface is open, so any database with a Python driver can be wrapped as a Datus adapter. Open an issue on GitHub or contribute a new adapter following the same pattern as datus-postgresql.

Does the agent need read-write access to my warehouse?

No. Datus works with read-only credentials for analytics use cases. Write access is only needed for pipeline deployment agents that materialize tables or models.

Which adapters were added in v0.2.6?

v0.2.6 added Hive, Spark, ClickHouse and Trino, bringing native support for the lake / distributed and columnar OLAP tiers alongside the existing relational and cloud-warehouse adapters.

Connect Your Warehouse in Minutes

Native adapters for Snowflake, Postgres, MySQL and more — drop in credentials and the agent starts reasoning over your real schema.