Sven Rautenberg: Was bringt eine Datenbank?

Beitrag lesen

Moin!

Wenn ich 10 Kilobyte Text in einem Record zu stehen habe, warum um alles in der Welt sollte ich dann weitere 10 KB NICHT in einen Record schreiben, nur weil diese 10 KB als 'Datei' anstehen!?

Wozu gehören die 10 KB Text? Wenn das der erste Datensatz ist, und die zweiten 10 KB der zweite Datensatz, dann sollte man sich fragen, warum dafür eine Datenbank notwendig ist.

Wenn die 10 KB aber 1000 Datensätze sind, und für jeden Datensatz einzeln noch mal 10 KB Text dazukommen, dann würde die Datenbank plötzlich 10 Megabyte groß sein. Die 10 KB vorher waren problemlos in einem Puffer zu halten und schnell im Zugriff - die 10 MB sind es eher nicht.

Und natürlich kommt es auch auf die Art des Zugriffs an. Ich halte es nach wie vor für unsinnig, beispielsweise Bilder in der Datenbank zu speichern, sofern man beabsichtigt, diese Bilder via HTTP im Browser anzuzeigen. Denn da entstünde unnötiger Zusatzaufwand.

Extra abgelegte Dateien können direkt vom Server ausgeliefert werden. Für den Zugriff auf die Datenbank aber muß erst ein Programm gestartet werden, zur DB verbinden, ein SELECT ausführen (welcher sich in die durch andere Prozesse stattfindenden Zugriffe auf die DB einordnen muß - und unter Umständen auch mal abzuwarten hat, bis ein Write-Lock wieder aufgehoben wird etc.), die Binärdaten auslesen und an den Browser weitersenden.

Dafür gibt es doch die BLOB Felder. Entwickler von RDBMS hahm die doch nicht dafür gemacht, dass die ignoriert werden.

Doch. :)

Ein BLOB ist ja auch nur ein TEXT - mit dem Unterschied, dass darin case-sensitiv gesucht wird.

Und überhaupt: Von einer richtig guten DB Engine erwarte ich dass die ihren Zugriff auf das Filesystem optimiert hat, sprich: gepuffert (Cache) und anderweitig optimiert hinsichtlich Performanze.

Von einem richtig guten Dateisystem erwarte ich, dass es den Zugriff auf Dateien optimiert hat, sprich: Problem- und anforderungsorientierte Pufferung und anderweitige Optimierungen hinsichtlich Performance.

Es ist in meinen Augen einfach so: Dateisysteme sind dazu da, eher wenige, aber sehr große Informationseinheiten zu verwalten - Dateigrößen so ab 64 KB. DatenBANKEN sind dazu da, sehr viele, aber sehr kleine Informationseinheiten zu verwalten: TINYINT, INT, BIGINT, VARCHAR(255), ENUM, SET - das sind alles winzige Datenmengen, die man in einer normalen Datei gar nicht sinnvoll einzeln speichern könnte.

Insofern besteht der Unterschied zwischen einer Datenbank und einem Dateisystem einfach darin, dass die Datenbank die sehr kleinen Informationseinheiten optimiert verwaltet, ein komfortables Framework für den Zugriff bietet und die Daten kapselt - und sie zusammengefaßt im Dateisystem ablegt.

Diese Betrachtungsweise macht aber ganz deutlich, weshalb das Speichern von Dateien in der Datenbank nicht wirklich sinnvoll erscheint: Die Datenbank ist nur ein weiterer Layer zwischen Anwendung und physikalischem Speicher. Es erscheint wenig einleuchtend, warum das dann plötzlich schneller gehen sollte.

- Sven Rautenberg