Seite 1 von 1
Warum sind Datenbanken so vergleichsweise schnell?
Verfasst: Mittwoch 17. April 2019, 22:59
von pixewakb
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!
Re: Warum sind Datenbanken so vergleichsweise schnell?
Verfasst: Mittwoch 17. April 2019, 23:09
von kbr
Datenbanken versuchen so viele Daten wie möglich im Speicher zu behalten. Der Zugriff darauf ist erheblich schneller als der auf Dateien.
Re: Warum sind Datenbanken so vergleichsweise schnell?
Verfasst: Mittwoch 17. April 2019, 23:18
von __deets__
Ich würde ja schonmal die Prämisse in Frage stellen. Wo sind sie das denn? Hast du das erfahren, oder glaubst du das nur?
Re: Warum sind Datenbanken so vergleichsweise schnell?
Verfasst: Mittwoch 17. April 2019, 23:48
von pixewakb
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?
Re: Warum sind Datenbanken so vergleichsweise schnell?
Verfasst: Donnerstag 18. April 2019, 00:00
von __deets__
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.
Re: Warum sind Datenbanken so vergleichsweise schnell?
Verfasst: Donnerstag 18. April 2019, 00:02
von __blackjack__
@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.