Datenbank Server

Daten, die wir heutzutage mit Computern bearbeiten, haben die unterschiedlichsten Ausprägungsformen. Angefangen bei normalen, unformatierten Texten, über gesetzte Texte, Bücher und Broschüren bis hin zu Bildern, ganzen Filmen und multimedialen Objekten, finden wir alle möglichen Datenformate auf den Massenspeichern der Rechnerfarmen wieder.

Der Fokus dieser Seite liegt bei Datenbanksystemen, daher unterscheiden wir zwischen zwei großen Kategorien von Daten:
  • Unstrukturierte Daten
  • Strukturierte Daten

Bei unstrukturierten Daten handelt es sich im Wesentlichen um Datenströme und Fließtexte wie z.B. unformatierte Texte, bilder, Video- und Audiosequenzen. Ganz grob gesprochen haben Dateien, die unstrukturierte Daten enthalten eines gemeinsam: Es ist nicht möglich, eine Schablone auf die Datei zu legen und wiederkehrende Elemente darin aufzufinden.

Strukturierte Daten lassen sich unterteilen in einzelne, zum Teil wiederkehrende Elemente. Diese Elemente haben nicht alle den gleichen Inhalt, nur ein ähnliches Aussehen. Einen formatierten Text zum Beispiel kann man unterteilen in viele einzelne Paragraphen. Das Programm, das einen solchen formatierten Text bearbeitet, muss den Inhalt und die Eigenschaften der Paragraphen so in der Datei ablegen, dass es diese später wieder laden und voneinander unterscheiden kann. Im Prinzip entsteht hier eine Tabelle, deren Zeilen die Paragraphen und deren Spalten die Eigenschaften und der Inhalt der Paragraphen sind. Es wäre aber eine ungeheuere Verschwendung von Speicherplatz, wenn Computer alle Eigenschaften, die ein Paragraph prinzipiell annehmen könnte immer mitführen würde. Für dieses Dilemma gibt es mehrere Ansätze. Zum einen eine weitere Indizierung der Tabellenspalten, zum anderen die Einführung von Relationen.

Attribute Value Pairs

Die Indizierung der Tabellenspalten erfolgt über so genannte Attribute Value Pairs, kurz AVPs. Jede einzelne Spalte in einer Reihe hat zwei Einträge: Das Attribut und dessen Wert. Die Tabelle wird damit völlig dynamisch und die AVP's erlauben es, Tabellen ineinander zu schachteln. Anwendung findet so ein System tatsächlich bei formatierten Texten. Das bekannteste Beispiel dafür ist die Hypertext Markup Language, HTML - die Sprache in der die World Wide Web Seiten geschrieben sind, die wir uns jeden Tag ansehen. Genauso bekannt ist der große Bruder von HTML, die Extended Markup Language, kurz XML.

HTML vs. XML

Während HTML sehr starr für den Einsatz in World Wide Web Seiten optimiert ist, ist XML dynamisch und auf viele Einsatzarten hin anzupassen. XML ist eine sehr flexible Methode, strukturierte Daten zu speichern. Nachteil hierbei ist, dass sie Programme sich nur noch sehr schwer optimieren lassen und in der Regel recht langsam werden. Programme, die mit festen Tabellen arbeiten haben es da einfacher. Hier sind die Bereiche klar definiert. Sobald das Programm die erste Zeile der Tabelle liest, weiß es schon, was es mit den gespeicherten Daten tun muss und kann dementsprechend optimiert und schneller damit umgehen. In der Regel ist es aber auch bei der festen Tabellenform so, dass die Struktur der Tabelle, d.h. was steht in welcher Spalte, in einer weiteren Datei, dem Datenbankschema festgelegt wird. Der Nachteil der festen Tabellen ist aber immer noch, dass manche Felder unter Umständen überflüssig sind und damit unnötig Speicherplatz hierfür verbraucht wird.

Normierung von Daten, die Relationen

Hier werden zusammengehörige Spalten ermittelt und in einer kleineren Tabelle definiert. Damit der Zusammenhang wieder hergestellt wird, wird in jeder Zeile der neuen Tabelle, die sich auf eine bestimmte Zeile der ursprünglichen bezieht, eine Referenz abgelegt. Diese Referenz heißt im Fachjargon Relation. Relationen sind das Mittel der Wahl, um in feste Tabellenstrukturen wieder Dynamik hineinzubringen. Die Einführung von Relationen hilft uns nicht nur Speicherplatz zu sparen, sondern auch die Dynamik der Datenbank zu erhöhen.

Datenbanken

Mit der Normierung von Daten, der Aufteilung auf mehrere Tabellen und der Einführung von Beziehungen zwischen den Tabellen haben wir den Schritt von der Datei mit strukturiertem Inhalt zur Datenbank gemacht. Würde aber nun jeder Softwareentwickler seine eigene Datenbanken programmieren, würde jeder einzelne sehr viel Zeit in seine Applikation investieren und letztendlich für uns die Anschaffung einer solchen Applikation nahezu unerschwinglich werden.

Um das zu verhindern, lösen wir die Datenbank von der Applikation. Damit teilt sich eine Applikation in zwei auf, nämlich diejenige, die eine für uns relevante Arbeit verrichtet und eine ganz allgemeine Datenbankapplikation, das so genannte Relationale Datenbank Management System, kurz RDBMS.

Mit dieser Auftrennung entstehen weitere signifikante Vorteile, aber auch die Notwendigkeit, eine Kommunikationsschicht zwischen die Applikation und das RDBMS einzuführen.

SQL - Die structured query language

In der Kommunikation zwischen einer Applikation und einer Datenbank dreht sich alles um den Begriff der Query, der so genannten Anfrage der Applikation an die Datenbank. Für die Queries wurde ein Standard geschaffen, eine Sprache in der Applikationen den Datenbanken ihre Anfragen mitteilen können. Diese Sprache heißt Structured Query Language oder kurz SQL. Von allen Datenbanken, die heute frei verfügbar oder gegen Bezahlung auf dem Markt zu haben sind, setzen wohl über 90% SQL als ihre Standard Kommunikations-schicht ein.

Virtualisierung und Skalierbarkeit - Die großen Vorteile der RDBMS

Ein weiterer Vorteil der Loslösung der Datenbanken von den Applikationen sind die Virtualisierung und die Skalierbarkeit. Virtualisierung bedeutet, dass unsere Applikation sich eines imaginären Datenspeichers bedient. Der Applikation ist es dabei völlig egal,
  • wo die Daten letztendlich gespeichert werden
  • wie sie gespeichert werden
  • in welchem Format die Speicherung erfolgt
  • wie die Daten gesichert werden
Damit kann mit dem RDBMS ein eigener Rechner verbunden sein. Dieser Rechner wiederum mag derselbe sein, wie der auf dem die Applikation läuft, oder ein völlig fremder. Wichtig ist nur, dass er per SQL erreichbar ist.

Skalierbarkeit

Da Datenpool und Applikation voneinander getrennt sind, kann der Datenpool optimiert werden. Optimierungen beziehen sich in diesem Fall auf
  • die Hardwareausstattung des RDBMS
  • der dem RDBMS zur Verfügung stehende Speicherplatz
  • die Konfiguration des RDBMS
  • die Software die als RDBMS eingesetzt wird.
Sind Engpässe aus Sicht der Applikation erkennbar, die mit der Datenhaltung zu tun haben, dann ist es leicht möglich, den Rechner, auf dem das RDBMS läuft, durch einen ganzen Rechnerverbund - Cluster - zu ersetzen, die Größe der Datenbereiche - Tablespaces - zu verändern oder die Indizierungsmethoden anzupassen, ohne dass die Applikation dazu geändert werden muss.

Zugriff auf die Rohdaten

Ein weiterer nicht zu verachtender Vorteil ist, dass man mit einem herkömmlichen SQL-Client einfach auf die Daten der Applikation zugreifen kann. Insbesondere bei der Analyse von Fehlverhalten der Applikation ist das besonders hilfreich.

Konsistenz des Datenbestandes

Durch die detaillierte Definition von Zusammenhängen im Datenbankschema kann das RDBMS bereits erkennen, ob Daten in der Datenbank noch zusammenpassen oder nicht. Wird zum Beispiel eine Zeile aus einer Tabelle gelöscht, auf die andere Tabellen verweisen, so kann das RDBMS hierauf reagieren, indem es entweder
die Löschung untersagt oder
die abhängigen Zeilen andere Tabellen gleich auch noch löscht.

Aber nicht nur das RDBMS, auch die Applikation hat die Möglichkeit, die Konsistenz von Daten über das RDBMS weiter sicherzustellen. Hier kommt das Konzept der Transaktionen zu Tage. Transaktionen sind ein wesentlicher Bestandteil von RDBMS. Bei der Auswahl des RDBMS, auf das eine Applikation aufgesetzt wird, muss daher dem Thema Transaktionen ganz besondere Aufmerksamkeit gewidmet werden.

Welche RDBMS gibt es?

In der Vergangenheit war die Verwaltung großer Datenbestände hauptsächlich den Großrechnern und Hosts vorbehalten. Die Datenbanken, die hier zum Einsatz kamen, wurden von den Herstellern der Großrechner oft selber entwickelt. Mit der Verbreitung von PCs, der zunehmenden Akzeptanz des Internets wurden auch private Softwareentwickler und Universitäten auf den RDBMS Markt aufmerksam. Die beherrschenden frei verfügbaren Datenbanken im Unix Server Segment heute sind
  • mySQL und
  • PostgreSQL

Informix, Oracle und Sybase sind weiterhin als High-End Varianten auch in diesem Marktsegment verfügbar, wobei Oracle eine abgespeckte Version ihres RDBMS auch als frei verfügbare Version anbietet.

Der Strawberry Datenbank-Server

Auf der Plattform eines der stabilsten und am weitest entwickelten Betriebssysteme bietet Strawberry EDV Systeme GmbH einen Datenbank-Server an. Aufgrund der oben beschriebenen Umstände hat sich Strawbberry für den Einsatz von PostgreSQL als RDBMS entschieden.

PostgreSQL ist kostenlos einsetzbar. Die Umsetzung des SQL Standards bei PostgreSQL ist im Wesentlichen ohne Erweiterungen und daher skalierbar zu anderen RDBMS erfolgt. PostgreSQL unterstützt Transaktionen und Datenreplikation, sowie unterschiedliche Backends for stored procedures.

Leistungsmerkmale
  • RDBMS: PostgreSQL 8.1.2
  • Backends: Perl, TCL, PL/SQL
Lieferformen
  • Embedded Server - Als Backend z.B. für den Directory Server, den Mail Server, den Web- und Information Server
  • Single Server - Stand Alone RDBMS
  • Cluster Server - Mehrere Single Server im Verbund zur Steigerung der Perfomance
Strawberry unterstützt Sie bei der Planung und der Konzeption Ihres Dantenbank-Servers, von der Analyse bis zur Umsetzung eines zuverlässigen Datenbanksystems. Der sehr flexibel einsetzbare Strawberry Datenbank-Server ist eines der Kern-Komponenten, mit denen ihre Anforderung umgesetzt wird.