mcpField
D
database-patterns

database-patterns

github.com/yonatangrossデータ・データベース299231 回インストール今日更新
リポジトリ

database-patterns について

Database Patternsは、AlembicとPostgreSQLを中心に、データベース移行、スキーマ設計、バージョン管理を扱うスキルです。SQLとNoSQLの選択、ドリフト検出、ゼロダウンタイム変更の実践ルールを整理しています。

主な機能

  1. 01Alembicの移行とブランチ管理
  2. 02SQL・NoSQLのスキーマ設計パターン
  3. 03インデックスとデータベース選択の指針
  4. 04スキーマのバージョン管理とドリフト検出
  5. 05ゼロダウンタイム移行とロールバック手法

活用シーン

  1. 01SQLAlchemyアプリのスキーマ変更を計画
  2. 02正規化スキーマとインデックス戦略を設計
  3. 03環境間の移行ドリフトを管理
  4. 04ロールバックと停止対策を含む変更を準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/yonatangross/orchestkit --skill database-patterns

インストール後、Claude Code で/database-patternsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

metadata.json
test-cases.json
references/
ork-delta.md
migration-testing.md
db-migration-paths.md
postgres-vs-mongodb.md
storage-and-cms.md
cost-comparison.md
rules/
_sections.md
_template.md
alembic-branching.md
migration-rollback.md
schema-indexing.md
migration-zero-downtime.md
alembic-data-migration.md
db-selection.md
versioning-drift.md
versioning-changelog.md
schema-nosql.md
schema-normalization.md
scripts/
create-migration.md
migration-template.py
detect-model-changes.py

詳細

データベースのパターン

データベースのマイグレーション、スキーマ設計、バージョン管理に関する包括的なパターンです。各カテゴリには個別のルールファイルがあり、必要に応じて rules/ から読み込まれます。

クイックリファレンス

カテゴリルール数影響度使用する場面
Alembic マイグレーション2CRITICALデータのマイグレーション、ブランチ管理
スキーマ設計3HIGH正規化、インデックス戦略、NoSQL パターン
バージョン管理2HIGH変更履歴、スキーマドリフトの検出
ダウンタイムなしのマイグレーション2CRITICAL拡張・縮小、pgroll、ロールバックの監視

| データベースの選定 | 1 | HIGH | 適切なデータベースの選定、PostgreSQL と MongoDB の比較、コスト分析 |

5 カテゴリで合計 10 個のルール

このスキルは Alembic と PostgreSQL を補完するものであり、それらのドキュメントに取って代わるものではありません。まず references/ork-delta.md を読んでください。ここには、上流のドキュメントにはないバージョンの下限、修正点、プロジェクト内の規約が記載されています。以下の表の内容はすべて、意図的に削除されています。

上流ドキュメントの対象範囲(再掲しないこと)

これらのトピックはベンダーのドキュメントで扱われています。ここで改めて説明するのではなく、参照元から取得してください。

トピック一次情報
Alembic の自動生成、非同期 env.py テンプレート、revision/upgrade/downgrade/history CLIhttps://alembic.sqlalchemy.org/en/latest/autogenerate.html(非同期テンプレートに対する当プロジェクト固有の修正は references/ork-delta.md に記載されています)
マイグレーションブランチ、マージリビジョン、タプル形式の down_revision、ブランチラベルhttps://alembic.sqlalchemy.org/en/latest/branches.html
複数データベース用の env.py、バッチ処理によるバックフィルのレシピ、マイグレーションフック、環境に応じたマイグレーションhttps://alembic.sqlalchemy.org/en/latest/cookbook.html
ロールバックとデータ整合性のテストハーネスreferences/migration-testing.md
JSONB 演算子、インデックス作成、ストレージのトレードオフhttps://www.postgresql.org/docs/current/datatype-json.html(正規形とプロジェクト内の非正規化方針については rules/schema-normalization.md に記載されています)
インデックス種別と構文の完全なリファレンス(B-tree、GIN、部分インデックス、カバリングインデックス、CREATE INDEX CONCURRENTLY、REINDEX)https://www.postgresql.org/docs/current/sql-createindex.html(実際に適用するプロジェクト内の対象範囲は rules/schema-indexing.md に記載されています)
マイグレーション中の lock_timeout、statement_timeout、アドバイザリロックhttps://www.postgresql.org/docs/current/runtime-config-client.html および rules/versioning-drift.md
列挙型の変更https://www.postgresql.org/docs/current/datatype-enum.html
テーブルパーティショニングhttps://www.postgresql.org/docs/current/ddl-partitioning.html
トリガー関数https://www.postgresql.org/docs/current/plpgsql-trigger.html
外部キーのカスケード動作https://www.postgresql.org/docs/current/ddl-constraints.html
時系列テーブルと監査証跡テーブル、CDC 変更ログ、ストアドプロシージャとビューのバージョン管理https://www.postgresql.org/docs/18/sql-createtable.html(これらが行履歴を提供すると決めつける前に references/ork-delta.md を読んでください)
HNSW とベクトルインデックスのチューニング(m、ef_construction、hnsw.ef_search)https://github.com/pgvector/pgvector
デプロイ前、バックアップ、スキーマレビューに関する一般的なチェックリストhttps://alembic.sqlalchemy.org/en/latest/tutorial.html
非同期 SQLAlchemy セッション、FastAPI の接続、接続プールのチューニングork:python-backend スキル

クイックスタート

# Alembic: Auto-generate migration from model changes
# alembic revision --autogenerate -m "add user preferences"

def upgrade() -> None:
    op.add_column('users', sa.Column('org_id', UUID(as_uuid=True), nullable=True))
    op.execute("UPDATE users SET org_id = 'default-org-uuid' WHERE org_id IS NULL")

def downgrade() -> None:
    op.drop_column('users', 'org_id')
-- Schema: Normalization to 3NF with proper indexing
-- PG18: prefer uuidv7() (time-ordered, better B-tree locality) over gen_random_uuid() (random v4)
CREATE TABLE orders (
    id UUID PRIMARY KEY DEFAULT uuidv7(),
    customer_id UUID NOT NULL REFERENCES customers(id),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_orders_customer_id ON orders(customer_id);

Alembic マイグレーション

SQLAlchemy 2.0 の非同期アプリケーション向けの Alembic によるマイグレーション管理です。

ルールファイル主なパターン
データマイグレーションrules/alembic-data-migration.mdバッチバックフィル、2 段階の NOT NULL、ダウンタイムなし
ブランチ管理rules/alembic-branching.md機能ブランチ、マージマイグレーション、競合解決

自動生成の設定はアップストリームに準拠しています。Alembic の非同期 env.py テンプレートからの唯一の変更(in_greenlet() ガード)は、references/ork-delta.md に記載されています。

スキーマ設計

正規化、インデックス作成、制約パターンを含む SQL および NoSQL のスキーマ設計です。

ルールファイル主なパターン
正規化rules/schema-normalization.md1NF~3NF、非正規化するタイミング、JSON と正規化の比較
インデックス作成rules/schema-indexing.mdB-tree、GIN、HNSW、部分インデックス/カバリングインデックス
NoSQL パターンrules/schema-nosql.md埋め込みと参照の使い分け、ドキュメント設計、シャーディング

バージョン管理

環境全体にわたるデータベースのバージョン管理と変更管理です。

ルールファイル主なパターン
変更履歴rules/versioning-changelog.mdスキーマバージョンテーブル、セマンティックバージョニング、監査証跡
ドリフト検出rules/versioning-drift.md環境の同期、チェックサム検証、マイグレーションロック

ロールバックテストは references/migration-testing.md に記載されています。 データ損失を伴うダウングレードの docstring 規約は references/ork-delta.md に記載されています。

データベースの選択

適切なデータベースを選ぶための判断フレームワークです。デフォルトは PostgreSQL です。

ルールファイル主なパターン
選択ガイドrules/db-selection.mdPostgreSQL 優先、階層別マトリックス、アンチパターン

主な決定事項

決定事項推奨事項理由
非同期ダイアレクトpostgresql+asyncpgSQLAlchemy 2.0 のネイティブな非同期サポート
NOT NULL カラム2 段階方式:まず NULL 許容にし、その後変更ロックを回避し、後方互換性を維持
大規模テーブルのインデックスCREATE INDEX CONCURRENTLYダウンタイムなし、テーブルロックなし
正規化の目標OLTP では 3NFクエリ性能を維持しながら冗長性を削減
主キー戦略分散環境では UUID、単一 DB では INTコンテキストに適したキー生成
論理削除deleted_at タイムスタンプカラム監査証跡を保持し、復旧を可能にする
マイグレーションの粒度1 ファイルにつき論理的な変更を 1 つロールバックとデバッグが容易
本番環境へのデプロイSQL を生成してレビューしてから適用本番環境では自動実行しない

アンチパターン(禁止)

# NEVER: Add NOT NULL without default or two-phase approach
op.add_column('users', sa.Column('org_id', UUID, nullable=False))  # LOCKS TABLE!

# NEVER: Use blocking index creation on large tables
op.create_index('idx_large', 'big_table', ['col'])  # Use CONCURRENTLY

# NEVER: Skip downgrade implementation
def downgrade():
    pass  # WRONG - implement proper rollback

# NEVER: Modify migration after deployment - create new migration instead

# NEVER: Run migrations automatically in production
# Use: alembic upgrade head --sql > review.sql

# NEVER: Run CONCURRENTLY inside transaction
op.execute("BEGIN; CREATE INDEX CONCURRENTLY ...; COMMIT;")  # FAILS

# NEVER: Delete migration history
command.stamp(alembic_config, "head")  # Loses history

# NEVER: Skip environments (Always: local -> CI -> staging -> production)

詳細ドキュメント

リソース説明
references/ork-delta.md修正点とプロジェクト内の規約です。最初にお読みください
references/migration-testing.mdアップグレード/ダウングレードのサイクルとデータ整合性テストハーネス
references/postgres-vs-mongodb.mdPostgreSQL 優先のデフォルト方針の根拠となる直接比較
references/db-migration-paths.mdデータベースエンジン間のマイグレーションリスクマトリックス
references/cost-comparison.mdマネージドデータベースのコスト分析
references/storage-and-cms.mdオブジェクトストレージと CMS の選定
scripts/マイグレーションテンプレート、モデル変更検出ツール

ダウンタイムなしのマイグレーション

拡張・縮小パターンとオンラインスキーマ変更を使用して、ダウンタイムなしで安全にデータベーススキーマを変更します。

ルールファイル主なパターン
拡張・縮小rules/migration-zero-downtime.md拡張フェーズ、バックフィル、縮小フェーズ、pgroll による自動化
ロールバックと監視rules/migration-rollback.mdpgroll によるロールバック、ロック監視、レプリケーション遅延、バックフィルの進捗

関連スキル

  • sqlalchemy-2-async - SQLAlchemy の非同期セッションパターン
  • ork:testing-integration - マイグレーションテストを含む統合テストパターン
  • caching - データベースの性能を補完するキャッシュレイヤー設計
  • ork:performance - 性能最適化パターン

コメント