database
Scannednpx machina-cli add skill Fujigo-Software/f5-framework-claude/database --openclawDatabase Skills
Overview
Comprehensive database knowledge for designing, querying, optimizing, and managing data storage systems effectively across relational and non-relational paradigms.
Database Landscape
┌─────────────────────────────────────────────────────────┐
│ Relational (SQL) │
│ PostgreSQL │ MySQL │ SQL Server │ Oracle │ SQLite │
├─────────────────────────────────────────────────────────┤
│ Document (NoSQL) │
│ MongoDB │ CouchDB │ Firestore │ RethinkDB │
├─────────────────────────────────────────────────────────┤
│ Key-Value │
│ Redis │ DynamoDB │ Memcached │ etcd │ Riak │
├─────────────────────────────────────────────────────────┤
│ Wide-Column │
│ Cassandra │ HBase │ ScyllaDB │ BigTable │
├─────────────────────────────────────────────────────────┤
│ Graph │
│ Neo4j │ Amazon Neptune │ ArangoDB │ JanusGraph │
├─────────────────────────────────────────────────────────┤
│ Time-Series │
│ InfluxDB │ TimescaleDB │ Prometheus │ QuestDB │
├─────────────────────────────────────────────────────────┤
│ Search │
│ Elasticsearch │ OpenSearch │ Meilisearch │ Typesense │
└─────────────────────────────────────────────────────────┘
Skill Categories
Fundamentals
Core database concepts every developer should know:
- Database types and their trade-offs
- ACID properties and transactions
- CAP theorem implications
- Normalization forms (1NF through BCNF)
SQL
Structured Query Language mastery:
- SQL fundamentals (CRUD operations)
- Advanced query techniques
- Joins explained with diagrams
- Window functions for analytics
- CTEs and subqueries
PostgreSQL
Deep dive into the world's most advanced open-source database:
- PostgreSQL-specific features
- Index types (B-tree, GIN, GiST, BRIN)
- JSON/JSONB operations
- Full-text search capabilities
NoSQL
Non-relational database patterns:
- MongoDB document modeling
- Redis data structures and patterns
- DynamoDB single-table design
- When to use NoSQL vs SQL
Design
Data modeling and schema design:
- Schema design principles
- Entity-relationship modeling
- Relationship types and implementation
- Strategic denormalization
Migrations
Safe database evolution:
- Migration strategies
- Zero-downtime migrations
- Data migration patterns
Optimization
Performance tuning techniques:
- Query optimization
- Indexing strategies
- EXPLAIN ANALYZE interpretation
- Connection pooling
Operations
Database administration:
- Backup and recovery
- Replication strategies
- Sharding patterns
- Monitoring and alerting
Decision Matrix: Choosing the Right Database
| Use Case | Recommended | Alternative | Rationale |
|---|---|---|---|
| General purpose | PostgreSQL | MySQL | Versatile, ACID, JSON support |
| Simple web app | MySQL | SQLite | Wide hosting support |
| High-speed caching | Redis | Memcached | Data structures, persistence |
| Flexible documents | MongoDB | CouchDB | Schema-less, horizontal scale |
| Analytics/OLAP | ClickHouse | BigQuery | Column-oriented, fast aggregations |
| Complex relationships | Neo4j | ArangoDB | Native graph queries |
| Time-series data | TimescaleDB | InfluxDB | Time-based partitioning |
| Full-text search | Elasticsearch | Meilisearch | Inverted index, relevance |
| Global distribution | CockroachDB | Spanner | Geo-partitioning |
| Embedded/Edge | SQLite | DuckDB | Zero configuration |
Database Selection Flowchart
Start: What's your primary need?
│
├─> Structured data with relationships?
│ ├─> Complex queries needed? → PostgreSQL
│ ├─> Simple CRUD, wide hosting? → MySQL
│ └─> Embedded/serverless? → SQLite
│
├─> Flexible schema/documents?
│ ├─> Horizontal scaling? → MongoDB
│ └─> Real-time sync? → Firestore
│
├─> High-speed caching?
│ ├─> Data structures needed? → Redis
│ └─> Simple key-value? → Memcached
│
├─> Analytics/reporting?
│ ├─> Real-time analytics? → ClickHouse
│ └─> Time-series data? → TimescaleDB
│
├─> Graph relationships?
│ └─> → Neo4j or Amazon Neptune
│
└─> Full-text search?
└─> → Elasticsearch or Meilisearch
Quick Reference
ACID Properties
- Atomicity: All or nothing transactions
- Consistency: Valid state transitions only
- Isolation: Concurrent transaction separation
- Durability: Committed data persists
CAP Theorem
Pick two of three (in partition scenario):
- Consistency: Every read gets latest write
- Availability: Every request gets response
- Partition tolerance: System works despite network splits
Normal Forms Quick Guide
- 1NF: Atomic values, no repeating groups
- 2NF: 1NF + no partial dependencies
- 3NF: 2NF + no transitive dependencies
- BCNF: 3NF + every determinant is a candidate key
Common Patterns
Read-Heavy Workloads
┌─────────────┐ ┌─────────────┐
│ Primary │────▶│ Replica │◀── Reads
│ (Writes) │ │ (Reads) │
└─────────────┘ └─────────────┘
┌─────────────┐
────▶│ Replica │◀── Reads
│ (Reads) │
└─────────────┘
Caching Strategy
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ App │────▶│ Cache │────▶│ Database │
│ │ │ (Redis) │ │ (PGSQL) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │
└───────────────────┘
Cache miss: query DB, populate cache
Event Sourcing
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Events │────▶│ Event │────▶│ Projected │
│ (append) │ │ Store │ │ Views │
└─────────────┘ └─────────────┘ └─────────────┘
Files in This Skill
database/
├── _index.md # This file
├── fundamentals/
│ ├── database-types.md # Database paradigms comparison
│ ├── acid-properties.md # Transaction guarantees
│ ├── cap-theorem.md # Distributed system trade-offs
│ └── normalization.md # Data normalization forms
├── sql/
│ ├── sql-fundamentals.md # Basic SQL operations
│ ├── advanced-queries.md # Complex query patterns
│ ├── joins-explained.md # Join types with diagrams
│ ├── window-functions.md # Analytics functions
│ └── cte-subqueries.md # CTEs and subqueries
├── postgresql/
│ ├── postgres-features.md # PostgreSQL capabilities
│ ├── indexes.md # Index types and usage
│ ├── json-operations.md # JSON/JSONB handling
│ └── full-text-search.md # FTS configuration
├── nosql/
│ ├── mongodb-basics.md # MongoDB fundamentals
│ ├── redis-patterns.md # Redis data patterns
│ ├── dynamodb-modeling.md # DynamoDB design
│ └── when-to-use.md # NoSQL vs SQL decision
├── design/
│ ├── schema-design.md # Schema principles
│ ├── data-modeling.md # ER modeling
│ ├── relationships.md # Relationship types
│ └── denormalization.md # Strategic denorm
├── migrations/
│ ├── migration-strategies.md # Migration approaches
│ ├── zero-downtime.md # Online migrations
│ └── data-migration.md # Data movement
├── optimization/
│ ├── query-optimization.md # Query tuning
│ ├── indexing-strategies.md # Index design
│ ├── explain-analyze.md # Query plans
│ └── connection-pooling.md # Pool management
└── operations/
├── backup-recovery.md # Backup strategies
├── replication.md # Replication setup
├── sharding.md # Horizontal scaling
└── monitoring.md # DB observability
Related Skills
- Backend Development: Database integration patterns
- API Design: Data access layer design
- Security: Database security, encryption
- DevOps: Database deployment, automation
Source
git clone https://github.com/Fujigo-Software/f5-framework-claude/blob/main/plugins/f5-core/skills/database/SKILL.mdView on GitHub Overview
Provides comprehensive knowledge across relational and non-relational databases, enabling effective design, querying, optimization, and data management. It covers fundamentals, SQL, NoSQL, design principles, migrations, and operations to help build scalable, reliable data stores.
How This Skill Works
The skill is organized into core categories (Fundamentals, SQL, PostgreSQL, NoSQL, Design, Migrations, Optimization, Operations) and reinforced with a decision matrix to guide technology choices. It blends conceptual guidance with practical techniques such as indexing, normalization, query planning, and zero-downtime migration patterns to ensure robust data platforms.
When to Use It
- Designing a new application's data model and choosing the right database type
- Selecting between SQL and NoSQL based on data shape, consistency needs, and scale
- Optimizing slow queries, tuning indexes, and interpreting execution plans
- Planning safe migrations and zero-downtime database upgrades
- Building analytical or time-series workloads (OLAP, time-series data)
Quick Start
- Step 1: Assess data requirements and choose a DB type (SQL vs NoSQL) based on structure and scale
- Step 2: Model the data, select indexing strategies, and set up a sample schema or collections
- Step 3: Write representative queries, run EXPLAIN ANALYZE, and establish backups and monitoring
Best Practices
- Define clear data models with appropriate normalization or denormalization based on the DB type
- Choose the database type considering ACID/BASE, consistency, and scaling requirements
- Invest in indexing strategies and use EXPLAIN ANALYZE to guide optimization
- Plan migrations with backward-compatible changes and zero-downtime techniques
- Establish backup, replication, and monitoring to ensure reliability and observability
Example Use Cases
- Designing a PostgreSQL schema for an e-commerce catalog with normalized tables and JSONB for flexible attributes
- Using Redis for caching and session storage to improve web app responsiveness
- Modeling documents in MongoDB for a flexible product catalog with evolving attributes
- Implementing time-series analytics with TimescaleDB for IoT telemetry data
- Leveraging Elasticsearch for fast full-text search in a content platform
Frequently Asked Questions
Related Skills
accessibility
Fujigo-Software/f5-framework-claude
Web accessibility guidelines and implementation
api-design
Fujigo-Software/f5-framework-claude
API design principles for REST, GraphQL, and gRPC
performance
Fujigo-Software/f5-framework-claude
Performance optimization strategies and techniques
code-quality
Fujigo-Software/f5-framework-claude
Code quality practices, linting, and refactoring
devops
Fujigo-Software/f5-framework-claude
DevOps practices, CI/CD, and infrastructure management
git
Fujigo-Software/f5-framework-claude
Git version control and collaboration workflows