Skip to content

[FEATURE] Schema Drift Detection #20

@iamvirul

Description

@iamvirul

Feature Description

Comprehensive schema drift detection that identifies structural differences between production and development databases, including table-level and column-level differences.

Status

Implemented in: v0.1
Status: Completed

Implementation Details

Detection Capabilities

  • Table-level differences (missing tables, extra tables)
  • Column-level differences (missing columns, extra columns)
  • Column type mismatches
  • Nullable constraint differences
  • Primary key detection and validation

Reporting

  • JSON format schema diff reports
  • Human-readable text format reports
  • Detailed column-by-column comparison
  • Table-by-table breakdown

Commands

  • deepdiffdb schema-diff - Standalone schema comparison
  • Integrated into deepdiffdb diff and deepdiffdb gen-pack

Database Support

  • MySQL (via INFORMATION_SCHEMA)
  • PostgreSQL (via INFORMATION_SCHEMA)
  • SQLite (via sqlite_master)

Technical Implementation

  • Schema introspection using database metadata
  • Normalized schema model
  • Driver-specific query optimization
  • PostgreSQL schema-aware queries

Features

  • Detects missing tables in either database
  • Identifies column differences
  • Reports type mismatches
  • Validates primary key requirements
  • Respects ignore lists

Use Cases

  1. Pre-Migration Validation:

    • Check for schema drift before data migration
    • Identify structural differences
    • Prevent migration failures
  2. Schema Synchronization:

    • Track schema changes over time
    • Identify drift between environments
    • Document schema differences
  3. Development Workflow:

    • Validate schema consistency
    • Catch schema drift early
    • Ensure production readiness

Impact

  • Prevents data migration failures
  • Enables schema validation
  • Foundation for schema migration generation

Related Features

  • Schema migration generation (partial in v0.2, enhanced in v0.3)
  • Primary key validation
  • Ignore list support

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestv0.1version 0.1

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions