Database Operations Guide
This guide covers all database operations, schema, and maintenance procedures for the HostingCo system.
Database Overview
The HostingCo system uses PostgreSQL as the primary database with Redis for caching and session management.
Database Components
PostgreSQL 15+: Main application database
Redis 7+: Caching and session storage
Knex.js: Database query builder and migration tool
Redis 7+: Caching and session storage
Knex.js: Database query builder and migration tool
Database Schema
Core Tables
users
User accounts and authentication data.
CREATE TABLE users (
id VARCHAR(50) PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
phone VARCHAR(50),
company VARCHAR(255),
role VARCHAR(50) DEFAULT 'user',
permissions JSONB DEFAULT '[]',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
servers
Server configurations and status information.
CREATE TABLE servers (
id VARCHAR(50) PRIMARY KEY,
name VARCHAR(255) NOT NULL,
hostname VARCHAR(255) NOT NULL,
ip_address INET NOT NULL,
status VARCHAR(50) DEFAULT 'active',
specs JSONB NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Database Operations
Connection Management
# Test database connection
npm run db:test
# Check connection pool status
npm run db:pool-status
# Reset connection pool
npm run db:reset-pool
Query Operations
// Using Knex.js for queries
const knex = require('knex')(databaseConfig);
// Select users
const users = await knex('users').where('active', true);
// Insert new user
const userId = await knex('users').insert({
email: 'user@example.com',
name: 'John Doe'
}).returning('id');
Database Maintenance
Backup Procedures
# Create full backup
pg_dump hostingco_prod > backup_$(date +%Y%m%d).sql
# Automated backup
npm run db:backup
# Restore from backup
psql hostingco_prod < backup_20240508.sql
Performance Optimization
Index Optimization: Regular index analysis and rebuilding
Query Optimization: Slow query monitoring and optimization
Vacuum: Regular table vacuuming for performance
Query Optimization: Slow query monitoring and optimization
Vacuum: Regular table vacuuming for performance
# Analyze query performance
npm run db:analyze-queries
# Rebuild indexes
npm run db:reindex
# Vacuum tables
npm run db:vacuum
Redis Caching
Cache Management
# Check Redis status
npm run redis:status
# Clear cache
npm run redis:clear
# Monitor Redis performance
npm run redis:monitor
Session Storage
Session Store: User sessions stored in Redis
TTL: 24-hour session expiration
Security: Encrypted session data
TTL: 24-hour session expiration
Security: Encrypted session data