Database specialist covering PostgreSQL, MongoDB, Redis, and advanced data patterns for modern applications
Enterprise Database Expertise - Comprehensive database patterns and implementations covering PostgreSQL, MongoDB, Redis, and advanced data management for scalable modern applications.
Core Capabilities:
When to Use:
Database Stack Initialization:
from moai_domain_database import DatabaseManager
# Initialize multi-database stack
db_manager = DatabaseManager()
# Configure PostgreSQL for relational data
postgresql = db_manager.setup_postgresql(
connection_string="postgresql://...",
connection_pool_size=20,
enable_query_logging=True
)
# Configure MongoDB for document storage
mongodb = db_manager.setup_mongodb(
connection_string="mongodb://...",
database_name="app_data",
enable_sharding=True
)
# Configure Redis for caching and real-time features
redis = db_manager.setup_redis(
connection_string="redis://...",
max_connections=50,
enable_clustering=True
)
# Use unified database interface
user_data = db_manager.get_user_with_profile(user_id)
analytics = db_manager.get_user_analytics(user_id, time_range="30d")
Single Database Operations:
# PostgreSQL schema migration
moai db:migrate --database postgresql --migration-file schema_v2.sql
# MongoDB aggregation pipeline
moai db:aggregate --collection users --pipeline analytics_pipeline.json
# Redis cache warming
moai db:cache:warm --pattern "user:*" --ttl 3600
modules/postgresql.md)modules/mongodb.md)modules/redis.md)Polyglot Persistence Pattern:
class DataRouter:
def __init__(self):
self.postgresql = PostgreSQLConnection()
self.mongodb = MongoDBConnection()
self.redis = RedisConnection()
def get_user_profile(self, user_id):
# Get structured user data from PostgreSQL
user = self.postgresql.get_user(user_id)
# Get flexible profile data from MongoDB
profile = self.mongodb.get_user_profile(user_id)
# Get real-time status from Redis
status = self.redis.get_user_status(user_id)
return self.merge_user_data(user, profile, status)
def update_user_data(self, user_id, data):
# Route different data types to appropriate databases
if 'structured_data' in data:
self.postgresql.update_user(user_id, data['structured_data'])
if 'profile_data' in data:
self.mongodb.update_user_profile(user_id, data['profile_data'])
if 'real_time_data' in data:
self.redis.set_user_status(user_id, data['real_time_data'])
# Invalidate cache across databases
self.invalidate_user_cache(user_id)
Data Synchronization:
class DataSyncManager:
def sync_user_data(self, user_id):
# Sync from PostgreSQL to MongoDB for search
pg_user = self.postgresql.get_user(user_id)
search_document = self.create_search_document(pg_user)
self.mongodb.upsert_user_search(user_id, search_document)
# Update cache in Redis
cache_data = self.create_cache_document(pg_user)
self.redis.set_user_cache(user_id, cache_data, ttl=3600)
Query Performance Analysis:
# PostgreSQL query optimization
def analyze_query_performance(query):
explain_result = postgresql.execute(f"EXPLAIN (ANALYZE, BUFFERS) {query}")
return QueryAnalyzer(explain_result).get_optimization_suggestions()
# MongoDB aggregation optimization
def optimize_aggregation_pipeline(pipeline):
optimizer = AggregationOptimizer()
return optimizer.optimize_pipeline(pipeline)
# Redis performance monitoring
def monitor_redis_performance():
metrics = redis.info()
return PerformanceAnalyzer(metrics).get_recommendations()
Scaling Strategies:
# Read replicas for PostgreSQL
read_replicas = postgresql.setup_read_replicas([
"postgresql://replica1...",
"postgresql://replica2..."
])
# Sharding for MongoDB
mongodb.setup_sharding(
shard_key="user_id",
num_shards=4
)
# Redis clustering
redis.setup_cluster([
"redis://node1:7000",
"redis://node2:7000",
"redis://node3:7000"
])
Complementary Skills:
moai-domain-backend - API integration and business logicmoai-foundation-core - Database migration and schema managementmoai-workflow-project - Database project setup and configurationmoai-platform-baas - BaaS database integration patternsTechnology Integration:
# PostgreSQL advanced queries
users = postgresql.query(
"SELECT * FROM users WHERE created_at > %s ORDER BY activity_score DESC LIMIT 100",
[datetime.now() - timedelta(days=30)]
)
# MongoDB analytics
analytics = mongodb.aggregate('events', [
{"$match": {"timestamp": {"$gte": start_date}}},
{"$group": {"_id": "$type", "count": {"$sum": 1}}},
{"$sort": {"count": -1}}
])
# Redis caching operations
async def get_user_data(user_id):
cache_key = f"user:{user_id}"
data = await redis.get(cache_key)
if not data:
data = fetch_from_database(user_id)
await redis.setex(cache_key, 3600, json.dumps(data))
return json.loads(data)
async def create_user_with_profile(user_data, profile_data):
try:
# Start transaction across databases
async with transaction_manager():
# Create user in PostgreSQL
user_id = await postgresql.insert_user(user_data)
# Create profile in MongoDB
await mongodb.insert_user_profile(user_id, profile_data)
# Set initial cache in Redis
await redis.set_user_cache(user_id, {
"id": user_id,
"status": "active",
"created_at": datetime.now().isoformat()
})
return user_id
except Exception as e:
# Automatic rollback across databases
logger.error(f"User creation failed: {e}")
raise
Relational Database:
NoSQL Database:
In-Memory Database:
Supporting Tools:
Performance Features:
For detailed implementation patterns and database-specific optimizations, see the modules/ directory.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer
Tags:database, postgresql, mongodb, redis, data-patterns, performance