database-sharding について
サーバー間でデータベースを水平分割するためのスキルです。シャーディング戦略、キー選定、シャード間クエリを扱い、容量拡大やテナント・地域別データの分散を目指すチーム向けです。
主な機能
- 01範囲ベースのシャーディング
- 02ハッシュベースのシャーディング
- 03ディレクトリベースのシャーディング
- 04コンシステントハッシュ
- 05シャードキーの選定
- 06シャード間クエリのパターン
活用シーン
- 01単一サーバーの容量を超える拡張
- 02読み書きスループットの分散
- 03シャードによるテナントデータの分離
- 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.mdhash-based-sharding.mdrange-based-sharding.mdscripts/validate-schema.shtemplates/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/ ディレクトリを参照してください。
| ガイド | 内容 |
|---|---|
| 範囲ベースのシャーディング | 範囲ベースのシャーディング |
| ハッシュベースのシャーディング | ハッシュベースのシャーディング |
| ディレクトリベースのシャーディング | ディレクトリベースのシャーディング |
ベストプラクティス
✅ 推奨事項
- 確立されたパターンと規約に従います
- クリーンで保守しやすいコードを書きます
- 適切なドキュメントを追加します
- デプロイ前に十分にテストします
❌ 禁止事項
- テストや検証を省略しません
- エラー処理を無視しません
- 設定値をハードコードしません
コメント
Markdown 対応