Skip to content

feat: PostgreSQL を primary DB に移行する #62

Description

@strnh

方針

PostgreSQL を primary DB とし、SQLite は移行元・legacy 用途として扱う。

複数PC・複数利用者での運用、ロック制御、厳密な型、PostgreSQL を採用する既存システムとの連携を考慮し、SQLite を運用DBの最終形にはしない。

SQLite の既存データ・バックアップをただちに廃止するものではない。SQLite は移行元および既存環境の互換用として維持し、DB driver ごとのバックアップ/リストアを提供する。SQLite と PostgreSQL のSQL dumpは相互に復元せず、DB間のデータ移行にはJSONバックアップを使用する。

完了済み

現在の設計

  • DB_CONNECTION=pgsql を本番運用の接続として使用する。
  • SQLite/PostgreSQLのバックアップは各driverのSQL形式で作成・復元し、cross-driver restoreは明示的に拒否する。
  • SQLiteからPostgreSQLへの業務データ移行は、アプリのJSON export/import経路で行う。
  • 開発・テストではSQLiteも継続して使用できる。これは本番primary DBの方針と矛盾しない。

残作業

  • PostgreSQLを使うproduction環境の配備・監視・バックアップ運用を整備する(nginx + PHP-FPM production配備スクリプト群を整備する #55
  • SQLite既存データをJSON export/importでPostgreSQLへ移す手順をrunbook化し、実データ相当で検証する
  • PostgreSQLを使う本番切替時の停止手順、ロールバック方針、バックアップ世代管理を確定する
  • SQLite legacy環境をどの期間・用途までサポートするかを決める
  • backup/restoreのブラウザE2EをSQLite / PostgreSQLの責務に分けて追加する(test: backup/restore の E2E を追加 #49

関連

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