Die Datenbank, das unbekannte Wesen Teil III

Die Verbindung zur Datenbank

In jedem PHP-Programm, das die Datenbank benutzen will, müssen Sie immer die Datenbank anschließen (connect) und öffnen (open). Jetzt kommt, das was in Teil II als verbindungslos bezeichnet wurde, zum Tragen. Wegen der Verbindungslosigkeit des Internet können Sie jetzt nicht einfach, wie in andern Programmen auf Ihrem Rechner die Datenbank öffnen und geöffnet lassen!

Nein! Bei jedem Seitenaufruf müssen Sie die Datenbank konnektieren und öffnen, denn keiner weiß, dass Sie das bei der vorherigen Seite getan haben. Die Vergangenheit ist unbekannt! Es sei denn, Sie haben sich die „Vergangenheit in der Datenbank gemerkt“. Wie dies gehen könnte müssen, wir zunächst auf später verschieben.

MySQL

Kommen wir zunächst zu der Datenbank MySQL. Wer einen localhost hat – und schon einmal gespitzt hat – hat bestimmt gesehen, dass MySql aus einigen exe- und dll- Dateien besteht, und die Tabellen im Verzeichnis data als einfache Dateien mit den Endungen MYD, frm, MYI bestehen. In MYD stehen die Daten, die gespeicherten Felder der Tabellen. In frm stehen bestimmte Formate und in MYI die Indizes der Tabellen. Für jede Tabelle gibt es also 3 Dateien, die sowohl den Index als auch die Daten übernehmen.

All das wird über mysql.exe gesteuert, das selbst aber eine Art Unterprogramm des Servers (hier localhost xampp) ist. Ähnlich wird es sich auch auf dem Web bei Ihrem Hoster abspielen. Meist läuft auch dort als Server der XAMPP!

Leider kann man aber nicht – oder nur sehr schwer – im Hauptspeicher spitzen, denn hier gehen die wirklich interessanten Dinge mit der Datenbank ab!

Auch MySQL steht vor dem Problem, nicht zu wissen, wer denn der Partner auf der anderen Seite ist. Denn die Datenbank läuft auf einem eigenen Prozess im Rechner. Der Partner auf der anderen Seite ist der Server, und er gibt Befehle an die Datenbank und die Datenbank gibt Befehle an den Server.

In Teil II haben Sie gelernt, dass dort mehrere Instanzen des Servers laufen. Wenn jeder eine Datenbankanbindung hat, haben wir auch unterschiedliche Instanzen von MySQL! Wie kann die arme Datenbank das alles händeln? Nun. genauso wie der Server und das Betriebssystem auch. Durch Serialisierungen, Semaphoren, Prozesse und sog. Threads.

Was um Himmels Willen ist nun aber ein Thread? Wikipedia meint dazu: „Ein Thread (auch: Aktivitätsträger oder leichtgewichtiger Prozess) bezeichnet in der Informatik einen Ausführungsstrang oder eine Ausführungsreihenfolge in der Abarbeitung eines Programms. Ein Thread ist Teil eines Prozesses.“[ Quelle: klicke hier]

Also ist ein Thread so etwas wie ein Prozess. Prozesse kennen Sie aus Windows: Immer wenn Sie ein Programm starten, wird ein neuer Prozess erzeugt, und vom Betriebssystem das Programm dort laufen lassen. Sie sehen die Prozesse im Windows im „Windows Task Manager“ oder einfach bei Programmen in der Taskleiste. Es ist also ein eigener Speicher, wo quasi parallel ein Programm läuft.

Ein Thread ist meist genau das Gleiche nur dass mehrere Threads in einem Prozess laufen können. Sie erinnern sich doch bestimmt noch an den Speicherbereich aus Teil II, den das Betriebssystems für den Serverauftrag zur Verfügung stellt: Auch dies wird mit sogenannten Threads bewerkstelligt. Im Gegensatz zum Prozess ist der Aufwand für Threads geringer für den Rechner, als einen neuen Prozess zu installieren.

Die unterschiedlichen Aufträge auf eine Datenbank werden mit Threads realisiert. Die Datenbank selbst läuft in einem eigenen Prozess! Durch die Threads werden nun jeweils die einzelnen Aufträge des Servers – sprich der PHP-Programme – realisiert. Somit haben wir hier auch eine quasi Parallelität der Verarbeitung.

Im Thread stehen alle Ergebnisse, die bei Zugriffen auf die Datenbank gemacht wurden. Und durch die Threads wird gewährleistet, dass die unterschiedliche Aufträge nicht in die Quere kommen. Beim der Konnektierung der Datenbank wird ein freier Thread für die Datenbank eröffnend und hierin die Der Auftrag erfüllt.

Daneben hat MySQl auch noch sog. Datenpuffer, wo bereits gelesene Datensätze aus der Datenbank zwischengespeichert werden. Ist ein Satz schon einmal gelesen worden, dann schaut MySQL in dem Puffer nach und bedient sich lieber dort, als auf die langsame Platte zu gehen.

Anzahl der Datenbanken

Wenn Sie das Obige Revue passieren lassen, wird Ihnen klar werden, dass wir soeben die Frage „eine Datenbank mit vielen Tabellen oder viele Datenbanken mit wenigen Tabellenfast beantwortet haben.

Eine Datenbank läuft in einem Prozess mit vielen Threads, die die Zugriffe auf die Tabellen betreiben. Das Konnekten auf eine 2. Datenbank bedarf eines weiteren Prozesses und ist für das Betriebssystem ein enormer Zusatzaufwand.

Demnach schlägt unsere Entscheidungswaage ganz heftig zu einer Datenbank aus.

Da Sie aber nur eine beschränkte Zahl von Threads in einem Prozess definieren können, Prozesse von unterschiedlichen CPUs im Mehrprozessorsystem betreut werden können, könnte unsere Entscheidungswaage wieder auf die andere Seite kippen. Dies um so mehr, wenn Sie 300 bis 500 Tabellen in einer Datenbank halten, und alle Webseitenaufträge sich aus den Daten fast aller Tabellen bedienen. Dann könnte eine 2. Datenbank Vorteile haben.

Die Frage ist, gibt es derartige Anwendungen? Sicherlich! Nur durch die Puffertechnik und die Threads werden Sie beim reinen Lesen evtl. mit mehreren Datenbanken und sehr großen Anwendungen mehr Erfolg haben. Aber betreiben Sie 100 Blogs? Wohl kaum!
Unsere Waage bleibt also doch zunächst auf der Seite eine DB stehen, wenn auch in der Nähe der Mitte! Doch noch ist nicht aller Tage Abend; deshalb schrieb ich oben auch „fast beantwortet“ und eben „beim reinen Lesen“!

Es gibt noch eine Operationsart auf der Datenbank, die wir noch nicht besprochen haben, und das ist das Schreiben auf die Datenbank!
Zu diesem Thema lassen Sie mich bitte im nächsten Teil kommen.

Bernd Klüppelberg

Hier noch alle Links auf die Artitkelserie (soweit sie veröffentlicht ist):
Die Datenbank, das unbekannte Wesen Teil I
Die Datenbank, das unbekannte Wesen Teil II
Die Datenbank, das unbekannte Wesen Teil IV
Die Datenbank, das unbekannte Wesen Teil v
Die Datenbank, das unbekannte Wesen Teil VI

Bisher gibt es keinen Kommentar. Schreiben Sie einen Kommentar!

Schreibe einen Kommentar