Skip to Content
Engineering11 Documentation 🔥

Migration API

Database migration framework for large-scale Firestore transformations.

What It Does

The Migration API provides a sophisticated framework for executing large-scale database migrations, particularly for Firestore collections. It enables memory-efficient data transformations using pagination, event-driven architecture, and batch operations.

Key Capabilities

  • Paginated Migrations: Process large datasets in chunks
  • Memory Efficient: Configurable page sizes prevent memory overflow
  • Batch Operations: Efficient Firestore batching
  • Execution Control: Selective migration runs with ordering
  • Progress Tracking: Monitor pages and items processed
  • Flexible Transformations: Custom transformation functions
  • Context Management: Global and per-page context

Main Components

SimpleCollectionMigration

Simplified pattern requiring only execute() method:

class MyMigration extends SimpleCollectionMigration<T> { options = {collection: 'users', migrationId: 'upgrade-users'} async execute(doc: T) { return doc.version < 2 // true to migrate } }

MigrationRunner

High-level runner for executing migrations:

new MigrationRunner(migrations, globalContextItems).run(pageSize, projectId, onlyIds)

FirestoreCollectionMigration

Core migration class implementing ETL pattern:

  • fetchPage(): Paginated retrieval
  • transformPage(): Custom transformations
  • writePage(): Batch writes

Common Use Cases

  • Database schema upgrades
  • Data format migrations
  • Large-scale data transformations
  • Multi-collection updates
  • Firestore to SQL migrations

What Customers Don’t Have to Build

  • Pagination for large datasets
  • Batch write operations
  • Migration orchestration
  • Progress tracking
  • Context management
  • Execution ordering
  • Memory optimization
Last updated on