mcpField
D
database-sharding

database-sharding

github.com/aj-geddesデータ・データベース373443 回インストール34 週間前に更新
リポジトリ

database-sharding について

サーバー間でデータベースを水平分割するためのスキルです。シャーディング戦略、キー選定、シャード間クエリを扱い、容量拡大やテナント・地域別データの分散を目指すチーム向けです。

主な機能

  1. 01範囲ベースのシャーディング
  2. 02ハッシュベースのシャーディング
  3. 03ディレクトリベースのシャーディング
  4. 04コンシステントハッシュ
  5. 05シャードキーの選定
  6. 06シャード間クエリのパターン

活用シーン

  1. 01単一サーバーの容量を超える拡張
  2. 02読み書きスループットの分散
  3. 03シャードによるテナントデータの分離
  4. 04地域別のデータ分散

インストール

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

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill database-sharding

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

同梱ファイル

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

references/
directory-based-sharding.md
hash-based-sharding.md
range-based-sharding.md
scripts/
validate-schema.sh
templates/
migration-template.sql

詳細

データベースシャーディング

目次

概要

複数のデータベースサーバーにわたってデータを水平分割します。シャーディング戦略、一貫性のあるハッシュ、シャードキーの選択、シャードをまたぐクエリのパターンを扱います。

使用する場面

  • データベースのサイズが単一サーバーの容量を超える場合
  • 読み取り/書き込みスループットを水平スケーリングする必要がある場合
  • 地理的なデータ分散が必要な場合
  • マルチテナントのデータ分離が必要な場合
  • 分散アーキテクチャによってコストを最適化する場合
  • データベースインスタンス間で負荷分散する場合

クイックスタート

最小限の動作する例:

-- Define shard ranges
-- Shard 0: user_id 0-999999
-- Shard 1: user_id 1000000-1999999
-- Shard 2: user_id 2000000-2999999

CREATE TABLE users_shard_0 (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id BIGINT NOT NULL,
  email VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  CONSTRAINT shard_0_range CHECK (user_id BETWEEN 0 AND 999999)
);

CREATE TABLE users_shard_1 (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id BIGINT NOT NULL,
  email VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  CONSTRAINT shard_1_range CHECK (user_id BETWEEN 1000000 AND 1999999)
);

-- Function to determine shard
CREATE OR REPLACE FUNCTION get_shard_id(p_user_id BIGINT)
RETURNS INT AS $$
BEGIN
// ... (see reference guides for full implementation)

リファレンスガイド

詳細な実装については、references/ ディレクトリを参照してください。

ガイド内容
範囲ベースのシャーディング範囲ベースのシャーディング
ハッシュベースのシャーディングハッシュベースのシャーディング
ディレクトリベースのシャーディングディレクトリベースのシャーディング

ベストプラクティス

✅ 推奨事項
  • 確立されたパターンと規約に従います
  • クリーンで保守しやすいコードを書きます
  • 適切なドキュメントを追加します
  • デプロイ前に十分にテストします
❌ 禁止事項
  • テストや検証を省略しません
  • エラー処理を無視しません
  • 設定値をハードコードしません

コメント