DATABASE_URL 環境変数によって決定されます。
SQLite vs PostgreSQL
既知の制限: SQLite 同時ストリーミング
コネクションプール設定
FIM One は各バックエンド用に SQLAlchemy コネクションプール設定を内部で設定します。これらはチューニング済みのデフォルト値であり、環境変数を必要としません。DATABASE_URL スキームに基づいて自動的に適用されます。これらを理解することで、実行時の動作を説明するのに役立ちます。
SQLite プール設定
WAL モードと30秒の busy_timeout は、新しい接続ごとに SQLite PRAGMA を介して設定されます。この組み合わせにより、短命の読み取り(会話リストの読み込み、設定の取得)が長時間実行される書き込みトランザクションによってブロックされず、同時書き込みが失敗する代わりに適切にキューイングされることが保証されます。
PostgreSQL プール設定
PostgreSQL は MVCC を介してネイティブに同時実行性を処理するため、プール設定は主にリソース使用量を制御し、競合ではなく。30分のリサイクル間隔により、ファイアウォール、ロードバランサー、またはアイドル TCP 接続を暗黙的にドロップするマネージドデータベースサービスの問題を回避できます。
PostgreSQLへの切り替え
ステップ 1: PostgreSQL インスタンスを起動する
最も簡単な方法は Docker を使用することです:ステップ 2: DATABASE_URL を設定する
.env ファイルに次の行を追加または更新します:
ステップ 3: FIM One を再起動する
既存の SQLite データは自動的にはマイグレーションされません。
DATABASE_URL を SQLite から PostgreSQL に切り替えると、新しいデータベースから開始されます。SQLite に既存の会話、エージェント、またはコネクタがあり、それらを保持する必要がある場合は、以下のデータマイグレーションセクションを参照してください。Docker Compose (本番環境に推奨)
Docker Composeでデプロイする場合、PostgreSQLとRedisは既に含まれており、自動設定されます — 追加のセットアップは不要です。docker-compose.ymlはDATABASE_URLを内部で設定します — .envの値はオーバーライドされます:
データ移行
SQLiteからPostgreSQLへの組み込み移行ツールはありません。ほとんどのデプロイメントでは、推奨されるアプローチはあなたの状況によって異なります: 新規デプロイメント(既存データなし):DATABASE_URLをPostgreSQLの接続文字列に設定し、FIM Oneを起動するだけです。すべてのテーブルは自動的に作成されます。
保持する必要がある既存データ: 手動エクスポート/インポートが必要です。一般的なアプローチ:
sqlite3CLIやPythonスクリプトなどのツールを使用してSQLiteからデータをエクスポートする- 必要に応じてデータを変換する(SQLiteとPostgreSQLにはマイナーな型の違いがあります)
psql、pg_restore、またはアプリケーションレベルの挿入スクリプトを使用してPostgreSQLにインポートする