{
  "type": "database",
  "pattern": "schema_change",
  "source": "PostgreSQL 13 Production Database",
  "target": "PostgreSQL 15 Cloud Database",
  "description": "Migrate user management system from on-premises PostgreSQL to cloud with schema updates",
  "constraints": {
    "max_downtime_minutes": 30,
    "data_volume_gb": 2500,
    "dependencies": [
      "user_service_api",
      "authentication_service",
      "notification_service",
      "analytics_pipeline",
      "backup_service"
    ],
    "compliance_requirements": [
      "GDPR",
      "SOX"
    ],
    "special_requirements": [
      "zero_data_loss",
      "referential_integrity",
      "performance_baseline_maintained"
    ]
  },
  "tables_to_migrate": [
    {
      "name": "users",
      "row_count": 1500000,
      "size_mb": 450,
      "critical": true
    },
    {
      "name": "user_profiles",
      "row_count": 1500000,
      "size_mb": 890,
      "critical": true
    },
    {
      "name": "user_sessions",
      "row_count": 25000000,
      "size_mb": 1200,
      "critical": false
    },
    {
      "name": "audit_logs",
      "row_count": 50000000,
      "size_mb": 2800,
      "critical": false
    }
  ],
  "schema_changes": [
    {
      "table": "users",
      "changes": [
        {
          "type": "add_column",
          "column": "email_verified_at",
          "data_type": "timestamp",
          "nullable": true
        },
        {
          "type": "add_column", 
          "column": "phone_verified_at",
          "data_type": "timestamp",
          "nullable": true
        }
      ]
    },
    {
      "table": "user_profiles",
      "changes": [
        {
          "type": "modify_column",
          "column": "bio",
          "old_type": "varchar(255)",
          "new_type": "text"
        },
        {
          "type": "add_constraint",
          "constraint_type": "check",
          "constraint_name": "bio_length_check",
          "definition": "LENGTH(bio) <= 2000"
        }
      ]
    }
  ],
  "performance_requirements": {
    "max_query_response_time_ms": 100,
    "concurrent_connections": 500,
    "transactions_per_second": 1000
  },
  "business_continuity": {
    "critical_business_hours": {
      "start": "08:00",
      "end": "18:00", 
      "timezone": "UTC"
    },
    "preferred_migration_window": {
      "start": "02:00",
      "end": "06:00",
      "timezone": "UTC"
    }
  }
}