Proseminar Technologien und Richtlinien im WWW-Umfeld

Datenbanken

Lars Bachmann


Gliederung :

Grundlegendes zu Datenbanken

Datenbanken im Internet

Arten von Datenbanken

Quellen

Grundlegendes zu Datenbanken

  • Was ist eine Datenbank ?

    Eine Datenbank dient wie es der Name schon sagt zum speichern von Daten. Nun kann man Daten natürlich auch anders speichern z.Bsp. in einer Datei. Der Vorteil von Datenbanken liegt aber darin, dass man die Daten strukturiert speichern und somit natürlich schneller wieder darauf zugreifen kann. Somit kann man allgemein sagen: "Eine Datenbank dient zum strukturierten speichern von Daten!".

    Es gibt nun verschiedenen Möglichkeiten, wie man die Daten strukturiert (und dann speichert). Das älteste Modell ist das hierarchische. Hierbei wird jeder Datensatz zusammen mit allen von ihm abhängigegn Datensätzen, als eine Einheit betrachtet. Eine Datenbank besteht nun aus mehreren solchen Eiheten. Das heißt, will man etwas in die Datenbank speichern oder herausholen, muss man die Einheit kennen wo sich der entsprechende Datensatz befindet (bzw. gespeichert werden soll).

    Das zweite Modell ist das Netzwerkmodell. Hier kann jeder Datensatz eine beliebige Anzahl von übergeordneten Datensätzen haben. Man spricht auch von n : m Beziehungen. Es entsteht also ein Netzwerk von Datensätzen. Diese Beiden Modelle findet man jedoch heutzutage kaum noch in Anwendung, sie wurden weitestgehend durch das relationale und objektrelatione Datenmodell verdrängt.

    Das relationale Datenmodell entstand in den 70er Jahren. Relational bedeutet dabei nur, dass die Daten in Tabellenform abgespeichert werden und zwischen den einzelnen Tabellen Beziehungen bestehen.

    Das objektrelationale Datenmodell kam dann in den 80er Jahren auf. Hier werden die Daten ebenfalls in Tabellenform gespeichert. Zusätzlich unterstützt diesen Modell jedoch mehr Typen. So kann man beispielsweise auch Bilder, Videos, Musik und andere Datentypen speichern. Das objektrelationale Modell baut sich stark auf die objektorientierte Programmierung auf, so kann man auch Struktur und Methoden der Daten selbst definieren.

    Da eine Datenbank nur Sinn macht, wenn man die Daten strukturiert speichert gibt es logischer Weise ein paar Regeln die man beachten sollte um Redundanz (Doppel oder Mehrfacheinträge) und daraus folgende Permutationen oder Mutationsanomalien zu verhindern. Als erstes gibt es deswegen sogenannte Primärschlüssel. Jede Tabelle sollte einen Primärschlüssel haben, welcher als eindeutiger Idendifikator aller Datensätze in der Tabelle dient. Jeder Primärschlüssel in einer Tabelle kommt also nur einmal vor.

    Wichtig sind auch die sogenannten Normalformen. Es gibt hier 3 Stück die das entstehen von Redundanzen weitestgehend unterbinden.
    Die 1. Normalform besagt, dass jeder Datensatz in eine eigene Zeile der Tabelle gespeichert werden sollte und somit die einzelnen Spalten keine innere Struktur aufweisen. Diese Normalform dürfte jeder intuitiv anwenden.


    Die 2.Normalform besagt, dass in einer Tabelle nur Spalten enthalten sein sollen, die unbedingt nötig sind. Alles andere sollte in weitere Tabellen aufgeteilt werden.


    Und die 3.Normalform besagt das sich in einer Tabelle nur Merkmale befinden sollten die untereinander unabhängig sind. Anderfalls sind die Merkmale ebenfalls in eine weitere Tabelle auszugliedern.



    Wenn man es ganz weit treibt hat man am Ende nur noch Tabellen die aus 2 Spalten bestehen. Zum einen den Schlüssel und zum anderen ein Merkmal. Das ist natürlich nicht der Sinn der Normalformen. Es wird also schon etwas Fingerspitzengefühl benötigt um die Struktur der Datenbank sinnvoll zu gestalten.

  • Wie erfolgt Zugriff ?

    Der Zugriff auf eine Datenbank erfolgt mit Hilfe von Abfragen. Ziel dieser Abfragen ist es natürlich mit möglichst wenigst Zugriffen einen Datensatz zu finden.
    Realisiert wird das ganze über die Abfragesprache SQL(Structured Query Language). SQL ist eine descriptive/beschreibende Sprache. Mit anderen Worten man beschreibt was man gerne von der Datenbank ausgegeben haben möchte.
    SQL unterstützt eine Menge von Befehlen. Der Großteil dieser Befehle wird auch von allen Datenbankherstellern unterstützt.

    Zur Geschichte von SQL ist zu sagen, dass es Anfang der 70 Jahre mit dem Aufkommen der relationalen Datenmodellen von IBM entwickelt wurde. Es hieß ursprünglich SEQUEL wurde aber bald in SQL umbenannt.
    1979 wurde SQL zum ersten Mal kommerziell von Oracle genutzt um den Zugriff auf ihr relationales Datenbansystem zu realisieren.
    1986/87 kam es dann zur Standardisierung von SQL. Man sprach damals von SQL1, SQL86 oder SQL87.
    1989 folgte dann eine Erweiterungder Integritätsbehandlung.
    1992 definierte man den SQL2 bzw. SQL92 Standard. Hier kam es zur Erweiterung von vielen Funktionen z.Bsp. "dynamisches SQL" oder "normierte Views".
    1999 wurde dann der SQL3 Standard festgelegt, dessen wesentlich Neuerung die objekt-orientierten Eigenschaften waren.

    Hier eine kleine Grafik zur besseren Veranschaulichung :


    Natürlich sind im Sprachumfang von SQL sehr viele Befehle enthalten. Ich wollte hier nur einmal ein paar wichtige nennen und kurz vorstellen.

    CREATE : Definition von Basistabellen
    Definition von Views
    ALTER : Tabellendefinition ändern
    GRANT : Autorisierung (Vergabe von Zugriffsrechten)
    SELECT : Zentrale Anweisung zur Datenauswahl
    INSERT : Hinzufügen von Zeilen
    DELETE : Löschen von Zeilen
    UPDATE : Verändern von Zeilen durch Änderung von Spalteninhalten


    Wie man sieht ist die Sprache SQL sehr logisch und einfach verständlich aufgebaut. Ein paar Tage (Stunden) dürften genügen um sich mit der Syntax und Semantik weitestgehend vertraut zu machen, so dass man zumindest einfache Abfragen realisieren kann.


Datenbanken im Internet

  • Warum Datenbanken im Internet ?

    Wie man sieht, hat sich das Internet in den letzten Jahren drastisch entwickelt. Die meisten Firmen sind heutzutage im Internet present und bieten ihre Service an. Beispiele hierfür wären Online-Shopping, Online-Banking oder Tauschbörsen. Aber auch viele private Homepages existieren. Eigentlich kann man alles was man will im Internet finden. Viele sprechen auch vom Informationszeitlater.
    Natürlich gibt es auch viele Möglichkeiten wie man seine Internetseite gestalten kann. Angefangen von HTML über XML bieten viele Scriptsprachen oder Flash und Java Programme unzählige Möglichkeiten bei der graphischen Gestaltung der Internetseiten.

    Wie aber werden diese Unmengen an Daten verwaltet die jeden Tag durch das Internet fließen ?
    Genau hier kommen Datenbanken zum Einsatz. Im Hintergrund von den meisten größeren Internetseiten, wo grö0ere Datenmengen verwaltet werden müssen, arbeitet eine Datenbank. Und hier kommen auch die bereits angesprochen Vorteile des strukturierten speicherns und zugreifens auf die Datenbank zum tragen. Nur so können die Daten sinnvoll verwaltet werden und die enormen Datenmengen bewältigt werden.

    Das Internet ist also im derzeitigen Umfang (welcher sicher noch anwachsen wird) ohne Datenbanken überhaupt nicht vorstellbar!


  • Wie unterscheiden sie sich ?

    Grundsätzlich unterscheiden wir zwischen den sogenannten Web Datenbanken und den Client-Server Datenbanken.

    Als erstes möchte ich auf die Web Datenbanken eingehen.
    Unter einer Web Datenbank versteht man ein Java Applet, welches beim Besuch einer Internetseite wo eine Web Datenbank integriert ist, automatisch auf den Client geladen und dort dann ausgeführt wird. Meistens wird zusammen mit dem Applet noch eine Datei mit runtergeldaden, die die Daten enthält, welche die Web Datenbank verwaltet.
    Web Datenbanken unterstützen das Anzeigen, Sortieren und Suchen in der vorhandenen Datenmenge. Mit Hilfe von Auswahlbuttons, Feldern, Listen, ... werden die Daten dann durchsucht.

    Vorteile :

    Das suchen der Daten in einer Web Datenbank geht schneller als in einer Client-Server Datenbank, weil hier nur die Daten in der mit runtergeladenen Datei durchsucht werden. Ein Zugriff auf den Server entfällt somit.
    Man brauch auch keine Schnittstelle zu einer Datenbank einzurichten, weil ja alle Daten in der Datei vorliegen. Daraus folgt das man auch keine Kenntnisse einer Script oder Compilersprache benötigt.
    Da die Suche und das Verwalten der Daten nur auf den Clientcomputer erfolgt findet nach dem Download des Applets keine Datenübertragung mit dem Server mehr statt. Somit verringert sich auch noch die Rechenleistung auf den Server.

    Nachteile :

    Wie schon erwähnt werden alle benötigten Daten auf den Client übertragen. Das hat aber auch zur Folge, dass jeder Nutzer die Daten nach seinem Belieben verändern kann.
    Weiterhin sind Web Datenbanken für komplexe Verwaltungs oder Suchaufgaben im Internet ungeeignet, da sie nur die Daten verwalten, die ihr angehören. (Textdatei).
    Abschließend könnte man sagen, dass sich Web Datenbanken nur zum verwalten kleinere Datenmengen eignen, welche nicht zentral und nicht einheitlich gespeichert werden müssen.

    Die weit verbreitete Alternative zu den Web Datenbanken sind die Client-Server Datenbanken.
    Bei einer Client-Server Datenbank greift der Nutzer auf die Daten die sich auf den Server befinden immer über eine Schnittstelle zu.
    Die typischsten Schnittstellen sind die CGI (Common Gate Interface) und die API ( Application Programming Interface).
    Zunächst möchte ich die Arbeitsweisen dieser beiden Schnittstellen kurz erläutern.
    Nutzt man die CGI Schnittstelle, wird für jede Anfrage ein eigener Prozess gestartet. Dieser Prozess wandelt die übertragenen Umgebungsvariablen und Parameter in HTML Code um und schickt sie zurück an den Client.
    Da jede Anfrage bzw. jede Änderung einen eigenen Prozess hervoruft, kommt es mit unter zu langen Reaktions bzw. Wartezeiten.

    Bei der API Schnittstelle werden schon beim Serverstart gewisse Programmbibliotheken geladen. Diese laufen dann als interne Funktionen im Web-Server-Prozess ab. Die benötigten Parameter und Umgebungsvariablen werden über interne Schnittstellen zur Verfügung gestellt. Somit ist bei jeder Dokumentanforderung nur ein Funktionsaufruf nötig. Daraus resultieren kürzere Reaktionszeiten. Weiterhin ist es über API möglich Kommunikationsverbindungen z.Bsp. zu Datenbanken permanent offen zu halten. Somit entfallen ebenfalls die Verbindungszeiten.

    Zusammenfassend kann man sagen das sich CGI durch FastCGI sicherlich auch als Datenbankschnittstelle eignet, aber API vor allem durch die stets geladenen internen Funktionen auch gegenüber FastCGI die schnellere Alternative ist und somit für die Arbeit mit Datenbanken besser geeignet ist.

    Somit ist es kein Wunder, dass die meißt verbreiteste und wohl auch meißt genutzte Datenbankschnittstelle, die sogenannte ODBC (Open Database Connection), eine API Schnittstelle ist.
    ODBC dient sozusagen zur Realisierung von SQL-Abfragen. Das heißt über die ODBC Schnittstelle werden die Datenbanken mit SQL Abfragen gefüttert und stellen auch die Abfrageeregebnisse bereit.
    ODBC wird mittlerweile von allen Datenbanken unterstützt. Ein weiterer Vorteil von ODBC ist, dass es Programm und Betriebssystem unabhängig ist.

    Wie werden aber jetzt die Abfrageergebnisse in die Internetseiten eingebunden ?
    Dies geschieht mit Script oder Compilersprachen.
    Im folgenden werde ich die wichtigsten davon aufzählen und kurz auf sie eingehen.


  • Wie bindet man Datenbanken in Internetseiten ein ?

    Wie schon erwähnt bindet man Datenbanken mit Hilfe von Script oder Compilersprachen in Internetseiten ein.
    Beispiele dafür wären PHP,PERL,ASP,JAVA oder JSP.

    PHP (PHP Hypertext Preprocessor) ist eine Scriptsprache deren Quelltext in HTML eingebettet wird. PHP basiert auf C++ und unterstützt selbstverständlich die Anbindung von Datenbanken per ODBC.
    Besonders eignet sich PHP aber in Zusammenarbeit mit der Datenbank MySQL. Die Kombinaton Linux, Apache, MySQL und PHP (auch LAMP genannt) wird dabei sehr oft eingesetzt und bildet ein sehr leistungsstarkes System.
    Beispiele für Seitein in PHP wären freenet.de oder mp3.lycos.com.

    PERL ist eine Scriptsprach die oft in Verbindung mit CGI genutzt wird. Der Datenbankzugriff unter PERL ist aber auch über die PerlDBI (Perl Database Interface) möglich. Dabei handelt es sich um eine API Schnittstelle.
    Da der gesamte HTML Code durch PERL ausgegeben wird und somit keine Trennung von Programmiercode und Seitenlayout erfolgt, ist die Arbeit mit Datenbanken unter Perl mit unter sehr umständlich. Abhilfe schaft hier das Perl Modul Embperl. Dieses ermöglicht die Trennung von Programmiercode und Seitenlayout ähnlich wie in PHP.

    ASP (Active Server Pages) wurde von Microsoft entwickelt und läuft somit auch nur auf Microsoft Systemen.
    Es basiert auf Visual Basic und unterstützt besonders Access Datenbanken und den Microsoft SQL-Server. Über ODBC ist jedoch jede beliebige Datenbank anbindbar. Beispielseiten für ASP wären www.ebay.de oder www.msn.de.

    JAVA ist eine Compilersprache die von der Firma SUN entwickelt wurde und zum Beispiel zum erstellen von Servlets und Applets dient.
    Auch aus Applets heraus kann man auf Datenbanken zugreifen. Dafür entwickelte JAVA eine eigene Schnittstelle, die sogenannte JDBC (Java Database Connection). Inzwischen wird JDBC von vielen Datenbanken unterstützt, ist sehr weit verbreitet und bietet eine ernsthafte Alternative zu ODBC.

    JSP (Java Server Pages) ist eine von SUN entwickelte Alternative zu ASP. Im Gegensatz zu ASP ist JSP aber nicht plattformabhängig. JSP wird ebenfalls in den HTML Quelltext eingebettet. Somit erfolgt auch hier eine Trennung von Programmlogik und Design.


Arten von Datenbanken

  • Welche Datenbanken gibt es ?

    Natürlich gibt es eine Vielzahl von Datenbanken. Ich möchte hier aber nur die wichtigsten nennen und kurz vorstellen.
    Zu erwähnen wären da Oracle, IBM, Sybase, MySQL, PostgreSQL, miniSQL und Microsoft SQL-Server.

    Die aktuelle Version von Oracle ist die 9I. Das I steht dabei für Internet. Seit der Version 8 beschäftigt sich Oracle verstärkt mit dem Internet. Oracle gilt neben IBM als der Gigant unter den Datenbankherstellern. Typisch für Oracle ist das 3-Schichtenmodell bestehend aus Clientschicht, Applikationsschicht und Datenbankschicht.
    Oracle Datenbanken sind in der Anschaffung sehr teuer und sind geeignet für den HighEnd und Midrange Bereich.

    Die aktuelle Version von MySQL ist die 4.1. MySQL ist sehr bekannt und auch sehr weit verbreitet. Es handelt sich um eine OpenSource Datenbank, das heißt sie ist kostenlos und das selbst für kommerzielle Nutzung. Es wurde von der Firma T.c.X. Datakonsul AB, auf der Suche nach einem Ersatz für einen Datenbankgenerator in Basic, entwickelt und erschien 1996 erstmals unter der Version MySQL 3.2.1.
    Auch mit MySQL kann man enorme Datenmengen verwalten. Ein Beispiel hierfür ist der Ticketverkauf der Expo 2000 der komplett mit MySQL realisiert wurde.
    MySQL eignet sich ganz besonders zum lesen von Daten, und da im Internet häufiger aus Datenbanken gelesen wird als das in sie geschrieben wird, ist MySQL sehr gut für das Internet geeignet.
    Probleme bekommt MySQL wenn viel parallel geschrieben werden muss. Außerdem unterstützt es keine Views und keine Trigger.
    Dennoch ist MySQL eine sehr gute Web Datenbank die auch Oracle und IBM ernsthaft Konkurrenz machen kann.

    Bei PostgreSQL handelt es sich um eine objektrelationale Datenbank. PostgreSQL ist der Nachfolger von Ingres und wurde an der kalifornischen Universität Berkeley entwickelt. Zuerst hieß es Postgres95 wurde aber dann durch die SQL Erweiterungen in PostgreSQL umbenannt. Genauso wie MySQL ist auch PostgreSQL kostenlos.
    Es unterstützt Views und Trigger sowie benutzerdefinierte Typen und Vererbung.
    Da es an einer Universität entwickelt wurde galt es lange Zeit als akademisches Spielzeug was für die meisten zu kompliziert sei. Ist es aber nicht und seit neusten gibt es auch eine umfangreiche Dokumentation zum Teil auch in Deutsch.
    Abschließend bleibt zu sagen das PostgreSQL noch im Aufkommen ist, sich aber für gewisse Aufgaben besser als MySQL eignet.

    miniSQL wurde von Robert Hughes entwickelt. Es handlet sich dabei um eine preiswerte und relativ schnelle Datenbank. Wie der Name mini schon sagt unterstützt es nur einen kleinen Umfang an SQL Befehlen. Ein Vorteil von miniSQL ist dessen hohe Transparenz, worunter man das gute nachvollziehen der Abfragen versteht.
    Hier muss man zusammenfassend sagen, dass miniSQL mit MySQL und PostgreSQL vom Funktionsumfang nicht mithalten kann, zudem ist es nicht kostenlos.

    Die aktuelle Datenbank von IBM ist die DB2. IBM kämpft gegen Oracle um die User im HighEnd und Midrange Bereich. Wie auch bei Oracle sind IBM Datenbanke in der Anschaffung sehr teuer.

    Microsoft Produkte (besonders SQL-Server) haben annähernd den selben Funktionsumfang wie die Datenbanken von Oracle und IBM und sind um einiges billiger. Der Nachteil von Microsoft Datenbanken ist natürlich die Plattformabhängigkeit. Sie laufen also nur auf Microsoft Systemen.

  • Fakten / Geschehnisse/ Zukunft ?

    Hier möchte ich noch einmal die enorme Bedeutung die Datenbanken heutzutage vor allem im Internet haben hervorheben. Ich beziehe mich dabei auf ein paar Statements, auf die ich bei meinen Recherchearbeiten gestoßen bin.
    Seit einigen Jahren (Jahrzehnten) gibt es einen "Kampf" um die User im HighEnd und Midrange Bereich zwischen IBM und Oracle. Oracle galt dabei bzw. gilt immer noch als unangefochtener Gigant unter den Datenbankherstellern. Doch IBM versucht natürlich alles um ihnen den Rang abzulaufen. So kaufte IBM 2001 das Datenbanksegment der Firma Informix auf übernahm deren Technologien zur Verwaltung von großen Datenmengen. 2 Milliarden Mark soll IBM dafür an Informix gezahlt haben.
    Schenkt man aktuellen Zahlen von www.tecchannel.de Glauben so hat IBM Oracle an der Spitze abgelöst.

    IBMOracle
    200033,7 %34,1 %
    200234,6 %32,0 %

    In der Tabelle wird der jeweilige Marktanteil an Datenbanken der Firmen IBM und Oracle in den Jahren 2000 und 2002 gegenübergestellt.
    Natürlich sind das alles nur Momentaufnahmen, dennoch zeigt sich das IBM sehr viel tut um sich im Bereich der Datenbanken gut zu etablieren. Allein diese offizielle Statement von IBM zeigt wie wichtig Datenbanken heutzutage sind. So heißt es laut IBM: "Das Datenbankgeschäft ist der am schnellsten wachsende Markt in der Informationstechnologie".
    Und dort wo der Markt am schnellsten wächst ist auch das meiste Geld zu verdienen. So investierte IBM in den letzten 3 Jahren 1 Milliarde Dollar in den Datenbankbereich.

    IBM und Oracle sind zweifelslos führend im HighEnd und Midrange Bereich, aber warum ? Laut Tests übertrifft die Version 4.0 von MySQL Oracle 9I an Schnelligkeit und Systemstabilität. Daran sieht man das auch mit OpenSource Datenbanken Spitzenperformance möglich ist. Zudem sind sie kostenlos.
    Dennoch schenkt man ihnen vor allem bei Großfirmen mit "geschäftskritischen" IT-Systemen wenig Vertrauen.
    Das liegt zum einen daran weil den OpenSource Produkten ein gewissen "Hackerimage" anhängt. Obwohl das in den meisten Fällen nicht berechtigt ist. Zum anderen zweifeln Großfirmen den Support und die Updates von OpenSource Datenbanken an. Das mag teilweise berechtigt sein. Aber vielen ist auch nciht bekannt, dass hinter MySQL eine echte Firma steckt, die sogenannte MySQL AB also eine "juristische Person" die greifbar ist wenn es Probleme etc. geben sollte.
    Experten meinen das nur die nötige Aufklärungsarbeit fehlt und prophezeihen den OpenSource Datenbanken eine gute Zukunft. Denn in Sachen Kosten-Nutzen und Kosten-Risiken sind sie im Verhältnis zu den kommerziellen Datenbanken unschlagbar. Es fehlt nur noch die allgemeine Akzeptanz auch in der größeren Geschäftswelt.
    Experten und Analytiker vermuten, dass bis 2006 die meisten kleineren und mittelgroßen Unternehmen nach und nach auf OpenSource Modelle umsteigen werden und bis 2008 auch Großunternehmen die mit geschäftskritischen Systemen arbeiten OpenSource mehr und mehr Vertrauen schenken werden. Und 27000 Downloads täglich von MySQL zeigen schon jetzt das die OpenSource Variante sehr gefragt ist.

    Ich beziehe mich bei meinen Angaben hier auf Berichte die ich bei www.tecchannel.de und www.silicon.de gefunden habe. Hinzu habe ich eigene Überlegungen angestellt und teilsweise mit einfließen lassen. Es sind also zugegeben zum Teil nur Vermutungen hier und keine Fakten !

Quellen


www.tecchannel.de
www.oracle.com
www.ibm.com
www.glossar.de
www.mysql.com
www.silicon.de
www.postgresql.com