データベースシステム
データベースシステム
Section titled “データベースシステム”SQL データベース接続プーリングと設定。PostgreSQL、MySQL、SQLiteをサポート。
エントリ種別
Section titled “エントリ種別”| 種別 | 説明 |
|---|---|
db.sql.postgres | PostgreSQLデータベース |
db.sql.mysql | MySQLデータベース |
db.sql.sqlite | SQLiteデータベース |
標準データベース(PostgreSQL、MySQL)
Section titled “標準データベース(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: trueSQLite
Section titled “SQLite” - name: cache_db kind: db.sql.sqlite file: "/var/data/cache.db" # インメモリには:memory:を使用 pool: max_open: 1 max_idle: 1 max_lifetime: "1h" options: cache: "shared" lifecycle: auto_start: true接続フィールド
Section titled “接続フィールド”標準データベースフィールド
Section titled “標準データベースフィールド”| フィールド | 型 | 説明 |
|---|---|---|
host | string | データベースホストアドレス |
port | int | データベースポート番号 |
database | string | データベース名 |
username | string | データベースユーザー |
password | string | データベースパスワード |
pool | object | 接続プール設定 |
options | map | データベース固有のオプション |
lifecycle | object | ライフサイクル設定 |
SQLiteフィールド
Section titled “SQLiteフィールド”| フィールド | 型 | 説明 |
|---|---|---|
file | string | データベースファイルパスまたは:memory: |
pool | object | 接続プール設定 |
options | map | SQLite固有のオプション |
lifecycle | object | ライフサイクル設定 |
環境変数フィールド
Section titled “環境変数フィールド”環境変数またはenv.variableエントリから値をロードするには_envサフィックスを使用:
| フィールド | 説明 |
|---|---|
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.variableエントリを参照env.variableエントリを使用してください。セキュアなシークレット管理については環境変数を参照してください。
接続プーリング動作を設定。プール設定はGoのdatabase/sql接続プールにマップされます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
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を構築します:
PostgreSQL {id=“dsn-postgresql”}
Section titled “PostgreSQL {id=“dsn-postgresql”}”postgres://username:password@host:port/database?sslmode=disableMySQL {id=“dsn-mysql”}
Section titled “MySQL {id=“dsn-mysql”}”username:password@tcp(host:port)/database?charset=utf8mb4SQLite {id=“dsn-sqlite”}
Section titled “SQLite {id=“dsn-sqlite”}”file:/path/to/database.db?cache=shared:memory:?mode=memoryデータベースオプション
Section titled “データベースオプション”一般的なデータベース固有のオプション:
PostgreSQL {id=“options-postgresql”}
Section titled “PostgreSQL {id=“options-postgresql”}”options: sslmode: "require" # disable, require, verify-ca, verify-full connect_timeout: "10" # 接続タイムアウト(秒) application_name: "myapp"MySQL {id=“options-mysql”}
Section titled “MySQL {id=“options-mysql”}”options: charset: "utf8mb4" parseTime: "true" # 時間値をtime.Timeにパース loc: "Local" # タイムゾーンSQLite {id=“options-sqlite”}
Section titled “SQLite {id=“options-sqlite”}”options: cache: "shared" # shared, private mode: "rwc" # ro, rw, rwc, memory _journal_mode: "WAL" # DELETE, TRUNCATE, PERSIST, MEMORY, WAL, OFFSSL付きPostgreSQL
Section titled “SSL付きPostgreSQL”- 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リードレプリカ
Section titled “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インメモリ
Section titled “SQLiteインメモリ”- name: test_db kind: db.sql.sqlite file: ":memory:" pool: max_open: 1 max_idle: 1 options: cache: "shared" mode: "memory"複数データベースセットアップ
Section titled “複数データベースセットアップ”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ランタイム登録
Section titled “ランタイム登録”データベースはレジストリモジュールを使用してランタイムで登録でき、アプリケーション状態や外部設定に基づいた動的なデータベース設定が可能です。
Lua API
Section titled “Lua API”データベース操作APIについてはSQLモジュールを参照してください。