Adapters
Adapters define database connections. Each adapter specifies a database type, connection string, and optional configuration.
Defining adapters
Section titled “Defining adapters”adapters: production_db: connector: postgres connection_string: "postgresql://user:pass@host:5432/dbname" options: max_connections: "10" ssl_mode: "require"adapter production_db { connector: postgres connection_string: "postgresql://user:pass@host:5432/dbname" options: { max_connections: "10" ssl_mode: "require" }}Adapter properties
Section titled “Adapter properties”| Property | Required | Description |
|---|---|---|
connector | Yes | Database type: postgres, mysql, or redis |
connection_string | Yes | Database connection URL |
options | No | Connector-specific configuration |
Supported connectors
Section titled “Supported connectors”PostgreSQL
Section titled “PostgreSQL”adapters: my_postgres: connector: postgres connection_string: 'postgresql://user:password@host:5432/database' options: max_connections: 10 ssl_mode: 'require' # disable, allow, prefer, require, verify-ca, verify-full connect_timeout: 10 # secondsConnection String Format:
postgresql://[user]:[password]@[host]:[port]/[database]?[params]adapters: my_mysql: connector: mysql connection_string: 'user:password@tcp(host:3306)/database' options: max_connections: 10 charset: 'utf8mb4'Connection String Format:
[user]:[password]@tcp([host]:[port])/[database]?[params]adapters: my_redis: connector: redis connection_string: 'redis://[:password@]host:6379/db' options: pool_size: 10Connection String Format:
redis://[:password@]host:port/dbMultiple adapters
Section titled “Multiple adapters”You can define multiple adapters for different databases or purposes:
adapters: # Primary database for user data users_db: connector: postgres connection_string: 'postgresql://user:pass@users-db:5432/users'
# Analytics database (read replica) analytics_db: connector: postgres connection_string: 'postgresql://readonly:pass@analytics-db:5432/analytics'
# Redis for caching cache: connector: redis connection_string: 'redis://cache:6379/0'Queries reference adapters by name:
queries: get-user: use: users_db # Uses the users_db adapter statement: 'SELECT * FROM users WHERE id = {{ inputs.id }}' # ...
get-analytics: use: analytics_db # Uses the analytics_db adapter statement: 'SELECT * FROM events WHERE date = {{ inputs.date }}' # ...Environment variables
Section titled “Environment variables”Reference environment variables in connection strings:
adapters: production_db: connector: postgres connection_string: '{{ env.DATABASE_URL }}'Or construct from multiple variables:
adapters: production_db: connector: postgres connection_string: 'postgresql://{{ env.DB_USER }}:{{ env.DB_PASS }}@{{ env.DB_HOST }}:5432/{{ env.DB_NAME }}'Naming conventions
Section titled “Naming conventions”Adapter names must follow these rules:
- Use
lower-kebab-caseorlower_snake_case - Start with a letter
- Contain only letters, numbers, hyphens, and underscores
Valid names: main_db, users-db, analytics_replica
Invalid names: MainDB, 123db, my db
Connection security
Section titled “Connection security”See the Security section for best practices on:
- Protecting connection strings
- Using SSL/TLS connections
- Network security considerations