mcpField
D
databases

databases

github.com/mrgoonieデータ・データベース2.2k436 回インストール30 週間前に更新
リポジトリ

databases について

データベースの設計者、開発者、管理者向けに、MongoDBとPostgreSQLのデータモデリング、クエリ、性能、運用を解説するガイドです。移行、バックアップ、性能確認のスクリプトも含みます。

主な機能

  1. 01MongoDBとPostgreSQLのガイド
  2. 02データモデリングとクエリ例
  3. 03インデックスと性能最適化資料
  4. 04移行・バックアップスクリプト
  5. 05データベース選定の案内

活用シーン

  1. 01プロジェクトに適したDBの選定
  2. 02クエリや集約処理の作成
  3. 03遅いクエリの調査とインデックス調整
  4. 04データベースの移行、バックアップ、復元

インストール

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

$npx skills add https://github.com/mrgoonie/claudekit-skills --skill databases

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

同梱ファイル

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

references/
mongodb-aggregation.md
mongodb-atlas.md
mongodb-crud.md
mongodb-indexing.md
postgresql-administration.md
postgresql-performance.md
postgresql-psql-cli.md
postgresql-queries.md
scripts/
.coverage
db_backup.py
db_migrate.py
db_performance_check.py
requirements.txt
scripts/tests/
coverage-db.json
requirements.txt
test_db_backup.py
test_db_migrate.py
test_db_performance_check.py

詳細

データベーススキル

MongoDB(ドキュメント指向)とPostgreSQL(リレーショナル)データベースを扱うための統合ガイドです。用途に合ったデータベースを選び、両方のシステムを習得しましょう。

このスキルを使用する場面

次のような場合に使用します:

  • データベーススキーマとデータモデルの設計
  • クエリ(SQLまたはMongoDBクエリ言語)の作成
  • 集約パイプラインや複雑な結合の構築
  • インデックスとクエリパフォーマンスの最適化
  • データベースのマイグレーションの実装
  • レプリケーション、シャーディング、クラスタリングの設定
  • バックアップと災害復旧の構成
  • データベースユーザーと権限の管理
  • 遅いクエリやパフォーマンスの問題の分析
  • 本番データベースのデプロイの管理

データベース選択ガイド

次のような場合はMongoDBを選びます:
  • スキーマの柔軟性:構造が頻繁に変わる、異種データを扱う
  • ドキュメント中心:自然なJSON/BSONデータモデル
  • 水平スケーリング:複数のサーバー間でシャーディングする必要がある
  • 高い書き込みスループット:IoT、ロギング、リアルタイム分析
  • ネストされた/階層的なデータ:埋め込みドキュメントが適している
  • 迅速なプロトタイピング:マイグレーションなしでスキーマを進化させられる

最適な用途: コンテンツ管理、カタログ、IoT時系列データ、リアルタイム分析、モバイルアプリ、ユーザープロフィール

次のような場合はPostgreSQLを選びます:
  • 強い一貫性:ACIDトランザクションが不可欠
  • 複雑なリレーションシップ:多対多の結合、参照整合性
  • SQLの要件:チームの専門知識、レポートツール、BIシステム
  • データ整合性:厳格なスキーマ検証、制約
  • 成熟したエコシステム:豊富なツール、拡張機能
  • 複雑なクエリ:ウィンドウ関数、CTE、分析ワークロード

最適な用途: 金融システム、eコマースのトランザクション、ERP、CRM、データウェアハウス、分析

どちらもサポートする機能:
  • JSON/JSONBの保存とクエリ
  • 全文検索機能
  • 地理空間クエリとインデックス作成
  • レプリケーションと高可用性
  • ACIDトランザクション(MongoDB 4.0以降)
  • 強力なセキュリティ機能

クイックスタート

MongoDBのセットアップ
# Atlas (Cloud) - Recommended
# 1. Sign up at mongodb.com/atlas
# 2. Create M0 free cluster
# 3. Get connection string

# Connection
mongodb+srv://user:[email protected]/db

# Shell
mongosh "mongodb+srv://cluster.mongodb.net/mydb"

# Basic operations
db.users.insertOne({ name: "Alice", age: 30 })
db.users.find({ age: { $gte: 18 } })
db.users.updateOne({ name: "Alice" }, { $set: { age: 31 } })
db.users.deleteOne({ name: "Alice" })
PostgreSQLのセットアップ
# Ubuntu/Debian
sudo apt-get install postgresql postgresql-contrib

# Start service
sudo systemctl start postgresql

# Connect
psql -U postgres -d mydb

# Basic operations
CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT, age INT);
INSERT INTO users (name, age) VALUES ('Alice', 30);
SELECT * FROM users WHERE age >= 18;
UPDATE users SET age = 31 WHERE name = 'Alice';
DELETE FROM users WHERE name = 'Alice';

一般的な操作

作成/挿入
// MongoDB
db.users.insertOne({ name: "Bob", email: "[email protected]" })
db.users.insertMany([{ name: "Alice" }, { name: "Charlie" }])
-- PostgreSQL
INSERT INTO users (name, email) VALUES ('Bob', '[email protected]');
INSERT INTO users (name, email) VALUES ('Alice', NULL), ('Charlie', NULL);
読み取り/クエリ
// MongoDB
db.users.find({ age: { $gte: 18 } })
db.users.findOne({ email: "[email protected]" })
-- PostgreSQL
SELECT * FROM users WHERE age >= 18;
SELECT * FROM users WHERE email = '[email protected]' LIMIT 1;
更新
// MongoDB
db.users.updateOne({ name: "Bob" }, { $set: { age: 25 } })
db.users.updateMany({ status: "pending" }, { $set: { status: "active" } })
-- PostgreSQL
UPDATE users SET age = 25 WHERE name = 'Bob';
UPDATE users SET status = 'active' WHERE status = 'pending';
削除
// MongoDB
db.users.deleteOne({ name: "Bob" })
db.users.deleteMany({ status: "deleted" })
-- PostgreSQL
DELETE FROM users WHERE name = 'Bob';
DELETE FROM users WHERE status = 'deleted';
インデックス作成
// MongoDB
db.users.createIndex({ email: 1 })
db.users.createIndex({ status: 1, createdAt: -1 })
-- PostgreSQL
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_status_created ON users(status, created_at DESC);

リファレンスの案内

MongoDBリファレンス
  • mongodb-crud.md - CRUD操作、クエリ演算子、アトミック更新
  • mongodb-aggregation.md - 集約パイプライン、ステージ、演算子、パターン
  • mongodb-indexing.md - インデックスの種類、複合インデックス、パフォーマンス最適化
  • mongodb-atlas.md - Atlasクラウドのセットアップ、クラスター、モニタリング、検索
PostgreSQLリファレンス

Pythonユーティリティ

script/ 内のデータベースユーティリティスクリプト:

  • db_migrate.py - 両方のデータベースのマイグレーションを生成して適用
  • db_backup.py - MongoDBとPostgreSQLのバックアップと復元
  • db_performance_check.py - 遅いクエリを分析し、インデックスを推奨
# Generate migration
python scripts/db_migrate.py --db mongodb --generate "add_user_index"

# Run backup
python scripts/db_backup.py --db postgres --output /backups/

# Check performance
python scripts/db_performance_check.py --db mongodb --threshold 100ms

主な違いのまとめ

機能MongoDBPostgreSQL
データモデルドキュメント(JSON/BSON)リレーショナル(テーブル/行)
スキーマ柔軟、動的厳格、事前定義
クエリ言語MongoDBクエリ言語SQL
結合$lookup(限定的)ネイティブ、最適化済み
トランザクション複数ドキュメント(4.0以降)ネイティブACID
スケーリング水平(シャーディング)垂直(主)、水平(拡張機能)
インデックス単一、複合、テキスト、地理空間などB-tree、ハッシュ、GiST、GINなど

ベストプラクティス

MongoDB:

  • 1対少数のリレーションシップには埋め込みドキュメントを使用します
  • 1対多または多対多にはドキュメントを参照します
  • 頻繁にクエリされるフィールドにインデックスを作成します
  • 複雑な変換には集計パイプラインを使用します
  • 本番環境では認証と TLS を有効にします
  • マネージドホスティングには Atlas を使用します

PostgreSQL:

  • スキーマを第3正規形(3NF)に正規化し、パフォーマンス向上のために非正規化します
  • 参照整合性には外部キーを使用します
  • 外部キーと、頻繁にフィルタリングされる列にインデックスを作成します
  • EXPLAIN ANALYZE を使用してクエリを最適化します
  • 定期的に VACUUM と ANALYZE を実行してメンテナンスします
  • Web アプリではコネクションプーリング(pgBouncer)を使用します

リソース

コメント