メインコンテンツまでスキップ

データベースモデル

スタジオがデータをどこにどのような形で格納するかをまとめたドキュメントです。バックアップ範囲を 決めたり、直接クエリを実行したりする際に参照します。

ストレージは2つあります

PostgreSQL にはメタデータが格納され、ファイルシステム(DATA_ROOT)にはアプリのソースとビルド 成果物が格納されます。両方を取得して初めて復元できます — DB だけではアプリコードがなく、ファイル だけでは誰が何を作成したかがわかりません。

ストレージ格納するもの
PostgreSQLユーザー・アプリメタ・会話・監査・ウォッチャー・スキル
ファイルシステム (DATA_ROOT)ワークスペース(アプリソース)・ビルド成果物・状態

PostgreSQL は2つのモードのいずれかです — バンドルコンテナ(デフォルト)またはプラットフォーム共有 PG。 環境変数リファレンス を参照してください。


テーブル — 11個​

グループテーブル格納するもの
ユーザーstudio_usersアカウント・ロール(admin/builder/viewer)・パスワードハッシュ
studio_tokens発行済みトークン
会話ask_conversationsチャットスレッド
ask_history送受信メッセージと所要時間
ウォッチャーwatchers定期監視定義と通知設定
notification_seen通知確認状態
スキルskills現場ノウハウ登録版
デプロイdeploy_logデプロイ履歴
監査・使用量audit_log誰が何をしたか
usage_logAI トークン使用量
スキーマschema_migrations適用済みマイグレーション名と日時
マイグレーションログには flows が表示されます

新規インストールも flows で作成した後、watchers にリネームする手順を踏みます — マイグレーション 履歴は一度記録されると変更されないためです。直接クエリを実行する場合は watchers です。


スキーマ変更はマイグレーションが管理します​

サーバー起動時に src/infra/db/migrations/ の .sql を番号順に適用し、適用した ファイル名を schema_migrations に記録します。適用済みのものは再度実行されません。

-- 지금 어디까지 적용됐는지
SELECT name, applied_at FROM schema_migrations ORDER BY name;
スキーマを手で変更しないでください

schema_migrations と実際のスキーマが一致しない場合、次のアップグレードでマイグレーションが 「既存のものを作成しようとして」失敗します。画面起動全体がブロックされます。

アップグレード前にはバックアップを先に取得してください → バックアップと復元。


ファイルシステム — DATA_ROOT​

デフォルト値は /var/lib/pp-studio です。以下がすべてこの中に格納されます。

格納されるものない場合
アプリワークスペース(生成されたソース)アプリを開けません — DB にはメタデータのみあります
ビルド成果物再ビルドすれば再作成できます
セッション・状態進行中だった作業が失われます
DB は DATA_ROOT にありません

スタジオは外部 PostgreSQL を使用します。DATA_ROOT を丸ごとバックアップしても DB は別途 取得する必要があります — バックアップと復元 を参照してください。


バックアップで見落としやすいもの​

取得すべきもの漏らした場合
PostgreSQL ダンプアカウント・ウォッチャー・会話・監査記録が失われる
DATA_ROOTアプリソースが失われ、アプリを開けなくなる
/etc/kopens/plantpulse-studio.env接続情報・キーを再設定する必要がある
復元を一度は実行してみてください

バックアップのみで復元を試したことがない状態が最も危険です。手順は バックアップと復元 に記載されています。


関連ドキュメント​