Ausschnitte eines nichtkommerziellen relationalen Datenbank

Werbung
Datenbanken
Ausschnitte eines nichtkommerziellen
relationalen Datenbank-Systems
Zahlreiche Anwendungen erfordern
heute den Einsatz von DatenbankSystemen und moderner DatenbankTechnologie. Neben bekannten, traditionellen Anwendungen aus den Bereichen Wirtschaft und Industrie finden Datenbanken immer stärker Einzug bei kleineren Applikationen.
Insbesondere für Anwendungen des
Internets wird auch der nicht so versierte
Programmierer gezwungen, komplexe
Datenbank-Technologie zum Verwalten
und Verändern bestehender bzw. neuer
Datenbestände einzusetzen. Ein typisches Beispiel ist der Internet-Shop. Weitere Beispiele sind Auswertungen von
Log-Dateien oder die Bereitstellung von
beliebigen Datensammlungen in der
Welt. Im Folgenden soll der Aspekt kleinerer und mittlerer Datenbank-Anwendungen speziell beleuchtet werden. Dabei
soll insbesondere auf die Punkte Handling, SQL Unterstützung, Sicherheit sowie Backup und Recovery des nichtkommerziellen Datenbank-Systems
MySQL eingegangen werden.
Handling
Meist stehen nur begrenzte Resourcen
zur Verfügung: geringe Manpower, geringes Investitionspotential für ein teures
Softwarepaket und begrenzte Zeit für
Einarbeitung und den geplanten Einsatz.
In vielen Fällen ist die Frage, wie viel
„Datenbank“ überhaupt eingesetzt werden darf oder soll, schon fast rhetorisch
und an vielen Stellen verzichtet man letztendlich gänzlich auf ein solches System.
Das muss nicht so sein. Wie so oft gibt
Thomas Birke,
Rechenzentrum
Zeitschrift des Rechenzentrums
es – gerade im Bereich Software – für
eine bestimmte Klasse von Anwendungen eine vernünftige und zudem kostenlose Alternative zu bestehenden kommerziellen Datenbank-Systemen. MySQL ist
ein solches Paket (http://www.mysql.com/).
Es unterliegt der GNU Software Lizenz
und kann/darf sich an sehr vielen Stellen
mit kommerziellen Systemen messen.
Rasch aus dem Internet geladen, lässt
sich MySQL auf jedes gängige Betriebssystem installieren. Für Windows-User
bedeutet dies, dass man nach nur wenigen Mausklicks schnell sein Ziel erreicht
hat: Ein vollständig installiertes, lauffähiges relationales Datenbank-System mit
intelligent gewählten Startparametern
kann eingesetzt werden. Mit dem umfangreichen Handbuch können schnell
erste administrative Schritte durchgeführt
werden – allerdings nur auf der Konsole
unter dem Kommando mysql. Besonders
komfortabel für den interessierten Laien
ist das Zusatzpaket „MySQL Front“, welches leider nur unter Windows erhältlich
ist. Mit Hilfe dieses grafischen Administrations-Tools lassen sich mit nur ein
paar Klicks rasch Benutzer verwalten,
Datenbanken einrichten und SQL (Structured Query Language)-Statements in einem entsprechenden Editor absetzen.
Investiert man noch etwas mehr Zeit, hat
man nahezu genau so schnell äußerst effizient implementierte und nahezu dem
Standard entsprechende DatenbankSchnittstellen installiert, wie zum Beispiel
das traditionelle DBI für PERL, aber
auch PHP, C/C++ bzw. JDBC für JAVA.
Diese Schnittstellen können für die Entwicklung von Internet-Applikationen,
insbesondere der Programmierung von
CGI-Skripten (Common Gateway Interface) sowie Java Applets und Servlets eingesetzt werden. Alle hierzu notwendigen
Softwarepakete lassen sich schnell und
reibungslos installieren. Bei Problemen
kann man auf zahlreiche im Internet befindlichen Newsgroups zurückgreifen,
die einem oft mit Rat und Tat zur Seite
stehen. Insgesamt bedeutet dies perfektes
Datenbank-Handling und Support zum
Nulltarif.
Ebenfalls positiv zu vermerken ist, dass
auf Grund des regen Interesses an
MySQL ständige Upgrades erstellt werden (derzeit wird MySQL Version 4 vorbereitet). Darin werden bestehende Defizite gefixt, wie zum Beispiel fehlendes
Transaktionsmanagement bzw. sonstige
Bugs. Dies bedeutet für den User zwar,
dass ständig neue Software-Updates notwendig sind, jedoch wird von Herstellerseite die Software tatsächlich gewartet.
SQL
Wie sieht es aber mit der DatenbankFunktionalität aus? Ein großes Manko
bildet sicherlich die nicht vollständige
Umsetzung des SQL-92 – oder gar des
SQL-99 – Standards. Komplexe Anfragen können nur mittels ein paar komplizierten MySQL- spezifischen Kunstgriffen umgesetzt werden. Ein typisches Beispiel ist die Umsetzung von SQL-Statements, in denen Zwischenergebnisse von
SQL-Anfragen verarbeitet werden (SubQueries).
Beispiel: „Auswahl der Beurteilungen
von Studentinnen“
In SQL übersetzt lautet die Anfrage:
SELECT * FROM beurteilung
WHERE beurteilung.student_id IN
(SELECT student.id FROM student
WHERE student.geschlecht =
“weiblich“);
9
Datenbanken
In MySQL muss dies wie folgt programmiert werden:
SELECT student.*
FROM student, beurteilung
WHERE beurteilung.student_id =
student.id
AND student.geschlecht=“weiblich“;
Noch schlimmer sieht das Ganze bei Negation aus.
Beispiel: „Auswahl aller Studenten
mit perfekter Anwesenheit, d.h. Studenten, die nicht abwesend waren“
In SQL übersetzt lautet die Anfrage:
SELECT * FROM student
WHERE student.id NOT IN
(SELECT abwesend.studen_id
FROM abwesend);
In MySQL lautet dies:
SELECT student.* FROM student
LEFT JOIN abwesend
ON abwesend.student_id = student.id
WHERE abwesend.student_id
IS NULL;
Fremdschlüsselbeziehungen (FOREIGN
KEY) und Sichten auf Datenbanken –
sogenannte VIEWS – sollen ebenfalls
erst in späteren MySQL Versionen umgesetzt werden. Weitere Informationen sind
in dem Buch von Paul DuBois, MySQL,
New Riders Publishing, 2000 zu finden.
Transaktionen (TA), welche einen korrekten, parallelen Ablauf von Anfragen
ermöglichen, finden erst ab Version 4.0
standardmäßig ihren Einsatz in MySQL.
Zum jetzigen Zeitpunkt können Transaktionen nur mit Hilfe eines bei der Installation einzucompilierenden Datenbankzusatzes, z. B. den InnoDB-Tabellen, erreicht werden. Möchte man auf diese Art
von Zusatzpaketen auf Grund der besseren Performance verzichten, können bisher (MySQL 3.23) Transaktionen mit
Hilfe eines MySQL-eigenen lock-Mechanismus simuliert werden; d.h. der Datenbank-Administrator ist für das korrekte
Transaktionsmanagement selbst verantwortlich. Beispiel:
10
LOCK TABLE a1 WRITE;
SELECT *
FROM TABLE a1=bedingung1 ;
UNLOCK TABLE a1;
tenbankschemas. Geschickter ist es an
dieser Stelle vermutlich Datenbankfiles
speziell von „Hand“ (z. B. auf UNIX
Geräten mit cp) zu sichern.
Sicherheitsaspekte
Mittels READ (Lesen, aber nicht schreiben), WRITE (Blockieren von Lese- oder
Schreibzugriffen) und LOW_PRIORITY
LOCK (Lesezugriff auf Tabelle gestattet,
falls die Anfrage auf einen Client wartet,
der gerade die Tabelle liest) können
durch den Programmierer verschiedene
LOCK-Granularitäten festgelegt werden.
Wie sieht es mit der Sicherheit aus? Wie
in allen kommerziellen DatenbankSystemen besteht auch in MySQL die
Möglichkeit für den Datenbank-Administrator Benutzer mittels des GRANT-Statements auf der Datenbank als User einzutragen, diese mit Passwörtern und Privilegien auf der Datenbank auszustatten.
Insbesondere in der CGI-Programmierung findet die traditionelle PERL DBISchnittstelle ihre Verwendung. Auch hier
muss der Programmierer bis dato auf die
zwar im DBI Standard festgelegten Features zum Transaktions-Management rollback (bricht eine Transaktion ab, werden
alle von der Transaktion betroffenen Tabellen in den ursprünglichen Zustand zurückgesetzt), commit (Datensätze werden
komplett oder gar nicht in die Datenbank
eingetragen) und abort (Transaktionen
können vom User abgebrochen werden)
verzichten. Ab welcher Version der Perl
DBI Treiber dahingehend noch verbessert wird, steht noch nicht fest.
Beispiel des dafür notwendigen Kommandos:
Auf Kosten fehlender Transaktionsmechanismen fallen Performance-Messungen für SQL Anfragen daher äußerst positiv aus. Tests in der Computerzeitschrift
IX (Ausgabe 1, 2002) zeigen, dass selbst
große Anwendungen mit über 1.000.000
Datensätzen noch äußerst performant arbeiten. Viele kleinere Datenbank-Anwendungen – gerade im Webbereich – genügen diesem Anforderungsprofil.
Backup / Recovery
der Datenbank
Möglichkeiten zum Backup / Recovery
bestehen zwar, wirken aber im Vergleich
zu kommerziellen Systemen unausgegoren. Feine Backup- und Recovery-Granularitäten, wie zum Beispiel ein inkrementelles Backup, fehlen gar gänzlich. Eigentlich besitzt der Administrator nur die
Möglichkeit, mittels des Befehls mysqldump eine Kopie der Datenbank in Form
von CREATE und INSERT Statements
abzulegen; dies bedeutet Archivierung
des kompletten Datenbankschemas. Das
Recovery der Datenbank entspricht somit dem Einspoolen des kompletten Da-
mysql> GRANT ALTER ON samp_db.*
TO user@% IDENTIFIED BY „passwd“;
Der Datenbank-Administrator hat insbesondere die Möglichkeit zur Vergabe
zahlreicher Datenbank- und Tabellen-Privilegien. Tabelle 1 gibt den entsprechenden Überblick.
Es gibt aber auch die Möglichkeit zur
Vergabe von administrativen Privilegien.
Diese können Sie in Tabelle 2 nachlesen.
Alles funktioniert hervorragend und
kann unter den entsprechenden Rechten
ohne Probleme auf der Konsole mysql
oder aber über das Administrations Tool
„MySQL Front“ unter Windows ausgeführt werden. Der Punkt Sicherheit muss
daher lobend erwähnt werden.
Fortsetzung nächste Seite unten
ALTER: ALTER TABLE Statement
gestattet,
CREATE: CREATE DATABASE
und CREATE TABLE gestattet,
DELETE: Tuppel dürfen aus der Tabelle entfernt werden,
DROP: DROP DATABASE und
DROP TABLE gestattet,
INDEX: Anlegen und Löschen von
Indexen gestattet,
INSERT: INSERT von neuen Tuppeln gestattet,
SELECT: SELECT-Statement gestattet,
UPDATE: Modifikation von Tabellen und Tupel gestattet.
Tabelle 1: Privilegien der Datenbank, welche
der Datenbank-Administrator an Nutzer vergeben kann.
connect 1/2002
Internet
Neue Webangebote und
neuer Service für die Besucher des
universitären Webangebots
Ein Webangebot muss, wenn es attraktiv sein will, ständig erneuert und
erweitert werden. Daher freue ich
mich, Ihnen auch in dieser Ausgabe
von connect wieder über einige wesentliche Fortschritte berichten zu
können.
Während der Erstsemester-Einführung
im Sommersemester 2002 an der Universität Augsburg wurde eine für mich sehr
interessante Frage gestellt: Wie viele der
Anwesenden haben sich im Vorfeld dieser Veranstaltung im Internet über die
Universität Augsburg und deren Studienangebot informiert? Die Antwort war äußerst aufschlußreich: Alle Hände gingen
nach oben. Genau für diesen „Kundenkreis“ kann die Universität Augsburg nun
mit zwei neuen Angeboten aufwarten.
Neu im Angebot
Ganz neue Webseiten hält die Studienberatung seit letztem Semester bereit – sowohl für Schüler als auch für Studierende. Darüber hinaus wurde nun endlich
ein englischsprachiges Webangebot konzipiert, dessen Zielgruppe zwar vor allem
ausländische Studieninteressenten sind,
welches aber aber auch englischsprachige
Besucher sicher durch die Webseiten leiten soll.
Zentrale Studienberatung
Seit Dezember 2001 sind die neuen Webseiten der Zentralen Studienberatung online (http://www.uni-augsburg.de/zentral/zsk/).
Dort finden Schüler, Studieninteressenten, Erstsemester und Studierende vielfältige Informationen.
sichtliche Gliederung des Studienangebotes. Denn erst diese kompakte Darstellung ermöglichte es, ein adäquates englischsprachiges Webangebot zusammenzustellen. Gerade Informationen über
Studienfächer stehen ja im Mittelpunkt
Die Themen, die sich im
Beratungsalltag stellen, sind
„schülerfreundlich“ dargestellt: wichtige Infos über
Studienangebot, Studienplanung und Verlauf eines Studiums, Prüfungsmodalitäten
und Berufsperspektiven
aber auch Wohnungssuche,
Stipendien und Ansprechpartner bei Problemen sind
leicht zu finden. Eine Seite
„Uni-Welt“ bringt mehr
Transparenz in die selbige
und erleichtert Schülern und
angehenden Studierenden
die Informationssuche im
Abb.: Die Startseite des englischsprachigen Webangebots. Ein
Webangebot der Universität. Ausschnitt aus dem Gesamtangebot der Universität Augsburg,
Hervorzuheben ist die über- welches speziell für ausländische Studierende zugeschnitten ist.
Fortsetzung des Artikels „MySQL – eine „perfekte Alternative“?
Zusammenfassung
Dr. Annja Zahn,
Rechenzentrum
FILE: Erlaubnis für Lese- und
Schreibrechten auf Dateien
auf dem Server Host
GRANT: Vergabe des GRANT
Privilegs,
PROCESS: Erlaubnis zum Löschen
von Datenbank-Prozessen,
RELOAD: Erlaubt eine Anzahl von
Server-Administrativen
Privilegien,
SHUTDOWN: MySQL ServerShutdown gestattet.
Befindet man sich also nun am Ende aller Datenbank- und Webträume? Diese Frage
kann nur mit „vielleicht“ beantwortet werden. Viele kleinere und nicht-kritische Datenbank-Anwendungen rechtfertigen den Einsatz von MySQL. Insbesondere für WebApplikationen mit einfachen, lesenden SQL-Anfragen ist MySQL, auf Grund der hervorragend implementierten APIs und der hervorragenden Performance, besonders
geeignet. Auch die einfache Administration des Datenbank-Systems ist für den nicht so
erfahrenen Datenbank-Administrator durchführbar. Das rege Interesse – insbesondere
bei den Linux-Usern – und die lobend zu erwähnende Dokumentation von MySQL
forciert zusätzlich die Weiterentwicklung eines zumindest äußerst interessanten GNU- Tabelle 2: Administrative Privilegien der
Datenbank.
Produktes für den semi- und im speziellen Falle sogar professionellen Bereich.
Zeitschrift des Rechenzentrums
11
Herunterladen