nosql-expert
スケーラブルなNoSQLデータベースの設計
このスキルは、分散NoSQLデータベース(Cassandra、DynamoDB)の設計に関する専門的ガイダンスを提供します。クエリ優先モデリング、単一テーブル設計、一般的な落とし穴(ホットパーティションなど)の回避について開発者を支援します。
スキルZIPをダウンロード
Claudeでアップロード
設定 → 機能 → スキル → スキルをアップロードへ移動
オンにして利用開始
テストする
「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つのリクエストでユーザー + すべての注文を取得します。
**メリット:**
- アプリケーションの複雑性の軽減
- キャパシティユニット使用の最適化
- 関連データに対して単一のネットワークラウンドトリップ
セキュリティ監査
安全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.
低リスクの問題 (3)
品質スコア
作れるもの
新しいCassandraスキーマの設計
ユーザーIDと日付範囲で効率的にクエリを実行する必要があるアプリケーションのCassandra主キー構造を設計します。
DynamoDB単一テーブル設計の最適化
複合キーを使用して1つのテーブルに複数のエンティティタイプ(ユーザー、注文、商品)を保存するようにDynamoDBテーブルをリファクタリングします。
ホットパーティションの問題解決
パーティションキーのカーディナリティを向上させることで、トラフィックの多いDynamoDBテーブルでのホットパーティション問題を特定し解決します。
これらのプロンプトを試す
ユーザーイベントを保存するCassandra主キーを設計,帮助我设计一个Cassandra主键,用于存储用户事件。我需要按user_id查询,并按event_type在日期范围内过滤。我的分区键和集群列应该是什么?
3つのエンティティタイプがあります:ユーザー注文、および製品。複合キーを使用して単一のDynamoDBテーブルを設計し、1つのリクエストでユーザーのプロフィールとそのすべての注文を取得できるようにします。
私のDynamoDBテーブルは1つのパーティションでスロットリングが発生しています。パーティションキーは「status」(値:'active'、'pending'、'completed')です。問題点と修正方法を教えてください。
author_idで結合されたAuthorとBookテーブルを持つリレーショナルスキーマがあります。CassandraまたはDynamoDBで結合なしにこれをモデル化するにはどうすればいいですか?
ベストプラクティス
- ホットパーティションを避けるために、高カーディナリティでパーティションキーを常に設計してください
- 複数のテーブルをクエリする代わりに、非正規化を使用して書き込み時に結合を事前計算してください
- パーティションが10GBを超えるのを防ぐために、複合パーティションキー(例:USER#123#2024-01)を使用してください
回避
- 低カーディナリティのパーティションキー(status='active'やgender='m'など)を使用する(ホットパーティションが発生します)
- 特定のキーをターゲットにする代わりに、すべてのパーティションをスキャンする「スキャッター・ギャザー」クエリを使用する
- SQLモデリングパターン(外部キーを持つ別々のテーブル)をNoSQLデータベースに適用する