Skip to content

source dump/export用LanceDBをPostgreSQL dump cacheへ移行する #638

Description

@hmjn023

親Issue

背景

source dump/export用LanceDBの常時同期が、通常利用時にも高いCPU・メモリ負荷を生む。CCIP用LanceDBとは独立に、dump/exportのread modelをPostgreSQLへ移す。

方針

  • (source_id, media_id) 単位の差分dump cacheをPostgreSQLに持つ。
  • 完成済みのdump payloadは jsonb とし、schema versionと生成元revisionを保持する。
  • payloadに影響する更新と同一transactionでdirty stateを記録する。
  • source単位でdebounce/coalescingし、batch UPSERTでcacheを更新する。
  • NDJSONは COPY (SELECT payload::text ... ORDER BY ...) TO STDOUT でストリーミング出力し、アプリ側で全件をmaterializeしない。
  • dump開始時のfreshness、snapshot境界、画像tarとの整合性、失敗時の再開を明確にする。
  • 新しい汎用jobs依存は増やさず、DB関連の刷新 #612 Phase 5 のdomain-specific run/item方針に合わせる。

実装項目

  • dump cache / dirty state / schema versionのschemaとmigrationを追加する
  • media・tag・character・IP・author等、dump payloadへ影響する更新箇所でdirty markerをtransactionalに記録する
  • source単位のdebounce/coalescingとbatch UPSERTで差分cacheを更新する処理を実装する
  • PostgreSQLのstreaming COPY からNDJSONを生成し、画像tarを含むdump処理をbounded-memory化する
  • 現行Lance dumpとの件数・内容・順序のparity、snapshot整合性、失敗再開、通常時負荷、dump速度を実測する
  • rollback可能期間を経て、source dump/export用LanceDBの同期job・schema・設定・依存を削除する

受け入れ条件

  • LanceDBの常時同期なしでsource dump/exportを生成できる。
  • NDJSON/tarの内容と整合性が既存実装と同等である。
  • dump処理がbounded memoryで動作し、通常利用時の負荷とdump速度の基準を満たす。
  • rollback手順と移行後のLance依存ゼロを確認できる。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions