|
Oberstes Ziel bei der Entwicklung von pixafe
ist die Datensicherheit. Es wurden diverse Vorkehrungen getroffen,
um den Verlust oder die ungewollte Zerstörung von Bildern zu vermeiden.
Durch verschiedene Techniken der
Fehlerbehandlung bzw. Fehlervermeidung
werden Verluste eingeschränkt.
Ein wesentlicher Beitrag hierzu wird dadurch erreicht, dass kein neues
Datenbankmanagementsystem entwickelt, sondern auf ein
etabliertes System (IBM DB2).
zurückgegriffen wurde.
Bildverzeichnis
Alle Bilder, die in der Bilderdatenbank abgelegt sind, werden in einem
speziellen Bildverzeichnis (Datenbankverzeichnis) abgelegt. Während der Anzeige oder
Bearbeitung mit einem Bildverarbeitungsprogramm wird auf einer Kopie
des Bildes im Arbeitsverzeichnis gearbeitet. Nach der Änderung eines
Bildes mittels Bildverarbeitungsprogramm muss dieses explizit erneut
in der Datenbank gespeichert werden. Hiermit wird sichergestellt,
dass bei einem Absturz eines Fremdsystems (Bildverarbeitungsprogramm)
keine Bilder in der Datenbank beschädigt werden.
Löschverzeichnis
Beim Löschen eines Bildes aus der Bilderdatenbank wird das zu löschende
Bild nicht sofort aus dem System entfernt, sondern zuvor in den Papierkorb
(Löschverzeichnis) verschoben.
Erst dann, wenn der Benutzer das Löschverzeichnis
explizit leert, werden die gelöschten Bilder aus dem System entfernt. Hiermit wird
sichergestellt, dass keine Bilder verloren gehen, die aus Versehen gelöscht wurden,
oder die bei einem Systemversagen entfernt worden wären.
Backupverzeichnis
Um den Zustand der Datenbank zu einem beliebigen Zeitpunkt sichern zu können
existiert das Backupverzeichnis.
In diesem Verzeichnis werden die Inhalte der Datenbank abgespeichert, um sie
auf einen anderen Rechner transportieren zu können, bzw. um nach einem Systemausfall
die Datenbank rekonstruieren zu können.
Transaktionen
Transaktionen stellen die Daten-Konsistenz bei allen Zugriffen
auf das Datenbanksystem sicher. Sie haben die folgenden
Eigenschaften, die auch unter der Abkürzung ACID
bekannt sind:
 |
Atomarität (Atomicity) bedeutet, dass
entweder alle Operationen der Transaktion ausgeführt
werden oder keine.
|
 |
Die Konsistenz (Consistency) des
Datenbestandes ist zu Beginn einer Transaktion und auf
jeden Fall am Ende gewährleistet.
|
 |
Die Eigenschaft Isolation stellt sicher,
dass Transaktionen isoliert bzw. unabhängig voneinander
ablaufen, d.h. eine Transaktion sieht nicht die
möglicherweise inkonsistenten Interna einer anderen
Transaktion.
|
 |
Die Dauerhaftigkeit (Durability) der
Änderungen der Transaktion ist an deren Ende gegeben.
Wenn also eine Transaktion erfolgreich abgeschlossen ist,
können die Änderungen nur durch eine eigenständige,
kompensierende Transaktion rückgängig gemacht werden.
|
Die Transaktion-Technik wird bei pixafe
dazu genutzt sicherzustellen, dass keine inkonsistenten Daten in
die Datenbank gelangen können. Vor einem Datenbankzugriff wird
eine Transaktion gestartet. Wenn es dann bei deren Ausführung zu
einem Fehler kommen sollte, werden alle Aktionen innerhalb der
gestarteten Transaktion von der Datenbank zurückgenommen und
somit deren Konsistenz sichergestellt.
Datenintegrität
Beziehungen
Die in der Datenbank abgelegten Informationen stehen in
Beziehungen zueinander. Wie diese Beziehungen aussehen, wurde im
Datenbankschema definert. Das DB2-Datenbanksystem achtet beim
Ändern von Daten in der Datenbank (Einfügen, Löschen, Ändern)
ganz genau darauf, dass die festgelegten Beziehungen eingehalten
werden. Eine der Beziehungen ist, dass keine Person gelöscht
werden darf, wenn sie noch auf einem Bild abgebildet ist und zu
dessen Anzeige benötigt wird.
Primärschlüssel
Ein Primärschlüssel ist ein Datenbankkontrukt, das sicherstellt, dass eindeutige Datensätze
nur einmal innerhalb einer Tabelle abgelegt werden dürfen. Bei der Festlegung des Datenbankschemas
wird angegeben, bei welchen Tabellenattributen es sich um Primärschlüssel handelt. Dass
diese Schlüsselbedingung nicht verletzt wird ist Sache des Datenbanksystems.
Fremdschlüssel
Fremdschlüssel garantieren, dass auf verwiesene Daten stets verfügbar sind.
So wird in der Bilderdatenbank zu einem Bild eine Liste aller abgebildeter Personen
in Form von Verweisen gespeichert. Hiermit ist sichergestellt, dass keine Person
gelöscht werden kann, die auf einem Bild abgebildet ist, das sich noch in der
Datenbank befindet.
Ein weiteres Beispiel ist die Verwaltung von Schlagwörtern in der Datenbank.
Sobald ein neues Schlagwort bei der Beschriftung eines Bildes in die Datenbank
aufgenommen wird, wird festgestellt, dass es sich um ein neues Schlagwort handelt.
Der Benutzer wird gefragt, ob er das Schlagwort in die Datenbank einfügen möchte
oder ob er sich eventuell verschrieben hat und darum das Schlagwort noch nicht
in der Datenbank vorliegt. Die Schlagwörter werden in einer speziellen Tabelle
abgelegt, die Verknüpfungen zu Bildern erfolgen mittels Verweisen oder Fremdschlüsseln.
Constraints
Neben den Beziehungen zwischen verschiedenen Daten gibt es
auch Festlegungen für die Struktur einzelner Datenfelder, die
die Datenbank überwacht. Über bestimmte Regeln wurde
festgelegt, dass nur gültige Datumswerte in die Datenbank
eingetragen werden können. Es wird zum Beispiel sichergestellt,
dass das Datum 29.Februar 2001 nicht eingegeben werden kann.
Der folgende Constraint dient dazu, ein Datum nur in korrekter
Form in die Datenbank zu lassen:
constraint c_dat check(
(( madeday is null and mademon is not null and madeyear is not
null) or
( madeday is null and mademon is null and madeyear is not null )
or
( madeday is null and mademon is null and madeyear is null ) or
( madeday is not null and mademon is not null and madeyear is not
null )) and
((mademon in (1,3,5,7,8,10,12) and madeday < 32 ) or
(mademon in (4,6,9,11) and madeday < 31 ) or
(mademon = 2 and madeday < 29 ) or
(mademon = 2 and mod( madeyear, 4) = 0 and madeday < 30 ))
-- alle Hunderter sind kein Schaltjahr (mod 100)
-- alle tausender sind wieder Schaltjahre (mod 400))
|