home / skills / hoangnguyen0403 / agent-skills-standard / database-expert
This skill helps Laravel developers optimize database interactions with advanced query patterns, Redis caching, and scalable architecture guidance.
npx playbooks add skill hoangnguyen0403/agent-skills-standard --skill database-expertReview the files below or copy the command above to add this skill to your agents.
---
name: Laravel Database Expert
description: Expert patterns for advanced queries, Redis caching, and database scalability.
metadata:
labels: [laravel, database, redis, sql, performance]
triggers:
files: ['config/database.php', 'database/migrations/*.php']
keywords: [join, aggregate, subquery, selectRaw, Cache]
---
# Laravel Database Expert
## **Priority: P1 (HIGH)**
## Structure
```text
config/
└── database.php # Connection & Cluster config
app/
└── Http/
└── Controllers/ # Query logic entry points
```
## Implementation Guidelines
- **Advanced Query Builder**: Prefer `selectSub`, `joinSub`, and `whereExists` over raw SQL.
- **Aggregates**: Use `count()`, `sum()`, and `avg()` directly via Eloquent/Builder.
- **Cache-Aside Pattern**: Utilize `Cache::remember()` for frequently accessed data.
- **Redis Tagging**: Group related cache keys using `Cache::tags()` for atomic flushing.
- **Read/Write Splitting**: Configure master/slave connections in `config/database.php`.
- **Vertical Partitioning**: Decouple high-traffic tables to dedicated database instances.
- **Indices**: Ensure correct indexing for all aggregate and join columns.
## Anti-Patterns
- **Raw Concatenation**: **No String SQL**: Always use bindings or Query Builder.
- **Loop Queries**: **No queries in Loops**: Use subqueries or aggregates.
- **Global Cache Flush**: **No Cache::flush()**: Use tags to target specific groups.
- **Untracked Redis**: **No ungoverned Redis usage**: Use standard Laravel wrappers.
## References
- [Advanced SQL & Cache Patterns](references/implementation.md)
This skill captures expert patterns for building scalable, maintainable database access in Laravel applications. It focuses on advanced query techniques, Redis-backed caching patterns, and practical strategies for read/write scaling and partitioning. The guidance emphasizes safety, performance, and predictable cache management for high-traffic systems.
The skill inspects query design and caching choices and recommends using Eloquent/Query Builder primitives like selectSub, joinSub, and whereExists instead of raw SQL string concatenation. It enforces cache-aside patterns with Cache::remember and encourages Redis tagging for grouped cache invalidation. It also surfaces configuration and architectural recommendations such as read/write splitting and vertical partitioning of hot tables.
How do I safely invalidate caches for related resources?
Use Cache::tags to group related keys and call Cache::tags([...])->flush() to atomically clear only those groups.
When should I introduce read replicas instead of optimizing queries?
Optimize queries and add indexes first; introduce read replicas when read traffic outgrows a single instance or you need horizontal read scaling.