スキル nosql-expert
📦

nosql-expert

安全

スケーラブルなNoSQLデータベースの設計

このスキルは、分散NoSQLデータベース(Cassandra、DynamoDB)の設計に関する専門的ガイダンスを提供します。クエリ優先モデリング、単一テーブル設計、一般的な落とし穴(ホットパーティションなど)の回避について開発者を支援します。

対応: Claude Codex Code(CC)
🥉 75 ブロンズ
1

スキルZIPをダウンロード

2

Claudeでアップロード

設定 → 機能 → スキル → スキルをアップロードへ移動

3

オンにして利用開始

テストする

「nosql-expert」を使用しています。 Help me design a Cassandra primary key for storing user orders where I need to query by user_id and sort by order_date descending.

期待される結果:

このアクセスパターンには、複合主キーを使用してください:

**パーティションキー:** user_id(高カーディナリティ - 各ユーザーはパーティション)
**クラスタリング列:** order_date DESC(日付順にソート)

```sql
CREATE TABLE orders_by_user (
user_id uuid,
order_id uuid,
order_date timestamp,
total decimal,
status text,
PRIMARY KEY (user_id, order_date)
) WITH CLUSTERING ORDER BY (order_date DESC);
```

この設計により、ユーザーのすべての注文が1つのパーティションに格納され(効率的)、日付で自動的にソートされます。

「nosql-expert」を使用しています。 What are the key differences between SQL and NoSQL data modeling?

期待される結果:

**SQLと分散NoSQLのメンタルモデル:**

| アスペクト | SQL(リレーショナル) | NoSQL(Cassandra/DynamoDB) |
|-------|------------------|---------------------------|
| モデリング | エンティティ + 関係性をモデル化 | **クエリ優先**でモデル化 |
| 結合 | 読み取り時(高価) | 書き込み時に事前計算 |
| ストレージ | 重複を最小化 | 読み取り速度のために重複 |
| 一貫性 | ACID(強一貫性) | BASE(結果整合性) |
| スケーリング | 垂直 | 水平 |

**黄金ルール:** SQLでは*任意の*クエリ用にデータを設計します。NoSQLでは*特定の*クエリを効率的に処理するようにデータを設計します。

「nosql-expert」を使用しています。 Explain single-table design in DynamoDB

期待される結果:

**DynamoDBの単一テーブル設計:**

複合パーティション/ソートキーを使用して、1つのテーブルに複数のエンティティタイプを保存します:

| PK | SK | データ |
|----|-----|------|
| USER#123 | PROFILE | {name: 'Ian', email: '...'} |
| USER#123 | ORDER#998 | {total: 50.00, status: 'shipped'} |
| USER#123 | ORDER#999 | {total: 12.00, status: 'pending'} |

**クエリ:** PK='USER#123'は1つのリクエストでユーザー + すべての注文を取得します。

**メリット:**
- アプリケーションの複雑性の軽減
- キャパシティユニット使用の最適化
- 関連データに対して単一のネットワークラウンドトリップ

セキュリティ監査

安全
v1 • 2/24/2026

This skill is purely educational documentation about NoSQL database design patterns. The static analyzer detected patterns (external_commands, weak_crypto, system_reconnaissance) that are FALSE POSITIVES - they are documentation examples of database table names, query syntax, and design concepts. No actual code execution, network calls, or file operations exist.

1
スキャンされたファイル
114
解析された行数
3
検出結果
1
総監査数
低リスクの問題 (3)
False Positive: External Commands Detection
Static analyzer detected 'external_commands' pattern (Ruby/shell backtick execution) at multiple lines. These are FALSE POSITIVES - documentation examples showing database partition keys (e.g., USER#123), query syntax (e.g., PK='USER#123'), and Cassandra keywords (e.g., ALLOW FILTERING). This is a documentation skill containing only markdown text explaining NoSQL concepts.
False Positive: Weak Cryptographic Algorithm Detection
Static analyzer detected 'weak_crypto' patterns (17 occurrences). These are FALSE POSITIVES triggered by words like 'BASE' (BASE consistency model), 'horizontal' (scaling), 'partition', and 'key' in the database design context.
False Positive: System Reconnaissance Detection
Static analyzer detected 'system_reconnaissance' at lines discussing 'Tombstones' (Cassandra deletion markers) and 'ALLOW FILTERING' (performance anti-pattern). These are database design concepts, not system reconnaissance.
監査者: claude

品質スコア

38
アーキテクチャ
100
保守性
87
コンテンツ
50
コミュニティ
99
セキュリティ
100
仕様準拠

作れるもの

新しいCassandraスキーマの設計

ユーザーIDと日付範囲で効率的にクエリを実行する必要があるアプリケーションのCassandra主キー構造を設計します。

DynamoDB単一テーブル設計の最適化

複合キーを使用して1つのテーブルに複数のエンティティタイプ(ユーザー、注文、商品)を保存するようにDynamoDBテーブルをリファクタリングします。

ホットパーティションの問題解決

パーティションキーのカーディナリティを向上させることで、トラフィックの多いDynamoDBテーブルでのホットパーティション問題を特定し解決します。

これらのプロンプトを試す

Cassandraキーの基本的な設計
ユーザーイベントを保存するCassandra主キーを設計,帮助我设计一个Cassandra主键,用于存储用户事件。我需要按user_id查询,并按event_type在日期范围内过滤。我的分区键和集群列应该是什么?
DynamoDB単一テーブル設計
3つのエンティティタイプがあります:ユーザー注文、および製品。複合キーを使用して単一のDynamoDBテーブルを設計し、1つのリクエストでユーザーのプロフィールとそのすべての注文を取得できるようにします。
ホットパーティションの診断
私のDynamoDBテーブルは1つのパーティションでスロットリングが発生しています。パーティションキーは「status」(値:'active'、'pending'、'completed')です。問題点と修正方法を教えてください。
SQLからNoSQLへの移行
author_idで結合されたAuthorとBookテーブルを持つリレーショナルスキーマがあります。CassandraまたはDynamoDBで結合なしにこれをモデル化するにはどうすればいいですか?

ベストプラクティス

  • ホットパーティションを避けるために、高カーディナリティでパーティションキーを常に設計してください
  • 複数のテーブルをクエリする代わりに、非正規化を使用して書き込み時に結合を事前計算してください
  • パーティションが10GBを超えるのを防ぐために、複合パーティションキー(例:USER#123#2024-01)を使用してください

回避

  • 低カーディナリティのパーティションキー(status='active'やgender='m'など)を使用する(ホットパーティションが発生します)
  • 特定のキーをターゲットにする代わりに、すべてのパーティションをスキャンする「スキャッター・ギャザー」クエリを使用する
  • SQLモデリングパターン(外部キーを持つ別々のテーブル)をNoSQLデータベースに適用する

よくある質問

クエリ優先モデリングとは?
クエリ優先モデリングとは、エンティティベースの構造にクエリを適合させようとするのではなく、アプリケーションが必要な特定のクエリ вокругデータベーススキーマを設計することを意味します。まずすべてのアクセスパターンをリストしてから、各パターンを効率的に提供するテーブルを設計します。
パーティションキーの選択方法は?
トラフィックをノード間に均等に分散するために、高カーディナリティ(多くの固有値)を持つパーティションキーを選択してください。ステータスや性別などの低カーディナリティキーはホットパーティションを作成します。
単一テーブル設計とは?
単一テーブル設計は、複合パーティション/ソートキーを使用して1つのDynamoDBテーブルに複数のエンティティタイプを保存します。これにより、関連するデータ(ユーザー + 注文)を単一のリクエストで取得できます。
ホットパーティションの原因は何ですか?
ホットパーティションは、1つのパーティションキーバリューに слишком многоのトラフィックが集中したときに発生します。これにより、スループットが1つのノードの容量に制限されます。複合キーまたはシャーディング(例:USER#123#2024-01)を使用して修正してください。
CassandraやDynamoDBで結合を使用できますか?
いいえ。CassandraとDynamoDBは両方とも結合をサポートしていません。代わりに、データを非正規化して関連するデータを一緒に保存するか、各クエリパターンに最適化された複数の別々のテーブルを使用してください。
DynamoDBのGSIとLSIの違いは何ですか?
GSI(グローバルセカンダリインデックス)はパーティション全体にテーブル全体にまたがりを表現し、いつでも作成できます。LSI(ローカルセカンダリインデックス)は単一のパーティションにスコープされ、テーブル作成時に作成する必要があります。

開発者の詳細

ファイル構成

📄 SKILL.md