База данных
База данных
Заголовок раздела «База данных»Пулы подключений к SQL-базам данных. Поддерживаются PostgreSQL, MySQL и SQLite.
Типы записей
Заголовок раздела «Типы записей»| Тип | Описание |
|---|---|
db.sql.postgres | PostgreSQL |
db.sql.mysql | MySQL |
db.sql.sqlite | SQLite |
Настройка
Заголовок раздела «Настройка»Стандартные базы данных (PostgreSQL, MySQL)
Заголовок раздела «Стандартные базы данных (PostgreSQL, MySQL)»version: "1.0"namespace: app.data
entries: - name: main_db kind: db.sql.postgres host: "localhost" port: 5432 database: "myapp" username: "dbuser" password: "dbpass" pool: max_open: 25 max_idle: 5 max_lifetime: "1h" options: sslmode: "disable" lifecycle: auto_start: true - name: cache_db kind: db.sql.sqlite file: "/var/data/cache.db" # Для in-memory используйте :memory: pool: max_open: 1 max_idle: 1 max_lifetime: "1h" options: cache: "shared" lifecycle: auto_start: trueПоля подключения
Заголовок раздела «Поля подключения»Стандартные поля
Заголовок раздела «Стандартные поля»| Поле | Тип | Описание |
|---|---|---|
host | string | Адрес сервера БД |
port | int | Порт |
database | string | Имя базы данных |
username | string | Пользователь |
password | string | Пароль |
pool | object | Настройки пула подключений |
options | map | Специфичные для БД опции |
lifecycle | object | Настройки жизненного цикла |
Поля SQLite
Заголовок раздела «Поля SQLite»| Поле | Тип | Описание |
|---|---|---|
file | string | Путь к файлу БД или :memory: |
pool | object | Настройки пула |
options | map | Опции SQLite |
lifecycle | object | Настройки жизненного цикла |
Поля из переменных окружения
Заголовок раздела «Поля из переменных окружения»Суффикс _env позволяет загружать значения из переменных окружения или записей env.variable:
| Поле | Описание |
|---|---|
host_env | Хост из переменной окружения |
port_env | Порт из переменной окружения |
database_env | Имя БД из переменной окружения |
username_env | Пользователь из переменной окружения |
password_env | Пароль из переменной окружения |
- name: prod_db kind: db.sql.postgres host_env: "DB_HOST" port_env: "DB_PORT" database_env: "DB_NAME" username_env: "DB_USER" password_env: "app.secrets:db_password" # Ссылка на запись env.variableenv.variable для учётных данных. См. Окружение для безопасного хранения секретов.
Пул подключений
Заголовок раздела «Пул подключений»Настройка поведения пула. Параметры соответствуют пулу подключений database/sql в Go.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
max_open | int | 0 | Максимум открытых подключений (0 = без ограничений) |
max_idle | int | 0 | Максимум простаивающих подключений (0 = без ограничений) |
max_lifetime | duration | 1h | Максимальное время жизни подключения |
pool: max_open: 25 # Ограничить параллельные подключения max_idle: 5 # Держать 5 подключений готовыми max_lifetime: "30m" # Обновлять подключения каждые 30 минутmax_idle не больше max_open. Подключения старше max_lifetime закрываются и пересоздаются, что помогает справляться с устаревшими подключениями.
Форматы DSN
Заголовок раздела «Форматы DSN»Для каждого типа БД формируется свой DSN из конфигурации:
PostgreSQL {id=“dsn-postgresql”}
Заголовок раздела «PostgreSQL {id=“dsn-postgresql”}»postgres://username:password@host:port/database?sslmode=disableMySQL {id=“dsn-mysql”}
Заголовок раздела «MySQL {id=“dsn-mysql”}»username:password@tcp(host:port)/database?charset=utf8mb4SQLite {id=“dsn-sqlite”}
Заголовок раздела «SQLite {id=“dsn-sqlite”}»file:/path/to/database.db?cache=shared:memory:?mode=memoryОпции баз данных
Заголовок раздела «Опции баз данных»Типичные опции для разных БД:
PostgreSQL {id=“options-postgresql”}
Заголовок раздела «PostgreSQL {id=“options-postgresql”}»options: sslmode: "require" # disable, require, verify-ca, verify-full connect_timeout: "10" # Тайм-аут подключения в секундах application_name: "myapp"MySQL {id=“options-mysql”}
Заголовок раздела «MySQL {id=“options-mysql”}»options: charset: "utf8mb4" parseTime: "true" # Парсить значения времени в time.Time loc: "Local" # Часовой поясSQLite {id=“options-sqlite”}
Заголовок раздела «SQLite {id=“options-sqlite”}»options: cache: "shared" # shared, private mode: "rwc" # ro, rw, rwc, memory _journal_mode: "WAL" # DELETE, TRUNCATE, PERSIST, MEMORY, WAL, OFFПримеры
Заголовок раздела «Примеры»PostgreSQL с SSL
Заголовок раздела «PostgreSQL с SSL»- name: secure_postgres kind: db.sql.postgres host: "db.example.com" port: 5432 database: "production" username: "app_user" password: "${DB_PASSWORD}" pool: max_open: 50 max_idle: 10 max_lifetime: "1h" options: sslmode: "verify-full" sslcert: "/certs/client.crt" sslkey: "/certs/client.key" sslrootcert: "/certs/ca.crt" lifecycle: auto_start: trueMySQL реплика для чтения
Заголовок раздела «MySQL реплика для чтения»- name: mysql_replica kind: db.sql.mysql host: "replica.db.example.com" port: 3306 database: "app" username: "readonly" password_env: "REPLICA_PASSWORD" pool: max_open: 20 max_idle: 5 max_lifetime: "30m" options: charset: "utf8mb4" parseTime: "true" readTimeout: "30s"SQLite в памяти
Заголовок раздела «SQLite в памяти»- name: test_db kind: db.sql.sqlite file: ":memory:" pool: max_open: 1 max_idle: 1 options: cache: "shared" mode: "memory"Несколько баз данных
Заголовок раздела «Несколько баз данных»entries: # Основная база - name: users_db kind: db.sql.postgres host_env: "USERS_DB_HOST" port: 5432 database: "users" username_env: "USERS_DB_USER" password_env: "USERS_DB_PASSWORD" lifecycle: auto_start: true
# Аналитика - name: analytics_db kind: db.sql.mysql host_env: "ANALYTICS_DB_HOST" port: 3306 database: "analytics" username_env: "ANALYTICS_DB_USER" password_env: "ANALYTICS_DB_PASSWORD" lifecycle: auto_start: true
# Локальный кеш - name: cache kind: db.sql.sqlite file: "/var/cache/app.db" lifecycle: auto_start: trueРегистрация во время работы
Заголовок раздела «Регистрация во время работы»Базы данных можно регистрировать во время работы через модуль registry, что позволяет динамически настраивать подключения на основе состояния приложения или внешней конфигурации.
Lua API
Заголовок раздела «Lua API»См. Модуль SQL для API работы с базами данных.
См. также
Заголовок раздела «См. также»- Модуль SQL — справочник Lua API
- Store — key-value хранилище на основе
database.sql - Queue — обработчик очередей на основе SQL