Backfill MongoDB data into PostgreSQL and verify ongoing parity

オープン
#175 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
静か
技術スタック
mongodb, postgresql
領域
databases

調査の方向性

#200 と #203 の Room/RaceSession ドメインコントラクトと拡張スキーマから始め、続いて PR #171 と #176 の dual-write および deployment のコンテキストと、スキーママイグレーションの履歴を確認します。再開可能な backfill を定義する前に、必要な mappings と rollback の制約を追跡します。完了とは、reconciliation、retry、concurrency のチェック、焦点を絞ったテスト、および運用ドキュメントが、列挙された受け入れ基準をカバーしていることを意味します。

索引モデルが issue の本文から書いたものです。

説明

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
主要言語
JavaScript
スター
30
フォーク
9
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

coder13/LetsCube のほかの issue

coder13/LetsCube の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。