Ich weiß, dass es nicht empfehlenswert ist, Sqlite über ein Netzlaufwerk zu verwenden, und zwar aus zwei Gründen: Performance und Datenbeschädigung aufgrund der schlechten Implementierung von Netzwerk-Dateisystemen.
Dennoch möchte ich die Möglichkeit erkunden, Sqlite zu verwenden, um eine Mehrbenutzeranwendung mit einer zentralen Datenbank zu unterstützen. Wir unterstützen Sqlite bereits auf einer Single-User-Maschine und mehreren Datenbankservern (Oracle, PostgreSQL) für Multi-User-Setups. Die Verwendung von Sqlite für die Einrichtung von mehreren Benutzern wäre praktisch, um leichte Installationen in vorhandenen IT-Infrastrukturen mit freigegebenen Windows-Laufwerken (SMB) zu ermöglichen.
Wir kümmern uns nicht zu sehr um die Leistung, daher sind wir bereit, den Preis zu zahlen, der nötig ist, um Korruption zu vermeiden. Zitieren Ссылка , Abschnitt 9.1:
Aber wenn Sie ein Netzwerk-Dateisystem verwenden müssen, um die SQLite-Datenbank zu speichern Dateien, sollten Sie einen sekundären Sperrmechanismus verwenden, um dies zu verhindern Simultanes Schreiben in die gleiche Datenbank, selbst wenn das native Dateisystem Sperrmechanismus Fehlfunktionen.
Ich suche nach Tipps und Ratschlägen, um einen solchen Mechanismus zu implementieren, oder, allgemeiner gesagt, über Tipps, um Probleme mit Sqlite über ein freigegebenes Windows-Laufwerk zu vermeiden.
Zum Beispiel denke ich über den folgenden hirntoten Ansatz zum Sperren nach: Versuchen Sie vor einer (nicht schreibgeschützten) SQLite-Abfrage, eine leere Datei im selben freigegebenen Ordner zu erstellen, und lassen Sie sie bis zum Ende der Datei geöffnet Abfrage; Normalerweise würde jeder andere Windows-Prozess, der versucht, eine Datei mit demselben Namen zu erstellen, während sie noch geöffnet ist, blockiert oder fehlgeschlagen. Funktioniert das? Alles besser?
Tags und Links sqlite