Sequelizeの接続文字列と設定
接続文字列またはオブジェクトベースの設定でSequelize ORMを構成する方法。PostgreSQL、MySQL、SQLite、MSSQLのダイアレクトオプションを解説します。
Best Practices
詳細な説明
Sequelizeの接続形式
Node.jsの最も人気のあるORMの一つであるSequelizeは、URI文字列とオブジェクトベースの設定の両方をサポートしています。
URI文字列
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize('postgresql://user:pass@localhost:5432/mydb');
オブジェクト設定
const sequelize = new Sequelize('mydb', 'user', 'password', {
host: 'localhost',
port: 5432,
dialect: 'postgres',
logging: false,
pool: {
max: 10,
min: 2,
acquire: 30000,
idle: 10000,
},
});
ダイアレクト別のURI
PostgreSQL
postgres://user:pass@host:5432/database
MySQL
mysql://user:pass@host:3306/database
SQLite
const sequelize = new Sequelize({
dialect: 'sqlite',
storage: './database.sqlite',
});
SequelizeのSQLiteはURIの代わりにstorageを使用します。
MSSQL
mssql://user:pass@host:1433/database
SSL設定
SequelizeはdialectOptionsを通じてSSLオプションを渡します:
const sequelize = new Sequelize('postgres://user:pass@host/db', {
dialectOptions: {
ssl: {
require: true,
rejectUnauthorized: true,
ca: fs.readFileSync('/path/to/ca.pem').toString(),
},
},
});
コネクションプールオプション
| オプション | 目的 | デフォルト |
|---|---|---|
pool.max |
最大接続数 | 5 |
pool.min |
最小接続数 | 0 |
pool.acquire |
接続取得の最大時間(ms) | 60000 |
pool.idle |
接続がアイドルできる最大時間(ms) | 10000 |
pool.evict |
アイドル接続を削除する間隔(ms) | 1000 |
環境変数パターン
一般的なパターンは、本番ではDATABASE_URLを使い、開発では明示的な設定を使うことです:
const sequelize = process.env.DATABASE_URL
? new Sequelize(process.env.DATABASE_URL, {
dialectOptions: { ssl: { require: true } },
})
: new Sequelize('mydb', 'root', '', {
host: 'localhost',
dialect: 'mysql',
});
ユースケース
コネクションプーリング、SSL、開発・本番の環境別データベース設定を持つSequelizeベースのNode.js APIの構築。