DATABASE_URL bestimmt.
SQLite vs PostgreSQL
Bekannte Einschränkung: SQLite Concurrent Streaming
Verbindungspoolkonfiguration
FIM One konfiguriert SQLAlchemy-Verbindungspooleinstellungen intern für jedes Backend. Dies sind optimierte Standardwerte, die keine Umgebungsvariablen erfordern – sie werden automatisch basierend auf demDATABASE_URL-Schema angewendet. Das Verständnis dieser Einstellungen hilft, das Laufzeitverhalten zu erklären.
SQLite Pool-Einstellungen
Der WAL-Modus und das 30-Sekunden-Timeout werden über SQLite PRAGMAs bei jeder neuen Verbindung gesetzt. Diese Kombination stellt sicher, dass kurzlebige Lesevorgänge (Laden einer Gesprächsliste, Abrufen von Einstellungen) nicht durch langfristige Schreibtransaktionen blockiert werden, und dass gleichzeitige Schreibvorgänge elegant in die Warteschlange eingereiht werden, anstatt fehlzuschlagen.
PostgreSQL-Pool-Einstellungen
PostgreSQL verwaltet Parallelität nativ über MVCC, daher steuern die Pool-Einstellungen hauptsächlich die Ressourcennutzung statt Konflikte. Das 30-Minuten-Recycling-Intervall vermeidet Probleme mit Firewalls, Load Balancern oder verwalteten Datenbankdiensten, die untätige TCP-Verbindungen stillschweigend trennen.
Wechsel zu PostgreSQL
Schritt 1: Starten Sie eine PostgreSQL-Instanz
Der schnellste Weg ist mit Docker:Schritt 2: DATABASE_URL festlegen
Fügen Sie die folgende Zeile in Ihrer.env-Datei hinzu oder aktualisieren Sie sie:
Schritt 3: FIM One neu starten
Vorhandene SQLite-Daten werden nicht automatisch migriert. Das Wechseln von
DATABASE_URL von SQLite zu PostgreSQL beginnt mit einer frischen Datenbank. Wenn Sie vorhandene Gespräche, Agenten oder Konnektoren in SQLite haben, die Sie beibehalten möchten, siehe den Abschnitt Datenmigration unten.Docker Compose (Empfohlen für Produktion)
Wenn Sie mit Docker Compose bereitstellen, sind PostgreSQL und Redis bereits enthalten und automatisch konfiguriert — es gibt nichts Zusätzliches zu konfigurieren. Diedocker-compose.yml setzt DATABASE_URL intern — Ihr .env-Wert wird überschrieben:
Datenmigration
Es gibt kein integriertes Migrationstool von SQLite zu PostgreSQL. Für die meisten Bereitstellungen hängt der empfohlene Ansatz von Ihrer Situation ab: Neue Bereitstellung (keine vorhandenen Daten): Setzen Sie einfachDATABASE_URL auf Ihre PostgreSQL-Verbindungszeichenfolge und starten Sie FIM One. Alle Tabellen werden automatisch erstellt.
Vorhandene Daten, die beibehalten werden müssen: Manuelle Export/Import ist erforderlich. Der allgemeine Ansatz:
- Exportieren Sie Daten aus SQLite mit einem Tool wie
sqlite3CLI oder einem Python-Skript - Transformieren Sie die Daten nach Bedarf (SQLite und PostgreSQL haben geringfügige Typunterschiede)
- Importieren Sie in PostgreSQL mit
psql,pg_restoreoder Skripten auf Anwendungsebene