Hallo zusammen,
ich stelle mir gerade die Frage, warum Datenbanken so viel schneller sind, als wenn ich die Daten in Dateien speichern würde. Kann mir das jemand 'einfach' erklären?
Danke schon mal!
Warum sind Datenbanken so vergleichsweise schnell?
Wenn ich mir vorstelle, ich würde die Daten in Textdateien speichern, dann gehe ich davon aus, dass eine Datenbank mir das Ergebnis schneller liefert. Ich habe auf dem Rechner Software zur Dateiuntersuchung installiert (Agent Ransack) und ich habe in einem Fall Textdateien, die ich durchsuchen muss. Bei einer Datenbank wäre ein Ergebnis m. E. schneller da? Liege ich hier falsch?
Also Meinung hast du. Und Vorstellung. Aber sein tut’s nicht.
Um das mal ganz klar zu sagen: NEIN, Datenbanken sind nicht per se schneller in irgendwas. Insbesondere nicht, wenn sie Dinge wie ACID unterstützen, die vieles einfacher machen, aber dafür muss auch vieles getan werden, das Zeit kostet.
Und obendrauf ist Datenbanken so schwammig, und dein Szenario so unterspezifiziert, das die Antwort nur lauten kann: kommt drauf an. Aber eher nicht.
Um das mal ganz klar zu sagen: NEIN, Datenbanken sind nicht per se schneller in irgendwas. Insbesondere nicht, wenn sie Dinge wie ACID unterstützen, die vieles einfacher machen, aber dafür muss auch vieles getan werden, das Zeit kostet.
Und obendrauf ist Datenbanken so schwammig, und dein Szenario so unterspezifiziert, das die Antwort nur lauten kann: kommt drauf an. Aber eher nicht.
- __blackjack__
- User
- Beiträge: 13919
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@pixewakb: Da Datenbanken die Daten üblicherweise auch in Dateien speichern, liegt der Unterschied dazu das *Du* die Daten in Dateien speicherst, bei *Dir*. 
Spass beiseite: Man verwendet keine DBMS weil die auf magische Weise schneller laufen als man das selber programmieren könnte (wenn man sich Mühe gibt/weiss was man tut), sondern weil es viel länger dauert alles was ein DBMS bietet selbst zu programmieren. Und das ist nicht nur relativ flotter Zugriff auf Daten, sondern in der Regel auch Garantien wie atomare Schreibzugriffe, Transaktionen, und bei grösseren DBMS auch so Sachen wie Replikation, Sharding, … – alles auch Sachen die auch nicht ganz ohne sind was Fehleranfälligkeit angeht, wenn man das selbst programmiert. Wenn man ein verbreitetes DBMS verwendet, dann ist das in der Regel auch gut und ausgiebig getestet.
Letztlich ist aber auch die Frage was Du als Datenbank siehst. Eine Textdatei mit strukturierten Daten ist letztlich ja auch eine Datenbank. Und ob ein Ergebnis schneller vorliegt, hängt nicht unwesentlich davon ab was ”durchsuchen” meint. Und ob bei Abfragen die Zeit für eine Vorverarbeitung mitgezählt wird oder nicht. Eine Datenbank kann schneller sein, wenn die Daten vorher entsprechend aufbereitet, und zum Beispiel für die Abfragen sinnvoll indexiert wurden. Das erstellen und pflegen eines Index benötigt aber auch Zeit, verlangsamt also das schreiben/hinzufügen von Daten.
Grundsätzlich wird ein allgemeines DBMS durchaus langsamer sein als speziell auf die Problemstellung zugeschnittene Algorithmen und (persistente) Datenstrukturen.

Spass beiseite: Man verwendet keine DBMS weil die auf magische Weise schneller laufen als man das selber programmieren könnte (wenn man sich Mühe gibt/weiss was man tut), sondern weil es viel länger dauert alles was ein DBMS bietet selbst zu programmieren. Und das ist nicht nur relativ flotter Zugriff auf Daten, sondern in der Regel auch Garantien wie atomare Schreibzugriffe, Transaktionen, und bei grösseren DBMS auch so Sachen wie Replikation, Sharding, … – alles auch Sachen die auch nicht ganz ohne sind was Fehleranfälligkeit angeht, wenn man das selbst programmiert. Wenn man ein verbreitetes DBMS verwendet, dann ist das in der Regel auch gut und ausgiebig getestet.
Letztlich ist aber auch die Frage was Du als Datenbank siehst. Eine Textdatei mit strukturierten Daten ist letztlich ja auch eine Datenbank. Und ob ein Ergebnis schneller vorliegt, hängt nicht unwesentlich davon ab was ”durchsuchen” meint. Und ob bei Abfragen die Zeit für eine Vorverarbeitung mitgezählt wird oder nicht. Eine Datenbank kann schneller sein, wenn die Daten vorher entsprechend aufbereitet, und zum Beispiel für die Abfragen sinnvoll indexiert wurden. Das erstellen und pflegen eines Index benötigt aber auch Zeit, verlangsamt also das schreiben/hinzufügen von Daten.
Grundsätzlich wird ein allgemeines DBMS durchaus langsamer sein als speziell auf die Problemstellung zugeschnittene Algorithmen und (persistente) Datenstrukturen.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware