PERF04 - How do you select your database solution?
Best Practices
Best Practices
This question includes the following best practices:
- PERF04-BP01: Use a purpose-built database for each data access pattern
- PERF04-BP02: Evaluate engine features and configuration options
- PERF04-BP03: Collect and review database performance metrics
- PERF04-BP04: Optimize query patterns, indexes, and schema
- PERF04-BP05: Use caching and read scaling to reduce database load
Key Concepts
Performance Architecture Fundamentals
Data model fit: Use this concept to guide architecture and operating decisions for this question area. Define measurable targets, assign clear ownership, and review results regularly against expected business outcomes.
Query pattern alignment: Use this concept to guide architecture and operating decisions for this question area. Define measurable targets, assign clear ownership, and review results regularly against expected business outcomes.
Consistency and durability: Use this concept to guide architecture and operating decisions for this question area. Define measurable targets, assign clear ownership, and review results regularly against expected business outcomes.
Optimization and Operations
Scaling strategy: Use this concept to guide architecture and operating decisions for this question area. Define measurable targets, assign clear ownership, and review results regularly against expected business outcomes.
Operational overhead: Use this concept to guide architecture and operating decisions for this question area. Define measurable targets, assign clear ownership, and review results regularly against expected business outcomes.
Performance isolation: Use this concept to guide architecture and operating decisions for this question area. Define measurable targets, assign clear ownership, and review results regularly against expected business outcomes.
Implementation Approach
1. Analyze data and access requirements
- Define relational, key-value, document, or graph requirements
- Capture read/write ratio and query complexity
- Identify consistency, transaction, and latency targets
- Estimate data growth and partitioning needs
2. Evaluate database options
- Compare managed relational and NoSQL services
- Assess indexing, replication, and failover capabilities
- Model operational responsibilities per option
- Choose engines matching workload behavior
3. Design for performance and resilience
- Implement schema and index strategies for key queries
- Use read replicas or caching for read-heavy paths
- Set backup, PITR, and restore validation processes
- Tune connection and pooling parameters
4. Optimize and evolve
- Monitor query latency and resource saturation
- Refactor hotspots and inefficient access patterns
- Review capacity settings and autoscaling behavior
- Adopt newer engine features that improve throughput
AWS Services to Consider
Amazon RDS
Runs managed relational databases with built-in backups, patching, and scaling options.
Amazon Aurora
Delivers high-performance relational databases with fast failover and read scaling for demanding workloads.
Amazon DynamoDB
Provides single-digit millisecond key-value performance at scale with serverless operations.
Amazon ElastiCache
Uses in-memory caching to reduce backend load and improve read/write latency.
Amazon CloudWatch
Collects metrics, logs, alarms, and dashboards so teams can detect issues early and track operational outcomes.
Common Challenges and Solutions
Challenge: Database engine mismatch
Solution: Select the primary data store by workload access patterns, not team familiarity alone.
Challenge: Hot partitions and uneven load
Solution: Use partition key design reviews and adaptive capacity-aware patterns early.
Challenge: Performance regressions after feature growth
Solution: Continuously benchmark key queries and review indexing and schema evolution.