Ich habe einige Anwendungen gesehen, bei denen es sich im Wesentlichen um Anwendungssoftware handelt, die lokal auf dem System ausgeführt wird (sodass sie nicht viel über das Netzwerk kommunizieren). Diese Anwendungen scheinen von Datenbankservern abhängig zu sein, um ihre Daten zu speichern.
Ein Beispiel für eine Anwendung ist Amarok (ein beliebter Musikplayer unter Linux). Ich weiß nicht, ob sie das immer noch tun, aber ich erinnere mich, dass die Installation von Amarok bedeutete, dass Sie einen MySQL-Server installieren und ihn die ganze Zeit im Hintergrund laufen lassen mussten.
Was ist der Vorteil eines Servers für den lokalen Speicher im Vergleich zu einer kleineren Embedded SQL-Lösung wie SQLite? Ich spreche von Anwendungssoftware im Allgemeinen, nicht unbedingt von Amarok (das war nur ein Beispiel). Gibt es Situationen, in denen die Verwendung eines Datenbankservers im Vergleich zu einer eingebetteten Datenbank sinnvoll ist?
quelle
Antworten:
SQLite bietet eine ziemlich gute Übersicht darüber, wann es zu verwenden ist oder nicht, im Vergleich zu Alternativen:
https://www.sqlite.org/whentouse.html
Diese Zusammenfassung fasst den SQLite-Anwendungsfall meiner Erfahrung nach sehr gut zusammen:
In diesem Punkt wird der Artikel ausführlich behandelt. Es gibt auch einen Abschnitt mit dem Titel "Situationen, in denen ein Client / Server-RDBMS möglicherweise besser funktioniert". Kurz gesagt, sind sie:
quelle
Selbst für ein einzelnes System mit einem einzelnen Benutzer ist ein "echter" Datenbankserver sinnvoll:
Der Hauptnachteil ist die Installation und Wartung der Datenbankserversoftware, die für nichttechnische Benutzer (und sogar für viele technische Benutzer) etwas komplex ist. Betriebssysteme wie Linux machen dies einfacher: Ich habe PostgreSQL und MySQL auf meinem Linux-System ausgeführt. Ich habe Anwendungen installiert, die sich mit wenig bis gar keiner Interaktion meinerseits in sie eingebunden haben.
quelle
Ich denke, es hat mit Trägheit zu tun.
Amarok basiert auf XMMS aus dem Jahr 1997. Um gute Datenbankfähigkeiten zu haben, musste ein Server verwendet werden, da dieser viel leistungsfähiger war als die dateibasierten Lösungen, die auf keinen Fall über gute Datenbankfähigkeiten verfügten.
Die bevorstehende und zunehmende Beliebtheit guter lokaler eingebetteter Datenbanken wie SQLlite ist relativ neu.
quelle
Das wichtigste Unterscheidungsmerkmal ist die Nebenläufigkeit .
Wenn Sie nur eine Anwendung haben, die in einer Instanz für den Benutzer ausgeführt wird, ist die eingebettete Lösung (ob SQLite oder ein Objektspeicher) normalerweise in Ordnung.
Wenn Sie jedoch mehrere Instanzen haben, die die Datenbank gleichzeitig bearbeiten müssen, benötigen Sie einen Server, um sie zu synchronisieren. SQLite lässt nur einen Schreibzugriff auf die gesamte Datenbank zu, ebenso wie die meisten anderen eingebetteten Lösungen. Und wenn Sie sogar mehrere Anwendungen haben, müssen Sie wahrscheinlich detailliertere Bedingungen festlegen, die die eingebetteten Lösungen im Allgemeinen auch nicht zulassen.
quelle
Viele der anderen Antworten sprechen von Nebenläufigkeit als Vorteil. Da die Datenbank jedoch als Server ausgeführt wird, kann die Datenbank Aufgaben ausführen, ohne dass die Anwendung ausgeführt werden muss. Dies kann Wartung, Backups, Synchronisation mit einem anderen Server oder eine geplante Aufgabe sein.
Wenn Sie der Meinung sind, Ihre App könnte sich in eine Client / Server-App verwandeln, sollten Sie ein RDBMS von Anfang an verwenden, anstatt es später zu portieren.
Ich habe keine Ahnung, ob das gegebene Beispiel dies ausnutzt oder nicht.
quelle
Wenn Sie kein Embedded-System mit wenig Arbeitsspeicher und CPU betreiben, schadet es Ihnen meiner Meinung nach nicht, wenn Sie einen Server im Hintergrund betreiben.
Das lokale Ausführen eines Datenbankservers ist in Ordnung. Die Datenbank soll auf Daten zugreifen und diese bearbeiten. Der Netzwerkzugriff ist ein Plus, der möglicherweise benötigt wird oder nicht. Es gibt einige technische und wissenschaftliche Werkzeuge, die dies tun.
Angenommen, Sie verwenden Daten in einer lokalen Anwendung. Warum sollten Sie keine Datenbank verwenden? im gegensatz zu was?
quelle
Dies hängt von Ihrer Datenabstraktion und dem gesamten Anwendungsbereich, den Anforderungen an das Zugriffsmanagement, den geplanten Investitionen in die Datenpflege, der Dringlichkeit des erforderlichen Prototyps und dem Lernstand ab.
Wenn Sie eine eng integrierte Datenbank für eine Anwendung sicherstellen möchten, auf die keine anderen Anwendungen zugreifen müssen, erstellen Sie Inseln mit eingebetteter Datenbank. Als Beispiel sei die Mozilla Firefox Web Storage-Implementierung mit SQLite genannt.
Wenn Sie mit begrenzten Datenmengen noch effizienter arbeiten möchten, ist eine Auswahl an In-Memory-Datenbanken vorzuziehen.
Auf der anderen Seite ist ein zentrales DBMS erforderlich, wenn in vielen Anwendungen mehrere Abfragen für dieselben Daten ausgeführt werden und eine bessere Strukturierung der Datenspeicherung erforderlich ist, um die Leistung zu optimieren. Ich werde es unbedingt für wissenschaftliche Forschung bevorzugen, wenn es eine große Datenmenge erfordert und die Antwortzeit für Abfragen die allgemeine Benutzererfahrung drastisch beeinflusst.
Für den Amarok-Fall war es vermutlich eine Auswahl von Open-Source-DBMS zu dieser Zeit, bevor sie den Pfad eingebetteter Datenbanken wählten.
Wenn Sie eine bestimmte Systemdefinition zur Hand haben, ist es einfacher, Nachteile und Vorteile zu gewichten.
V / r, Umut
quelle