New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Design database schemas, plan data migrations

Database Designer - POWERFUL Tier Skill

by alirezarezvani · MIT license · ★ 26,349 on GitHub · updated Aug 30

Database Designer - POWERFUL Tier Skill cover

Use when the user asks to design database schemas, plan data migrations, optimize queries, choose between SQL and NoSQL, or model data relationships.

---
name: "database-designer"
description: "Use when the user asks to design database schemas, plan data migrations, optimize queries, choose between SQL and NoSQL, or model data relationships."
---

# Database Designer - POWERFUL Tier Skill

## Overview

A comprehensive database design skill that provides expert-level analysis, optimization, and migration capabilities for modern database systems. This skill combines theoretical principles with practical tools to help architects and developers create scalable, performant, and maintainable database schemas.

## Core Competencies

### Schema Design & Analysis
- **Normalization Analysis**: Automated detection of normalization levels (1NF through BCNF)
- **Denormalization Strategy**: Smart recommendations for performance optimization
- **Data Type Optimization**: Identification of inappropriate types and size issues
- **Constraint Analysis**: Missing foreign keys, unique constraints, and null checks

Overview

A comprehensive database design skill that provides expert-level analysis, optimization, and migration capabilities for modern database systems. This skill combines theoretical principles with practical tools to help architects and developers create scalable, performant, and maintainable database schemas.

Manual install (npx, ZIP)
Claude Codenpx skills add alirezarezvani/claude-skills --skill database-designer -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/alirezarezvani/claude-skills/tar.gz/19392f7a0826 \ | tar -xz -C ~/.claude/skills --strip-components=3 claude-skills-19392f7a0826/engineering/skills/database-designer
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/fe9ebf14a39d62e2e292/database-designer.zip" -OutFile "$env:TEMP\database-designer.zip"; Expand-Archive "$env:TEMP\database-designer.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md12.5 KB
  • README.md11.7 KB
  • index_optimizer.py38.0 KB
  • migration_generator.py49.2 KB
  • schema_analyzer.py41.0 KB
  • assets/3 files · 26.3 KB
  • expected_outputs/3 files · 14.3 KB
  • references/4 files · 51.6 KB
Read the files here
alirezarezvani/19392f715 files
SKILL.md
Show the full text315 lines

Database Designer - POWERFUL Tier Skill

Overview

A comprehensive database design skill that provides expert-level analysis, optimization, and migration capabilities for modern database systems. This skill combines theoretical principles with practical tools to help architects and developers create scalable, performant, and maintainable database schemas.

Core Competencies

Schema Design & Analysis
  • Normalization Analysis: Automated detection of normalization levels (1NF through BCNF)
  • Denormalization Strategy: Smart recommendations for performance optimization
  • Data Type Optimization: Identification of inappropriate types and size issues
  • Constraint Analysis: Missing foreign keys, unique constraints, and null checks
  • Naming Convention Validation: Consistent table and column naming patterns
  • ERD Generation: Automatic Mermaid diagram creation from DDL
Index Optimization
  • Index Gap Analysis: Identification of missing indexes on foreign keys and query patterns
  • Composite Index Strategy: Optimal column ordering for multi-column indexes
  • Index Redundancy Detection: Elimination of overlapping and unused indexes
  • Performance Impact Modeling: Selectivity estimation and query cost analysis
  • Index Type Selection: B-tree, hash, partial, covering, and specialized indexes
Migration Management
  • Zero-Downtime Migrations: Expand-contract pattern implementation
  • Schema Evolution: Safe column additions, deletions, and type changes
  • Data Migration Scripts: Automated data transformation and validation
  • Rollback Strategy: Complete reversal capabilities with validation
  • Execution Planning: Ordered migration steps with dependency resolution

Tool Workflow (run these — do not analyze schemas by hand)

All paths relative to this skill folder; sample inputs in assets/.

1. Analyze the schema
python3 schema_analyzer.py --input schema.sql --generate-erd --output-format json -o analysis.json

Accepts SQL DDL or JSON schema (assets/sample_schema.sql / sample_schema.json). Output includes normalization findings, missing constraints, naming issues, and a Mermaid ERD — show the ERD to the user and fix flagged issues before optimizing.

2. Optimize indexes against real query patterns
python3 index_optimizer.py --schema assets/sample_schema.json --queries assets/sample_query_patterns.json --analyze-existing --format json -o indexes.json

Write the user's hot queries into a query-patterns JSON first (copy assets/sample_query_patterns.json). Output is a priority-ordered list of CREATE INDEX recommendations plus redundant-index removals.

3. Generate the migration
python3 migration_generator.py --current current_schema.json --target target_schema.json --zero-downtime --format sql -o migration.sql

--zero-downtime emits an expand-contract plan; --validate-only checks feasibility without generating SQL.

4. Verification loop

Re-run step 1 on the target schema and assert the issues found in the first pass are gone; run migration_generator.py --validate-only before handing over the migration.

Database Design Principles

→ See references/database-design-reference.md for details

Best Practices

Schema Design
  1. Use meaningful names: Clear, consistent naming conventions
  2. Choose appropriate data types: Right-sized columns for storage efficiency
  3. Define proper constraints: Foreign keys, check constraints, unique indexes
  4. Consider future growth: Plan for scale from the beginning
  5. Document relationships: Clear foreign key relationships and business rules
Performance Optimization
  1. Index strategically: Cover common query patterns without over-indexing
  2. Monitor query performance: Regular analysis of slow queries
  3. Partition large tables: Improve query performance and maintenance
  4. Use appropriate isolation levels: Balance consistency with performance
  5. Implement connection pooling: Efficient resource utilization
Security Considerations
  1. Principle of least privilege: Grant minimal necessary permissions
  2. Encrypt sensitive data: At rest and in transit
  3. Audit access patterns: Monitor and log database access
  4. Validate inputs: Prevent SQL injection attacks
  5. Regular security updates: Keep database software current

Query Generation Patterns

SELECT with JOINs
-- INNER JOIN: only matching rows
SELECT o.id, c.name, o.total
FROM orders o
INNER JOIN customers c ON c.id = o.customer_id;

-- LEFT JOIN: all left rows, NULLs for non-matches
SELECT c.name, COUNT(o.id) AS order_count
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;

-- Self-join: hierarchical data (employees/managers)
SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;
Common Table Expressions (CTEs)
-- Recursive CTE for org chart
WITH RECURSIVE org AS (
  SELECT id, name, manager_id, 1 AS depth
  FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.id, e.name, e.manager_id, o.depth + 1
  FROM employees e INNER JOIN org o ON o.id = e.manager_id
)
SELECT * FROM org ORDER BY depth, name;
Window Functions
-- ROW_NUMBER for pagination / dedup
SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) AS rn
FROM orders;

-- RANK with gaps, DENSE_RANK without gaps
SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank FROM leaderboard;

-- LAG/LEAD for comparing adjacent rows
SELECT date, revenue,
  revenue - LAG(revenue) OVER (ORDER BY date) AS daily_change
FROM daily_sales;
Aggregation Patterns
-- FILTER clause (PostgreSQL) for conditional aggregation
SELECT
  COUNT(*) AS total,
  COUNT(*) FILTER (WHERE status = 'active') AS active,
  AVG(amount) FILTER (WHERE amount > 0) AS avg_positive
FROM accounts;

-- GROUPING SETS for multi-level rollups
SELECT region, product, SUM(revenue)
FROM sales
GROUP BY GROUPING SETS ((region, product), (region), ());

Migration Patterns

Up/Down Migration Scripts

Every migration must have a reversible counterpart. Name files with a timestamp prefix for ordering:

migrations/
├── 20260101_000001_create_users.up.sql
├── 20260101_000001_create_users.down.sql
├── 20260115_000002_add_users_email_index.up.sql
└── 20260115_000002_add_users_email_index.down.sql
Zero-Downtime Migrations (Expand/Contract)

Use the expand-contract pattern to avoid locking or breaking running code:

  1. Expand — add the new column/table (nullable, with default)
  2. Migrate data — backfill in batches; dual-write from application
  3. Transition — application reads from new column; stop writing to old
  4. Contract — drop old column in a follow-up migration
Data Backfill Strategies
-- Batch update to avoid long-running locks
UPDATE users SET email_normalized = LOWER(email)
WHERE id IN (SELECT id FROM users WHERE email_normalized IS NULL LIMIT 5000);
-- Repeat in a loop until 0 rows affected
Rollback Procedures
  • Always test the down.sql in staging before deploying up.sql to production
  • Keep rollback window short — if the contract step has run, rollback requires a new forward migration
  • For irreversible changes (dropping columns with data), take a logical backup first

Performance Optimization

Indexing Strategies
Index Type Use Case Example
B-tree (default) Equality, range, ORDER BY CREATE INDEX idx_users_email ON users(email);
GIN Full-text search, JSONB, arrays CREATE INDEX idx_docs_body ON docs USING gin(to_tsvector('english', body));
GiST Geometry, range types, nearest-neighbor CREATE INDEX idx_locations ON places USING gist(coords);
Partial Subset of rows (reduce size) CREATE INDEX idx_active ON users(email) WHERE active = true;
Covering Index-only scans CREATE INDEX idx_cov ON orders(customer_id) INCLUDE (total, created_at);
EXPLAIN Plan Reading
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT ...;

Key signals to watch:

  • Seq Scan on large tables — missing index
  • Nested Loop with high row estimates — consider hash/merge join or add index
  • Buffers shared read much higher than hit — working set exceeds memory
N+1 Query Detection

Symptoms: application issues one query per row (e.g., fetching related records in a loop).

Fixes:

  • Use JOIN or subquery to fetch in one round-trip
  • ORM eager loading (select_related / includes / with)
  • DataLoader pattern for GraphQL resolvers
Connection Pooling
Tool Protocol Best For
PgBouncer PostgreSQL Transaction/statement pooling, low overhead
ProxySQL MySQL Query routing, read/write splitting
Built-in pool (HikariCP, SQLAlchemy pool) Any Application-level pooling

Rule of thumb: Set pool size to (2 * CPU cores) + disk spindles. For cloud SSDs, start with 2 * vCPUs and tune.

Read Replicas and Query Routing
  • Route all SELECT queries to replicas; writes to primary
  • Account for replication lag (typically <1s for async, 0 for sync)
  • Use pg_last_wal_replay_lsn() to detect lag before reading critical data

Multi-Database Decision Matrix

Criteria PostgreSQL MySQL SQLite SQL Server
Best for Complex queries, JSONB, extensions Web apps, read-heavy workloads Embedded, dev/test, edge Enterprise .NET stacks
JSON support Excellent (JSONB + GIN) Good (JSON type) Minimal Good (OPENJSON)
Replication Streaming, logical Group replication, InnoDB cluster N/A Always On AG
Licensing Open source (PostgreSQL License) Open source (GPL) / commercial Public domain Commercial
Max practical size Multi-TB Multi-TB ~1 TB (single-writer) Multi-TB

When to choose:

  • PostgreSQL — default choice for new projects; best extensibility and standards compliance
  • MySQL — existing MySQL ecosystem; simple read-heavy web applications
  • SQLite — mobile apps, CLI tools, unit test databases, IoT/edge
  • SQL Server — mandated by enterprise policy; deep .NET/Azure integration
NoSQL Considerations
Database Model Use When
MongoDB Document Schema flexibility, rapid prototyping, content management
Redis Key-value / cache Session store, rate limiting, leaderboards, pub/sub
DynamoDB Wide-column Serverless AWS apps, single-digit-ms latency at any scale

Use SQL as default. Reach for NoSQL only when the access pattern clearly benefits from it.


Sharding & Replication

Horizontal vs Vertical Partitioning
  • Vertical partitioning: Split columns across tables (e.g., separate BLOB columns). Reduces I/O for narrow queries.
  • Horizontal partitioning (sharding): Split rows across databases/servers. Required when a single node cannot hold the dataset or handle the throughput.
Sharding Strategies
Strategy How It Works Pros Cons
Hash shard = hash(key) % N Even distribution Resharding is expensive
Range Shard by date or ID range Simple, good for time-series Hot spots on latest shard
Geographic Shard by user region Data locality, compliance Cross-region queries are hard
Replication Patterns
Pattern Consistency Latency Use Case
Synchronous Strong Higher write latency Financial transactions
Asynchronous Eventual Low write latency Read-heavy web apps
Semi-synchronous At-least-one replica confirmed Moderate Balance of safety and speed

Cross-References

  • sql-database-assistant — query writing, optimization, and debugging for day-to-day SQL work
  • database-schema-designer — ERD modeling, normalization analysis, and schema generation
  • migration-architect — large-scale migration planning across database engines or major schema overhauls
  • senior-backend — application-layer patterns (connection pooling, ORM best practices)
  • senior-devops — infrastructure provisioning for database clusters and replicas
1---
2name: "database-designer"
3description: "Use when the user asks to design database schemas, plan data migrations, optimize queries, choose between SQL and NoSQL, or model data relationships."
4---
5 
6# Database Designer - POWERFUL Tier Skill
7 
8## Overview
9 
10A comprehensive database design skill that provides expert-level analysis, optimization, and migration capabilities for modern database systems. This skill combines theoretical principles with practical tools to help architects and developers create scalable, performant, and maintainable database schemas.
11 
12## Core Competencies
13 
14### Schema Design & Analysis
15- **Normalization Analysis**: Automated detection of normalization levels (1NF through BCNF)
16- **Denormalization Strategy**: Smart recommendations for performance optimization
17- **Data Type Optimization**: Identification of inappropriate types and size issues
18- **Constraint Analysis**: Missing foreign keys, unique constraints, and null checks
19- **Naming Convention Validation**: Consistent table and column naming patterns
20- **ERD Generation**: Automatic Mermaid diagram creation from DDL
21 
22### Index Optimization
23- **Index Gap Analysis**: Identification of missing indexes on foreign keys and query patterns
24- **Composite Index Strategy**: Optimal column ordering for multi-column indexes
25- **Index Redundancy Detection**: Elimination of overlapping and unused indexes
26- **Performance Impact Modeling**: Selectivity estimation and query cost analysis
27- **Index Type Selection**: B-tree, hash, partial, covering, and specialized indexes
28 
29### Migration Management
30- **Zero-Downtime Migrations**: Expand-contract pattern implementation
31- **Schema Evolution**: Safe column additions, deletions, and type changes
32- **Data Migration Scripts**: Automated data transformation and validation
33- **Rollback Strategy**: Complete reversal capabilities with validation
34- **Execution Planning**: Ordered migration steps with dependency resolution
35 
36## Tool Workflow (run these — do not analyze schemas by hand)
37 
38All paths relative to this skill folder; sample inputs in `assets/`.
39 
40### 1. Analyze the schema
41 
42```bash
43python3 schema_analyzer.py --input schema.sql --generate-erd --output-format json -o analysis.json
44```
45 
46Accepts SQL DDL or JSON schema (`assets/sample_schema.sql` / `sample_schema.json`). Output includes normalization findings, missing constraints, naming issues, and a Mermaid ERD — show the ERD to the user and fix flagged issues before optimizing.
47 
48### 2. Optimize indexes against real query patterns
49 
50```bash
51python3 index_optimizer.py --schema assets/sample_schema.json --queries assets/sample_query_patterns.json --analyze-existing --format json -o indexes.json
52```
53 
54Write the user's hot queries into a query-patterns JSON first (copy `assets/sample_query_patterns.json`). Output is a priority-ordered list of CREATE INDEX recommendations plus redundant-index removals.
55 
56### 3. Generate the migration
57 
58```bash
59python3 migration_generator.py --current current_schema.json --target target_schema.json --zero-downtime --format sql -o migration.sql
60```
61 
62`--zero-downtime` emits an expand-contract plan; `--validate-only` checks feasibility without generating SQL.
63 
64### 4. Verification loop
65 
66Re-run step 1 on the *target* schema and assert the issues found in the first pass are gone; run `migration_generator.py --validate-only` before handing over the migration.
67 
68## Database Design Principles
69→ See references/database-design-reference.md for details
70 
71## Best Practices
72 
73### Schema Design
741. **Use meaningful names**: Clear, consistent naming conventions
752. **Choose appropriate data types**: Right-sized columns for storage efficiency
763. **Define proper constraints**: Foreign keys, check constraints, unique indexes
774. **Consider future growth**: Plan for scale from the beginning
785. **Document relationships**: Clear foreign key relationships and business rules
79 
80### Performance Optimization
811. **Index strategically**: Cover common query patterns without over-indexing
822. **Monitor query performance**: Regular analysis of slow queries
833. **Partition large tables**: Improve query performance and maintenance
844. **Use appropriate isolation levels**: Balance consistency with performance
855. **Implement connection pooling**: Efficient resource utilization
86 
87### Security Considerations
881. **Principle of least privilege**: Grant minimal necessary permissions
892. **Encrypt sensitive data**: At rest and in transit
903. **Audit access patterns**: Monitor and log database access
914. **Validate inputs**: Prevent SQL injection attacks
925. **Regular security updates**: Keep database software current
93 
94## Query Generation Patterns
95 
96### SELECT with JOINs
97 
98```sql
99-- INNER JOIN: only matching rows
100SELECT o.id, c.name, o.total
101FROM orders o
102INNER JOIN customers c ON c.id = o.customer_id;
103 
104-- LEFT JOIN: all left rows, NULLs for non-matches
105SELECT c.name, COUNT(o.id) AS order_count
106FROM customers c
107LEFT JOIN orders o ON o.customer_id = c.id
108GROUP BY c.name;
109 
110-- Self-join: hierarchical data (employees/managers)
111SELECT e.name AS employee, m.name AS manager
112FROM employees e
113LEFT JOIN employees m ON m.id = e.manager_id;
114```
115 
116### Common Table Expressions (CTEs)
117 
118```sql
119-- Recursive CTE for org chart
120WITH RECURSIVE org AS (
121 SELECT id, name, manager_id, 1 AS depth
122 FROM employees WHERE manager_id IS NULL
123 UNION ALL
124 SELECT e.id, e.name, e.manager_id, o.depth + 1
125 FROM employees e INNER JOIN org o ON o.id = e.manager_id
126)
127SELECT * FROM org ORDER BY depth, name;
128```
129 
130### Window Functions
131 
132```sql
133-- ROW_NUMBER for pagination / dedup
134SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) AS rn
135FROM orders;
136 
137-- RANK with gaps, DENSE_RANK without gaps
138SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank FROM leaderboard;
139 
140-- LAG/LEAD for comparing adjacent rows
141SELECT date, revenue,
142 revenue - LAG(revenue) OVER (ORDER BY date) AS daily_change
143FROM daily_sales;
144```
145 
146### Aggregation Patterns
147 
148```sql
149-- FILTER clause (PostgreSQL) for conditional aggregation
150SELECT
151 COUNT(*) AS total,
152 COUNT(*) FILTER (WHERE status = 'active') AS active,
153 AVG(amount) FILTER (WHERE amount > 0) AS avg_positive
154FROM accounts;
155 
156-- GROUPING SETS for multi-level rollups
157SELECT region, product, SUM(revenue)
158FROM sales
159GROUP BY GROUPING SETS ((region, product), (region), ());
160```
161 
162---
163 
164## Migration Patterns
165 
166### Up/Down Migration Scripts
167 
168Every migration must have a reversible counterpart. Name files with a timestamp prefix for ordering:
169 
170```
171migrations/
172├── 20260101_000001_create_users.up.sql
173├── 20260101_000001_create_users.down.sql
174├── 20260115_000002_add_users_email_index.up.sql
175└── 20260115_000002_add_users_email_index.down.sql
176```
177 
178### Zero-Downtime Migrations (Expand/Contract)
179 
180Use the expand-contract pattern to avoid locking or breaking running code:
181 
1821. **Expand** — add the new column/table (nullable, with default)
1832. **Migrate data** — backfill in batches; dual-write from application
1843. **Transition** — application reads from new column; stop writing to old
1854. **Contract** — drop old column in a follow-up migration
186 
187### Data Backfill Strategies
188 
189```sql
190-- Batch update to avoid long-running locks
191UPDATE users SET email_normalized = LOWER(email)
192WHERE id IN (SELECT id FROM users WHERE email_normalized IS NULL LIMIT 5000);
193-- Repeat in a loop until 0 rows affected
194```
195 
196### Rollback Procedures
197 
198- Always test the `down.sql` in staging before deploying `up.sql` to production
199- Keep rollback window short — if the contract step has run, rollback requires a new forward migration
200- For irreversible changes (dropping columns with data), take a logical backup first
201 
202---
203 
204## Performance Optimization
205 
206### Indexing Strategies
207 
208| Index Type | Use Case | Example |
209|------------|----------|---------|
210| **B-tree** (default) | Equality, range, ORDER BY | `CREATE INDEX idx_users_email ON users(email);` |
211| **GIN** | Full-text search, JSONB, arrays | `CREATE INDEX idx_docs_body ON docs USING gin(to_tsvector('english', body));` |
212| **GiST** | Geometry, range types, nearest-neighbor | `CREATE INDEX idx_locations ON places USING gist(coords);` |
213| **Partial** | Subset of rows (reduce size) | `CREATE INDEX idx_active ON users(email) WHERE active = true;` |
214| **Covering** | Index-only scans | `CREATE INDEX idx_cov ON orders(customer_id) INCLUDE (total, created_at);` |
215 
216### EXPLAIN Plan Reading
217 
218```sql
219EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT ...;
220```
221 
222Key signals to watch:
223- **Seq Scan** on large tables — missing index
224- **Nested Loop** with high row estimates — consider hash/merge join or add index
225- **Buffers shared read** much higher than **hit** — working set exceeds memory
226 
227### N+1 Query Detection
228 
229Symptoms: application issues one query per row (e.g., fetching related records in a loop).
230 
231Fixes:
232- Use `JOIN` or subquery to fetch in one round-trip
233- ORM eager loading (`select_related` / `includes` / `with`)
234- DataLoader pattern for GraphQL resolvers
235 
236### Connection Pooling
237 
238| Tool | Protocol | Best For |
239|------|----------|----------|
240| **PgBouncer** | PostgreSQL | Transaction/statement pooling, low overhead |
241| **ProxySQL** | MySQL | Query routing, read/write splitting |
242| **Built-in pool** (HikariCP, SQLAlchemy pool) | Any | Application-level pooling |
243 
244**Rule of thumb:** Set pool size to `(2 * CPU cores) + disk spindles`. For cloud SSDs, start with `2 * vCPUs` and tune.
245 
246### Read Replicas and Query Routing
247 
248- Route all `SELECT` queries to replicas; writes to primary
249- Account for replication lag (typically <1s for async, 0 for sync)
250- Use `pg_last_wal_replay_lsn()` to detect lag before reading critical data
251 
252---
253 
254## Multi-Database Decision Matrix
255 
256| Criteria | PostgreSQL | MySQL | SQLite | SQL Server |
257|----------|-----------|-------|--------|------------|
258| **Best for** | Complex queries, JSONB, extensions | Web apps, read-heavy workloads | Embedded, dev/test, edge | Enterprise .NET stacks |
259| **JSON support** | Excellent (JSONB + GIN) | Good (JSON type) | Minimal | Good (OPENJSON) |
260| **Replication** | Streaming, logical | Group replication, InnoDB cluster | N/A | Always On AG |
261| **Licensing** | Open source (PostgreSQL License) | Open source (GPL) / commercial | Public domain | Commercial |
262| **Max practical size** | Multi-TB | Multi-TB | ~1 TB (single-writer) | Multi-TB |
263 
264**When to choose:**
265- **PostgreSQL** — default choice for new projects; best extensibility and standards compliance
266- **MySQL** — existing MySQL ecosystem; simple read-heavy web applications
267- **SQLite** — mobile apps, CLI tools, unit test databases, IoT/edge
268- **SQL Server** — mandated by enterprise policy; deep .NET/Azure integration
269 
270### NoSQL Considerations
271 
272| Database | Model | Use When |
273|----------|-------|----------|
274| **MongoDB** | Document | Schema flexibility, rapid prototyping, content management |
275| **Redis** | Key-value / cache | Session store, rate limiting, leaderboards, pub/sub |
276| **DynamoDB** | Wide-column | Serverless AWS apps, single-digit-ms latency at any scale |
277 
278> Use SQL as default. Reach for NoSQL only when the access pattern clearly benefits from it.
279 
280---
281 
282## Sharding & Replication
283 
284### Horizontal vs Vertical Partitioning
285 
286- **Vertical partitioning**: Split columns across tables (e.g., separate BLOB columns). Reduces I/O for narrow queries.
287- **Horizontal partitioning (sharding)**: Split rows across databases/servers. Required when a single node cannot hold the dataset or handle the throughput.
288 
289### Sharding Strategies
290 
291| Strategy | How It Works | Pros | Cons |
292|----------|-------------|------|------|
293| **Hash** | `shard = hash(key) % N` | Even distribution | Resharding is expensive |
294| **Range** | Shard by date or ID range | Simple, good for time-series | Hot spots on latest shard |
295| **Geographic** | Shard by user region | Data locality, compliance | Cross-region queries are hard |
296 
297### Replication Patterns
298 
299| Pattern | Consistency | Latency | Use Case |
300|---------|------------|---------|----------|
301| **Synchronous** | Strong | Higher write latency | Financial transactions |
302| **Asynchronous** | Eventual | Low write latency | Read-heavy web apps |
303| **Semi-synchronous** | At-least-one replica confirmed | Moderate | Balance of safety and speed |
304 
305---
306 
307## Cross-References
308 
309- **sql-database-assistant** — query writing, optimization, and debugging for day-to-day SQL work
310- **database-schema-designer** — ERD modeling, normalization analysis, and schema generation
311- **migration-architect** — large-scale migration planning across database engines or major schema overhauls
312- **senior-backend** — application-layer patterns (connection pooling, ORM best practices)
313- **senior-devops** — infrastructure provisioning for database clusters and replicas
314 
315 
View all files on GitHub →

Details

Updated
Aug 30, 2026
License
MIT
Stars on the repo
★ 26,349
Checked
Source
alirezarezvani/claude-skills ↗
Creator
alirezarezvani · 363 listings
View creator

Similar skills

See all →
MCPPostgres server with health checksPostgres MCP Procrystaldba/postgres-mcp · by crystaldbaPostgres server with health checks, index tuning and explain plans, with a restricted read-only mode for production.★ 3.3k GitHub starsSkillPostgres best practices maintained by SupabaseSupabase postgres best practicessupabase/agent-skills · by supabasePostgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill BEFORE writing or changing anything that lives in a Postgres database: creating or altering tables and columns (including choosing column types), schema design, migrations and declarative schema files, RLS policies and the tests that verify them, indexes, triggers, database functions, queues and scheduled jobs (pg_cron, pgmq), vector/semantic search (pgvector), and restoring dumps (pg_restore) or importing data. Also load it when diagnosing slow queries, high CPU, timeouts, EXPLAIN plans, connection exhaustion, locking, bloat, or rows visible to the wrong user or tenant. This is not just a performance guide — schema, migration, security, and SQL authoring tasks need these rules too, even for a one-column change or a single query.★ 2.7k GitHub starsSkillDesigns database schemas, indexing strategiesDatabase designCloudAI-X/claude-workflow-v2 · by CloudAI-XDesigns database schemas, indexing strategies, query optimization, and migration patterns for SQL and NoSQL databases. Use when designing tables, optimizing queries, fixing N+1 problems, planning migrations, or when asked about database performance, normalization, ORMs, or data modeling.★ 1.4k GitHub starsSkillExecute database migrations across ORMsDatabase migrationwshobson/agents · by wshobsonExecute database migrations across ORMs and platforms with zero-downtime strategies, data transformation, and rollback procedures. Use when migrating databases, changing schemas, performing data transformations, or implementing zero-downtime deployment strategies.★ 39.9k GitHub starsSkillOptimize vector index performance for latency, recallVector index tuningwshobson/agents · by wshobsonOptimize vector index performance for latency, recall, and memory. Use when tuning HNSW parameters, selecting quantization strategies, or scaling vector search infrastructure.★ 39.9k GitHub starsSkillCreate ERD diagrams, normalize database schemasDatabase schema designeralirezarezvani/claude-skills · by alirezarezvaniUse when the user asks to create ERD diagrams, normalize database schemas, design table relationships, or plan schema migrations.★ 26.3k GitHub stars

More from alirezarezvani

SkillResume a paused experiment/ar:ar-resume — Resume Experimentalirezarezvani/claude-skills · by alirezarezvaniResume a paused experiment. Checkout the experiment branch, read results history, continue iterating. Use when the user runs /ar:ar-resume or asks to pick up a previously started autoresearch experiment.★ 26.3k GitHub starsSkillShow experiment dashboard with results, active loops/ar:ar-status — Experiment Dashboardalirezarezvani/claude-skills · by alirezarezvaniShow experiment dashboard with results, active loops, and progress. Use when the user runs /ar:ar-status or asks how an autoresearch experiment is going.★ 26.3k GitHub starsSkillStart an autonomous experiment loop with user-selected/ar:loop — Autonomous Experiment Loopalirezarezvani/claude-skills · by alirezarezvaniStart an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly). Uses CronCreate for scheduling. Use when the user runs /ar:loop or asks to run an autoresearch experiment continuously on a schedule.★ 26.3k GitHub starsSkillRun a single experiment iteration/ar:run — Single Experiment Iterationalirezarezvani/claude-skills · by alirezarezvaniRun a single experiment iteration. Edit the target file, evaluate, keep or discard. Use when the user runs /ar:run or asks for one manual autoresearch iteration.★ 26.3k GitHub starsSkillSet up a new autoresearch experiment interactively/ar:setup — Create New Experimentalirezarezvani/claude-skills · by alirezarezvaniSet up a new autoresearch experiment interactively. Collects domain, target file, eval command, metric, direction, and evaluator. Use when the user runs /ar:setup or asks to start optimizing a file with the autoresearch loop.★ 26.3k GitHub starsSkill/cs:boardroom <brief/cs:boardroom — Multi-Role Boardroom Deliberationalirezarezvani/claude-skills · by alirezarezvani/cs:boardroom <brief> — 6-phase multi-role deliberation across the C-suite with Phase 2 isolation, critic pre-screen, and synthesis. Outputs a board memo. Use when a decision spans multiple executive domains — e.g. a pricing change touching finance, positioning, and product, or a raise-vs-cut runway call.★ 26.3k GitHub stars