Warum sind Datenbanken so vergleichsweise schnell?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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!
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Datenbanken versuchen so viele Daten wie möglich im Speicher zu behalten. Der Zugriff darauf ist erheblich schneller als der auf Dateien.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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?
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten