Backfill MongoDB data into PostgreSQL and verify ongoing parity

Abierto
#175 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
mongodb, postgresql
Área
databases

Línea de trabajo

Comienza con el contrato de dominio y el esquema de expansión de Room/RaceSession de #200 y #203; después revisa el contexto de dual-write y deployment en PR #171 y #176, además del historial de migraciones del esquema. Traza los mappings necesarios y las restricciones de rollback antes de definir el backfill reanudable. Se considera terminado cuando las comprobaciones de reconciliation, retry y concurrency, las pruebas específicas y la documentación operativa cubren los criterios de aceptación enumerados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area: data enhancement priority: P1

Part of #199.

Goal

Turn PostgreSQL dual writes into a trustworthy migration target by copying historical MongoDB data and continuously checking parity.

For the competition-room foundation, this backfill must target the new Room/RaceSession model rather than preserving the current assumption that a room is itself one racing session.

RaceSession mapping

  • Convert each existing MongoDB room into one PostgreSQL Room plus one RaceSession for its current event.
  • Attach every embedded attempt to that RaceSession while preserving deterministic attempt and solve IDs.
  • Populate session participant state according to the approved domain contract.
  • Preserve room identity, access code, ownership, privacy, timestamps, and deletion/expiration state.
  • Make the mapping explicit and repeatable; do not attempt to infer event sessions whose attempts were already deleted by the legacy event-change behavior.
  • Verify concurrent live writes are neither lost nor duplicated during the backfill.

Acceptance criteria

  • Implement an idempotent, resumable backfill for users/preferences, rooms, race sessions, participant state, attempts, durable solve results, and sanitized metrics.
  • Support dry-run, bounded batches, progress checkpoints, and safe retries.
  • Do not copy OAuth access tokens or prohibited metric fields.
  • Produce reconciliation output for record counts, missing identifiers, duplicate identifiers, room/session relationships, penalty fields, and representative aggregates.
  • Verify every attempt belongs to the expected RaceSession and every RaceSession belongs to the expected Room.
  • Verify writes arriving during the backfill are not lost or duplicated.
  • Document operational invocation, expected runtime/load, alerts, failure recovery, and how to rerun only failed ranges.
  • Add focused tests for deterministic IDs, cursor boundaries, retry behavior, session mapping, and reconciliation failures.

Dependencies

  • Stable production dual writes from PR #171, deployed through #176.
  • The Room/RaceSession domain contract and expansion schema from #200 and #203.
  • The schema and migration history must remain compatible with rollback requirements.

Unlocks

  • #202
  • #174
  • #160
Lenguaje dominante
JavaScript
Estrellas
30
Forks
9
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de coder13/LetsCube

Todos los issues de coder13/LetsCube

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.