Database & Backup Documentation

Complete documentation for the ContainerPub database system, backup strategies, and disaster recovery procedures.

Overview

The ContainerPub database infrastructure provides:

  • Entity-Based Database - Type-safe PostgreSQL database management
  • Query Builder - Fluent API for complex SQL queries
  • Backup System - Automated database and volume backups
  • Disaster Recovery - Complete system restore procedures
  • Replication - Real-time and scheduled data replication

Quick Links

Database System

Backup & Recovery

Database System

Key Features

Entity-Based Models:

  • Type-safe entity definitions
  • Automatic table creation
  • Field annotations and constraints
  • Relationship support

Query Builder:

  • Fluent API for SQL queries
  • Parameterized queries for security
  • Complex joins and conditions
  • Aggregation and analytics

Relationship Management:

  • hasMany - One-to-many relationships
  • belongsTo - Many-to-one relationships
  • manyToMany - Many-to-many relationships
  • Eager loading support

CRUD Operations:

  • Create, read, update, delete
  • Batch operations
  • Transaction support
  • Soft deletes

Architecture

Diagram
database/
├── lib/
│   ├── database.dart              # Main Database class
│   └── src/
│       ├── entity.dart            # Base entity & annotations
│       ├── query_builder.dart     # SQL query builder
│       ├── database_manager_query.dart  # CRUD manager
│       ├── relationship_manager.dart    # Relationships
│       └── entities/              # Database entities
│           ├── user_entity.dart
│           ├── function_entity.dart
│           ├── organization.dart
│           └── ...

Core Entities

User Management:

  • UserEntity - User accounts and authentication
  • UserInformation - Extended user profiles
  • Organization - Organization/team management
  • OrganizationMember - Organization membership

Function Management:

  • FunctionEntity - Function metadata
  • FunctionDeploymentEntity - Deployment history
  • FunctionLogEntity - Execution logs
  • FunctionInvocationEntity - Invocation records

Usage Example

yaml
// Initialize database
final db = Database(
  host: 'localhost',
  port: 5432,
  databaseName: 'containerpub',
  username: 'postgres',
  password: 'password',
);

// Create entity
final user = UserEntity()
  ..email = 'user@example.com'
  ..passwordHash = hashedPassword;

await db.users.create(user);

// Query with builder
final users = await db.users
  .where('email', '=', 'user@example.com')
  .get();

// Relationships
final userFunctions = await db.users
  .hasMany<FunctionEntity>(user.id!, 'owner_id')
  .get();

Backup System

Backup Types

Database Backups:

  • PostgreSQL dumps with pg_dump
  • Compressed archives (gzip)
  • Schema and data preservation
  • Point-in-time recovery

Volume Backups:

  • Docker volume snapshots
  • Function data archives
  • Configuration backups
  • Complete state preservation

Combined Backups:

  • Database + volumes in single archive
  • Timestamped backups
  • Automated scheduling
  • Retention policies

Backup Architecture

Flow
┌─────────────────────────────────────────────┐
│         ContainerPub Backend Stack          │
├─────────────────────────────────────────────┤
│  PostgreSQL Container  │  Backend Container │
│  ↓ postgres_data       │  ↓ functions_data  │
└──────────┬──────────────┴──────────┬────────┘
           │                         │
┌──────────▼─────────────────────────▼────────┐
│            Backup System Layer              │
│  • Database Backup (pg_dump)                │
│  • Volume Backup (tar archive)              │
│  • Combined Archives                        │
└──────────┬──────────────────────────────────┘
           │
┌──────────▼──────────────────────────────────┐
│        Replication Layer (Optional)         │
│  Local Storage │ Rsync │ S3 │ Custom        │
└─────────────────────────────────────────────┘

Backup Scripts

Core Scripts:

  • backup_database.sh - Database backup only
  • backup_volumes.sh - Volume backup only
  • backup_all.sh - Combined backup
  • restore_database.sh - Database restore
  • restore_volumes.sh - Volume restore
  • restore_all.sh - Complete restore

Replication:

  • replicate_backups.sh - Backup replication
  • setup_replication.sh - Configure replication
  • Supports rsync, S3, and custom destinations

Automation

Cron Scheduling:

dart
# Daily database backup at 2 AM
0 2 * * * /path/to/backup_database.sh

# Weekly full backup on Sunday at 3 AM
0 3 * * 0 /path/to/backup_all.sh

# Hourly replication
0 * * * * /path/to/replicate_backups.sh

Disaster Recovery

Recovery Procedures

Database Recovery:

  • Stop backend services
  • Restore database from backup
  • Verify data integrity
  • Restart services

Volume Recovery:

  • Stop containers
  • Restore volume data
  • Verify file permissions
  • Restart containers

Complete System Recovery:

  • Restore database
  • Restore volumes
  • Verify configurations
  • Test functionality
  • Resume operations

Recovery Time Objectives

  • Database: 5-15 minutes
  • Volumes: 10-30 minutes
  • Complete System: 20-45 minutes
  • Verification: 10-20 minutes

Best Practices

Database Management

  • Use Transactions - For multi-step operations
  • Parameterized Queries - Prevent SQL injection
  • Index Optimization - For frequently queried fields
  • Connection Pooling - Efficient resource usage
  • Regular Maintenance - VACUUM and ANALYZE

Backup Management

  • Regular Backups - Daily database, weekly full
  • Test Restores - Verify backup integrity monthly
  • Off-site Storage - Replicate to remote location
  • Retention Policy - Keep 30 daily, 12 weekly, 12 monthly
  • Monitoring - Alert on backup failures
  • Documentation - Keep recovery procedures updated

Security

  • Encrypted Backups - Use encryption for sensitive data
  • Access Control - Restrict backup access
  • Secure Transfer - Use SSH/TLS for replication
  • Audit Logging - Track backup operations
  • Key Management - Secure encryption keys

Monitoring

Database Metrics

  • Connection count
  • Query performance
  • Table sizes
  • Index usage
  • Lock contention
  • Replication lag

Backup Metrics

  • Backup success/failure rate
  • Backup size and duration
  • Storage usage
  • Replication status
  • Recovery time testing

Troubleshooting

Common Database Issues

Connection Errors:

  • Check PostgreSQL service status
  • Verify connection parameters
  • Check firewall rules
  • Review connection limits

Performance Issues:

  • Analyze slow queries
  • Check index usage
  • Review table statistics
  • Optimize query patterns

Common Backup Issues

Backup Failures:

  • Check disk space
  • Verify permissions
  • Review error logs
  • Test backup scripts

Restore Issues:

  • Verify backup integrity
  • Check PostgreSQL version compatibility
  • Review restore logs
  • Ensure sufficient disk space

Documentation Structure

Database Documentation

  • Entity definitions
  • Query builder API
  • Relationship management
  • CRUD operations
  • Examples and best practices
  • Common queries
  • Entity operations
  • Relationship queries
  • Troubleshooting
  • Implementation History - Development timeline
  • Feature additions
  • Bug fixes
  • Performance improvements
  • Migration notes

Backup Documentation

  • System architecture
  • Backup types
  • Replication setup
  • Disaster recovery
  • Best practices
  • Backup procedures
  • Restore procedures
  • Testing procedures
  • Automation setup
  • Backup Quick Reference - Quick commands
  • Backup commands
  • Restore commands
  • Replication commands
  • Troubleshooting

Next Steps

Support

For issues, questions, or contributions: