Kategorien
Allgemein Content Management Systeme Datenbanken

Wozu benötigt man eigentlich eine Datenbank?

Jeder spricht heute über Daten. Wenn du schon einmal eine Website mit WordPress, Joomla, Drupal, Typo3 oder einem anderen Content Management Systemen aufgesetzt oder betrieben hast, dann hast du auch eine Datenbank benutzt, vermutlich das System MySQL/ MariaDB oder manchmal auch PostgreSQL.

In diesem Beitrag stelle ich die Zusammenhänge zwischen der Datenbank und einer CMS-Installation dar.

Was versteht man unter einer Datenbank und was ist MySQL und MariaDB?

Unter einer Datenbank versteht man gemeinhin die Gesamtheit aller Daten, also eine Art Gefäss oder einen Schrank, in dem deine Daten gelagert und bei Bedarf abgerufen werden können. Das Programm oder etwas moderner, der Algorithmus, der deine Daten verwaltet, nennt sich Datenbank Management System. Es gibt kommerzielle Systeme, z.B Oracle und SAP HANA. MySQL war ebenfalls kommerziell orientiert, bot aber immer eine kostenlos nutzbare Version an und verbreitete sich daher viel schneller als die anderen Systeme. Im Jahr 1994 wurde das schwedische Unternehmen MySQL AB gegründet und 2008 von Sun Microsystems gekauft. Sun Microsystems wurde 2010 von Oracle gekauft und so wurde MySQL immer kommerzieller. Die Namensrechte lagen natürlich ebenfalls bei Oracle. Um das System weiterhin frei zur Verfügung stellen zu können, forkte der damalige Hauptentwickler von MySQL den 2009 zur Verfügung stehenden Quellcode und startete ein neues, freies Projekt namens MariaDB. Beide Projekte sind übrigens nach seinen Töchtern benannt (My und Maria). Forks (Abspaltungen) passieren im Open Source Umfeld immer mal wieder, wenn die Ausrichtung eines Projekts umstritten ist, so geschehen bei Mambo/Joomla, Owncloud/Nextcloud, Drupal/BackdropCMS und vielen anderen mehr.

Die Software MySQL/MariaDB stellt „nur“ den Algorithmus dar, der die Organisation und den Zugriff auf deine Daten ermöglicht. Dabei gehen es um das Erstellen, Lesen, Ändern und Löschen deiner Daten.

Der Aufbau ähnelt irgendwie einem Dateisystem, das ja auch Dateien erstellt, liest, ändert und löscht. Und vielleicht erschliesst sich mit diesem Vergleich auch gleich den Unterschied zwischen Dateien und Daten. In einer Datei, beispielsweise einem Spreadsheet in einer Tabellenkalkulation wie Microsoft Office oder Libre Office können sehr viele Zellen, Formeln und Arbeitsblätter, also “Daten“, enthalten sein. Auch in einem Text-Dokument oder einem PDF, einer reinen Textdatei, einem Foto, einem Video und in allen anderen Dateien sind immer sehr viele, mehr oder weniger gut strukturierte, Daten. Um diese Daten sinnvoll erstellen, lesen, ändern und löschen zu können, benötigt man jeweils ein, zu jeder Dateiart, passendes Softwaresystem. Microsoft Word für Textdokumente, Adobe Photoshop von Fotos, Adobe Acrobat für PDF, Microsoft Excel für Spreadsheets, usw.

Aber zurück zur Datenbank. Um eine Datenbank nutzen zu können, musst du sie zunächst anlegen, genau wie du in einer Textverarbeitung ein Textdokument anlegst. Du musst entweder in einem Programm auf deinem Rechner, oder, im Falle eines entfernten Datenbankservers, in einem Browser, die Datenbank, ein Benutzerkonto und ein Passwort anlegen und vielleicht auch noch die Zugriffsrechte anpassen. Damit du das kannst, muss das Datenbankverwaltungsprogramm (MySQL/MariaDB) „laufen“ und ansprechbar sein. Das ist so ähnlich wie bei Microsoft Word – da kannst du auch erst eine neue Datei anlegen, nachdem das Programm gestartet wurde. Wenn du eine Datenbank erstellt hast und das Datenbankverwaltungsprogramm läuft, kannst du dort beliebige Daten erstellen, lesen, ändern und löschen. Das Wort beliebig ist durchaus ernst gemeint. Du kannst Texte, Bilder, Videos, Passworte und alle nur denkbaren Bitfolgen in einer Datenbank abspeichern.

LAMP

Vielleicht hast du schon mal vom LAMP Stack gehört. Das L steht für das Betriebssystem Linux, das A für den Webserver Apache, das M für MySQL/MariaDB und das P für die Programmiersprache PHP. Die Kombination dieser vier freien Systeme ermöglicht bis heute die Erstellung jeder denkbaren Anwendung, die Daten verwaltet, also etwas erstellt, liest, ändert und löscht.

An dieser Stelle solltest du kurz innehalten und überlegen, was das Erscheinen einer freien Datenbank und des LAMP Stacks damals für die kommerzielle Software Industrie bedeutete.

Bis zum Erfindung von MySQL waren Datenbanken etwas Kompliziertes. Im professionellen Umfeld verwalteten spezielle Abteilungen die Datenbanken eines Unternehmen. Oracle machte seit Ende der siebziger Jahre gute Geschäfte mit der Oracle Datenbank und IBM mit DB2. Die freie Alternative PostgreSQL hat mehr Funktionen als MySQL/MariaDB, aber war und ist schwieriger zu administrieren. MySQL bot Mitte der neunziger Jahre eine, mit überschaubarem Aufwand, einsetzbare Lösung für so ziemlich jede Herausforderung – und das kostenlos. Viele Anwendungen, die damals mit lokalen Datenbanksystemen, wie FoxPro, dBase oder auch Microsoft Access entwickelt wurden, konnten mit Hilfe des LAMP Stacks nachgebaut und erweitert werden, waren sofort „netzwerkfähig“ (eine wichtige Anforderunf damals) und konnten ohne spezielle Software in einem Browser bedient werden.

Auf dem Höhepunkt des Erfolgs, wurde MySQL im Jahr 2008 schliesslich für 1 Milliarde US$ von der Firma Sun übernommen. Damals wurde der weltweite Markt für Datenbanken auf 15 Milliarden US$ geschätzt. Zwei Jahre später übernahm Oracle dann die Firma Sun, inclusive MySQL, für mehr als 7 Milliarden US$. Damit wurde das Phänomen MySQL und vor allem dessen Wachstum verhindert.

Michael Widenius, der ehemalige Gründer von MySQL AB kritisiert Oracle scharf: Oracle habe klargemacht, dass sie kein Interesse an Open Source hätten, die Zusammenarbeit mit der Community ablehnten und auch MySQL im Allgemeinen nicht mögen würden. Als Beispiele für die Missachtung der Open-Source-Prinzipien nennt er die kommerziellen Erweiterungen für MySQL, die inzwischen nicht öffentliche Fehler-Datenbank und den Mangel an Testfällen für neuen MySQL-Code. Vorzeige-Funktionen, wie das Online-Backup und Fremdschlüssel für alle Speicher-Engines, die für MySQL 6.0 versprochen wurden, seien nicht veröffentlicht worden, obwohl sie fertig entwickelt und bereit seien. Statt Fehler zu beheben, entferne Oracle Funktionen. Die meisten der ursprünglichen MySQL-Entwickler hätten Oracle verlassen. Als weitere Beweise für die „Verachtung“ der MySQL-Anwender nennt er den „scharfen“ Anstieg der Lizenz- und Support-Gebühren und das Fehlen einer offenen Roadmap.

https://de.wikipedia.org/wiki/MySQL

Im Nachhinein ist es erstaunlich, das MySQL mehr als 10 Jahre das Datenbankgeschäft „von unten“ erobern konnte und schliesslich Millionen von MySQL Installationen bis heute immer komplexere Aufgaben wahrnahmen.

Verbindung zum CMS

Nach der Erstellung deiner Datenbank kannst du dein gewünschtes Content Management System installieren. Die entsprechenden Datenbank-Parameter trägst du während der Installation ein. Die am meisten verbreiteten Content Management Systeme (WordPress, Joomla, Drupal) nutzen die Programmiersprache PHP und sind eine Sammlung von vielen tausend PHP-Dateien mit Programmanweisungen, die selbst aber keine Daten enthalten. Es sind nur Anweisungen, die das Erstellen, Lesen, Ändern und Löschen von Daten gewissermassen fernsteuern. Das (WordPress) PHP Script nimmt Kontakt mit der Datenbank auf, erstellt eine Abfrage, erhält eine Antwort, wertet die Antwort aus und sendet sie in Form von HTML Anweisungen an deinen Browser.

SQL

An dieser Stelle kommt der SQL Teil von MySQL in Spiel. Die Structured Query Language (SQL) wurde in den 70er Jahren erfunden und beschreibt strukturierte Abfragen auf “Mengen“. Wer in dieser Zeit zur Schule ging, kann sich sicher an die Mengenlehre erinnern, in die damals, zumindest in meiner Schule in Norddeutschland 😀, mit einem Holzbaukasten, eingeführt wurde.

Rechenstäbchen in der Grundschule

Auch die LEGO Steine mischten die Spielzeugwelt auf, da sie mit Mengen operierten. Man kaufte damals eine gewisse Menge Steine in einer bestimmten Farbe und Grösse und fing dann an etwas zu bauen.

LEGO Baukasten 418

Eine Datenbank besteht, neben weiteren Teilen, aus Tabellen. Hier ein Beispiel aller Tabellen aus einer Datenbank für eine WordPress Installation. In der Tabelle wpwx_posts stehen die WordPress Beiträge, in diesem Beispiel sind es 220. Die Bezeichnung vor dem Unterstrich (wpwx) ist eine individuelle Auszeichnung (Präfix) jeder WordPress Installation.

Tabellen eine WordPress Installation

Die einzelnen Tabellen bestehen aus Feldern, hier die WordPress Artikel Tabelle wp_posts mit einer Auswahl von Feldern.

WordPress Tabellenstruktur der wp_posts Tabelle

In diesen Feldern werden dann die Daten abgespeichert, ähnlich einem Spreadsheet. Jede Zeile ist ein Datensatz und eindeutig durch eine Nummer (ID) erkennbar.

WordPress Daten, in diesem Fall Beiträge

Wenn solche Strukturen vorhanden sind, lassen sich Daten sehr elegant abfragen. Gib mir doch bitte aus der Tabelle der WordPress Beiträge (wp_posts) den Artikel mit der Nummer (ID) 11 würde dann in SQL folgendermassen ausgedrückt werden.

SELECT * FROM `wpwx_posts` WHERE ID = `11`

Das versteht man relativ schnell.

Ergebnismengen

Der eigentliche „Hammer“ bei diesen Transaktionen ist die Tatsache, dass nur die Daten übertragen werden, die man gern hätte. In meinem Beispiel oben sind das die Daten zum Beitrag mit der Nummer 11. Auch wenn Tausende von Beiträgen in der Datenbank gespeichert sind, so wird nur der eine Beitrag übertragen. Die Menge der übertragenen Daten ist klein und es geht schnell.

Dieser einfache Zusammenhang sorgte für einen anhaltenden Boom bei Datenbank Anwendungen. Wenn du die WordPress Beiträge beispielsweise in einem Micosoft Excel Dokument abgespeichert hättest, was durchaus funktionieren würde, so hätte das komplette Excel Word Dokument geladen werden müssen, also alle Beiträge, um dann innerhalb dieser Daten nach dem gewünschten Beitrag zu suchen. Die Menge der übertragenen Daten wäre dann gross und es geht langsam.

Das ist nun zugegebenermassen sehr einfach dargestellt und gibt natürlicher viele weitere Parameter, die bei Datenbanken und Dateien wichtige Rollen spielen, aber im Kern stimmt es schon. Wenn man seine Daten strukturiert speichert, kann man schnell und effektiv darauf zugreifen.

Die Strukturierung führt oft auch dazu, dass man überhaupt auf seine Daten in endlicher Zeit😉 zugreifen kann.

Und heute?

Datenbanken sind nach wie vor ein guter Ausgangspunkt für jegliche Form von Auswertungen. Je strukturierter die Daten abgespeichert sind, desto einfacher und vielfältiger sind die Analysen und Information, die aus den vorhandenen, aber oft unbeachteten Daten, gewonnen werden können. Die Strukturierung der Daten, auch wenn sie nur einmal vorgenommen wird, kostet allerdings Zeit. Bei der Menge der heute anfallenden Daten wird daher oft auf eine strukturierte Abspeicherung verzichtet.

Da aber auch heute noch relativ wenige Daten in strukturierter Form vorliegen, boomen Algorithmen, die eigenständig versuchen Muster in diesen unstrukturierten Daten zu erkennen und automatisiert Schlüsse daraus zu ziehen, man benutzt also künstliche Intelligenz.

Und wenn diese künstliche Intelligenz schon Schlüsse bei unstrukturierten Daten ziehen kann, kann sie das doch bestimmt auch bei strukturierten Daten, oder?

Und damit sind wir beim Datenreichtum. Gehörte es bis kurzen zum “Guten Ton“ aller Software-Entwickler „Datensparsamkeit“ zu betreiben und wirklich nur das abzuspeichern, was man brauchte, so wird heute das Gegenteil angestrebt. Je mehr Daten man habhaft werden kann, desto mehr Daten werden gespeichert und automatisiert ausgewertet. Dabei geht es gar nicht primär um Überwachung einzelner Personen, sondern die Hoffnung auf verborgene oder besser bis dahin unerkannte Muster und Informationen in den Daten.

Wenn die Firma Tesla beispielsweise genau weiss, wo sich jedes von ihr gebaute Auto auf der Welt gerade befindet, an welcher Stelle es wie schnell fährt und welchen Zustand die Batterien und andere Systeme des Fahrzeugs haben, so lassen sich aus diesen Daten recht einfach Informationen für Verbesserungen und neue Features “destillieren“, die andere Automobilhersteller, die nicht über diese Daten verfügen, einfach nicht haben. Das gleiche Prinzip gilt heute für jegliche Form von Daten. Google bietet beispielsweise Staumeldungen in Google Maps an, die auf der Basis, der von Android Telefonen (mehr oder weniger freiwillig) übermittelten Daten erstaunlich genau den Auslastungsgrad der Strassen anzeigen. Solche bereits existierenden Anwendungen sind technisch noch relativ einfach. Welche Informationen könnten alle YouTube Videos enthalten, der Inhalt von Facebook, Instagram, Twitter, LinkedIn – alle Kinofilme dieser Welt, jedes Musikstück, alle Podcasts, alle Fotos, alle Kunstwerke?

In Kombination mit anderen, bereits existierenden Daten und der Vorgehensweise der Algorithmen der künstliche Intelligenz beflügeln sie die Fantasie vieler Unternehmen.

Ja und Datenbanken braucht es natürlich auch um das alles irgendwo abzuspeichern. Vielleicht wird es mal wieder Zeit für so etwas wie einen, mit neuen Buchstaben versehenen, freien “LAMP Stack“ 🤔.

Fazit

Die schlichte Existenz und Funktionalität des Datenbanksystems MySQL hat die strukturierte Verwaltung von Daten in Datenbanken in den letzten 25 Jahren ermöglicht. Heute werden immer mehr Daten abgespeichert. Datenbanken voller Daten und entsprechende Auswertungstools gehören heute oft zum Kern eines jeden Unternehmens.


tl;dr: Wenn es um das Erstellen, Lesen, Ändern und Löschen von Daten geht, dann sind Datenbanken das Mittel der Wahl

Von hagengraf

Ich erstelle bequeme und benutzerfreundliche Orte in virtuellen und physischen Umgebungen.

Eine Antwort auf „Wozu benötigt man eigentlich eine Datenbank?“

Kommentar verfassen