データベース
KamuiDash では、マネージドな PostgreSQL データベースを簡単に作成・管理できます。
対応データベース
現在、PostgreSQL のみ対応しています。
データベースを作成する
- プロジェクト詳細画面で「新規データベース」をクリック
- 以下の情報を入力:
| 項目 | 説明 | 例 |
|---|---|---|
| データベース名 | 識別用の名前 | main-db |
| スペック | リソースサイズ | Nano / Small / Medium / Large |
- 「作成」をクリック
データベースの作成には数分かかる場合があります。ステータスが「running」になったら利用可能です。
アプリケーションから接続する
環境変数の自動注入
アプリケーション作成時にデータベースを選択すると、以下の環境変数が自動的に設定されます:
| 環境変数 | 説明 |
|---|---|
DB_HOST |
ホスト名 |
DB_PORT |
ポート番号(通常 5432) |
DB_NAME |
データベース名 |
DB_USER |
ユーザー名 |
DB_PASSWORD |
パスワード |
DATABASE_URL |
接続文字列: postgresql://user:password@host:port/dbname |
DATABASE_URL を使うと1つの接続文字列で接続できます。ライブラリが個別指定を必要とする場合は DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD を個別に使うこともできます。
接続例
Node.js(pg ライブラリ)
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
});
const result = await pool.query('SELECT NOW()');
console.log(result.rows[0]);
Go
import (
"database/sql"
"os"
_ "github.com/lib/pq"
)
db, err := sql.Open("postgres", os.Getenv("DATABASE_URL"))
if err != nil {
log.Fatal(err)
}
Python
import os
import psycopg2
conn = psycopg2.connect(os.environ['DATABASE_URL'])
cursor = conn.cursor()
cursor.execute('SELECT NOW()')
print(cursor.fetchone())
接続情報を確認する
- データベース詳細画面を開く
- 「接続情報」セクションで以下を確認:
- 接続 URL
- ホスト
- ポート
- ユーザー名
- パスワード(表示ボタンをクリック)
セキュリティ注意: パスワードは安全に管理してください。
データベースのステータス
| ステータス | 説明 |
|---|---|
| success | 正常稼働中 |
| stop | 停止中 |
| error | エラー発生 |
データベースを編集する
- データベース詳細画面で「設定」タブをクリック
- 編集可能な項目:
- スペック(リソースサイズ)
- 「保存」をクリック
注意: スペック変更時はデータベースが再起動されます。
データベースを削除する
- データベース詳細画面で「設定」タブをクリック
- 「データベースを削除」をクリック
- 確認ダイアログでデータベース名を入力
- 「削除」をクリック
警告: データベースを削除すると、すべてのデータが失われます。この操作は取り消せません。削除前にバックアップを取ることを推奨します。
ベストプラクティス
接続プールを使用する
データベース接続は開いたままにせず、接続プールを使用してください。
// Bad: 接続をリクエストごとに作成
const client = new Client({
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
});
await client.connect();
// Good: 接続プールを使用
const pool = new Pool({
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
});
const result = await pool.query('SELECT * FROM users');