Too Cool for Internet Explorer

Bäume in MySQL


Das Abbilden von Baumstrukturen in Datenbanken stellt oft eine grosse Herausforderung dar. Wenn die Datenbank nicht gerade über eine Funktion zum effizienten Auslesen von hierarchischen Strukturen bietet, wie z.b. Oracles SQL über CONNECT BY, hat man ein Problem: Wie kann man einen Ast inkl. seiner Kinder auslesen?

Es gibt einige suboptimale Ansätze wie das Speichern des Pfades als String in einer Tabellenspalte oder die Referenzierung über eine Parent ID, bei der man gezwungen ist applikationsseitig eine Funktion zu schreiben, die rekursiv alle Kinder eines Astes ausliest und dabei in jeder Ebene eine neue Abfrage an die Datenbank stellt.

Nested Sets sind da schon sehr viel effizienter - beim Auslesen einer Datenbank. Das Einfügen und Löschen bzw. Verschieben von Ästen ist jedoch mit erheblichem Aufwand verbunden, da oft eine Vielzahl an Datensätzen aktualisiert werden müssen.

Jan Kneschke, Entwickler bei MySQL AB, hat nun eine weitere Möglichkeit vorgestellt, die von einem neuen Feature von MySQL 5 gebrauch macht, den 'Stored Procedures'. 'Stored Procedures' in MySQL können rekursiv ausgeführt werden, sodass das Rekursive Auslesen einer Datenbanktabelle über die Referenzierung der Parent ID komplett datenbankseitig erfolgen kann.

Auf seiner Projektseite kann man eine Bibliothek herunterladen, die die wichtigsten Funktionen zum Arbeiten mit Bäumen bereitstellt. Benötigt wird eine aktuelle Version von MySQL 5 z.b. die aktuell als stabil geltende Version 5.0.16. Die Bibliothek steht unter MIT Lizenz und kann unter Einhaltung der Regeln somit auch kommerziell verwendet werden.




Trackbacks

Keine Trackbacks

Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Noch keine Kommentare

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA