7 Transaktionsverwaltung in Verteilten Datenbanksystemen
Die Überwachung von Integritätsbedingungen in Verteilten DBS kann weitgehend wie im zentralen Fall erfolgen, jedoch erhöht sich der Overhead möglicherweise erheblich durch zusätzlich notwendig werdende Kommunikationsvorgänge. So kann es beim Einfügen eines neuen Tupels (bzw. Änderung des Primärschlüssels) zur Eindeutigkeitsprüfung des Primärschlüssels notwendig werden, sämtliche Knoten zu involvieren, an denen Fragmente der Relation vorliegen. Der Kommunikationsaufwand kann bei horizontaler Fragmentierung nur reduziert werden, wenn die Fragmentierung über Wertebereiche auf dem Primärschlüssel definiert wurde.
Bezüglich der referentiellen Integrität ist zu unterscheiden zwischen Änderungsoperationen auf der referenzierenden (abhängigen) Sohn-Relation S, die den Fremdschlüssel enthält, sowie der referenzierten Vater-Relation V, auf deren Primärschlüssel sich der Fremdschlüssel bezieht. Das Löschen eines S-Satzes sowie das Einfügen eines V-Satzes erfordern keine zusätzlichen Aktionen hinsichtlich der referentiellen Integrität. Beim Einfügen eines S-Satzes bzw. Änderung des Fremdschlüsselattributs ist zu überprüfen, ob der neue Fremdschlüsselwert definiert ist. Dies erfordert einen zusätzlichen Kommunikationsvorgang, falls das betreffende V-Fragment an einem anderen Knoten vorliegt. Die beim Löschen eines V-Satzes oder Ändern eines Primärschlüssels vorzunehmenden Aktionen können in SQL92 anwendungsspezifisch festgelegt werden [DD92]. Eine Option ist, die Änderungen abzuweisen, sofern noch abhängige S-Tupel vorliegen. Diese Überprüfung erfordert im Worst-Case den Zugriff auf alle S-Fragmente. Dies gilt auch für die Alternativen, in der alle abhängigen Tupel ebenfalls gelöscht bzw. deren Fremdschlüssel geändert werden. Im günstigsten Fall werden jedoch zusätzliche Kommunikationsvorgänge vollständig vermieden; dies ist bei abhängiger horizontaler Fragmentierung möglich (Kap. 5.3.2). Die effiziente Implementierung der zur Überprüfung der referentiellen Integrität an jedem Rechner anfallenden Aufgaben wird in [HR92] diskutiert.
Ähnlich wie die Modellbedingungen erfordern auch die anwendungsbezogenen Integritätsbedingungen zusätzliche Verarbeitungsschritte und Kommunikationsvorgänge in Abhängigkeit der vorliegenden Datenverteilung. Eine Besonderheit ergibt sich bei Integritätsbedingungen, die verzögert am Transaktionsende auszuwerten sind[31]. Deren Überwachung ist jetzt ins Commit-Protokoll einzubinden, wofür ggf. auch Rechner zu involvieren sind, die an der Transaktionsausführung selbst nicht beteiligt waren. Bei einem Zwei-Phasen-Commit-Protokoll geschieht die Überprüfung in der ersten Commit-Phase, wobei dann der Prepared-Zustand natürlich nur bei erfolgreichem Test eingenommen wird.