Fähigkeiten nosql-expert
📦

nosql-expert

Sicher

Skalierbare NoSQL-Datenbanken entwerfen

Dieser Skill bietet Experten-Anleitung für den Entwurf verteilter NoSQL-Datenbanken (Cassandra, DynamoDB). Er hilft Entwicklern, das Query-First-Modeling, Single-Table-Design zu verstehen und häufige Fallstricke wie Hot Partitions zu vermeiden.

Unterstützt: Claude Codex Code(CC)
🥉 72 Bronze
1

Die Skill-ZIP herunterladen

2

In Claude hochladen

Gehe zu Einstellungen → Fähigkeiten → Skills → Skill hochladen

3

Einschalten und loslegen

Teste es

Verwendung von "nosql-expert". Hilf mir, einen Cassandra-Primärschlüssel für das Speichern von Benutzerbestellungen zu entwerfen, wobei ich nach user_id abfragen und nach order_date absteigend sortieren muss.

Erwartetes Ergebnis:

Für dieses Zugriffsmuster verwende einen zusammengesetzten Primärschlüssel:

**Partition Key:** user_id (hohe Kardinalität – jeder Benutzer ist eine Partition)
**Clustering Column:** order_date DESC (sortiert Bestellungen nach Datum innerhalb jeder Partition)

```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);
```

Dieses Design stellt sicher, dass alle Bestellungen eines Benutzers in einer Partition gespeichert sind (effizient) und automatisch nach Datum sortiert sind.

Verwendung von "nosql-expert". Was sind die Hauptunterschiede zwischen SQL- und NoSQL-Datenmodellierung?

Erwartetes Ergebnis:

**SQL vs. verteiltes NoSQL-Denkmodell:**

| Aspekt | SQL (relational) | NoSQL (Cassandra/DynamoDB) |
|-------|------------------|---------------------------|
| Modellierung | Entitäten + Beziehungen modellieren | **Zuerst Abfragen modellieren** |
| Joins | zur Lesezeit (teuer) | Zur Schreibzeit vorberechnet |
| Speicher | Duplizierung minimieren | Für Lesegeschwindigkeit duplizieren |
| Konsistenz | ACID (stark) | BASE (eventuell) |
| Skalierung | Vertikal | Horizontal |

**Goldene Regel:** Bei SQL Daten für *beliebige* Abfragen entwerfen. Bei NoSQL Daten für *spezifische* Abfragen effizient entwerfen.

Verwendung von "nosql-expert". Erkläre Single-Table-Design in DynamoDB

Erwartetes Ergebnis:

**DynamoDB-Single-Table-Design:**

Speichere mehrere Entitätstypen in einer Tabelle mithilfe von zusammengesetzten Schlüsseln:

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

**Abfrage:** PK='USER#123' ruft Benutzer + alle Bestellungen in EINER Anfrage ab.

**Vorteile:**
- Reduzierte Anwendungskomplexität
- Optimierte Kapazitätseinheits-Nutzung
- Ein einziger Netzwerk-Roundtrip für verwandte Daten

Sicherheitsaudit

Sicher
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
Gescannte Dateien
114
Analysierte Zeilen
3
befunde
1
Gesamtzahl Audits
Probleme mit niedrigem Risiko (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.
Auditiert von: claude

Qualitätsbewertung

38
Architektur
100
Wartbarkeit
87
Inhalt
31
Community
99
Sicherheit
100
Spezifikationskonformität

Was du bauen kannst

Neues Cassandra-Schema entwerfen

Cassandra-Primärschlüsselstruktur für eine Anwendung entwerfen, die effizient nach Benutzer-ID und Zeitraum abfragen muss.

DynamoDB-Single-Table-Design optimieren

DynamoDB-Tabelle refactorieren, um mehrere Entitätstypen (Benutzer, Bestellungen, Produkte) in einer Tabelle mithilfe von Composite Keys zu speichern.

Hot-Partition-Probleme beheben

Hot-Partition-Probleme in einer DynamoDB-Tabelle mit hohem Datenverkehr identifizieren und lösen, indem die Partition-Key-Kardinalität verbessert wird.

Probiere diese Prompts

Grundlegendes Cassandra-Key-Design
Hilf mir, einen Cassandra-Primärschlüssel für eine Tabelle zu entwerfen, die Benutzerereignisse speichert. Ich muss nach user_id abfragen und innerhalb eines Zeitraums nach event_type filtern. Wie sollte mein Partition Key und meine Clustering Columns aussehen?
DynamoDB-Single-Table-Design
Ich habe drei Entitätstypen: Users, Orders und Products. Entwirf eine einzelne DynamoDB-Tabelle mithilfe von Composite Keys, bei der ich das Benutzerprofil und alle Bestellungen in einer einzigen Anfrage abrufen kann.
Hot-Partition-Diagnose
Meine DynamoDB-Tabelle erlebt Drosselung auf einer Partition. Der Partition Key ist 'status' (Werte: 'active', 'pending', 'completed'). Was ist falsch und wie behebe ich es?
Migration von SQL zu NoSQL
Ich habe ein relationales Schema mit Author- und Book-Tabellen, die über author_id verknüpft sind. Wie sollte ich das in Cassandra oder DynamoDB ohne Joins modellieren?

Bewährte Verfahren

  • Entwerfe Partition Keys immer mit hoher Kardinalität, um Hot Partitions zu vermeiden
  • Berechne Joins zur Schreibzeit mithilfe von Denormalisierung vor, anstatt mehrere Tabellen abzufragen
  • Verwende zusammengesetzte Partition Keys (z.B. USER#123#2024-01), um zu verhindern, dass Partitionen 10GB überschreiten

Vermeiden

  • Verwendung von Partition Keys mit niedriger Kardinalität wie status='active' oder gender='m' (erzeugt Hot Partitions)
  • Verwendung von 'Scatter-Gather'-Abfragen, die alle Partitionen scannen, anstatt spezifische Keys zu zielen
  • Anwendung von SQL-Modellierungsmustern (separate Tabellen mit Fremdschlüsseln) auf NoSQL-Datenbanken

Häufig gestellte Fragen

Was ist Query-First-Modeling?
Query-First-Modeling bedeutet, Ihr Datenbankschema um die spezifischen Abfragen herum zu entwerfen, die Ihre Anwendung benötigt, anstatt zu versuchen, Abfragen in eine entitätsbasierte Struktur zu pressen. Listen Sie zuerst alle Zugriffsmuster auf, und entwerfen Sie dann Tabellen, die jedes Muster effizient bedienen.
Wie wähle ich einen Partition Key?
Wählen Sie einen Partition Key mit hoher Kardinalität (viele eindeutige Werte), um den Datenverkehr gleichmäßig über Knoten zu verteilen. Vermeiden Sie Keys mit niedriger Kardinalität wie status oder gender, die Hot Partitions erzeugen würden.
Was ist Single-Table-Design?
Single-Table-Design speichert mehrere Entitätstypen in einer DynamoDB-Tabelle mithilfe von zusammengesetzten Partition/Sort-Keys. Dies ermöglicht das Abrufen verwandter Daten (Benutzer + Bestellungen) in einer einzigen Anfrage.
Was verursacht Hot Partitions?
Hot Partitions entstehen, wenn zu viel Datenverkehr einen einzelnen Partition-Key-Wert trifft. Dies begrenzt den Durchsatz auf die Kapazität eines Knotens. Behebung durch Verwendung von zusammengesetzten Keys oder Sharding (z.B. USER#123#2024-01).
Kann ich Joins in Cassandra oder DynamoDB verwenden?
Nein. Weder Cassandra noch DynamoDB unterstützen Joins. Stattdessen sollten Sie Ihre Daten denormalisieren und verwandte Daten zusammen speichern oder mehrere separate Tabellen verwenden, die für jedes Abfragemuster optimiert sind.
Was ist der Unterschied zwischen GSI und LSI in DynamoDB?
GSI (Global Secondary Index) erstreckt sich über die gesamte Tabelle über Partitionen hinweg und kann jederzeit erstellt werden. LSI (Local Secondary Index) ist auf eine einzelne Partition beschränkt und muss zum Zeitpunkt der Tabellenerstellung erstellt werden.

Entwicklerdetails

Dateistruktur

📄 SKILL.md