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の構築。

試してみる — Connection String Builder

フルツールを開く