Bevor ich die Frage stelle, möchte ich zunächst meine Gedanken zu SQLite beschreiben.
Ich mag Tools, die klein, schnell und vor allem nur die wirklich notwendige Funktionalität haben. Deshalb mag ich SQLite und MS-SQL ein bisschen weniger.
Zum Beispiel: MS-SQL verfügt möglicherweise über viel mehr Funktionen, Skalierbarkeit usw. usw. Die Installation kann jedoch auch schwierig sein, wenn Sie Pech haben. Natürlich sage ich nicht, dass eine schwierige Installation ein Grund ist, sich nicht für eine bestimmte Datenbank zu entscheiden.
Verstehen Sie mich nicht falsch: MS-SQL ist ein Produkt von guter Qualität. Ich bin sehr erfahren mit MS-SQL; Ich verstehe das Produkt sehr gut als Profi. Ich bevorzuge es einfach weniger unter bestimmten Umständen, wo es ist nicht wirklich benötigt wird (= nicht viele Benutzer, <10-15).
Wie viel von der Funktionalität einer Datenbank nutzen Sie wirklich? Nach meiner Erfahrung ist es oft nur das normale SQL (SELECT, INSERT und UPDATE).
Ich mag SQLite. Ist schnell faszinierend. Es ist extrem einfach zu "installieren". Ich denke, SQLite kann mehr, als es behauptet. Warum sollte es nur für Einprozess- / Einzelbenutzeranwendungen verwendet werden? Immerhin: Nicht viele Anwendungen greifen ständig auf eine Datenbank zu.
Beispiel: Stellen Sie sich eine ERP-Anwendung mit beispielsweise 15 Benutzern vor. Warum kann SQLite dafür nicht verwendet werden? Seien wir ehrlich: Nach meiner beruflichen Erfahrung greifen Benutzer dieser Art von Anwendung in den meisten Fällen für etwa 5-10% der Gesamtzeit, in der sie die Anwendung verwenden, auf die Datenbank zu. In den anderen 90-95% beobachten sie nur die Informationen auf dem Bildschirm, geben Daten in ein Raster / Formular ein und wenn sie ihre Eingaben speichern, ist dies nicht mehr als 1 Sekunde der Datenbankzeit. Fe: 1,5 Minuten Eingabezeit gegenüber 1 Sekunde Zeitersparnis.
Wenn die SQLite-Datenbankdatei während der "Zeitersparnis" gesperrt ist, warten andere Benutzer, die auf die Datenbank zugreifen müssen, nur, aber sie bemerken dies nicht, da die Wartezeit sehr gering sein wird (unbemerkt). Im Code muss man sich nur mit der möglichen "ausgelasteten" Zeit der Datenbank auseinandersetzen, um Ausnahmen zu vermeiden, aber das ist nicht schwer zu tun.
Ein Typ, der genauso denken muss wie ich, hat sogar eine Client-Server-Lösung für SQLite entwickelt: SQLitening . Das hat mich mehr überzeugt, dass ich mich nicht selbst täuschen kann.
Natürlich gibt es datenbankintensive Anwendungen, bei denen SQLite nicht passt. Aber wenn ich jetzt darüber nachdenke, sollten viele Mehrbenutzeranwendungen mit SQLite gut funktionieren, wenn sie nicht mehr als 15 Benutzer haben.
Viele unserer Kunden geben nicht viel für Hardware aus, daher stoße ich häufig auf einen einzigen Server, auf dem sich alles befindet (Exchange, SQL (s), Clients usw.) und der fast "außer Atem" ist. Wenn ich ein Produkt liefern könnte, das keine hohen Systemanforderungen hat, wäre mein Kunde glücklich. SQLite fügt kein Gewicht hinzu (zumindest nicht viel), MS-SQL tut dies. Ich würde mich also nicht für SQLite entscheiden, da es kostenlos, günstig oder einfach zu installieren ist. Ich würde es aus praktischen / technischen Gründen wählen.
Zu meiner Information: In meinem Beruf verkaufen wir Produkte (kundenspezifisch und standardmässig, hauptsächlich ERP-bezogen) an Kunden, bei denen durchschnittlich nicht mehr als 5-6 Personen das Produkt verwenden. Es gibt einige Ausnahmen, aber nicht mehr als 10-15 Benutzer.
Die Frage ist: Habe ich Recht, wenn ich denke, dass ich SQLite für eine Mehrbenutzeranwendung wie das von mir beschriebene Beispiel verwenden kann? Gibt es technische Nachteile, die ich kennen sollte? Welche (negativen oder positiven) Erfahrungen werden mir helfen, die richtige Wahl zu treffen?
Update: Bitte sehen Sie dies nicht als negative Beurteilung anderer Datenbanken. Sie sind meist alle feine Produkte. Teile hier nur meine Gedanken mit und bin an deinen Meinungen dazu interessiert.