Database Reference
In-Depth Information
BEGIN TRANSACTION;
UPDATE account SET total=total+5000.0 WHERE account _ id=1337;
UPDATE account SET total=total-5000.0 WHERE account _ id=45887;
END ;
Wenn etwas zwischen den beiden Updates schiefgeht, hat die Bank fünf Rie-
sen verloren. Doch innerhalb eines Transaktionsblocks wird das erste Update
aufgehoben, selbst wenn der Server explodiert.
Stored Procedures
Alle Befehle, die Sie bisher gesehen haben, waren deklarativ, doch manchmal
muss man auch Code ausführen. An diesem Punkt muss man eine Entschei-
dung treffen: Soll der Code auf Seiten des Clients oder auf der Datenbank
ausgeführt werden?
Stored Procedures (also „gespeicherte Prozeduren“) bieten große Perfor-
mance-Vorteile zum Preis hoher Architekturkosten. Sie können den Abruf
tausender Datensätze an eine Client-Anwendung einsparen, haben Ihren An-
wendungscode aber auch an diese Datenbank gebunden. Die Entscheidung
für Stored Procedures sollte nicht leichtfertig getroffen werden.
Ungeachtet aller Warnungen wollen wir eine Prozedur (oder FUNCTION )ent-
wickeln, die den INSERT eines neuen Events zu einem Veranstaltungsort er-
laubt, ohne die venue _ id kennen zu müssen. Wenn der Veranstaltungsort
noch nicht existiert, wird er zuerst angelegt und dann im neuen Event ange-
geben. Wir wollen (als kleine Feinheit) einen Booleschen Wert zurückgeben,
der dem Benutzer anzeigt, ob ein neuer Veranstaltungsort eingefügt wurde.
Was ist mit der Anbieterabhängigkeit?
Als relationale Datenbanken ihre Blütezeit hatten, waren sie das Schweizer Armee-
messer der Technik. Man konnte nahezu alles in ihnen speichern - und sogar ganze
Projekte mit ihnen entwickeln (z. B. mit Microsoft Access). Die wenigen Unterneh-
men, die diese Software anboten, förderten die Nutzung proprietärer Unterschiede
und nutzten diese Abhängigkeit dann aus, um enorme Lizenz- und Beratungsge-
bühren zu verlangen. Das war die gefürchtete Anbieterabhängigkeit ,dieneuerePro-
grammiermethoden in den 1990ern und frühen 2000ern zu lindern versuchten.
Doch in dem Bestreben, die Anbieter zu neutralisieren, entstanden Maximen wie
keine Logik in der Datenbank . Das ist eine Schande, weil relationale Datenbanken
über so viele verschiedene Datenbankmanagement-Optionen verfügen. Viele Aktio-
nen, die wir in diesem Buch vorstellen, sind hochgradig implementierungspezifisch.
Dennoch lohnt es sich zu wissen, wie man Datenbanken bis an die Grenzen ausreizt,
statt Tools wie Stored Procedures apriori abzulehnen.
 
Search WWH ::




Custom Search