Richtlinien und Technologien im WWW-Umfeld:
Datenbanken
für Webentwickler
Diese Dokumentation entstand im Rahmen des Proseminars "Richtlinien und
Technologien im WWW-Umfeld". Ziel war es, Autoren von Webpräsenzen
(Webentwickler) einen generellen Ãberblick zum Thema Datenbanken zu geben.
1 Â Â Was ist eine Datenbank?
Eine Datenbank ist ein System zur Beschreibung, Speicherung und Wiedergewinnung von Daten.
Kern der Datenbank ist das DBMS (Datenbank Management System), welches die Schnittstelle zwischen der Anwendung und den Daten herstellt. Es "weiÃ", wie die Daten gespeichert werden, wie sie gelesen werden, und wie sie strukturiert sind.
2   Wofür benötigt ein Webentwickler eine Datenbank?
Den Hauptgrund für die Verwendung einer Datenbank kann man schon aus der Definition ablesen: zur Verwaltung von groÃen Datenmengen. Dabei bedeutet groÃe Datenmengen, dass die Daten aus vielen einzelnen Datensätzen bestehen, wie sie zum Beispiel in folgenden Anwendungen auftreten:
Der Vorteil für den Webentwickler besteht vor allem darin, dass die Datenbank die Daten organisiert. Er braucht sich nicht mehr um deren Speicherung, Verwaltung oder Sortierung zu kümmern, da diese Aufgaben von den Datenbanksystemen übernommen werden.
3 Â Â Datenbanktypen
Datenbanken unterscheiden sich zum einen in der Art der Verbindung zum anderen in der Organisation der Daten:
3.1 Â Â Flat-File Datenbanken
Dieser Datenbanktyp ist einer der ältesten und einfachsten, aber für die
wenigsten Anwendungen eines Webentwicklers passend. Die Daten werden hierbei
in einer Datei gespeichert, wie etwa in /etc/hosts:
127.0.0.1 localhost 192.168.10.1 no1.foo.bogus 192.168.10.2 bla.bogus 192.168.10.3 bar.bogus 192.168.10.4 web.bogus 192.168.10.5 test.bogus 192.168.10.6 whatever.bogus |
Der Aufbau ist sehr einfach: einer IP Addresse wird ein Name zugeordnet.
Die Nachteile liegen jedoch auf der Hand: Viele Daten (Zeilen) lassen die Datei sehr schnell unübersichtlich werden. Zudem kann man weder Benutzerrechte auf verschiedene Teile der Datenbank vergeben, noch kann diese Art der Datenbank Mehrfachzugriffe verwalten.
Sollten die Daten also nicht dynamisch sein, sondern am meist nur gelesen werden, könnte man diese Datenbank durchaus in Betracht ziehen, vor allem wenn man nicht erst SQL lernen will/kann, dafür hat man natürlich nicht den "Luxus" einer Suche, Sortierung oder ähnlichem, sondern muss alles selbst programmieren.
3.2 Â Â Relationale Datenbanken
Relationale Datenbanken nutzen die logische Struktur der Flat-File Datenbank, die Tabelle (Relation). Jedoch werden die Daten nicht in eine einzige Datei gespeichert, sondern ein DBMS sorgt für die Organisation der Daten auf dem Datenträger. Hierfür ist normalerweise nicht einmal ein Dateisystem notwendig.
name alter telefon wohnort --------------------------------- bernd 23 0 kemz \ gertrud 39 1 foodorf > Zeilen jochen 12 1 barstadt / (Tupel) ^ ^ ^ ^ |-----|-------|--------| Spalten (Attribute, Datentyp festgelegt) |
Die Idee der relationalen Datenbanken stammt aus den 60ern, entwickelt und weiterentwickelt werden sie seit den 80ern, was für die Ausgereiftheit der Algorithmen spricht. Da sie quasi Standard sind, sollten sich bestehende Datenbanken auch ohne gröÃeren Aufwand in neuere Systeme integrieren lassen.
Da sich das DMBS um die Speicherung, Wiederherstellung und Verwaltung der Daten kümmert, muss sich der Webentwickler "nur" noch um den Aufbau der Tabelle und deren Befüllen mit Daten kümmern. Auch Mengenoperationen mit Spalten, Zeilen oder ganzen Tabellen, Suchanfragen usw. werden vom DBMS erledigt.
Weiterer Vorteil ist, dass die DBMS auch Mehrfachzugriffe verwalten und verschiedene Benutzer mit unterschiedlichen Rechten erkennt. Gerade die Problematik der Mehrfachzugriffe ist sehr komplex, das DBMS stellt jedoch in der Regel sicher, das nicht mehrere Benutzer denselben Datensatz zur gleichen Zeit speichern, was mit Datenverlust enden würde.
Natürlich gibt es nicht nur Vorteile: für Binärdaten ist diese Datenbankform ungeeignet, denn diese können in der Tabelle nicht dargestellt werden.
3.3 Â Â Objektorientierte Datenbanken
Objektorientierte Datenbanken speichern die Daten als Objekte. Das heiÃt: mit den Daten werden auch die Methoden zur Veränderung, Speicherung und Handhabung der Daten gespeichert. Die Daten werden "gekapselt", man hat keinen direkten Zugriff mehr auf sie, sondern kann nur noch über die Methoden des Objekts auf sie zurückgreifen. Und objektorientierte Datenbanken hieÃen nicht objektorientiert, wenn es keine Vererbung, Unterobjekte usw. gäbe.
Der bester Grund eine OO Datenbank aufzubauen ist, wenn Binärdaten in der Datenbank untergebracht werden sollen, denn da versagt die Relationale Datenbank.
Sollte man nicht darauf angewiesen sein, sollte man abwägen ob das der richtige Datenbanktyp ist, denn diese Form ist relativ neu (90er), daher gibt es hier noch keine standardisierten Schnittstellen wie etwa bei der relationalen Datenbanken. Zudem wird man nur wenige Programmierer und DBA (Datenbankadministratoren) finden, die den Umgang mit diesen Datenbanken beherrschen.
3.4 Â Â Arten der Verbindung zur Datenbank
Um nun aus der Umgebung des Webservers auf eine Datenbank zuzugreifen, gibt es zwei Wege:
3.4.1 Â Â API
Wenn die Daten lokal (in Bezug auf das CGI-Programm / Webserver-Modul / ...) zur Verfügung stehen, ist die API der schnellste Weg zur Datenbank. Ein Beispiel ist das BerkeleyDB Paket. Diese Bibliothek stellt grundsätzliche Funktionen zum Speichern, Laden und Manipulieren der Daten zur Verfügung, was fehlt kann selbst gebastelt werden. Dadurch hat man sein eigenes DBMS, das direkt in die Anwendung integriert ist, womit man Geschwindigkeit gewinnt und Geld spart, allerdings muss man C programmieren können und erst einige Manuals lesen. Auch die Integration mit anderen Datenbanksystemen könnte später zu einem Problem werden.
3.4.2 Â Â Client/Server Prinzip
Beim Client/Server-Prinzip läuft auf einem Rechner ein DBMS, das an einem Netzwerkinterface auf Verbindungen wartet. Die Clients (CGI-Programme, Server Module, Browser-Plugins, ...) können dann eine Verbindung übers Netzwerk aufbauen und darüber ihre Datenbankabfragen an diesen Server loswerden.
Dies ist die gebräuchlichere Variante, sie ist leichter erweiterbar und man hat die Datenbank nicht direkt auf dem Webserver laufen.
Client1 Client2 ... ^ ^ | | V v /-----o----------o-----Netzwerkinterface---\ | ^ Ports ^ | | | | DATENBANKSERVER | | V V | | __o__________o___ <- Datenbank- | | / \ schnittstelle | | ( Datenbanksoftware ) | | \_________________/ | | || | | -------------------- | | - Datentraeger - | | -------------------- | | | \------------------------------------------/ |
4 Â Â Wie kommuniziert man mit der Datenbank
Um der Datenbank zu sagen, was zu tun ist, gibt es die Datenbanksprachen. Die bekannteste und am häufigsten eingesetzte ist SQL (Structured Query Language) für relative Datenbanken. Damit lassen sich einfache Feldabfragen sowie komplexe Suchabfragen ausdrücken.
Daneben existieren noch generelle Datenbank Interfaces, wie ODBC (Open Database Connectivity) oder JDBC. Diese stellen ein Interface zur Verfügung, über das sich auch einige Datenbanken, die kein SQL beherrschen, ansprechen lassen.
Ein Beispiel für eine SQL-Abfrage in PERL über das DBI Modul:
use DBI; $host = "127.0.0.1"; $user = "username"; $pwd = "mypassw"; $dbh = DBI->connect( "DBI:mysql:DBNAME:$host", $user, $pwd); $sql = "SELECT * FROM blah_table"; $sth = $dbh->prepare($sql); $sth->execute; while ($row = $sth->fetchrow_hashref) { print $row->{'some_field_name'},"\n"; } $dbh->disconnect(); |
5   Vorüberlegungen zu Wahl/Layout der Datenbank
Bevor man nun seine Datenbank erstellen kann, muss man sich ein DBMS aussuchen. Eventuell fällt die Wahl klein aus, weil auf dem Host der Seite nur MySQL läuft. Hat man mehr zur Auswahl, dann spielen die zu speichernden Daten eine Rolle bzw. welche Datenbank der DBA konfigurieren und warten kann. Vor allem wenn man eine Objektorientierte Datenbank in Betracht zieht spielt der DBA eine wichtige Rolle.
AuÃerdem sollte man darauf achten, die Datenbank erweiterbar zu halten, eindeutige Felder zu verwenden und separate Tabellen für Daten zu verwenden, die nicht zusammengehören (zum Beispiel für Artikel und Bestellungen)
Zur Zeit sind die relationalen Systeme noch die gebräuchlichsten, was sich auch nicht so schnell ändern dürfte. Wer hier mit dem Strom schwimmt, kann zumindest bei der Wahl der Datenbank keine groÃen Fehler machen.
6 Â Â Quellen
Web Databases
IT -
Datenbanken
copyright: copyleft
should be viewed with a browser