4          Dynamische Verwaltung globaler Namensräume

 

 

In Kapitel 2 wurden verschiedene Strukturen von Namensräumen diskutiert und hierarchische Namensräume als besonders geeignet für die globale Verwaltung von Namen identifiziert. Kapitel 3 disku­tierte Organisationsformen der Namensverwaltung und stellte eine Methode zur dynamischen Konfigurierung hierarchischer Verwalternetze in Abhängigkeit von der Netz­werktopologie und den Netzwerkeigenschaften vor. Im Mittelpunkt des folgenden Kapitels steht die globale Auflösung (Resolution) hierarchischer Namen und die adäqua­te Verteilung eines globalen hierarchischen Namensraums auf ein hierarchisches Verwalter­netz.

4.1         Auflösung globaler Namen

Voraussetzung zum Verständnis der Vorgehensweise bei der Plazierung globaler Namen im Verwalternetz ist die Kennt­nis existierender Methoden zur Auflösung globaler Namen. Dieser Abschnitt präsentiert daher zunächst einige allgemeine Methoden zur globalen Auflösung von Namen in hierarchischen Verwalternetzen.

Die globale Auflösung von Namen besteht im wesentlichen aus drei Schritten:

1.   Dem Lokalisieren des für den Namen zuständigen Namensverwalters im Verwalternetz.

2.   Der lokalen Auflösung des entsprechenden Namens innerhalb eines Namensver­wal­ters.

3.   Dem Zurückliefern der Ergebnisse der Namensauflösung zum Initiator der Anfrage.

Globale Namen werden innerhalb und zwischen Namensverwaltern aufgelöst. Jeder Auflö­sungsschritt ist mit einem Kontext­wechsel oder dem Übergang in einen anderen Namensraum verbunden. Ein Auflö­sungsschritt liefert somit einen neuen Namen, einen Kontext in einem (neuen) Namensraum, bezüglich dessen der Name weiter aufgelöst wird, und den Namens­ver­walter, in dem der Kontext bzw. der Namensraum adminis­triert wird.

4.1.1          Verfahren zur Auflösung globaler Namen

Die Namenseinträge globaler Namen sind im Verwalternetz verteilt und a priori ist nicht bekannt, welcher Namensverwalter den Namens­eintrag für einen bestimmten Namen hält. Die Auflösung globaler Namen ist daher stets mit der Lokalisierung der zugehörigen Namens­ein­träge im Verwalternetz verbunden. Grundsätzlich existieren zur Auflösung globaler Namen zwei unterschiedliche Verfahren, die sich durch die Art der Lokalisierung von Namenseinträgen im Verwalternetz unterscheiden, die struktur­orientierte und die struktur­unabhängige Auflösung.

Strukturorientierte Methoden zur globalen Auflösung von Namen analysieren sukzessive die Komponenten eines Namens und entscheiden anhand der Semantik der Namensbestandteile und der im jeweiligen Namensverwalter verfügbaren Navigationsinformation, welcher Namens­ver­walter für die Auflösung des jeweils nächsten Namensteils kontaktiert werden muß. Dieser Vorgang kann auch als Interpretation eines Namens oder als Navigation im Verwalternetz ver­standen werden. Der Vorgang der Lokalisierung von Namensverwaltern wechselt sich mit der Auflösung des Namens ab, bis der Name aufgelöst und der für den zugehörigen Namens­ein­trag zuständige Namensverwalter lokalisiert ist.

Struk­tur­unabhängige Verfahren zur globalen Auflösung von Namen trennen den Vorgang der Lokalisierung des zuständigen Namensverwalters und die eigentliche Auflösung des Namens zum Objekt-Bezeichner. Im ersten Schritt wird unabhängig von der Struktur des aufzulösen­den Namens der für die Verwaltung des zugehörigen Namenseintrags zuständige Namens­verwalter im Ver­walternetz lokalisiert. Anschließend findet dort lokal die Auflösung des Namens zum Objekt-Bezeichner statt.

Erstrecken sich Namensauflösungen über verschiedene Namensräume, so können auf jeder Stufe der Auflösung unterschiedliche Methoden zur Lokalisierung der für einen Namensteil zuständigen Namensverwalter Verwendung finden. Exemplarisch sei hier die zweistufige Auf­lösung von Domain Namen auf Ethernet-Adressen in Erinnerung gebracht.

4.1.1.1       Strukturunabhängige Namensauflösung

Die Lokalisierungsverfahren der strukturunabhängigen Namensauflösung, auch als streuende Lokalisierungs­verfahren bekannt, leiten Namensanfragen an alle im Verwalternetz in Frage kommenden Namens­verwalter. Dabei werden Namensanfragen dupliziert, was jedoch mit der Semantik globaler Namensoperationen durchaus verträglich ist, sofern die Namens­einträge selbst als Unikate vorliegen. Nicht unmit­telbar einsichtig ist die Verträg­lichkeit, wenn Namens­einträge mehrfach gehalten werden, da bei Vorliegen gleichberechtigter Kopien Ände­rungs­ope­rationen dann zu sich selbst in Konkurrenz geraten können. Anhand vergebener Auf­trags­ken­nungen läßt sich das jedoch erkennen und entsprechend darauf reagieren (vgl. Kapitel 5). Wer­den Anfragen an die Namensverwaltung mehrfach verteilt und liegen im Verwalternetz Replika­tionen von Namenseinträgen vor, so kann das akkumulierte Anfrage­ergebnis u.U. die­selbe Antwort mehrfach enthalten. Wo dies unerwünscht ist, lassen sich anhand der Auftrags­kennung und des an den Namen gebundenen Objekt-Bezeichners Duplikate eliminieren.

Voraussetzung für die Erkundung des Verwalternetzes bei der strukturunabhängigen Auflösung ist, daß dieses zusammenhängend und bidirektional ist. Diese Eigenschaft ist, vorausgesetzt es liegen keine Ausfälle vor, jedem hierarchischen Verwalternetz zuzuschreiben. Ein Namens­ver­walter muß außerdem Kennt­nis von allen seinen benachbarten Namensverwaltern besitzen.

Ziel der vollständigen Erkundung des Verwalternetzes ist es, jeden Namensverwalter mindes­tens einmal zu kontaktieren. Basisalgorithmen, die sich dafür eignen, sind zum einen die Tiefensuche, zum anderen die Parallelsuche. Sowohl die Tiefen- als auch die Parallelsuche ent­sprechen in ihrer Grundform einer rekursiven Erkundungsstrategie. Diese zeichnet sich dadurch aus, daß besuchte Namens­verwalter die Auflösung in eigener Regie so fortsetzen, als seien sie selbst der Initiator.

Abbildung 4.1: Erkundungsstrategien in Bäumen

Der Ablauf der Tiefensuche entspricht dabei genau dem Vorgehen, das diesem Algorithmus auch in der Graphentheorie zugrunde liegt. Existieren keine Kopien von Namenseinträgen und wird nur ein Eintrag angefordert, so kann die Tiefensuche bei Vorlie­gen eines Treffers abge­brochen werden. Im Mittel müssen 50% der Namens­verwalter kontaktiert werden, um einen einzelnen Namenseintrag zu lokali­sieren. Falls es sich jedoch um eine generische oder attribu­tierte Anfrage handelt, sind alle Namensverwalter im Verwalternetz zu kontaktieren.

Die Parallelsuche dagegen ist eine dem hierarchischen Verwalternetz angepaßte Variante eines anderen Graphen­algorithmus, der Breitensuche. Eine eingehende Anfrage wird hierbei parallel an alle Netzwerk­verbindungen weitergereicht, die von der eingehenden Verbindung verschieden sind. Auch wenn nur ein Namenseintrag lokalisiert werden soll, werden bei der iterativen Vari­ante der Parallelsuche alle Namens­verwalter im Verwalternetz kontaktiert. Dabei besteht die Gefahr der Überflutung des globalen Verwalternetzes mit Netzwerknachrichten.

Anstatt die Lokalisierung in eigener Regie fortzusetzen, kann sich die besuchte Instanz auch darauf beschränken, den Initiator durch Referenzen über bestehende Fortsetzungsmöglichkeiten zu informieren. Es obliegt dann dem Initiator der Anfrage, diese Referenzen weiterzuverfolgen und die zugehörigen Namensverwalter zu kontaktieren. Je nachdem, ob die erhaltenen Refer­enzen sukzessive oder parallel verfolgt werden, erhält man eine iterative Variante der Tiefen- oder Parallelsuche. Mögliche Varianten sind in Abbildung 4.1 zusammengefaßt.

Bei den rekursiven Strategien läßt sich noch weiter differenzieren, je nachdem ob die Ergebnis­rück­meldung denselben Weg zurück zum Initiator der Anfrage nimmt, oder der betreffende Namensverwalter das Anfrageergebnis direkt zurücksendet. Zunächst tendiert man dazu, letz­tere Variante aufgrund der geringeren Anzahl von Nachrichten zu bevorzugen. Dies wäre jedoch etwas voreilig, da es sich bei einem Verwalternetz um eine logische Struktur handelt. Was im Verwalternetz als eine direkte Verbindung erscheint, kann im zugrundeliegenden physikalischen Netz über eine Vielzahl von Zwischenknoten führen, so daß Aussagen über Pfadlängen nur bedingt zur Beurteilung herangezogen werden können[AL1] [AL2] . Welche der möglichen Varianten sich in der konkreten Realisierung tatsächlich bewährt, hängt nicht zuletzt von den zur Verfügung ste­henden Kommunikations­mechanismen ab. Nachteilig wirkt sich das Umgehen der Zwischenin­stanzen bei der Rückgabe von Anfrageergebnissen in jedem Fall dann aus, wenn Teilergebnisse von Namensanfragen in involvierten Namensverwaltern für künftige Anfragen vorgehalten werden sollen (vgl. hierzu auch Kapitel 5).

Auf einen eingehenden Vergleich und eine Analyse des Nachrichtenaufkommens der vorge­stellten Verfahren wird an dieser Stelle verzichtet (vgl. hierzu [Mattes, 91]). Es bleibt festzu­halten, daß strukturunabhängige Verfahren zur Baumerkundung, insbesondere zusammen mit Verfahren zur Begrenzung der Erkundungs­tiefe in hierarchischen Namens­räu­men, bei der Lokalisie­rung von Namenseinträgen im Verwalternetz für generische und attributierte Namens­anfragen ihren Einsatz finden, sofern im Namensraum keine eindeutige Navigations­information vorhanden ist, die die strukturorientierte Auflösung ermöglicht.

4.1.1.2       Strukturorientierte Namensauflösung

Die Lokalisierung von Namenseinträgen im Verwalternetz bei strukturunabhängiger Auflösung erweist sich als sehr nachrichten­intensiv und führt auch zu einer Belastung von Namens­ver­waltern, die für die Auf­lösung eines Namens nicht relevant sind. Man ist daher bemüht, die Ausbreitung von Namens­anfragen durch die gezielte Auswahl von Namensver­waltern einzu­schränken. Die damit verbundene Aufgabe ist vergleichbar mit der Weglenkung (routing) in vermaschten Kommunikationsnetzen. Die Namensverwalter müs­sen hierzu über Naviga­tions­informationen verfügen, anhand derer für jeden eingehenden Auf­trag eine Weiter­lei­tungs­ent­scheidung getroffen werden kann.

Der fol­gende Abschnitt stellt strukturorientierte Auflösungsverfahren vor, die basierend auf der Interpretation des gesuchten Namens und der Naviga­tions­information in Namens­ver­waltern Anfragen gezielt an den zuständigen Namensverwalter im Verwal­ternetz leiten. Die Naviga­ti­ons­information in Namens­verwaltern gibt an, über welche Verbindung eine Partition des glo­balen Namens­raums erreicht wird. Durch die Interpretation des Namens während der Auf­lö­sung und mit Hilfe von Navigations­information kann die Erkundung des Verwalter­netzes gezielt gesteuert werden. Dieses Vorgehen, das auch als Navigation im Verwalternetz verstan­den wird und hier nur im Ansatz formuliert ist, soll in den nächsten Abschnitten weiter präzi­siert werden.

Abbildung 4.2: Schrittweise Auflösung des Namens „/a.b.c.d“ durch Remote-Pathname-Expansion

Die strukturorientierte Auflösung globaler Namen unterscheidet absolute und relative Namen (vgl. Kapitel 2.2.3.1). Man sagt, ein Name wird relativ zu einem Kontext aufgelöst, wenn der Name nur innerhalb eines bestimmten Kontexts im Namensraum Gültigkeit besitzt. Relative Namensauflösungen finden häufig in routing-orientierten Namensräumen Verwendung (vgl. [Comer, 89]). Absolute Namen liefern bei ihrer Auflösung in jedem Kontext und Namens­ver­walter dasselbe Ergebnis.

Ein bekanntes Verfahren zur globalen Auflösung hierarchischer Namen nach dem oben darge­stellten Prinzip ist die sog. Remote Pathname Expansion [Sheltzer, 86[AL3] ]. Hierbei wird bei Anfragen nach absoluten Namen (z.B. „/a.b.c.d“ in Abbildung 4.2) ausgehend vom Namens­verwalter des Wurzelkontexts die Auflösung sukzessive an den Namensverwalter geleitet, der den gesuchten Namenseintrag enthält. Jeder Namensverwalter, an den eine Anfrage gerichtet ist, versucht mit Hilfe seiner lokalen Namensbasis einen weiteren Teil des Namens aufzulösen und Navigations­information hierfür zu ermitteln. Existiert zu einem partiellen Namen ein Ver­weis auf einen weiteren Namens­verwalter, so wird der verbleibende Namensteil zur Auf­lösung an den ermittelten Namens­verwalter übergeben (vgl. Abbildung 4.2). Dieser Vorgang der Auf­lösung wiederholt sich, bis der Namenseintrag des gesuchten Namens in einem Namens­­ver­walter im Verwalternetz lokalisiert wurde. Schließlich wird der Name lokal voll­ständig aufge­löst, und der an den Namen gebundene Objekt-Bezeichner zurückgegeben.

Eine weitere Methode zur Auflösung hierarchischer Namen, das sog. Zeichenkettenersetzungs­modell, wurde von Peterson und Comer [Comer, 89] vorgestellt. Das Verfahren beruht auf der syntaxgesteuerten Interpretation von Namen, wobei sukzessive Teile des strukturierten Namens durch die Bezeichnung von Kanten im Verwalternetz ersetzt werden. Ein Name „/a.b.c.d“ wird dabei zunächst ersetzt durch den Namen „Knoten1:b.c.d“. Der Knotenname seiner­seits kann wieder in einem weiteren Namensraum auf die Knotenadresse abgebildet werden. Sukzessive wird so der Name in eine Beschreibung des Weges zum administrativen Namens­ver­walter über­führt (Knoten1:Knoten2:Knoten3:d). Diese Methode liefert eine relative Route vom initiier­en­den Knoten zum Verwalter des gesuchten Namenseintrags und kommt in routing-orientierten Namensräumen zur Geltung (z.B. in Profile [Peterson, 87a]).

Bei der strukturorientierten Namensauflösung kann weiter differenziert werden, je nachdem ob Namen bei der Auflösung schrittweise oder als ganzes in den gebundenen Objekt-Bezeichner abgebildet werden. Bei der ersten Methode wird bei jedem Interpretationsschritt der struktur­orientierten Auflösung nicht nur die Lokation des für den Teilnamen zuständigen Namens­ver­walters ermittelt, sondern auch bereits ein Teil des gebundenen Objekt-Bezeichners. Voraus­setzung für diese Art der Auflösung ist, daß Objekt-Bezeichner ebenfalls strukturiert aufgebaut sind, so daß eine direkte Zuordnung von Teilnamen zu Komponenten des Objekt-Bezeichners möglich ist. Diese Art der Bindung von Teilnamen findet häufig bei partitionierten Namens­räu­men mit fester Anzahl von Teilnamen Verwendung.

Abbildung 4.3: Bindung des gesamten Namens und Bindung von Teilnamen

Dieses Vorgehen hat jedoch den entscheidenden Nachteil, daß eine sehr starke Bindung zwi­schen dem globalen Namensraum und der Struktur der Objekt-Bezeichner besteht. Sind die Objekt-Bezeichner an eine physikalische Lokation gebunden, wie es beispiels­weise bei IP-Adressen der Fall ist, so wäre auch der Namensraum ortsabhängig (vgl. Abbildung 4.3). Um dies zu vermei­den, findet die eigentliche Auflösung von Namen zu Objekt-Bezeichnern erst in dem Namensverwalter statt, in dem der Namenseintrag für den vollständigen Namen lokalisiert wurde (vgl. Domain Name System [Mockapetris, 84a]). Alle vorangegangenen Auflösungs­schritte dienen nur der Lokalisierung dieses Namens­verwalters im Verwalternetz.

4.1.1.3       Verfahren der strukturorientierten Namensauflösung

Unabhängig von der gege­benen Namens­konvention sowie unabhängig von der Topologie des Netzwerks und der Art der Verteilung können bei der struk­tur­orientier­ten Namensauflösung ähnlich wie bei der strukturunabhängigen Auflösung generell rekursive, iterative und transitive Verfahren unter­schie­den werden. Allerdings wird hier eine gezielte Auswahl der kontaktierten Namens­verwalter getrof­fen.

Abbildung 4.4: Rekursive Auflösung globaler Namen

Die rekursive Methode leitet in Abhängigkeit vom Namen die Anfrage von einem Namens­ver­walter zum nächsten. Jeder Namensverwalter versucht, einen Teil des Namens aufzulösen und den verbleibenden Namen an den hierfür zuständigen Namensverwalter weiterzugeben. Der Vorteil der rekursiven Methode liegt in der guten Verteilung der Last und der geringen Anzahl von Nachrichten[1]. Vorteilhaft ist die rekursive Methode besonders dann, wenn Namens­ver­wal­ter nicht nur einen, sondern mehrere geschachtelte Kontexte verwalten, da dann ein großer Teil des Namens ohne Kommuni­kation mit anderen Namens­verwaltern lokal aufgelöst werden kann.

Bei der iterativen Auflösung globaler Namen werden strukturierte Namen vom initiierenden Namens­ver­walter (Klient) selbst sukzessive abgearbeitet und der jeweils für einen Namensteil zuständige Namensverwalter direkt angesprochen. Die Ergebnisse der partiellen Namens­auf­lösung werden direkt an den Initiator zurückgegeben. Mit der vom vorangegangenen Namens­verwalter erhal­tenen Navigationsinformation wird versucht, den nächsten Teil des Namens direkt beim Verwalter des zuletzt ermittelten Kontexts aufzulösen[2].

Die iterative Methode hat den Vorteil, daß sie das Vorhalten von Namenseinträgen im Klienten erleichtert, da alle Teilergebnisse der Auflösung zu diesem zurück­­ge­geben werden. Da von Namensverwaltern mehrere Kontexte verwaltet werden können, ist es sinnvoll, iterativ nicht einzelne Namensbestandteile anzufragen, sondern immer den restlichen, noch nicht aufgelösten Namen.

 

Abbildung 4.5: Iterative Auflösung globaler Namen

Eine mögliche Variante der iterativen Auflösung globaler Namen besteht im Kontaktieren eines regionalen Namensverwalters durch den Klienten, wobei der Name vom regionalen Namens­ver­walter aufgelöst wird und nur das endgültige Resultat der Anfrage an den Klienten zurück­gegeben wird. Der Vorteil dieses Vorgehens besteht darin, daß durch das Vorhalten einmal auf­gelöster Namensteile im regionalen Namensverwalter diese auch für die Auflösung von Namen durch andere Klienten zur Verfügung stehen.

Abbildung 4.6: Transitive Auflösung globaler Namen mit Rückgabe von Teilergebnissen

Den geringsten Nachrichten­aufwand zur der Auflösung globaler Namen erfordert die transitive Methode. Die Anzahl der Nachrichten beträgt lediglich n+1, wobei n der Anzahl der kontaktier­ten Namensverwalter entspricht. Dies bedeutet jedoch nicht, daß sich die Auflösungs­zeit not­wendigerweise im selben Maße verringert, da die Rückmeldung, auch wenn sie ihren Weg nicht durch die einzelnen Namensverwalter zurück nimmt, u.U. dennoch mehrere Teil­netze zu durchlaufen hat. Die transitive Methode entlastet jedoch in jedem Fall die Zwischen­instanzen von der Bearbeitung von Rückmeldungen, die in vielen Systemen einen zeit­aufwendigen Pro­zeßwechsel erfordert. Da die involvierten Namensverwalter die Nach­richten nicht durch­reichen müssen, verringert sich die für die Auflösung benötigte Zeit, so daß die transitive Variante den­noch als effektivste Methode betrachtet werden kann. Durch die transitive Auflö­sung wird zudem eine gleich­mäßige Verteilung der Last auf die involvierten Namensverwalter erreicht.

Die reine Form der transitiven Auflösung hat allerdings den Nachteil, daß keine Zwischen­er­gebnisse für das Vorhalten von Namenseinträgen an die beteiligten Namensverwalter zurück­geliefert werden.[AL4]  Eine mögliche Variante der transitiven Auflösung sieht daher vor, zusätzlich Teilergeb­nisse direkt zum vorher­gehenden Namensverwalter oder zum Initiator der Anfrage zum Zwecke des Vorhaltens zurückzugeben (vgl. Kapitel 5). Die Anzahl der für die Namens­auflösung notwendigen Nachrich­ten bleibt dabei unverändert, da diese unabhängig von den Rückmel­dungen parallel versendet werden (vgl. Abbildung 4.6)[3].

4.1.2          Zusammenspiel verschiedener Auflösungsverfahren

In Kapitel 2 wurden Verfahren zur lokalen Auflösung hierarchischer Namen vorgestellt. Die vorangegangenen Abschnitte zeigten Methoden zur Auflösung globaler Namen auf. Um eine globale Namensauflösung über Verwaltergrenzen hinweg zu realisie­ren, die auch in der Lage ist, generische und attributierte Namen aufzulösen, sind diese Verfahren geeignet miteinander zu kombinieren. Der nach­folgende Abschnitt beschreibt das Zusammenspiel der vorgestellten Auflösungsmethoden.

Abbildung 4.7: Zusammenspiel verschiedener Verfahren zur Auflösung von Namen

Wie in Abbildung 4.7 dargestellt, verläuft die Auflösung globaler Namen mehrstufig. Ausge­hend von einem hierarchischen Namen beginnt die Suche nach dem zugehörigen Namenseintrag zunächst lokal. Dabei wird die lokale bzw., in Präsenz einer Rechnerkopplung über DSM, die verbund­weite Namensbasis durchsucht (vgl. [Lupper, 94]). In der lokalen Namensbasis sind eventuell auch vorgehaltene Ergebnisse früherer globaler Auflösungen vorhanden, die auf externe Namensverwalter verweisen.

Bleibt die lokale Auflösung erfolglos, so werden in die Auflösung externe Namens­verwalter miteinbezogen. Dazu wendet sich der lokale Namensverwalter zunächst an den obersten Namens­verwalter der Verwalterhierarchie. Ausgehend vom obersten Namens­verwalter wird versucht, den Namen zu interpretieren und anhand der vorliegenden Navigationsinformation für Teilnamen zuständige Namensverwalter zu lokalisieren. Erkennt die struktur­orientierte Auflö­sung des Namens generische oder attributierte Teilnamen, die keine Navigation im Verwalter­netz ermöglichen, so werden diese mittels struktur­unab­hängiger Verfahren aufgelöst. Die struktur­unab­hängige Lokalisierung des gesuchten Namens­eintrags beschränkt sich dabei auf den Teil des Verwalternetzes, der den durch den bereits aufgelösten Teilnamen bestimmen Unterbaum des hierarchischen Namensraums enthält. Die strukturunabhängige Lokalisierung von Namenseinträgen wird dabei in ihrer Tiefe durch nachfolgende, nicht generische Namens­teile beschränkt und sobald wie möglich strukturorientiert fortgesetzt (vgl. Abbildung 4.7). Wurde der Name vollständig interpretiert und ist der zugehörige Namenseintrag im lokalisierten Namensverwalter vorhanden, so wird der an den Namen gebundene Objekt-Bezeichner an den initiierenden Namensverwalter zurückgegeben.

Ergebnisse einer globalen Auflösung werden für eine bestimmte Zeit lokal vorgehalten, um bei erneuten Anfragen die Zugriffszeit zu reduzieren. Führt das Verfolgen externer vorgehaltener Referenzen nicht zum gewünschten Erfolg, so werden diese aus der lokalen Namensbasis ent­fernt (vgl. Kapitel 5). Falls keine lokal vorgehaltenen Verweise existieren oder diese nicht zum gewünschten Erfolg führen, leitet die Namensverwaltung die globale Auflösung ein.[AL5] 

 

Die Lokalisierung von Namenseinträgen im Verwalternetz hat entscheidenden Einfluß auf die Effektivität globaler Namensverwaltungen. Die transitive Auflösung und die sukzessive Aus­deh­­nung des Suchraums erhöhen die Effizienz und Flexbilität der globalen Namensauflösung.


4.2         Verteilung und Plazierung globaler Namen

Prinzipiell sind zur Verwaltung globaler Namensräume sowohl zentrale als auch dezen­trale Ver­fahren (vgl. Kapitel 3) denkbar. Aufgrund der mangelnden Skalierbarkeit schei­den zentrale Ver­fah­ren zur globalen Namensverwal­tung allerdings aus. Wie in Kapitel 2 und 3 weiter gezeigt wurde, sind hierarchische Verwalternetze und Namensräume aufgrund ihrer hohen Skalierbar­keit und der Effizienz der struktur­orientierten Namensauflösung für die globale Namensver­waltung prädestiniert. Der folgende Abschnitt beschränkt sich daher auf die Verteilung hierar­chischer Namensräume auf hierarchische Ver­walter­netze.

Bei der Registrierung eines globalen Namens im Verwalternetz sind folgende Fragestellungen zu klären:

     Wie wird ein neuer Name für ein Objekt generiert?

     Wie wird, falls erforderlich, die Eindeutigkeit von Namen gewährleistet?

     Wie geschieht die Auswahl des für einen Namen zuständigen Namensverwalters?

     Wie ist der Namensraum adäquat zu partitionieren, und wie werden die Partitionen des Namensraumes auf die Namensverwalter verteilt?

Eine entscheidende Frage bei der Registrierung hierarchischer Namen ist die Art der globalen Verteilung hierarchischer Namensräume auf die verwaltenden Instanzen im hierarchischen Ver­walternetz (vgl. Abbildung 4.8).

Abbildung 4.8: Problem der Verteilung hierarchischer Namensräume auf hierarchische Verwalternetze

Grund­sätzlich können im Verwalternetz entweder Namenseinträge mit der Namen-Objekt-Bin­dung selbst (als Kopien des primären Namenseintrags) oder mit Navigations­information, die auf den Verwalter des primären Namens­ein­trags verweist, verteilt werden. Zur Verteilung glo­baler Namen auf die Namens­verwalter einer hierarchischen Namens­verwal­tung kommen so­wohl deterministische Verfahren als auch nicht-deterministische Verfahren in Betracht (vgl. Abbildung 4.9).

Abbildung 4.9: Methoden zur Verteilung der Namensinformation im Verwalternetz

Nicht-deterministische Verfahren, wie Broadcast-Verfahren oder probabilistische Verfah­ren, verteilen Namen willkürlich auf alle Namensverwalter. Deterministische Verfahren hingegen treffen eine Auswahl der Namensverwalter und verteilen Namen wahlfrei oder inhaltsgesteuert nur an bestimmte Namensverwalter.

Bevor die einzelnen Verfahren zur Verteilung globaler Namens­einträge im Verwalternetz einge­hender diskutiert werden können (vgl. Abbildung 4.9), müssen zunächst Kriterien zur Beurtei­lung der Güte der Plazierung von Namenseinträgen im Verwalter­netz aufgestellt werden.

4.2.1          Kriterien zur Plazierung von Namenseinträgen in Verwalternetzen

Die Plazierung von Namenseinträgen im Verwalternetz beeinflußt sowohl die Effizienz der mit der globalen Namensauflösung verbundenen Lokalisierung von Namenseinträgen im Verwal­ternetz als auch die Ausfall­sicher­heit der Namensverwaltung. Zur Beurteilung der Güte der Pla­zierung globaler Namen können folgende Kriterien dienen:

·      Effizienz der Namensauflösung: Namenseinträge sol­len so im Verwalternetz plaziert sein, daß eine effiziente Auflösung von Namen in wenigen Navigationsschritten erfolgen kann. Sofern die Lokalisierung durch Navigation erfolgt, soll die Anzahl der notwendigen Netzwerknachrichten und die für die Namensauflösung benö­tigte Zeit durch präzise Naviga­tionsinformationen in Namenseinträgen reduziert werden. Namenseinträge sollen dabei möglichst so im Verwalternetz plaziert sein, daß die Namensauflösung für lokale Objekte nur lokale Namensverwalter kontaktiert. Außerdem sollten Namens­einträge dort verwaltet wer­den, wo sie am häufigsten zugegrif­fen werden.

·      Belastung der Namensverwalter: Namenseinträge sol­len so im Verwalternetz verteilt sein, daß sich eine gleichmäßige Verteilung der Last über alle Namensverwalter ergibt. Die Belastung von Namensverwaltern ergibt sich zum einen durch die Speicherung der Namens­einträge zum anderen durch die Bearbeitung von Anfragen. Der Speicherbedarf von Namens­­verwaltern kann reduziert werden, indem Namen zu Kontexten zusammengefaßt werden und anstatt einzelner Namenseinträge solche mit Navigations­informationen für Kon­texte verwaltet werden. Besonders Namensverwalter der oberen Ebenen hierar­chischer Ver­walter­netze sind stark durch Anfragen belastet. Eine geeignete Plazierung von Namens­ein­trägen verbunden mit dem Vorhalten von Anfrage­ergebnissen (vgl. Kapitel 5) kann zu deren Entlastung beitragen.

·      Ausfallsicherheit der Namensverwaltung: Namenseinträge müssen so im Verwal­ter­netz verteilt sein, daß der Ausfall einzelner Namensverwalter und Kommunika­tions­verbin­dungen die Funktionsfähigkeit der Namensverwaltung möglichst wenig beeinträchtigt. Posi­tiv auf die Ausfallsicherheit wirkt sich aus, wenn Namens­einträge dort verwaltet werden, wo sie am häufigsten zuge­grif­fen werden. Ferner sollte gewähr­leistet sein, daß sofern das Objekt erreichbar ist, auch der zugehörige Name aufgelöst werden kann.

·      Aktualität der Namenseinträge: Bei der Plazierung von Namenseinträgen im Verwalter­netz ist die Frequenz der Änderungen von Namenseinträgen zu berücksichtigen. Namens­einträge, die häufigen Änderungen unterworfen sind, sollten möglichst nicht als Kopien im Verwalternetz verteilt werden. Namenseinträge mit langlebigen Bin­dungen können einen hohen Replikationsgrad aufweisen. Namenseinträge mit Navigationsinformationen, die auf den primären Verwal­ter eines Namenseintrags verweisen, sind von Änderungen nur dann betroffen, wenn der Namenseintrag entfernt in einem anderen Verwalter erneut registriert wird.

Bevor die Verteilung globaler Namens­einträge im hierarchischen Verwalternetz durch die dynamische globale Na­mensverwaltung beschrieben wird, sollen in den nächsten Abschnitten die in Abbildung 4.9 aufgezeigten Verfahren zur Verteilung globaler Namens­räume auf Namens­verwalter anhand obiger Kriterien auf ihre Verwendbarkeit für die globale Namens­ver­waltung untersucht werden.

4.2.2          Nicht-deterministische Verfahren zur globalen Verteilung von Namen

Nicht-deterministische Verfahren zur Verteilung von Namensinformationen im Verwalternetz stützen sich häufig auf Broadcast-Verfahren. Werden Namensverwalter durch ein Kommuni­kationsmedium mit Rundspruchfähigkeit verbun­den, so bietet sich zumindest im lokalen Netz­werkbereich der Einsatz von Broadcast-Nach­rich­ten an, um Namenseinträge inner­halb des Broadcast-Bereichs an alle Namensverwalter zu propagieren und die Eindeu­tigkeit von Namen zu prüfen (vgl. auch Abschnitt 3.2).

Abbildung 4.10: Nicht-deterministische Verteilung von Namenseinträgen mit Navigationsinformation

Bei der vollständigen Replikation von Namenseinträgen können entweder Kopien des primären Namenseintrags, die die Bindung des Namens zum Objekt enthalten, oder Namenseinträge mit Navigations­infor­mation, die auf den primären Namenseintrag verweist, im hierarchischen Ver­walternetz ver­teilt werden (vgl. Abbildung 4.10). Letztere Methode hält die Bindung des Namens zum Objekt nur im primären Namens­ver­walter, während sich in adminis­tra­tiven Namensverwaltern ledig­lich Verweise auf den primären Eintrag befinden.

Die Verteilung von Kopien primärer Namenseinträge hat den Nachteil, daß, um die Aktualität der Namenseinträge zu gewährleisten, bei jeder Änderung der Bindung zum Objekt der Namens­­eintrag erneut an alle Namensverwalter propagiert werden muß. Namenseinträge mit Naviga­tions­informa­tionen hingegen müssen bei Änderungen nicht aktualisiert werden, erfor­dern jedoch einen zusätzlichen Indirektionsschritt bei der Auflösung von Namen, da die Bin­dung zum Objekt nicht direkt verfügbar ist.

Broadcast-Verfahren haben allerdings mehrere Nachteile, die ihre Nützlich­keit für die globale Namensverwaltung einschränken:

·        Broadcast-Nachrichten überschwemmen auch Netzwerkbereiche, die für die Auflösung des Namenseintrags nicht relevant sind. Hierdurch entsteht systemweit kurzzeitig ein hohes Nachrichtenaufkommen und eine starke Belastung des Netz­werks.

·        Broadcast-Nachrichten können über Punkt-zu-Punkt-Verbindungen nur iterativ verteilt wer­den.

·        Broadcast-Nachrichten verursachen eine starke Belastung der beteiligten Namensverwalter, da jeder Verwalter einen Prozeß startet, um die Anfrage zu prüfen, unabhängig davon, ob er zur Auflösung des Namenseintrags beitragen kann oder nicht.

In Analogie zur struktur­unabhängigen Namens­auf­lösung in Abschnitt 4.1.1.1 können auch iterative Verfahren zur nicht-deter­minis­tischen Verteilung von Namen in Betracht gezogen wer­den. Diese reduzieren die temporäre Belastung des Netzwerk (Burst), nicht jedoch das Nach­richtenaufkommen. Außerdem dauert die Verteilung von Namens­informationen erheblich län­ger, was sich wiederum nachteilig auf die Aktualität der Namens­ein­träge auswirkt.

Um die Nachteile von Broadcast-Verfahren zu ver­meiden und dennoch eine vollständige Infor­mationsverteilung zu erreichen, wurde von Drezner und Barak [Drezner, 85] [Drezner, 86] erstmals die probabilistische Verteilung von Namen vorgeschlagen. In diesem Ansatz wird ver­sucht, durch die zufällige Auswahl von Namensver­waltern eine zeitlich gleich­mäßige Vertei­lung der Last von Update-Nachrichten zu erreichen. Jeder Namensverwalter gleicht dabei periodisch mit einer zufällig ausgewählten Instanz seine Namensbasis ab, so daß gewährleistet ist, daß nach einer bestimmten Zeit mit hoher Wahr­scheinlichkeit eine Änderung vollständig propagiert wurde und jeder Namens­verwalter densel­ben Informationsstand besitzt. Dieses Vorgehen erscheint vor allem dann ange­messen, wenn nur selten Änderungen der globalen Namensbasis auftreten. Bei hoher Modifika­tions­frequenz globaler Namenseinträge besitzt die Namensbasis jedoch oftmals nicht die geforderte Aktualität.

Auf eine eingehende Diskussion dieser Verfahren zur Verteilung von Namens­einträgen soll an dieser Stelle ver­zichtet werden. Der interessierte Leser findet diese zusammen mit zusätzlichen Vorschlägen zur Steigerung der Fehlertoleranz in Kapitel 5 und in [Mattes, 91].

4.2.3          Deterministische Verfahren zur globalen Verteilung von Namen

Die bisher beschriebenen Methoden zur nicht-deterministischen Verteilung von Namens­infor­mation plazieren Namenseinträge im Verwalternetz, ohne den Inhalt der Namen und die Struk­tur des Namensraums zu berücksichtigen. Deterministischen Verfahren zur Plazierung von Na­men können hingegen unterteilt werden in wahlfreie Verfahren, die Namenseinträge unabhängig von ihrem Inhalt plazieren, und inhaltsgesteuerte Verfahren, die den Inhalt der Namenseinträge bei der Plazierung im Verwalternetz berücksichtigen:

·      Wahlfreie Plazierung

·      Lokale Plazierung am Entstehungsort: Der zugehörige Namenseintrag wird stets dort abgelegt, wo der Name registriert wurde.

·      Gezielte und zugriffsorientierte Plazierung: Der für einen Namenseintrag zuständige Namensverwalter kann bei der Registrierung eines Namens explizit angegeben werden. Namenseinträge werden bevorzugt dort im Verwalternetz plaziert, wo sie nach den zu erwartenden Zugriffsmustern am häufigsten angefragt werden.

·      Inhaltsgesteuerte Plazierung

·      Algorithmische Plazierung: Der Verwalter zur Plazierung eines Namens­eintrags wird durch eine Auswahlfunktion aus dem Namen bestimmt.

·      Attributorientierte Plazierung: Namenseinträge werden anhand bestimmter Attribute oder Attributwerte auf Namensverwalter verteilt.

·      Strukturorientierte Plazierung: Namen werden durch die Auswahl syntaktischer Merk­male auf Namensverwalter im Verwalternetz verteilt.

Die inhaltsgesteuerten Methoden zur Verteilung von Namen im Verwalternetz erlauben die selb­ständige Verteilung und Plazierung von Namen auf Namens­ver­waltern im Verwalternetz durch die Namensverwaltung. Nachfolgende Abschnitte wenden sich nun speziell diesen Verteilungs­­verfahren zu.

4.2.3.1       Lokale Plazierung von Namen in Namensverwaltern

Die lokale Plazierung von Namenseinträgen in den registrierenden Namensverwaltern bewirkt eine vollständige Verteilung von Namenseinträgen im Verwalternetz. Sofern die Eindeutigkeit nicht durch administrative Maßnahmen gewährleistet ist, muß bei der Registrierung das gesamte Verwalternetz nach gleichen Namen durchsucht werden. Eine voll­ständige Erkundung des Verwalternetzes wird ebenfalls bei der Auflösung globaler Namen notwendig. Hierzu können Broadcast-Verfahren oder andere in Abschnitt 4.1 vorgestellte Verfahren zur vollständigen Erkundung hierarchischer Verwalternetze herangezogen werden.

Um die vollständige Erkundung des Verwalternetzes bei der vollständigen Verteilung und den zusätzlichen hohen Speicherbedarf der totalen Replikation von Namens­ein­trägen zu vermeiden, bietet sich zunächst eine Vorgehens­weise an, bei der jeder Namens­ver­walter entweder Kopien seiner primären Namenseinträge oder Namenseinträge mit Navigationsinformation für von ihm verwaltete Namens­einträge an über­geordnete Namens­­ver­walter weitergibt (vgl. Abbildung 4.11). Dadurch befinden sich in den Namens­basen über­ge­ordneter Namens­verwalter jeweils die Ver­einigungs­mengen der Namensinformationen untergeord­neter Namensver­walter.

Abbildung 4.11: Aufsteigende Verteilung der Namenseinträge

Ein Vorteil der in Abbildung 4.11 vorgestellten Art der Propagierung von Namenseinträgen ist, daß nicht jeder Namensverwalter alle Informa­tionen halten muß. Bei der Auflösung von Namen wird spätestens in der Wurzel der Verwalterhierarchie der gesuchte Namenseintrag oder Navi­gationsinformation auf den primären Namenseintrag lokalisiert, sofern sich untergeordnete Namensverwalter zur Namensauflösung schrittweise jeweils an den übergeordneten Namens­verwalter wenden.

Als Nachteil ist zu sehen, daß nur einige wenige Namensverwalter die Gesamtheit aller Kon­texte enthalten und dadurch das System sensibel auf Ausfälle dieser Namensverwalter reagiert. Als besonders nachteilig erweist sich, daß die in der Verwalterhierarchie höher einge­stuften Namensverwalter sowohl durch die Quantität der zu verwaltenden Namenseinträge als auch durch die hohe Frequen­tierung durch Anfragen stark belastet sind. Diese Methode ist daher nur praktikabel, falls Namen verstärkt in dem Bereich des hierarchischen Verwalternetzes aufgelöst werden, in dem sie registriert werden. Andernfalls wird in die Auflösung immer die Wurzel der Verwalterhierarchie einbezogen. Die Belastung überge­ordneter Namensverwalter kann u.U. durch das Vorhalten häufig verwendeter Namens­einträge in unterge­ordneten Namensver­waltern reduziert werden.

Abbildung 4.12: Aufsteigende Verteilung mit Kontextbildung

Betrachtet man die Namenseinträge in den untersten Namensver­waltern in Abbildung 4.12, so ist festzustellen, daß die Anzahl der zu verwaltenden Namenseinträge in den oberen Ebenen der Verwal­terhierarchie reduziert werden kann, indem ähnliche Namen zu Kontexten zusammen­gefaßt werden. In den überge­ordneten Namens­ver­waltern werden nur Namenseinträge mit Verwei­sen auf diese Kontexte verwaltet. Durch diese einfache Art der Kontextbildung ist jedoch die Eindeutigkeit der Kontexte im Verwalternetz nicht gewährleistet, da sich dieselben Kontexte in unterschiedlichen Teilen des Verwalternetzes bilden können. Bei Mehrdeutigkeiten in der Navigationsinformation folgt die Navigation bei der strukturorientierten Namensauflösung meh­reren Pfaden im Verwalternetz.

Ein Verfahren zur eindeutigen Kontextbildung und zur Verteilung von Namens­einträgen auf Namens­­verwalter wird in Abschnitt 4.3 vorgestellt.

4.2.3.2       Gezielte und zugriffsorientierte Plazierung globaler Namen

Bei der gezielten Plazierung von Namenseinträgen hat der registrierende Benutzer die Wahl unter mehreren Namensverwaltern. Die gezielte Plazierung wird allgemein dann verwendet, wenn eigentlich eine lokale Ablage anstrebt wird, man jedoch aus Leistungs- und Konfigura­tions­gründen gezwungen ist, im Administrationsbereich mehrere Namensverwalter zu instal­lieren. Durch eine gezielte Zuordnung der anfallenden Namenseinträge kann für eine gleich­mä­ßige Auslastung der Namensverwalter gesorgt werden. Die Zielinstanz wird entweder in einem zusätz­lichen Parameter bestimmt, oder sie ist in einer benutzer- oder instal­la­tions­­spezifi­schen Umgebungsvariablen definiert.

Wird bei der Verteilung von Namenseinträgen auf Namensverwalter berücksichtigt, wo die registrierten Namens­einträge am häufigsten zugegriffen werden, so spricht man von einer zugriffs­orientierten Plazierung von Namenseinträgen im Verwalternetz. Verschiedene zugriffs­orientierte Verfahren für das Verteilungsproblem von Attributen auf verteilte Datenbankrechner bietet die Theorie der verteilten Datenbanken an [Apers, 88]. Diesen Verfahren ist jedoch allen gemeinsam, daß basierend auf den zu erwartenden Zugriffsmustern der Klienten eine optimale Partitionierung einer Relation bestimmt wird. Für Namensverwaltungen lassen sich jedoch zum Zeitpunkt der Registrierung kaum Vorhersagen für die zu erwartenden Zugriffsmuster treffen, so daß aus der Daten­bank­technik bekannte Verfahren hier nicht greifen. Es kann lediglich fest­gestellt werden, daß Namen sehr häufig in der unmittelbaren Netzwerk-Umgebung der gebun­denen Objekte aufgelöst werden. Namen sollten daher immer auch zumindest als Kopien am Verwaltungsort des gebundenen Objekts abgelegt werden. Eine Optimierung der Anfrage­bear­beit­ung, die den veränderlichen Zugriffs­mustern in globalen Namensver­waltungen gerecht wird, kann nur durch vorgehaltene Namens­ein­träge erreicht werden (vgl. hierzu Kapitel 5).

Neben den wahlfreien Verfahren zur gezielten und zugriffsorientierten Plazierung globaler Namen kann diese auch jeweils abhängig vom jeweiligen Namen erfolgen. Beide Formen der Plazierung zeichnen sich durch einen geringen Kommunikations­aufwand aus. Der Namens­eintrag kann direkt an den zuständigen Namensverwalter über­geben werden. Sofern in der Namensverwaltung keine Navigationsinformation geführt wird, können Namenseinträge global jedoch nur durch streuende Verfahren lokalisiert werden. Sowohl bei der gezielten als auch bei der zugriffsorientierten Plazierung globaler Namen können konkurrierende Registrier­opera­tio­nen auftreten. Kann der damit verbundene Konflikt nicht durch die eindeutige Zuordnung eines Namensverwalters zu einem Namen aufgelöst werden, so ist zur Gewährleistung der Ein­deu­­tigkeit von Namen jeder Namensverwalter zu kontaktieren.

4.2.3.3       Algorithmische Verteilung globaler Namen auf Namensverwalter

Besitzt ein zu verwaltender Namensraum keine Struktur, wie dies z.B. bei flachen Namens­räumen der Fall ist, oder soll die Verteilung der Namen auf Namensverwalter sich aus irgend­welchen Gründen, die außerhalb der Namensverwaltung zu suchen sind, nicht struktur­orientiert erfolgen, so bleibt letztendlich nur die algorithmische Aufteilung des Namensraums. Die Eig­nung algorithmischer Verteilungsverfahren richtet sich im wesent­lichen danach, ob sie es erlau­ben, ausgehend von einem beliebig vorgegebenen Namen den zuständigen Namensverwalter zu bestimmen, wenn als Auswahlinformation ausschließlich der Name selbst zur Ver­fügung steht. Dabei kann die zu treffende Auswahl durchaus in mehreren Schritten erfolgen, was sich in einem hierauf aufbauenden Verfahren lediglich im Weiter­leitungsverhalten nieder­schlägt.

Abbildung 4.13: Verteilung der Namensinformation durch Hashing

An die Stelle der Teilbäume hierarchischer Namensräume treten bei der algorithmischen Auftei­lung sog. Namenskomplexe. Ein Namenskomplex repräsentiert zunächst nur eine Teil­menge eines irgendwie gearteten Namensraums. Seine Verwendung setzt allerdings voraus, daß diese Teilmenge in irgendeiner Form algorithmisch faßbar ist. Daher werden als Namens­kom­plexe genauer nur diejenigen Teilmengen eines Namensraum bezeichnet, die durch eine Aus­wahl­funktion definiert sind (vgl. hierzu [Mattes, 91]).

Gibt man eine beliebige Folge von Auswahlfunktionen (f1, f2,…, fk) vor, so ist damit eine Aufteilung des Namensraums festgelegt. Man erhält die Namenskomplexe NK1, NK2,…,NKk und die Restmenge NK0, die alle Namen enthält, die in keiner der übrigen Mengen enthalten sind. Die so erhaltenen Mengen NK müssen jedoch nicht disjunkt sein. Eine derartige Forde­rung würde die Administration erheblich erschweren, da beim Hinzufügen einer neuen Auswahl deren Disjunktheit zu den bestehenden garantiert werden müßte. Um dennoch zu einer eindeuti­gen Zuordnung zu gelangen, behilft man sich, indem eine Ordnung auf den Auswahl­funktionen eingeführt wird (vgl. hierzu [Mattes, 91]). Das hier zunächst für den Namensraum formulierte Aufteilungsprinzip kann nun in gleicher Weise auch wieder auf die einzelnen Namenskomplexe angewendet werden. Man erkennt hierin ein Auftei­lungsprinzip, das dem der Teilbäume ähnlich ist (vgl. Abbildung 4.13). Auch hier muß keine Unterscheidung zwischen der Be­handlung des Namensraums insgesamt und der aus ihm hervorgehenden Teile getroffen wer­den. Durch die Wahl der Auswahlfunktion läßt sich nahezu jedes beliebige Aufteilungsmuster eines Namens­raums realisieren. Zwei wichtige Klassen von Auswahl­funktionen sind zum einen die, die sich auf syntaktische Merkmale stützen, und zum anderen jene, die auf geeigneten Hash-Funktionen beruhen. Abbildung 4.13 zeigt die algorithmische Aufteilung eines Namens­raums auf Namens­verwalter anhand einer Hash-Funktion.

4.2.3.4       Attributorientierte Verteilung und Plazierung globaler Namen

Die Partitionierung eines attributierten Namensraums kann, wie in verteilten Datenbanken üblich, horizontal und vertikal gesche­hen. Die vertikale Partitionierung verteilt einzelne Attribute auf unterschiedliche Namensverwalter, während die horizontale Partitionierung Namenseinträge aufgrund des Wertes bestimmter Attribute Namensverwaltern zuordnet.

Abbildung 4.14: Horizontale und vertikale Partitionierung anhand von Attributen

Im Beispiel aus Abbildung 4.14 findet sich sowohl eine horizontale als auch eine vertikale Par­titionierung. Das Attribut „Country“ wird nach der vertikalen Partitionierung dem Namens­ver­walter k1 zuge­ordnet. Alle Werte dieses Attributs befinden sich dann auf k1. Das Attribut „ORG“ hingegen wird horizontal partitioniert und anhand der Attributwerte auf die Namens­verwalter k2 und k3 verteilt.

Bei attributorientierter Verteilung erfolgt die Zuordnung bestimmter Attribute bzw. Attributwerte zu Namensverwaltern administrativ zum Zeitpunkt der Einrichtung der Namens­ver­wal­tung. Eine zugriffsorientierte Verteilung der Attribute bzw. Attributwerte, wie bei der Partitio­nie­rung und Verteilung von Rela­tio­nen in verteilten Datenbanken üblich, ist im Falle von Namens­­ver­waltungen nicht vorteilhaft, da die zu erwartenden Zugriffsmuster in Namensver­waltungen i.a. nicht a priori bekannt sind.

4.2.3.5       Syntaxorientierte Verteilung von Namen auf Namensverwalter

Die inhaltsgesteuerte Plazierung von Namens­einträgen im Verwalternetz kann als Pendant zu den nicht-deterministischen und wahlfreien Verfahren betrachtet werden. Waren diese von der vollstän­digen Re­plikation bzw. Verteilung der Namens­einträge geprägt, so ist das entspre­chen­de Merkmal hier die Segmentierung des Namensraums. [AL6] [AL7] 

An Informationen zur Auswahl eines Namensverwalters bei der syntaxorientierten Verteilung steht nur der Name zur Verfügung. Die Plazierung anhand des Namens setzt notwendig voraus, daß die Zuständigkeit für die jeweiligen Namen örtlich konzentriert ist. Der zuständige Namens­verwalter wird allein aufgrund der syntaktischen Zusam­mensetzung des Namens gewählt.

Abbildung 4.15: Aufteilung eines hierarchischen Namensraums in Segmente

Voraussetzung für die syntaxorientierte Plazierung von Namenseinträgen in Namensverwaltern ist die Segmentierung des Namensraums. Liegt ein hierarchischer Namensraum vor, so kann sich eine Segmentierung beispielsweise wie in Abbildung 4.15 darstellen. Segmente bestehend aus Unterbäumen des hierarchischen Namensraums werden administrativ Namensverwaltern zugeordnet. Die Verbin­dung zwischen den einzelnen Segmenten des Namensraums wird durch Namenseinträge mit Navigations­information in Namensverwaltern übergeordneter Segmente hergestellt. Jedes Segment des Namensraums muß ausgehend von der Wurzel der Verwalter­hierarchie durch Navigation erreichbar sein. Neu hinzukommende Namen können nun anhand ihrer Struktur Segmenten zugeordnet und in den hierfür zuständigen Namens­ver­waltern plaziert werden.

Stimuliert durch die „directory“-Konzepte lokaler Systeme und insbesondere durch UNIX hat sich die Plazierung anhand des Namens quasi zum Standard entwickelt. Fast alle bis heute vor­geschlagenen und realisierten Namensverwaltungen, u.a. Grapevine, Clearinghouse, das Domain Name System und auch X.500 setzten auf die Plazierung anhand des Namens.

Die Segmentierung des Namensraums und die Zuordnung der Segmente zu Namensverwaltern ist das entscheidende Problem bei der syntaxorientierten Verteilung von Namen im Verwalter­netz. Bei Systemen mit statischem Namensraum, wie z.B. Grapevine oder Clearinghouse, ist die Segmentierung und die Zuordnung von Namensraumsegmenten zu Namensverwaltern noch relativ einfach. Sehr viel schwieriger gestaltet sich die Verteilung, wenn der Namensraum belie­big erweiterbar ist. Das Domain Name System und X.500 sind Beispiele hierfür. Ohne zusätzli­che Vorkehrungen ist man bei diesen Systemen weder in der Lage, die Einhaltung vorgeschrie­bener Namenskonventionen zu garantieren noch eine konsistente Verteilung der Namensein­träge auf Namensverwalter zu erreichen. Im Domain Name System wird dieser Umstand durch die unter­schiedliche Namensraumstruktur in Domains deutlich (z.B. uni-ulm.de, uni-linz.ac.at, stanford.edu). Diese Erkenntnis hat in X.500 dazu geführt, daß soge­nannte „Structure Rules“ eingeführt wurden, die die zulässigen Typhierarchien im Directory Information Tree fest­schrei­ben und eine einheitliche Verteilung der Namensraum­segmente auf Namensverwalter regeln.

Traditionelle Namensverwaltungen orientieren sich bei der Segmentierung und Verteilung von Namen im Verwalternetz an folgendem Leitsatz:

„The distribution reflects the logical distribution of the directory information tree“

Eine derartige Segmentierung läßt oftmals anhand der Namensstruktur die Namensver­wal­ter­grenzen deutlich erkennen. Anwender sollten jedoch bei der Benennung von Objekten auf logi­sche Namen zurückgreifen können, die unabhängig von der physikalischen oder organi­satori­schen Organisation des Netzwerks sind. Eine starre, an organisa­torischen oder physikali­schen Strukturen orientierte Segmen­tierung wird den differenzierten Anforde­rungen der Anwender zur indivi­duellen Gestaltung des Namensraums nicht gerecht.

Die dynamische globale Namens­verwaltung plaziert daher logische Namen selbständig anhand ihrer syntaktischen Struktur im Verwalternetz. Die Segmentierung des Namensraums wird dabei nicht administrativ anhand physika­lischer oder organi­satorischer Struk­tu­rierungs­merk­male des Namensraums vorgenommen, sondern erfolgt selbständig. Namens­raum­segmente und die für die Lokalisierung von Namenseinträgen notwendige Navigations­information bilden sich selb­ständig durch die syntaxorientierte Plazierung von Namen im Verwalternetz. Ein Verfahren zur Plazierung globaler Namen anhand ihrer syntak­tischen Struktur und zur Generie­rung der die Namensraumsegmente verbindenden Navigations­informa­tion wird in Abschnitt 4.3 vorge­stellt.

4.2.4          Granularität von Namensraumsegmenten

Der folgende Abschnitt versucht, den quantitativen Aspekt der Verteilung zu fassen. Schnell lassen sich hierbei zwei Extreme erkennen, die das Spektrum der möglichen Verteilung von Namen auf Namensverwalter abgrenzen. Einer­seits können sämtliche Namenseinträge für Kon­texte und Objekte auf einem zentralen Namens­verwalter plaziert werden, andererseits kann für jeden Namens­eintrag ein separater Namensverwalter verantwort­lich zeichnen (vgl. Abbildung 4.16).

Abbildung 4.16: Verteilungsquanten von Namenseinträgen auf Namensverwalter

Die erst genannte Vorgehensweise entspricht einer zentralen Namensverwaltung. Da ein zentra­ler Namensverwalter jedoch in einem verteilten System sowohl bezüglich der Ausfall­sicherheit als auch der Last ein kritisches Element darstellt, scheidet diese Option aus. Die Exi­stenz einer zentralen Instanz repräsentiert einen eklatanten Widerspruch zur Definition eines verteilten Systems, die besagt, daß keine zentrale Komponente vorhanden sein darf, von der die Funk­tions­fähigkeit des Gesamtsystems abhängt.

Das andere Extrem stellt die Verwaltung einzelner Namen und Kontexte auf jeweils separaten Namens­­verwaltern (vgl. Abbildung 4.16) dar. Hierdurch kann eine breite Streuung der Last (Spei­cher­bedarf, Rechen­leistung) erreicht werden, allerdings entsteht ein hoher Kommu­ni­kati­onsaufwand für die Namensauflösung sowohl durch Navigation als auch durch vollständige Erkundung. Die breite Vertei­lung erfordert zusätzlich einen hohen Administrationsaufwand.

Im allgemeinen existieren sehr viel mehr benannte Objekte als Namensverwalter, so daß die oben aufgezeigte Verteilungsmethode nicht realisierbar ist. Das adäquate Verteilungs­quantum wird sich daher in dem durch obige Lösungen abgesteckten Spektrum bewegen. Ein Namens­verwalter administriert mehrere Kontext- und Namenseinträge, wobei mehrere Namensverwal­ter vorhanden sind. Dabei ist aus Gründen der Lastverteilung einer­seits eine möglichst gleich­förmige Verteilung der Einträge auf Namensverwalter anzustre­ben, andererseits ist, um eine hohe Effizienz des Gesamt­systems zu erreichen, eine Verteilung vorteilhaft, die den Zugriffs­mustern auf die administrierten Namens­einträge entspricht. Das Zusammenfassen der Zustän­digkeit für mehrere Kontexte auf einem Namens­verwalter reduziert die Anzahl der zur Namens­auflösung notwendigen Naviga­tions­schritte.

A priori können jedoch nur selten exakte Aussagen über das Zugriffsverhalten von Klienten auf Namenseinträge gemacht werden. Sicher ist allerdings, daß Klienten häufig auf Einträge in ihrer physischen Nachbarschaft zugreifen, so daß es von Vorteil ist, wenn Namen physisch benach­barter Objekte auf benachbarten Namensverwaltern plaziert sind. Tragen Objekte jedoch logi­sche Namen, die ortsunab­hängig sind und sich nicht an organisatorischen oder physika­lischen Strukturen orien­tieren, so ist dies jedoch i.d.R. nicht gewährleistet. Um die Präsenz von Namenseinträgen für lokale Objekte zu erreichen, wird daher auf Replikationsverfahren zurück­gegriffen (vgl. Kapitel 5).

4.2.5          Aktive und passive Verteilungsverfahren

Grundsätzlich lassen sich Namen aktiv und passiv auf Namensverwalter verteilen. Bei der akti­ven Verteilung von Namen wird der Namensverwalter, der einen neuen Namen für ein Objekt registriert, selbst aktiv und verteilt die dazugehörigen Namenseinträge an die übrigen Namens­ver­walter. Die aktive Verteilung neuer Namen in einem Kontext kann auch berücksichtigen, von welchem Namensverwalter ein Name in diesem Kontext bereits aufgelöst wurde. Ein neuer Name in diesem Kontext kann dann direkt in diesem Namensverwalter repliziert werden. Ein derartiges Vorgehen entspricht einer Rückwärts­­verzeigerung von Namenseinträgen.[AL8] 

Bei der passiven Verteilung von Namenseinträgen fordern interessierte Namensverwalter peri­odisch oder auf Anforderung Informationen über neue Einträge an. Der Namensverwalter, in dessen Zuständig­keits­bereich ein neuer Name für ein Objekt registriert wurde, bleibt zunächst inaktiv. Überge­ordnete Namensverwalter können aber auch bestimmte Kontexte eines unter­geordneten Namens­­verwalters „abonnieren“, so daß sie bei Änderungen in diesen Kontexten informiert wer­den. Ein Beispiel für die passive Verteilung geben verschiedene Suchdienste im Internet, die ihnen bekannte Server wiederholt kontaktieren, um Informationen über deren Inhalt zu sammeln, zu indizieren und für Suchanfragen zur Verfügung zu stellen.

Im folgenden wird lediglich die aktive Verteilung von Namenseinträgen betrachtet. Die passive Verteilung von Namenseinträgen könnte beispielsweise zur Aktualisierung vorgehaltener oder replizierter Namenseinträge auf Namensverwaltern Verwendung finden (vgl. Kapitel 5).

 

Die inhaltsgesteuerte Plazie­rung ermöglicht in hierarchischen Verwalternetzen die Verteilung logischer Namen unabhängig von ihrer physikalischen oder organisatorischen Zugehörigkeit.

4.3         Dynamische Verwaltung globaler Namensräume

In den vorangegangenen Abschnitten hat sich gezeigt, daß hierarchische Verwal­ter­struk­turen, die dem Namensraum angepaßt sind, eine effiziente verteilte Namensver­waltung ermög­lichen. Im folgenden wird daher vorausgesetzt, daß sowohl das Verwalternetz als auch der Namens­raum hierar­chisch organisiert sind. Überge­ordnete Namensverwalter können somit Anfragen an für Namensraum­segmente zuständi­ge, untergeordnete Namensverwalter delegieren und müssen selbst nur Namenseinträge mit den für die Weiter­leitung von Anfra­gen notwendigen Naviga­tionsinformationen administrieren.

Voraussetzung für die globale Auflösung von Namen durch Navigation im Verwalter­netz ist die eindeutige Zuord­nung von Namensraum­segmenten zu Namens­verwaltern und die Existenz von Namenseinträgen mit Naviga­tions­­informa­tion für diese Namensraum­segmente. Bevor in diesem Kapitel Verfahren für die globale Namensauflösung durch Navigation und die Bereitstellung der für die Lokalisierung von Namenseinträgen im Verwalternetz erforderlichen Navigations­infor­mationen vorgestellt werden, müssen daher zunächst die Anforderungen an Namens­einträge und Navigations­informa­tionen in Namens­verwaltern identifiziert werden.

4.3.1          Namenseinträge und Navigationsinformation in Namensverwaltern

Bereits in Kapitel 3 hat sich gezeigt, daß für die Navigation in hierarchischen Verwalternetzen die Konfigura­tions­­information in Namensverwaltern ein zusammen­hängendes hierarchisches Verwalternetz bilden und bestimmte Konsistenz­bedingungen erfüllen muß. Weiter stellt sich die Frage, welche Navigationsinformation in Namens­­­verwaltern notwendig ist und welche Bedin­gungen diese erfüllen muß, um Namens­einträge durch Navigation im Verwalternetz lokali­sieren zu können. Zur Klärung dieser Frage betrachten wir die Vertei­lung eines simplen hierarchischen Namens­raums auf hierarchisch organisierte Namens­verwal­ter in Abbildung 4.17.

Abbildung 4.17: Verteilung eines Namensraums auf hierarchisch organisierte Namensverwalter

Jeder Namensver­walter in Abbildung 4.17 speichert in seiner Namensbasis Namenseinträge für Objekte und Kon­texte, die er verwaltet. Diese Information reicht jedoch für die Auflösung glo­baler Namen durch Navigation noch nicht aus. Die in Abschnitt 4.3.2 vorgestellte Namens­auf­lösung durch Navi­gation benötigt zusätzlich in den jeweiligen Namens­ver­waltern Naviga­tions­information für Namens­raum­segmente, die in lokalen Kontexten enthalten sind, jedoch selbst extern verwaltet werden. Diese Navigationsinformation zur Weiterleitung von Anfragen an andere Namens­ver­walter ist in Abbildung 4.17 durch Pfeile gekennzeichnet. Der Inhalt der Namensbasen der jeweiligen Namens­verwalter aus Abbildung 4.17 wird in Tabelle 4.1 darge­stellt.

 

Namensverwalter

Namenseintrag

Navigationsinformation

Objekt-/Kontext-Bezeichner

k0

/

 

k0

/a

 

k0

/f

 

k0

/a.b

k1

k0

/a.e

k1

k0

/f.g

k2

k1

/a.b

 

k1

/a.b.c

 

k1

/a.b.d

 

k1

/a.e

 

k2

/f.g

 

k2

/f.g.h

 

k2

/f.g.i

 

Tabelle 4.1: Namensbasen der Namensverwalter aus Abbildung 4.17

Die Bindung eines Namens an ein Objekt wird im sog. primären Namenseintrag festgehalten. Die Navigations­information, die direkt auf den primären Namens­eintrag eines Namens ver­weist, hingegen ist im sog. adminis­trativen Namens­eintrag abgelegt. Diese Kopie des primären Namens­eintrags, die vom administrativen Namensverwalter verwaltet wird, enthält jedoch nicht die eigentliche Namen-Objekt-Bindung, sondern lediglich Navigations­infor­mation, die direkt auf den primären Namenseintrag verweist. In Tabelle 4.1 wurden administrative Namens­ein­träge mit Navigationsinformation grau hinterlegt. Diese Einträge vermerken für den jewei­ligen (partiellen) Namen eines externen Kontexts oder Objekts den Namensverwalter, der die zugehö­rigen primären Namenseinträge verwaltet.

Das Beispiel aus Abbildung 4.17 und der Inhalt von Tabelle 4.1 machen deutlich, daß Namens­einträge und die zugehörige Navigations­infor­ma­­­tion in den Namensverwaltern bestimmte Be­dingungen erfüllen müssen, um bei der globalen Auflösung von Namen durch Navigation die primären Namenseinträge im Verwalternetz lokalisieren zu können:

1.   Eindeutigkeit der Bindung:

      Jeder Name n ist an genau ein Objekt o oder einen Kontext y gebunden. Alle primären Namens­einträge, die den­selben Namen n enthalten, benennen dasselbe Objekt o oder den­selben Kontext y.

2.   Existenz von Navigationsinformation:

a)    Jeder Namensverwalter k muß Namenseinträge mit Navigationsinformation für Namen von Kontexten und Objekten besitzen, die in lokalen Kontexten enthalten sind, jedoch in externen Namens­verwaltern k1,…,kj verwal­tet werden.

b)   Für jeden primären Namenseintrag in einem Namensverwalter k müssen im Verwalter­netz Namenseinträge mit Naviga­tions­information vorhanden sein, so daß er ausgehend von der Wurzel der Verwalter­hierarchie k0 lokalisiert werden kann.

3.   Eindeutigkeit der Navigationsinformation:

      Da jeder Name n eines Kontexts y oder Objekts o in genau einem primären Namens­ver­walter k verwaltet wird, muß auch die Naviga­tions­infor­mation und die Zuordnung von Namens­raumsegmenten zu Namens­­verwaltern eindeutig sein (ohne Replikation und Parti­tionierung).

Obige drei Bedingungen sind notwendig und vollständig für die globale Namensauflösung durch Navigation. Weitere Bedingungen an die Informationen in Namensverwaltern sind nicht notwendig, erhöhen jedoch die Effizienz und die Ausfallsicherheit der Namensverwal­tung:

4.   Existenz übergeordneter Kontexte:

      Falls zwei oder mehr Namen von Kontexten oder Objekten ein gemein­sames Präfix besit­zen, so existiert in einem Namens­verwalter k ein Namenseintrag für einen Kontext y, in dem diese Namen enthalten sind und der dieses Präfix zum Namen hat.

5.   Majorisierung von Navigationsinformation:

      Ist in Namensverwalter ki für einen Kontext y ein Namens­­eintrag mit Naviga­tions­informa­tion vorhanden, die auf einen Namensverwalter kj verweist, so existiert in Namensver­walter ki kein Namens­­eintrag für einen Namen, der in Kontext y enthalten ist und dessen Naviga­tions­information auf densel­ben Namensverwalter kj verweist.

6.   Kenntnis der Bindung:

      Jeder Kontext y und jedes Objekt o in einem Namensverwalter k muß seine(n) eigenen Namen n kennen, d.h. der primäre Namenseintrag sollte im selben Knoten wie das Objekt abgelegt sein. Zu jedem Namen n in Namensverwalter k muß fest­gestellt werden können, ob er ein Objekt oder einen Kontext bezeichnet.

Die Bedingungen zur Existenz übergeordneter Kontexte und zur Majorisierung beschränken die Namenseinträge mit Navigationsinformationen in Namensverwaltern auf die zur globalen Auf­lösung notwendigen Einträge. Die Kenntnis der Bindung gewährleistet, daß zu jedem Objekt oder Kontext lokal stets der vollständige globale Name vorhanden ist und somit der Name stets lokal aufgelöst werden kann (vgl. Abschnitt 4.3.4).

Die Konsistenz von Namens­einträgen und Navigationsinformationen wird durch Namens­ope­rationen, wie dem Regis­trieren und dem Löschen von Namen beeinflußt. Nachdem die notwen­digen Rahmenbedingungen in den Namensverwaltern identifiziert wurden, wird nun die globale Namensauflösung vorgestellt. Anschließend wird ein Verfahren zur globalen Regis­trierung von Namen hergeleitet, das die zur globalen Auflösung von Namen notwen­dige Navigations­infor­mation konsistent erzeugt und geeignet in Namensverwaltern plaziert.

4.3.2          Globale Auflösung hierarchischer Namen

Die bisher in Abschnitt 2.5 vorgestellten Methoden zur lokalen Namensauflösung bilden Namen innerhalb eines Namensverwalters in gegebenen Kontexten wiederum auf neue Namen und Kontexte oder Objekte ab. Dazu werden Namen syntax­gesteuert interpretiert und der lokale Namens­graph traversiert. Bei der globalen Auflösung von Namen wird zusätzlich anhand von Navigationsinformation im Verwalter­netz navigiert. Die globale Auflösung von Namen besteht somit aus lokalen und knotenüber­grei­fenden Opera­tio­nen.

Die Funktion global resolve zur globa­len Auflösung eines Namens n in einem gegebenen Kon­text y beginnend in einem bestimmten Namens­ver­walter k wird nun wie folgt definiert:

Die globa­le Auflösung kennt ähnliche Zustände, wie die lokale Auflösung, liefert im Gegensatz zur lokalen Namensauflösung mittels resolve jedoch zusätz­lich den Namens­verwalter, in dem der primäre Namens­ein­trag des aufzulösenden Namens im Verwalternetz lokalisiert wurde. Die Menge der Zustände der globalen Namensauflösung SG enthält außerdem keine Zustände für das Traversieren von Bäumen (vgl. SL in Kapitel 2), sondern für die Navi­gation im hierar­chi­schen Verwalternetz (prev node, next node).

Wie Abbildung 4.18 verdeutlicht, besteht die globale Namensauflösung aus einer Orientie­rungsphase und einer Navigations­phase. In der Orientierungsphase bewegt sich die Namens­auflösung in der Verwalterhierarchie nach oben in Richtung Wurzel der Verwalterhierarchie, um in einem übergeordneten Namens­verwalter einen Kontext zum aufzulösenden Namen zu ermit­teln. Sobald ein Kontext ermittelt wurde, in dem der aufzulösende Name enthalten ist, beginnt die Navigationsphase, die den primären Namensver­walter des gesuchten Names mit Hilfe der Navigationsinformation in den Namens­einträgen übergeordneter Kontexte lokalisiert.

Erhält ein Namensverwalter eine Anfrage zur Auflösung eines globalen Namens, so wird, wie Abbildung 4.18 zeigt, zunächst versucht, den Namen lokal aufzulösen (Zustand: resolve). Gelingt dies (full match), so ist keine knoten­übergreifende Auflösung notwendig.

Abbildung 4.18: Zustände der globalen Namensauflösung

Bleibt die lokale Auflösung erfolglos (no match), so wendet sich der lokale Namensverwalter ki in der Orientierungsphase an den in der Hierarchie übergeordneten Namens­verwalter ki-1 (Zustand: prev node), um mit dessen Hilfe den Namenseintrag des gesuchten Namens im Ver­walternetz zu lokalisieren. Dieser Vorgang wird so lange wiederholt, bis ein Teil des Namens aufgelöst werden kann (partial match). Hat die Lokalisierung die Wurzel der Verwalter­hier­ar­chie k0 erreicht (on top), ohne daß ein Teil des Namens aufgelöst werden konnte, so terminiert die globale Namens­auflösung ohne Erfolg (Zustand: not found).

Ist in der Namensbasis eines Namensverwalters ein Namenseintrag für einen Teil des aufzu­lösenden Namens enthalten (partial match), so beginnt die Navigationsphase. Der Name wird hier so weit wie möglich lokal interpretiert und die globale Auflösung bei demjenigen Namens­verwalter fortgesetzt, auf den die Naviga­tionsinformation im Namenseintrag mit der größten Überein­stimmung im Namen verweist (Zustand: next node). Die Lokalisierung des Namens­eintrags zum gesuchten Namen wird sukzessive fortgesetzt, bis schließ­lich die Auflö­sung in demjenigen Namensverwalter termi­niert, in dem der zugehörige primäre Namens­eintrag vorhan­den ist (Zustand: found), oder keine weiterführende Navigations­informa­tion mehr existiert (no match).

Um den in Abbildung 4.18 dargestellten Ablauf einer erfolgreichen globalen Namensauflösung zu verdeut­lichen, sei nachfolgendes Beispiel gegeben. Ausgehend von Namensverwalter k6 (vgl. Abbildung 4.19) wird der globale Name „a.b.a“ aufgelöst. Da in k6 keine Überein­stim­mung des aufzulösenden Namens mit vorhandenen Namenseinträgen besteht, wird die Namens­auflösung zunächst im übergeordneten Namensverwalter k0 fortgesetzt. Hier befindet sich ein Namens­­eintrag mit Navigationsinformation für den Teilnamen „a.b“, so daß die Auflö­sung in Namensverwalter k5 fortgesetzt werden kann. Dieser leitet seinerseits die Auflö­sung zu k2, wo der administrative Namenseintrag zum gesuchten Namen plaziert wurde. Der admini­strative Namenseintrag enthält jedoch noch nicht die Namen-Objekt-Bindung, sondern verweist seinerseits auf den primären Namensverwalter k2 für den Namen „a.b.a“. Hier wird der primäre Namenseintrag für „a.b.a“ mit der Bindung an das Objekt ermittelt und schließlich an den initi­ierenden Namensverwalter k6 zurück­gegeben.

Abbildung 4.19: Globale Auflösung eines hierarchischen Namens durch Navigation

Ist ein generischer oder attributierter Name aufzulösen, so kann die Lokalisierung nicht bereits terminieren, sobald ein Namenseintrag ermittelt wurde. Notwendig ist dann die vollstän­dige Erkundung des gesamten Verwalternetzes. Vom Zustand found wird dazu im Zustands­dia­gramm aus Abbildung 4.18 die Lokalisierung so lange fortgesetzt, bis alle relevanten Teile des Verwalter­netzes durchsucht sind und kein weiterer Eintrag mehr gefunden wird (vgl. hierzu Abschnitt 4.4.3.2).

Nach der Partitionierung des Verwalternetzes besteht generell die Gefahr, daß Kontexte über mehrere Namensverwalter verteilt und Namen von Objekten in verschiedenen Namens­verwal­tern repliziert sind. Solange der Zusam­menhang des Verwalternetzes und die Funktions­fähigkeit der Namensverwalter gewähr­leistet ist, wird die Parti­tio­nierung von Kon­texten durch die nach­folgend beschriebene syntax­gesteu­erte Plazierung von Namensein­trägen in Namens­ver­wal­tern verhindert. Die Plazierung von Namenseinträ­gen bei Partitionierung des Verwalter­netzes wird in Kapitel 5 beschrieben.

4.3.3          Globale Registrierung und Verteilung hierarchischer Namen

Die Registrierung globaler Namen hat zur Aufgabe, die zur Lokalisierung des primären Namensverwalters für einen Namen notwendigen Namenseinträge mit Navigations­information zu generierten und diese im Verwalternetz in ausgewählten Namensverwaltern zu plazieren. Hierbei sind zum einen die in Abschnitt 4.2.1 aufgestellten Kriterien zur Beurteilung der Güte der Verteilung von Namenseinträgen und zum anderen die Konsistenz­bedingungen für Namens­einträge und Navigationsinformationen aus Abschnitt 4.3.1 zu berücksichtigen. Zusätzlich werden für die globale Verwaltung hierarchi­scher Namen folgende grundlegende Annahmen getroffen:

1.      Namen von Kontexten ändern sich selten.

2.      Objekte und ihre Namen sind in der Regel einer höheren Variabilität unterworfen.

3.      Räumlich benachbart gespeicherte Objekte tragen häufig ähnliche Namen.

4.      Objekte werden bevorzugt von räumlich benachbarten Instanzen zugegriffen.

Unter Berücksichtigung obiger Annahmen können Namenseinträge für Kontexte daher einen hohen Verteilungsgrad im Verwalternetz aufweisen und zur Steigerung der Verfügbarkeit repli­ziert und vorge­halten werden. Namenseinträge für Objekte hingegen werden zunächst nur lokal im primären Namensverwalter gehalten, in dem der Name für das Objekt registriert wurde. Namenseinträge mit Navigations­in­formation zur Lokalisierung primärer Namens­einträge für Objekte werden nur verteilt, falls keine Namenseinträge übergeordneter Kontexte mit Navigati­onsinformation vorhanden sind, die zum primären Namenseintrag mit der Namen-Objekt-Bin­dung führen. Namenseinträge für ähnliche Namen werden in benachbarten Namens­verwaltern plaziert, so daß eine Zusammenfassung von Namen zu Kontexten möglich wird. Da Objekte bevorzugt von räumlich benachbarten Instanzen zugegriffen werden, sollten die zugehörigen Namens­einträge in Namensverwaltern plaziert werden, die sich im selben Teil des Verwalter­netzes befinden, wie der Objektverwalter.

Im folgenden Abschnitt wird die Plazierung von Namenseinträgen mit Navigationsinformation im Verwalternetz und die Erzeugung von Kontexten in Namensverwaltern eingehend diskutiert.

4.3.3.1       Syntaxgesteuerte Plazierung von Navigationsinformation

Voraussetzung zur Auflösung globaler Namen durch Navigation im Verwalternetz sind die in Abschnitt 4.3.1 aufgezeigten Bedingungen für Namens­einträge und Navigationsinformationen in Namens­verwaltern. Um diese zu erfüllen, werden bei der Registrierung neuer Namen Namens­­­­einträge mit Navigations­informa­tion syntaxgesteuert in Namens­verwaltern zusammen mit Namens­­­­einträgen überge­ord­neter Kontexte oder ähnlicher Namen (related)[4] plaziert.

Die syntaxge­steuerte Plazierung von Namens­einträgen gleicht weitgehend der Lokalisierung von Namenseinträgen bei der globalen Auflösung von Namen und besteht ähnlich wie die Lokalisie­rung von Namens­einträgen im Verwalternetz aus einer Orientierungs- und einer Navi­ga­tionsphase, hier als Plazierungs­phase bezeichnet. Bei der Plazierung von Namens­ein­trägen im Verwalternetz werden jedoch auch ähnliche Namen berück­sichtigt. Dadurch werden Einträge so grup­piert, daß Namensverwalter auf den oberen Ebenen der Verwalter­hierarchie entlastet und Partitionen des Namensraums vermieden werden.

Abbildung 4.20: Orientierungs- und Plazierungsphase der syntaxgesteuerten Plazierung von Namen

Bei der Registrierung von Namenseinträgen werden primäre und administrative Namens­ver­walter unterschieden. Der primäre Namensverwalter für einen Namen ist derjenige Namens­verwalter, in dem der Name von der Anwendung für ein Objekt registriert wurde. Hier befindet sich in der Regel auch das benannte Objekt. Der Namenseintrag im primären Namens­verwalter enthält die Namen-Objekt-Bindung. Um diesen primären Namenseintrag im Verwal­ter­netz loka­lisieren zu können, existieren für den Namen im Verwalternetz weitere Namens­einträge mit Naviga­tionsinformation, die auf den primären Namens­verwalter verweisen. Dieser adminis­trative Namenseintrag wird syntaxgesteuert im sog. administrativen Namens­verwalter plaziert.

Das Beispiel in Abbildung 4.20 zeigt die syntaxgesteuerte Plazierung eines Namenseintrags in einer Hierar­chie von Namensverwaltern. Der kursiv dargestellte Name „b.a.c“ wird im primä­ren Namens­verwalter k1 erzeugt und wandert zunächst in der Orientierungsphase die Verwalter­hierarchie nach oben, ohne auf einen Kontext zu treffen, in dem er enthalten ist. In der Wurzel der Verwalterhierarchie k0 wird schließlich eine Überein­stimmung des ersten Teils des Namens mit dem Eintrag (b, k6) festgestellt. Der Name wandert nun in der Plazierungsphase zu Namensverwalter k6, auf den die Navigations­informa­tion in diesem Eintrag verweist. Dort fin­det sich ein Eintrag (b.a, k3), der eine weitergehende Überein­stimmung mit dem zu plazierenden Namen aufweist. Schließlich gelangt der Namens­eintrag zu Namens­verwalter k3, wo er schließlich plaziert wird, da kein Namenseintrag mit weiter­führender Navigationsinformation mehr vorhanden ist. Als administrativer Namens­ver­walter für den Namen „b.a.c“ wurde damit k3 ermittelt. Hier wird ein Namenseintrag mit Navi­ga­tions­­informa­tion für den Namen „b.a.c“ plaziert, die auf den primären Namens­verwalter k1 ver­weist.

Bevor das detaillierte Verfahren zur syntaxgesteuerten Plazierung von Namen in der Ver­walter­hierarchie vorgestellt wird, ist eine Begriffsbildung vorzunehmen. Hierzu sei n der Name eines Kontextes y oder Objektes o und N(k) die Namensbasis des Namens­verwalters k.

·        kprim(n) bezeichnet den primären Namensverwalter, in dem der primäre Namenseintrag für den Namen n mit der Namen-Objekt-Bindung bei der Registrierung oder Substi­tution erzeugt wurde.

·        kadmin(n) bezeichnet den administrativen Namensverwalter, in dem der administrative Namens­eintrag für den Namen n abgelegt ist, dessen Navigationsinformation direkt auf den primären Namensverwalter kprim(n) ver­weist.

·        kref(n, k) ist derjenige Namens­verwal­ter, auf den die Navigationsinformation im Namens­ein­trag für den Namen n in Namensverwalter k verweist.

·        path(n):= k0,…,kprim(n) bezeichnet die Folge der Namensverwalter auf dem Pfad vom primären Namensverwalter kprim(n) des Namens n zur Wurzel der Verwalterhierarchie k0.

·        Ein Name np heißt partieller Name von n, wenn np im Namensraum einen übergeordneten Kontext yj-1 für den Namen n eines Kontexts yj oder eines Objekts o bezeich­net. Der parti­elle Name np ist ganz in n enthalten und bezeichnet ein Präfix von n.

·        npmax heißt maximaler partieller Name von n in Namensverwalter k, wenn npmax ein partieller Name von n ist und kein gemeinsamer partieller Name np von n und einem bel. Namen m aus N(k) existiert, so daß npmax partieller Name von np ist. Beispiel: Der maximale partielle Name für den Namen n:=„a.b.c.d“ in der Namensbasis N(k):={„a.b.c.e“, „a.b.f“} im Namensverwalter k ist npmax:= „a.b.c“.

Nachdem die notwendigen Begriffe definiert sind, wenden wir uns der syntaxgesteuerten Pla­zierung von Namen zu.

Orientierungsphase:

In der Orientierungsphase wird ausgehend vom primären Namensverwalter ki:=kprim(n), in dem der zu registrie­rende Name n eines Objekts oder Kontextes erzeugt wurde und der primäre Namenseintrag für n abgelegt werden soll, versucht auf dem Weg zur Wurzel der Verwalter­hierarchie einen Namens­verwalter kj zu ermitteln, der einen Kontext verwaltet, in dem der neue Name enthalten ist.

Dazu wird ein zu registrieren­der Name n von einem Namensverwalter ki so lange nach oben zum jeweils übergeordne­ten Namens­verwalter ki-1 weitergegeben, bis

1. Fall:     in einem Namensverwalter kj ein Namenseintrag für einen partiellen Namen np von n ermittelt wird, der einen Kontext bezeichnet, in dem der gesuchte Name n enthalten ist (np ist Präfix von n). Bezeichnet der partielle Name np ein Objekt, so terminiert die Regi­strierung, da ein gleichnamiger Kontext nicht mehr registriert werden kann.

2. Fall:     in einem Namensverwalter kj ein Namens­eintrag für einen Namen m eines Objekts oder Kontextes ermittelt wird, zu dem der zu registrierende Name n einen partiellen Namen darstellt (n ist Präfix von m). Stimmt die Navigationsinformation kref(m, kj) im Namenseintrag von m mit der des Namenseintrags von n überein kref(m, kj)= kref(n, kj):=ki, so terminiert die Orientierungsphase, andernfalls wird sie fortge­setzt. Bezeichnet der zu registrierende Name n ein Objekt, so terminiert die Regi­strierung, da ein gleichnamiger Kontext entstehen kann.

3. Fall:     in einem Namensverwalter kj ein Namens­eintrag für einen Namen m ermittelt wird, der dem zu registrierenden Namen n entspricht.

4. Fall:     die Wurzel der Verwalterhierarchie erreicht wird (kj:=k0).

Ist eine dieser Bedingungen erfüllt, so beginnt die Plazierungsphase. In der Orientierungsphase wird zudem für jeden zu plazierenden Namenseintrag der Pfad path(n):= k0,…,kprim(n) vom primären Namensverwalter kprim(n) zur Wurzel der Verwalterhierarchie k0 vermerkt. Kann der übergeordnete Namens­verwalter ki-1 nicht erreicht werden, so terminiert die Registrie­rung mit einem Fehler­zustand.

Plazierungsphase:

In der Plazierungsphase wird versucht, durch Navigation im Verwalternetz einen geeigneten administrativen Namensverwalter für den neuen Namenseintrag zu ermitteln. Dazu werden die Navigationsinforma­tionen in Namenseinträgen für übergeordnete Kontexte und ähnliche Namen genutzt.

Jeder Navigationsschritt der Plazierungsphase reduziert ausgehend von k0 den in der Orientie­rungsphase gebil­deten Pfad path(n):= k0,…,kprim(n) jeweils um einen Namens­ver­walter. Ent­hält der Pfad nach der Navigation in der Plazierungsphase noch Namensverwalter, so kann die Plazierung des Namenseintrags im Verwalternetz entlang des restlichen Pfades weiter verbessert werden. Dazu wird in den Namens­ver­waltern des restlichen Pfades jeweils ein Namenseintrag für n mit Navigations­information auf den nächsten Namens­verwalter auf dem Pfad registriert.

Falls zu n kein maximaler partieller Name npmax im Verwalternetz ermittelt werden kann, wird ein Namenseintrag für n im obersten Namensverwalter k0 registriert und in allen Namens­ver­waltern entlang des Pfads path(n):= k0,…,kprim(n) zum primären Namensverwalter kprim(n) aufgenommen. Namenseinträge, die nicht plaziert und mit anderen Namen zu Kontexten zusam­mengefaßt werden können, sammeln sich so in der Wurzel der Verwalter­hierarchie an (vgl. Abbildung 4.21).

Abbildung 4.21: Propagieren von Navigationsinformation auf dem Pfad zum primären Namensverwalter

In der Plazierungsphase werden sieben Fälle unterschieden, je nachdem, welche Beziehungen zwischen den Namens­einträgen des in der Orientierungsphase ermittelten Namens­verwalters kj und dem zu registrierenden Namen n bestehen:

1. Fall:     Die Orientierungsphase endete in der Wurzel der Verwalterhierarchie (kj=k0). Exi­stiert in k0 kein maximaler partieller Name npmax für den Namen n, so wird aus­gehend von der Wurzel der Verwalterhierarchie ki:=k0 in jedem Namensverwalter auf dem Pfad path(n):= k0,…,kprim(n) zum primären Namens­verwalter kprim(n) jeweils ein Namenseintrag für n angelegt, dessen Naviga­tions­information jeweils auf den näch­sten Namens­verwalter ki+1 auf dem Pfad path(n):= k0,…,kprim(n) verweist. Schließ­lich wird ein Namenseintrag mit der Namen-Objekt-Bindung für n in die Namens­basis des primären Namens­ver­walters kprim(n) aufgenommen.

2. Fall:     Wurde in einem Namensverwalter kj ein Namenseintrag für einen partiellen Namen np von n ermittelt, so wandert der Namenseintrag für den zu registrierenden Namen n zu demjenigen Namens­verwalter kref(np, kj), auf den die Navigationsinformation des Namenseintrags für np verweist. Die Plazierungsphase wird mit kj:=kref(np, kj) fortge­setzt.

3. Fall:     Wurde in einem Namensverwalter kj ein Namenseintrag ermittelt, zu dessen Name m der zu registrierende Name n einen partiellen Namen darstellt (n ist Präfix von m) und dessen Naviga­tions­­information mit der des Namenseintrags für n übereinstimmt (kref(m, kj)=kref(n, kj):=ki) dann wird in der Kontextbildungsphase der Eintrag für m durch den Eintrag für n ersetzt und das Verfahren beginnt erneut mit der Orientie­rungsphase, wobei ki:=kj (Majorisierung).

4. Fall:     Sind in einem Namensverwalter kj Namenseinträge für Namen vorhanden, die ein gemeinsames Präfix mit n besitzen, so wird der zu registrierende Name n an den­jeni­gen Namensverwalter weitergegeben, auf den die Navigationsinformation des Namenseintrags verweist, dessen Name m den maximalen partiellen Namen npmax zu n in kj ergibt, sofern die Navigations­infor­mation im Namenseintrag für m nicht auf den primären Namensverwalter kprim(m) verweist, d.h. kref(m, kj)¹ kprim(m).

5. Fall:     Ist der zu registrierende Name n mit dem Namen m eines Namenseintrags in Namens­verwalter kj identisch (n=m), so beginnt die Kontextbildungsphase. Hierbei ist in der Kontext­bildungsphase noch zu unterscheiden, ob die betrachteten Namen Objekte oder Kon­texte bezeichnen.

6. Fall:     Der Namenseintrag kann durch Navigation (Fall 2 und 4) in kj nicht weiter plaziert werden, im Pfad path(n):= k0,…,kprim(n) von der Wurzel der Verwalterhierarchie k0 zum primären Namens­verwalter kprim(n) sind jedoch noch Namensverwalter ver­zeich­net. Dann wird ausgehend von kj in den Namensverwaltern auf dem rest­lichen Pfad path(n):= kj,…,kprim(n) zum primären Namensverwalter kprim(n) jeweils ein Namens­­eintrag für n mit Navigations­information kref(n, kj):=ki+1 auf den jeweils nächsten Namensver­walter auf dem Pfad plaziert, solange eine Verbesse­rung der Plazierung im Verwalternetz möglich ist.

7. Fall:     Ist in Namensverwalter kj ein administrativer Namenseintrag für einen Namen m vorhanden, der ein gemeinsames Präfix mit n besitzt, dessen Navigations­infor­mation jedoch auf den primären Namensverwalter kprim(m) verweist, so wird in den Namensverwaltern auf dem Pfad path(n):= kj,…,kprim(n) jeweils ein Namens­eintrag für m mit Navigations­infor­mation auf den nächsten Namensverwalter auf dem Pfad plaziert, solange eine Verbesse­rung der Plazierung im Verwalternetz möglich ist.

Die Plazierungsphase wird mit ki:=kref(m, kj) so lange wieder­holt, bis

·          ein Blatt der Verwalterhierarchie erreicht ist. In diesem Namensverwalter kj beginnt dann die Kontext­bil­dungsphase.

·          keine Verbesserung der Pla­zierung des Namenseintrags durch Navigation mehr erzielt wer­den kann, da:

1.        kein Namenseintrag mit weiterführender Navigationsinformation in kj vorhanden ist.

2.        die Navigationsinformation eines ähnlichen Namenseintrags auf den primären Namensverwalter kprim(m) verweist.

3.        die Länge des Pfades k0,…,kj von der Wurzel der Verwalterhierarchie zum ermittel­ten Namensverwalter kj der Anzahl der Namensteile des hierarchischen Namens ent­spricht.

Der in der Plazierungsphase ermittelte Namensverwalter kj entspricht dem administrativen Namensverwalter kadmin(n), in dem der administrative Namenseintrag mit Navigations­informa­tion auf den primären Namensverwalter abgelegt wird.

Die soeben vorgestellten beiden Phasen der syntaxgesteuerten Plazierung gewährleisten, daß globale Namenseinträge immer zusammen mit ähnlichen Einträgen im Verwalternetz plaziert werden und die Einträge in den Namensverwaltern stets die größtmögliche Übereinstimmung zeigen. Ungeklärt ist bisher noch die Frage, wie in Namensverwaltern neue Kontexte erzeugt werden und wie im ermittelten administrativen Namensverwalter kadmin(n):=kj die plazierten Namens­einträge weiter behandelt werden. Dieser Frage wendet sich der nächste Abschnitt zu.

4.3.3.2       Generierung globaler Kontext-Einträge

Nachdem in der Orientierungs- und der Plazierungsphase der administrative Namensverwalter kj ermittelt wurde, in dem der administrative Namenseintrag für den neu zu registrie­renden Namen n zu plazie­ren ist, wird nun unter den Namenseinträgen in kj ein maximaler parti­eller Name npmax zu n ermittelt. npmax bezeichnet dann einen gemeinsamen Kontext von n mit vorhan­denen Namen, der seiner­seits zur Registrierung an übergeordnete Namensverwalter weiterge­ben wird, falls er nicht bereits in der Namensbasis von kj vorhanden ist. Hinzukom­mende Namens­ein­träge für überge­ordnete Kontexte substituieren vorhandene Namenseinträge für untergeord­nete Kontexte (Majorisie­rung), die auf denselben Namensverwalter verweisen (vgl. Abbildung 4.22). Dazu wird der neu generierte Namenseintrag für npmax mit Navigations­infor­mation auf den Namens­ver­wal­ter kj im Verwalternetz plaziert.

Abbildung 4.22: Substituieren von Namenseinträgen durch Einträge übergeordneter Kontexte

Das Beispiel in Abbildung 4.22 zeigt den Inhalt der Namensbasen der Namensverwalter, nach­dem im ersten (I) und zweiten Schritt (II) die Namen „b.a.a“ und „b.b.a“ registriert wurden. Wird in obigem Beispiel in einem dritten Schritt (III) zusätzlich der Name „b.b.b“ registriert, so wird der Namenseintrag für den Namen „b.b.a“ durch den Namenseintrag des Kontexts „b.b“ substituiert.

Sind in der Verwalterhierarchie nicht alle Namensverwalter permanent erreichbar, so kann bei diesem Verfahren derselbe Kontext mehrfach gebildet werden. Dadurch entstehen Partitionen des Namensraums, die dieselben Kontexte enthalten. Das hat zur Folge, daß die Lokalisierung von Namens­einträgen aufwendiger wird, da die Eindeutigkeit der Navigationsinformation nicht mehr gewährleistet ist. Verfahren, um die Partitionierung von Kontexten zu vermeiden, werden in Kapitel 5 vorgestellt.

Das rekursive Verfahren zur Generierung neuer Kontexte im administrativen Namensverwalter kj, der in der Plazierungsphase ermittelt wurde, stellt sich wie folgt dar:

Kontextbildungsphase:

Die Kontextbildungsphase ermittelt in der Namensbasis N(kj) des in der Plazierungsphase ermittelten administrativen Namens­verwalters kj einen maxi­malen partiellen Namen npmax zu n. Dieser ist der Name eines neuen Kontexts, der seinerseits im Verwalternetz global registriert wird. Bei der Bildung von Kontexten werden folgende Fälle unterschieden:

1. Fall:     Wurde ein maximaler partieller Name npmax ermittelt, und entspricht dieser weder n noch einem Namen m in N(kj), dann wird n in die Namensbasis von kj aufgenom­men und der Teilname npmax in der Namensverwaltung neu registriert (entspricht dem Zustand: create context in Abbildung 4.23). Das Verfahren beginnt mit ki:=kj und n:=npmax von neuem mit der Orientierungsphase. Die Navigationsinformation kref(n, kj):=kl des Namenseintrags für n in N(kj) wird so gesetzt, daß sie auf den nächsten Namensverwalter kl auf dem restlichen Pfad kl,…,kprim(n) ver­weist.

2. Fall:     Befindet sich in N(kj) ein Name m, zu dem n ein partieller Name ist, so wird, falls kref(m, kj)=kref(n, kj):=ki, der Namenseintrag für m in der Namensbasis von kj durch einen Namens­eintrag für n substituiert (entspricht dem Zustand: substitute in Abbildung 4.23). Das Verfahren beginnt mit n und ki:=kj von neuem mit der Orien­tierungsphase.

3. Fall:     n ist identisch mit einem Namen m in N(kj):

                 Gilt kref(m, kj)=kref(n, kj):=ki, so wird der neue Eintrag n verworfen. Andernfalls wird der Name eines Kontexts registriert, falls es sich um denselben Kontext han­delt, der Name eines Objekts jedoch wird als Duplikat zurück­gewie­sen. Die Auflö­sung terminiert in allen drei Fällen.

Wird ein neuer Eintrag für den Namen npmax durch Kontextbildung erzeugt, so erhält er als pri­mären Namensverwalter kprim(npmax,) den Namensverwalter kj, auf dem der Eintrag generiert wurde (kprim(npmax,):=kj). Neue Namenseinträge für Kontexte werden ihrerseits wieder syntax­gesteuert im Verwalternetz plaziert.

Die Übergänge zwi­schen den verschie­denen Phasen der Registrierung von Namenseinträgen zeigt Abbildung 4.23.

Abbildung 4.23: Zustände und Übergänge bei der globalen Registrierung von Namen

Das soeben vorgestellte Verfahren führt zu einer zunehmenden Verallgemeinerung der Naviga­tionsinformation in den Namensverwaltern der Hierarchie von unten nach oben. Beim Löschen von Objekt-Namen hingegen findet wieder eine Konkretisierung der Navigations­information statt.

4.3.4          Umkehrung der globalen Namensauflösung

Der primäre Zweck einer Namensverwaltung besteht in der Abbildung von Namen auf Objekt-Bezeichner, die den Zugriff auf die spezifizierten Objekte erlauben. In bestimmten Ausnahme­situation ist es jedoch erforderlich, ausgehend vom Objekt-Bezeichner auf den globalen Namen eines Objekts zu schließen (vgl. Abschnitt 2.5).

Zur Realisierung einer globalen Abbildung von Objekt-Bezeichnern auf Namen gibt es ver­schiedene Möglichkeiten.

Besitzen die Objekt-Bezeichner eine Struktur, die zur Lokalisierung von Objektverwaltern im Netzwerk verwendet werden kann, und ist zusammen mit dem Objekt, wie in den in Abschnitt 4.3.1 aufge­stel­lten Konsistenzbedingungen für Namenseinträge gefordert, im Objektverwalter auch der zugehörige Name abgelegt, so kann ausgehend vom Objekt-Bezeichner stets auf den Namen eines Objekts geschlossen werden. Ortsabhängige Objekt-Bezeichner besitzen allerdings den Nachteil, daß sie nicht migrationsinvariant sind.

Falls Objekt-Bezeichner keine Orts­information für die Lokalisierung des zugehörigen Namens­eintrags enthalten, erscheint die Umkehrabbildung NameofObjekt zur globalen Namens­­auflö­sung global resolve auf den ersten Blick schwierig zu realisieren.

Eine Möglichkeit besteht darin, für die Umkehrabbildung ein globales Verzeichnis aller Objekt-Bezeichner zu verwalten, wie es für die Abbildung von IP-Adressen auf Domain-Namen im DNS verwendet wird. Ein separates Verzeichnis mit Objekt-Bezeichnern erfordert jedoch einen zusätzlichen Verwaltungs­aufwand.

Durch die in Abschnitt 4.3.1 aufgestellten Konsistenz­bedingungen und den Rückgriff auf vor­gehaltene Namenseinträge (vgl. Kapitel 5) wird es jedoch möglich, die Umkehrabbildung zur globalen Namensauflösung auch ohne ein separates Verzeichnis zu realisieren. Nach den Kon­sistenz­bedingungen für Namens­ein­träge sollte der pri­märe Namenseintrag bei der Benennung eines Objekts stets in der Namens­basis des Objekt­verwalters abgelegt werden. Ändern Objekte ihre Lokation, so hat der Objekt­verwalter dafür Sorge zu tragen, daß auch der primäre Namens­eintrag zu dieser Lokation migriert und die zugehörige Naviga­tionsinformation im adminis­trati­ven Namensver­wal­ter wieder auf den primären Namens­verwalter mit dem primären Namenseintrag verweist. Wird beim Objektzugriff eine Kopie des Objekts erstellt, so sollte nach den Konsistenz­bedin­gungen aus Abschnitt 4.3.1 auch der replizierende Rechner den zugehörigen Namenseintrag als Kopie enthalten. Ferner wird zugrundegelegt, daß der erst­ma­lige Zugriff auf ein Objekt nur über den Namen erfolgt. Der zugehörige Namens­eintrag zum aufgelösten Namen wird dabei lokal vorge­halten, um wiederholte Anfragen zu beschleu­nigen. Die Zuordnung von Objekt-Bezeich­ner zum Namen liegt beim Objektzugriff somit lokal vor und die Umkehr­abbildung kann durch die lokalen Ver­fahren der Namens­ver­waltung reali­siert wer­den (vgl. Abschnitt 2.5).[AL9] 

4.3.5          Löschen globaler Namenseinträge

Wesentliche Eigenschaft einer dynamischen Namensverwaltung ist es, daß Namen nicht nur regi­striert, sondern auch wieder aus dem Namensraum entfernt werden können. Das Löschen von Namen im globalen Namensraum ist die direkte Umkehrung des zuvor beschriebenen Vor­gangs der Registrierung globaler Namen. Werden Namenseinträge aus den Namensbasen von Namensverwaltern entfernt, so führt dies in der dynamischen globalen Namens­verwaltung zur Konkretisierung der Navigationsinformation im Verwalternetz.

Abbildung 4.24: Zustände beim Löschen globaler Namenseinträge

Soll eine Bindung von Name zu Objekt-Bezeichner aus dem globalen Namensraum entfernt werden, so werden in der Lokalisierungsphase des Löschvorgangs alle Namenseinträge für den zu löschenden Namen n im Verwalternetz ermittelt (vgl. Abbildung 4.24). Die Navigations­in­formation im Namens­eintrag des administrativen Namensverwalters verweist auf den pri­mä­ren Namens­verwalter, aus dessen Namensbasis der Namenseintrag ebenfalls zu entfernen ist.

Existiert in einem Namensverwalter ein Namenseintrag für den zu löschenden Namen n (full match), so beginnt die Löschphase und der Namens­eintrag wird aus der Namensbasis des zuständigen Namensverwalters entfernt. Sind im selben Namens­verwalter mehrere ähnliche Namenseinträge (more than one related name remains) prä­sent, d.h. der übergeordnete Kontext enthält mehr als einen weiteren Namens­eintrag, so wird versucht, weitere Namenseinträge für den zu löschenden Namen im Verwalternetz zu lokalisieren und zu löschen. Der Löschvorgang ist beendet, sobald keine passenden Namenseinträge mehr vorhanden sind. Ist nach dem Löschen eines Namenseintrags nur noch ein einziger Name m im übergeordneten Kontext (mit dem Namen npmax) vorhanden (one related name remains), so werden die Namens­einträge für diesen Kontext lokalisiert und durch Namenseinträge für m ersetzt. Der Vorgang wird wieder­holt, bis kein Namenseintrag für den Kontext mehr vorhanden ist. In letzterem Falle wird der Kontext obsolet und muß ent­fernt werden.

Abbildung 4.25: Beispiel für das Löschen globaler Namen

Der Vorgang des Löschens soll nun kurz an einem Beispiel verdeutlicht werden. Erhält ein Namensverwalter k4 im System den Auftrag (I), den Namen „b.a.a“ zu löschen, so wandert der Löschauftrag im Beispiel aus Abbildung 4.25 zum administrativen Namensverwalter k1, der den administrativen Namenseintrag für „b.a.a“ enthält. Hier wird der Eintrag für „b.a.a“ ent­fernt ( Schritt ¿ in Abbildung 4.25). Da im über­geordneten Kontext namens „b.a“ lediglich der Eintrag für den Namen „b.a.b“ verbleibt, wird dieser zur Substitution an k5 geleitet, um den Eintrag für „b.a“ durch „b.a.b“ zu ersetzen (Schritt ). Der Lösch­vorgang ter­miniert, da im übergeordneten Kontext namens „b“ ein weiterer Name „b.b“ enthalten ist. Der administrative Namens­verwalter k1 kontaktiert anschließend den primären Namensverwalter k3, um den Ein­trag auch hier zu entfer­nen.

Soll nun zu einem späteren Zeitpunkt (II) auch der Eintrag „b.a.b“ entfernt werden, so muß nach dem Löschen von „b.a.b“ in k1 (Schritt ¬) auch der Namenseintrag für „b.a.b“ mit Navi­gations­infor­mation auf k1 im Namensverwalter k5 entfernt werden (Schritt ). Da nach dem Löschen von „b.a.b“ in k5 der Eintrag „b.b“ als einziger im übergeordneten Kontext „b“ ver­bleibt, wird dieser anschließend in k0 durch „b.b“ substituiert (Schritt ƒ). Hier endet der Löschvorgang schließlich, da keine weiteren Namenseinträge für „b.a.b“ und „b“ mehr im Verwalternetz vorhanden sind.[AL10] 

 

Die dynamische globale Namensverwaltung plaziert Namenseinträge mit Navigations­informa­tion für die Lokalisierung des primären Namenseintrags syntax­gesteuert im Verwalternetz. Die Bildung von Kontexten reduziert dabei die Anzahl der notwendigen Namenseinträge erheblich.


4.4         Globale Verwaltung generischer, synonymer und attributierter Namen

In den vorangegangenen Abschnitten wurde die globale Verwaltung hierarchischer Namen behandelt. Die nachfolgende Anschnitt greift nun die Problematik der Verwaltung synonymer und attributierter Namen und der eng damit verbun­denen Behandlung generischer Anfragen auf.

4.4.1          Verwaltung synonymer Namen

Benutzer eines Rechnersystems haben das Bedürfnis, ihre Arbeitsumgebung indivi­duell zu gestal­ten. Diese soll eine subjektive Sicht auf die vorhandenen Informa­tionen bieten. Um die Komplexität der Arbeitsumgebung für den Benutzer zu reduzieren, sollen ferner nur die für den Benutzer relevanten Informationen dargestellt werden. Die dynamische globale Namens­ver­waltung unterstützt die Individualisie­rung der Benutzerumgebung, indem sie synonyme Namen zur Verfügung stellt, mit deren Hilfe individuelle Sichten des globalen Namensraums erzeugt werden können.

Vorteilhaft haben sich in diesem Zusammenhang sogenannte Aliases, kurze einprägsame Namen, die Verweise auf den eigentlichen Namen eines Objekts darstellen, erwiesen (vgl. auch Abschnitt 2.4.4). Die Signifikanz dieser Art synonymer Namen bleibt i.d.R. auf den aktuellen Kontext beschränkt. Als Gültigkeitsbereich für Synonyme können aber auch bestimmte Kon­texte, der lokale Knoten, der Rechnerverbund und der globale Bereich dienen.

Durch die Existenz von Synonymen stellt die Abbildung von Namen auf Objekt-Bezeichner nun keine bijektive Funktion mehr dar. Da für ein Objekt mehrere äquivalente Namen existieren können, müssen im folgenden auch Bezie­hungen zwi­schen synonymen Namen in Betracht gezogen werden, die über den gemein­samen Objekt-Bezeichner, an den sie gebunden sind, her­gestellt werden.

4.4.1.1       Repräsentation von Synonymen im Namensraum

Synonyme Namen sind über einen gemeinsamen Objekt-Bezeichner an dasselbe Objekt gebun­den (vgl. Abbildung 4.26). Hierbei trifft die dynamische globale Namensver­waltung jedoch keine Unterscheidung zwischen primären und sekundären Namen.

Abbildung 4.26: Zuordnung von Synonymen über gemeinsame Objekt-Bezeichner in der Namensdatenbank

Die Zuordnung von Synonymen zu einem Namen innerhalb eines Namensverwalters kann über den Suchbaum der Objekt-Bezeichner (vgl. hierzu Anhang C) hergestellt werden und stellt somit keine besondere Schwierigkeit dar (vgl. Abbildung 4.26). Hier ist zu jedem Objekt-Bezeichner vermerkt, in welchen Namenseinträgen er enthalten ist.

Aufwendiger ist es jedoch, global eine Beziehung zwischen synonymen Namen über den Objekt-Bezeichner herzustellen. Diese Aufgabe entspricht der Ermittlung aller Namen zu einem gegebenen Objekt-Bezeichner (vgl. Abschnitt 4.3.4). Als Lösung bietet sich an, zusammen mit den Namen im primären Namensverwalter auch alle zugehörigen Synonyme abzulegen, so daß diese jeder­zeit lokal über den gemeinsamen Objekt-Bezeichner zugeordnet werden können.

Wie bereits in Abschnitt 2.3.3.4 gezeigt, kann die Darstellung synonymer Namen für Kontexte im globalen Namensraum entweder in azyklischen gerichteten Graphen oder in Baumstrukturen erfolgen (vgl. Abbildung 2.25). Letztere Methode hat den Nachteil, daß bei der Registrierung von Synonymen für gemein­same Kontexte derselbe Bezeichner verwendet werden muß, um sie eindeutig identifizieren zu können. Erheblich einfacher ist die Repräsentation von Synonymen in azyklischen gerichteten Graphen. Hier ist lediglich der Bezeichner des gemeinsamen Kon­texts zu ermitteln und für die Synonyme dieses Kontexts zu registrieren.

Betrachtet man beispielsweise die synonymen Namen n1:= „a.b.c.d.e“ und n2:= „x.y.z.c.d.e“, so besitzen diese einen gemeinsamen Namensteil „c.d.e“ im Kontext „a.b“ bzw. „x.y.z“. Die Namen „a.b“ und „x.y.z“ sind Synonyme desselben Kontexts. Daher muß lediglich der Teil des Namens n2 als Synonym registriert werden, der sich vom Namen n1 unterscheidet. Ein neuer Namens­eintrag für den gemeinsamen Namensteil „c.d.e“ muß nicht angelegt werden.[AL11] 

4.4.1.2       Globale Verwaltung synonymer Namen

Der Existenz synonymer Namen müssen auch die Namensoperationen der dyna­mischen globa­len Namensverwaltung Rechnung tragen. Die Namensoperation zum Ermitteln der zu einem gegebenen Namen n1 synonymen Namen {n2,…,nj} ist eine Erweiterung der aus Abschnitt 4.3.4 bekann­ten Umkehrfunktion zur globalen Namensauflösung. Hierzu sind folgende Schritte notwendig:

1.   Zunächst wird für den Namen n1 der primäre Namensverwalter kprim(n1) lokalisiert.

2.   Über den Objekt-Bezeichner o(n1) des Namens n1 werden im primären Namensverwalter kprim(n1) alle zu n1 synonymen Namen {n2,…,nj} ermittelt (vgl. hierzu Abschnitt 4.3.4).

3.   Auch wenn zu Objekt-Bezeichner o(n1) nur der Namenseintrag zu n1 existiert, muß jeder Pfad zur Wurzel des Namensraums zurückverfolgt werden, da optionale Pfade synonyme Namen für Kontexte darstellen können (vgl. Abbildung 2.24).

Bei der Registrierung synonymer Namen zu einem gegebenen Namen sind diese auch im primä­ren Namensver­wal­ter des Namenseintrags zu plazieren. Hierzu sind folgende Schritte notwen­dig:

1.   Bei der Registrierung eines synonymen Namens n2 zu einem existierenden Namen n1 wird zunächst der für den Namen n1 zuständige primäre Namensverwalter kprim(n1) lokalisiert und der Objekt-Bezeichner o(n1) für den Namen n1 ermittelt.

2.   Im primären Namensverwalter kprim(n1) wird für den synonymen Namen n2 ein lokaler Namenseintrag mit dem Objekt-Bezeichner o(n1) angelegt.

3.   Der synonyme Name n2 wird global registriert. Im für n2 zuständigen administrativen Namensverwalter wird ein Namenseintrag mit Navigationsinformation plaziert, die auf den primären Namensverwalter kprim(n1)=kprim(n2) verweist.

Besitzt der Name n1 zusammen mit dem synonymen Namen n2 einen gemeinsamen partiellen Namen np, dann teilen sich die Namen n1 und n2 einen gemeinsamen Kontext. In diesem Fall wird der Name n2|np als Synonym für den Namen des Kontexts n1|np registriert.

Unter Berücksichtigung der Existenz von Synonymen sind beim Löschen eines Objekts namens n1 im primären Namensverwalter kprim(n1) auch alle Synonyme {n2,…,nj} zu entfernen. Ebenso müssen die Namenseinträge mit Navigationsinformation für die synonymen Namen {n2,…,nj} in den zuständigen administrativen Namens­verwal­tern entfernt werden.[AL12] 

4.4.2          Auflösung generischer Namensanfragen

Neben der Verwaltung von Synonymen erfordert in der dynamischen globalen Namensver­wal­tung die Auflösung generischer Namen besondere Aufmerksamkeit. Generische Namen zeich­nen sich dadurch aus, daß in Namens­anfragen Platzhalter (sog. Wildcards) enthalten sind.

Die Verwendung von Platzhaltern hat zur Konsequenz, daß die globale Namensauflösung alle Namenseinträge, die der gegebenen Beschreibung des Namens genügen, in verschiedenen Namens­verwaltern lokalisieren muß. Im Gegensatz zur vollständig spezifizierten Namens­an­frage ist daher jeder Pfad im Namensgraphen zu verfolgen, der den aufzulösenden generi­schen Namen repräsentieren könnte.

4.4.2.1       Lokale Auflösung generischer Namen

Im Normalfall terminiert die Auflösung von Namen, sobald ein adäquater Namens­eintrag für einen Kontext oder ein Objekt ermittelt wurde (vgl. Zustandsdiagramm in Abbildung 4.18). Diese einfache Art der Namensauflösung von Namen findet beispielsweise im Domain Name System [Mockapetris, 88] Anwendung. Sie endet, sobald eine IP-Adresse ermittelt wurde, das gesamte Verzeichnis durchsucht oder eine bestimmte Zeitspanne verstrichen ist.

Abbildung 4.27: Zustände der generischen lokalen Namensauflösung

Enthält der aufzulösende Namensausdruck jedoch generische Namensteile (Wildcards) (vgl. Abschnitt 2.2.2.4), so kann die Auflösung in der Regel nicht bereits dann terminieren, wenn ein Namens­eintrag ermittelt wurde. Im Extremfall wird sich die Erkundung über den gesamten Namensraum erstrecken (vgl. Abschnitt 4.1.1.1). Die mit der lokalen Auflösung generischer Namen verbundene vollständige Erkundung des Namensraums entspricht dann der rekursiven Tiefensuche. Werden bei der Auflösung eines Namens mehrere optionale Pfade ermittelt, so wird zunächst immer nur ein Namenspfad verfolgt. Optionale Pfade werden zunächst vermerkt und beschritten, sobald der erste Pfad vollständig abgesucht wurde. Im Zustands­diagramm aus Abbildung 4.27 wird im Falle einer generischen Auflösung ausgehend vom Zustand found die Erkundung des Namensraums so lange fortge­setzt, bis kein alternativer Pfad mehr existiert.

Um bei der Auflösung optionale Pfade im Namensraum und Navigationsinformation in vorge­haltenen Namenseinträgen zu vermerken, verwaltet jeder Namensverwalter der dynamischen globalen Namensverwaltung eine kellerartige Datenstruktur (vgl. Abbildung 4.28). Bei Inter­pretation eines Namens werden eventuell auftretende optionale Pfade auf dem Keller vermerkt (push). Zunächst wird dann der erste Pfad verfolgt, bis ein Namenseintrag ermit­telt wurde, der dem generischen Namensausdruck ent­spricht(found), oder keine weitere Interpretation mehr gelingt. Anschließend wird der oberste Pfad von Keller genommen (pop) und verfolgt, bis auch dieser erkundet ist, usw. Die lokale Auflösung generischer Namen terminiert, sobald der Keller leer ist (vgl. Abbildung 4.28).

[AL13] 

Abbildung 4.28: Aufbau der Kellerstruktur bei der Auflösung generischer Namen

Außer zur rekursiven Interpretation generischer Namen findet der Keller Verwendung, um lokal vorgehaltene und replizierte Namenseinträge mit Navigationsinformation auf externe Namens­verwalter zu vermerken und zu verfolgen. Solange der Name lokal aufgelöst werden kann, werden ermittelte externe Namenseinträge mit ihren Bezeichnern und der zugehörigen Naviga­tionsinformation auf dem Keller abgelegt. Ist lokal keine weitere Interpreta­tion möglich, so wird der Keller wieder abgebaut und die externen Namenseinträge werden verfolgt. Dieses Rück­wärts­verfolgen externer Referenzen entspricht einer Art knotenüber­greifenden rekursiven Tie­fen­suche. Führt ein externer Namenseintrag nicht zum Ziel, so wird auch er vom Keller genom­­men, bis schließlich der Verweis auf den überge­ord­neten Namens­verwalter auf dem Keller liegt.

[AL14] Bei der Lokalisierung von Namenseinträgen befindet sich in jedem kontaktierten Namens­ver­walter ein solcher Keller und für jede Namensauflösung, die in der Namensver­waltung gleich­zeitig abläuft, wird ein separater Keller aufgebaut. Ein Auflösungsvor­gang wird zudem durch eine Transaktions­nummer gekenn­zeichnet. Nur lokale Mehrdeutigkeiten werden auf dem Keller abgelegt. Globale Mehrdeutig­keiten werden sofort parallel bearbeitet. Dadurch lassen sich glo­bale Zustände vermeiden und es wird möglich, kontaktierte Namens­verwalter weitge­hend zustandslos zu imple­men­tieren. Alle kontaktierten Namens­verwalter unterhalten ihrerseits jedoch für die lokale Bearbeitung von Anfragen jeweils einen Keller.

In Systemen, die Nebenläufigkeit durch separate Prozesse unterstützen (z.B. UNIX, Windows NT), kann als Alternative zur rekursiven Abarbeitung oder zur Einführung eines Kellers für jeden Pfad die Abspaltung separater Prozesse in Betracht gezogen werden. Dieses Vorgehen erscheint zunächst elegant, ist aufgrund der hohen Kosten für Prozesse und des durch die lokale Parallelität erforderlichen Koordinations­aufwands zur Vermeidung von Konflikten allerdings nur schwer realisierbar. Eine weitere Alternative stellt die Einführung sog. Cursors dar, wie sie beispielsweise zur Verwaltung von Optionen in der sog. Soup im objekt-orientierten Betriebs­system des Apple Newton [Apple, 93] verwendet werden.

4.4.2.2        [AL15] [AL16] Globale Auflösung generischer Namen

Sind bei der Interpretation hierarchischer Namen externe Verweise zu verfolgen, so geht die Kontrolle der weiteren Auflösung des Namens an einen externen Namensverwalter über. Dieser interpretiert seinerseits den verbliebenen Namensteil so weit wie möglich. Falls erforderlich, kontaktiert dieser weitere Namensverwalter. Existieren für einen Namen mehrere externe Ver­weise, wie dies beispielsweise bei generischen Namen der Fall sein kann, so geht die Kontrolle gleichzeitig an mehrere Namens­verwalter über. Um die globale Namensauflösung weitgehend zustandslos zu realisieren, werden optio­nale externe Referenzen im Gegensatz zu lokalen nicht rekursiv, sondern transitiv abgear­beitet. Die­ses Vorgehen besitzt einen Zeitvorteil gegenüber dem rekursiven Verfahren und reduziert die Anzahl der notwendigen Nachrichten.

Abbildung 4.29: Beispiel einer generischen globalen Namensauflösung

Das Beispiel in Abbildung 4.29 zeigt die parallele Auflösung generischer globaler Namens­an­fragen bei Existenz von Verweisen auf externe Namensverwalter. Die Anfrage wandert in der Orientierungsphase zunächst in Richtung Wurzel der Verwalterhierarchie, bis ein Kontext ermittelt wird, in dem der gesuchte Namen vollständig enthalten ist. Hier wird der Name so weit wie möglich lokal interpretiert. Verweist ein Eintrag auf einen externen Namensverwalter, so geht die weitere Interpretation auf diesen über. In Abbildung 4.29 passen beispielsweise in Namensverwalter k2 mehrere Namenseinträge auf den gesuchten Namensteil, so daß für die weitere Auflösung des generischen Namens die Namensverwalter k3 und k4 kontaktiert werden.

Alternativ zu diesem Vorgehen kann bereits im ersten Namensverwalter, der die Anfrage erhält, der Name so weit wie möglich lokal aufgelöst werden. Kommen weitere Namensverwalter für die Bearbeitung der Anfrage in Betracht, d.h. der gesuchte Name ist nicht vollständig in einem lokalen Kontext enthalten, wird die Anfrage in der Verwalterhierarchie nach oben an andere Namensverwalter geleitet. Um Duplikate in Anfrageergebnissen zu vermeiden, dürfen Anfragen nicht in die Richtung weitergeleitet werden, aus der sie gekommen sind. Der Vorteil dieses Ver­fahrens ist in der rascheren Bearbeitung von Anfragen und in einer geringeren Nachrichten­an­zahl zu sehen. Nachteilig für die Realisierung dieses Konzepts wirkt sich hingegen die auf­wen­digere Fallunterscheidung aus.

4.4.2.3       Beschränkung der Lokalisierung bei Auflösung generischer Namen

Vollständig spezifizierte Namen sind in ihrem Gültigkeitsbereich eindeutig. Daher terminiert die Bearbeitung vollständig spezifizierter Namensanfragen, sobald genau eine Antwort vom zustän­digen Namensverwalter gegeben wurde. Demgegenüber liefern generische Namens­anfra­gen häufig eine variable Anzahl von passenden Namenseinträgen als Ergebnis, wobei nicht trivial zu entscheiden ist, wann eine Namensanfrage terminiert.

Da Namensanfragen häufig synchron und interaktiv im Benutzerdialog initiiert werden, ist ein wesentliches Entwurfskriterium für die Namensverwaltung eine möglichst kurze Antwortzeit. Um diese zu begrenzen, kommen folgende Maßnahmen in Betracht:

     temporäre Restriktionen

      Die Vorgabe eines Zeitlimits für die Beantwortung einer Namensanfrage läßt diese in jedem Fall terminieren, unabhängig davon, ob Ergebnisse geliefert wurden oder nicht. Auch bei Ausfällen im Verwalternetz kann so das Terminieren garantiert werden. Zeit­schranken wer­den dabei sowohl im initiierenden Namensverwalter als auch in den kontak­tierten Namens­verwaltern vorgegeben. So kann das Propagieren von Namens­anfra­gen an weitere Namensverwalter nach Ablauf einer vorgegebenen Zeitspanne unterbunden werden.

     Suchhorizonte

      Namen in der dynamischen globalen Namensverwaltung sind ortsunabhängig. Daher ist zunächst keine direkte Beschränkung der räumlichen Ausdehnung von Anfragen auf eine bestimmte Lokalität anhand des Namens möglich. Für den Anwender ist die Lokation eines Namenseintrags transparent. Dennoch besteht ein Zusammenhang zwischen Namen und der Lokation ihrer administrativen Namenseinträge, da diese syntaxgesteuert plaziert werden. Die Beschränkung eines Namens auf einen bestimmten Kontext hat daher immer auch eine räumliche Begrenzung der Lokalisie­rung zur Folge.

      Dieser Aspekt soll an einem Beispiel kurz erläutert werden: Enthält ein generischer Name „/a.b.a.?.a“ einen Platzhalter, so beschränkt sich die Lokalisierung auf den Kontext namens „/a.b.a“ und damit auf diejenigen Namensverwalter, die Namenseinträge für Namen in die­sem Kontext enthalten. Eine Kante des Namensraums wird dabei nur so weit verfolgt, wie eine Überein­stimmung festgestellt wird. Ein Platzhalter der Form ?<1, >[5] hingegen bewirkt, daß ein Pfad so lange verfolgt wird, bis das Ende des Pfades erreicht ist, oder der Pfad die Anfrage nicht mehr erfüllen kann.

·        physische Lokalisie­rungs­bereiche

      Die räum­liche Ausdehnung der Lokalisierung kann durch Vorgabe eines physischen Lokali­sie­rungs­bereichs eingegrenzt werden. Die dynamische globale Namensverwaltung unter­schei­det hierzu drei Bereiche der Lokalisierungsausdehnung:

   lokaler Namensverwalter: Die Lokalisierung bleibt auf den lokalen Namensverwalter beschränkt.

   Rechnerverbund: Die Lokalisierung wird nur im Rechnerverbund des initiierenden Namensverwalters an die vorhan­denen Namensverwalter propagiert.

   globaler Bereich: Alle im Verwalternetz vorhandenen Namensverwalter werden in die Lokalisierung involviert.

      Physische Suchhorizonte, wie sie beispielsweise im Namensdienst des DACNOS-Systems [Mattes, 91] Verwendung finden, sind in der dynamischen globalen Namens­verwaltung aufgrund der Ortsunabhängigkeit der Namen nicht realisierbar. Eine weitere Möglichkeit zur Einschränkung der Lokalisierung ist die Begrenzung der Suchtiefe in der Verwalter­hierar­chie.

     quantitative Restriktionen

      Ein wichtiges Kriterium zur Beschränkung der globalen Auflösung ist die Quantität der Namenseinträge, die als Resultat erwartet wird. Hierbei kann zwischen folgenden quanti­ta­tiven Vorgaben differenziert werden:

   genau ein Eintrag: Das Verwalternetz wird so lange durchsucht, bis genau ein Eintrag gefunden wurde, der der gegebenen Beschreibung des Namens entspricht.

   genau i Einträge: Die Namensauflösung liefert genau i Namenseinträge und terminiert bei Erreichen der vorgegebenen Anzahl.

   alle Einträge: Eine vollständige Erkundung erstreckt sich über alle relevanten Namensver­walter des Verwalternetzes, bis der gesamte spezifizierte Bereich durchsucht ist.

Quantitative Vorgaben bei der Lokalisierung generischer Namenseinträge werfen lokal keine Probleme auf. In einer verteilten Umgebung hingegen ist das Terminieren einer Anfrage nicht ohne weiteres feststellbar. Während bei der rekursiven oder iterativen Tiefensuche in der Ver­walterhierarchie relativ einfach zu entscheiden ist, ob alle relevanten Namens­verwalter kontak­tiert wurden oder die geforderte Anzahl von Einträgen geliefert haben, ist dies bei der parallelen Anfragebearbeitung nur unter einem erheblichen Aufwand von Kontroll­nachrichten zu realisie­ren. Jeder Namens­verwalter hat hier autonom zu entscheiden, ob die Gesamtzahl der gefor­der­ten Einträge erreicht ist oder nicht. Verfahren zur Entscheidung der Terminierung ver­teilter Algorithmen sind bekannt, erfordern jedoch einen hohen Aufwand und ein erhebliches Maß an Kontrollnachrichten (vgl. hierzu [Dykstra, 80] [Misra, 82] [Chandy, 85]).[AL17] 

4.4.3          Globale Verwaltung attributierter Namen

Die Verwaltung attributierter Namen in der dynamischen globalen Namensverwaltung weist Parallelen zur Registrierung von Synonymen und zur Auflösung generischer Namen auf. Attri­butierte Namen zer­fallen in orthogonale, hierarchische Teilnamen, die wie Synonyme separat im Namens­raum syntaxgesteuert plaziert werden. Partielle Namen eines attributierten Namens, die eine bestimmte Eigenschaft eines Objekts beschreiben, können wie generische Namen mehrere Objekte bezeichnen. Vollständig spezifizierte attributierte Namen hingegen identifizieren ein Objekt wie hierarchische Namen eindeutig.

4.4.3.1       Registrierung attributierter Namen

Die dynamische globale Namensverwaltung plaziert hierarchische Namen syntaxgesteuert im Namensraum und generiert bei Bedarf neue Kontexte. Die in den vorangegangenen Abschnitten vorgestellten Verfahren zur globalen Registrierung von Namen lassen sich auf attributierte Namen ausdehnen, wie im folgenden dargestellt wird.

Hierarchische Strukturen können nur in der Art effizient durchsucht werden, in der sie orga­nisiert sind. Sie eignen sich daher nur für die Organisation von Informationen, die entsprechend hierarchisch strukturiert sind. Um eine effiziente globale Lokalisierung von Attributen in hierar­chischen Namens­räumen zu ermöglichen, bricht die dynamische globale Namensverwal­tung daher bei der Registrierung attributierte Namen in hierarchische Teilnamen auf, die zueinander orthogonale Attribute benennen. Orthogonale Attribute mit ihren Werten bilden separate hierar­chische Teilbäume im globalen hierarchischen Namens­raum, die unabhängig voneinander auf die Verwalterhierarchie abge­bildet werden. Der Namensraum wird somit flacher und kann effi­zienter nach Attributen durch­sucht werden (vgl. Kapitel 2). Teilnamen bezeichnen jeweils Tei­lordnungen von Attributen, deren Reihenfolge nicht vertauschbar ist. Attribute selbst setzen sich aus Attribut­typ und Attributwert zusammen:

Wie in Kapitel 2 bereits diskutiert, lassen sich implizite und explizite Attribute unterscheiden. Attributtypen werden stets im Namensraum repräsentiert, während Attributwerte nur im Namens­raum abgelegt werden können, wenn sie einen diskreten und beschränkten Wertebe­reich aufweisen. Attributwerte mit kontinuierlichem oder variablem Wertebereich müssen als implizite Attribute in den Namenseinträgen repräsentiert werden, da sie keine eindeutige Ver­gleichs­operationen zulassen und zudem ständigen Veränderungen unterworfen sind, die sich auf den Namensraum auswirken würden. Häufig werden implizite Attributwerte auch erst zum Zeitpunkt der Namensauflösung bestimmt.

            explizite Attributwerte:                     (Form.rund) (Farbe.rot)

            implizite Attributwerte:                     (Größe:175,6) (Gewicht:67,4)[AL18] 

Die Registrierung attributierter Namen verläuft ähnlich dem Registrieren synonymer Namen (vgl. Abschnitt 4.4.1). Unterschiede bestehen jedoch darin, daß orthogonale Teilnamen, die als Synonyme aufgefaßt werden können, nicht eindeutig sein müssen. Zur Registrierung wird zunächst der attributierte Name in Teilnamen zerlegt, die jeweils orthogonale Attribute bezeich­nen. Für alle im Namensraum repräsentierten Attribute eines Objekts werden dann separat Namenseinträge im Verwalternetz syntaxgesteuert plaziert. Zusätzlich werden analog zur Regi­strierung von Synonymen im primären Namens­verwalter alle orthogonalen Attribute mit abge­legt.

Abbildung 4.30: Repräsentation expliziter und impliziter Attribute im Namensraum

Namenseinträge von Objekten, deren Eigenschaften im Namens­raum repräsentiert werden, sind relativ einfach zu lokalisieren. Wesentlich aufwendiger dagegen gestaltet sich die Lokalisierung von Objekten anhand von impliziten Attributen, deren Attributwerte nicht im Namensraum, sondern im individuellen Namenseintrag enthalten sind. Um Namenseinträge mit impliziten Attributwerten zu lokalisieren, legt die dynamische globale Namensverwaltung die zugehörigen Attributtypen stets im Namensraum ab (vgl. Abbildung 4.30).

Vollständig spezifizierte attributierte Namen identifizieren ein Objekt eindeu­tig. Ist die Eindeu­tigkeit eines attributierten Namens in einem für einen Teilnamen zuständigen Namens­verwalter nicht gegeben, so ist diese auch in den Namens­verwal­tern der übrigen partiellen Namen ver­letzt. Die Registrierung wird in allen Namensverwaltern abgebrochen, ohne daß eine Abstim­­mung der einzelnen Namensverwal­ter notwendig wäre.

Werden zusätzliche Attribute zu einem Objekt nachträglich registriert, so geschieht dies in der Regel im primären Namens­verwalter, in dem auch die bisherigen Attribute abgelegt wurden. Wird ein Attribut für ein Objekt in einem anderen Namensverwalter registriert, so wurde der Objekt-Bezeichner dieses Attributs nur über einen Namen ermittelt. In diesem Fall werden jedoch alle Navigationsinformationen lokal vorgehalten, so daß der primäre Namensverwalter lokalisiert und das neue Attribut auch dort abgelegt werden kann (vgl. Registrierung von Synonymen in Abschnitt 4.4.1).

4.4.3.2       Auflösung attributierter Namensanfragen

Attributierte Anfragen, die an Namensverwaltungen gestellt werden, lassen sich in folgende Kategorien einordnen:

1.   Identifikation von Objekten anhand spezifizierter Eigenschaften: Anfragen sind von der Form „Welche Objekte besitzen die Eigenschaft x?“ und liefern die zugehörigen Objekt-Bezeichner.

2.   Ermittlung der Eigenschaften eines bestimmten Objekts: Anfragen sind von der Form „Welche Eigenschaften hat ein bestimmtes Objekt?“. Die Namensverwaltung liefert eine Folge von Attributen mit den zugehörigen Werten.

3.   Verifizierung von Eigenschaften eines gegebenen Objekts: Anfragen sind von der Form „Hat ein gegebenes Objekt eine bestimmte Eigenschaft?“. Als Resultat liefert die Namens­ver­waltung einen boolschen Wert.

Für die Identifizierung eines Objekts übergibt der Benutzer der Namens­verwaltung eine Be­schrei­­­­bung der gewünschten Eigenschaften in Form eines attributierten Namens. Diese Beschrei­bung muß jedoch nicht notwendigerweise eindeutig sein. Insbesondere können Teil­namen, die eine bestimmte Eigenschaft eines Objekts beschreiben, an eine Menge von Objekten gebunden sein. Erst die vollständige Spezifizierung der Eigenschaften eines Objekts in Form eines attribu­tierten Namens identifiziert dieses eindeutig.

Bei der Identifizierung von Objekten anhand attributierter Namen ist die Attributreihenfolge signifikant. Die Attribute innerhalb eines partiellen Namens bilden eine Teilordung, weshalb dessen Auflösung streng sequentiell erfolgt. Einzelne Teilordungen orthogonaler Attribute hin­gegen repräsentieren jeweils unabhängige Eigen­schaften eines Objekts und können daher in der Reihenfolge vertauscht werden (z.B. (x.y.z)(a.b.c.d) <-> (a.b.c.d)(x.y.z)). Die Lokalisie­rung der zugehörigen Namens­ein­träge kann somit parallel erfolgen. Dieses Vorge­hen entspricht der Auflösung generi­scher Namen (vgl. Abbildung 4.29).

[AL19] Es stellt sich nun die Frage, wie global Objekte mit logisch verknüpften Eigenschaften ermittelt werden, wenn einem Objekt in Namensverwalter k1 die Eigen­schaft a zugeordnet ist und in Namensverwalter k2 die Eigen­schaft b? Für die Lösung dieses Problems gibt es zwei mögliche Ansätze:

1.    Verknüpfungen von Attributen können stets im primären Namensverwalter behandelt wer­den. Falls ein Namensverwalter einen Namenseintrag enthält, der eine bestimmte Eigen­schaft eines Objekts repräsentiert, so sind in diesem Namensverwalter auch Namens­einträge für alle übrigen Attribute registriert. [AL20] 

2.    Jeder Namensverwalter, der eine attributierte Anfrage teilweise erfüllen kann, da er bestimm­te Attribute verwaltet, liefert sein Teilergebnis. Der initiierende Namensverwalter verknüpft dann die Menge der zurück­gelie­ferten Namenseinträge entsprechend der gestellten Anfrage zur Resultat­menge.[AL21] 

Erste Methode ist bei der Auflösung attributierter Namen vorzuziehen, da sie weniger Antwort­nachrichten erzeugt. Allerdings muß eine Anfrage dabei stets den gesamten attributierten Namen enthalten, da andernfalls im primären Namensverwalter nicht entschieden werden kann, ob die vorhandenen Namenseinträge die Anfrage ganz oder nur teilweise erfüllen.

 

Die globale Verwaltung synonymer und attributierter Namen sowie die Behandlung generischer Namensanfragen werden in der dynamischen globalen Namensverwal­tung durch Verfahren abgedeckt, die sich aus den grundle­genden globalen Namensoperationen herleiten.


4.5         Beurteilung der Plazierung von Namen im Verwalternetz

Das vorangegangene Kapitel hat gezeigt, wie hierarchische, synonyme und attributierte Namen unabhängig von physika­lischen oder organisa­torischen Strukturen selbständig und ohne Admi­nistration in globalen Namensräumen verwaltet werden.

Durch die hierarchi­sche Organisation des Namensraums und der Namens­verwalter kann die Zahl der zur Namensauflösung erforderlichen Navigationsschritte reduziert werden, indem Namenseinträge mit Navigationsinformation syntaxgesteuert im Verwalternetz plaziert werden. Die maximale Hierarchiestufe, auf der Namenseinträge in der Verwalterhierarchie positioniert werden, entspricht dabei stets der Anzahl der Namensteile. Die zur globalen Namensauflösung erforderliche Navigationsinformation wird bei der Plazierung der Namenseinträge selbständig erzeugt. Die Bildung von Kontexten reduziert ferner die in den Namensverwaltern zur Lokali­sierung primärer Namenseinträge notwen­dige Navigations­information. Die syntax­gesteuerte Plazierung von Namen verhindert ferner, daß übergeordnete Kontexte in unteren Hierarchie­stufen entstehen und umgekehrt.

Trotz der zahlreichen Vorzüge der syntaxgesteuerten Plazierung von Namenseinträgen und der Bildung von Kontexten läßt die dynamische Verwaltung globaler Namen auch einige Nach­teile erken­nen, die sich auf die Effizienz und Ausfallsicherheit der Namensverwaltung auswirken:

1.    Der Registrierungsort des ersten Namens ist ausschlaggebend für die Plazierung weiterer ähnlicher Namen. Somit besteht das Problem, daß administrative Namenseinträge ungünstig im Verwal­ter­netz plaziert werden, falls ähnliche Namen später vorwiegend in einem anderen Teil des Verwalternetzes registriert werden. Hierdurch entsteht eine gewisse Ineffizienz und ein erhöhter Nachrichtenaufwand bei der Registrierung von Namens­ein­trägen.

2.    Die Lokalisierung von Namen ist ineffizient, falls Namen in Teilen des Verwalter­netzes angefragt werden, in denen die zugehöri­gen administrativen Namenseinträge nicht plaziert sind.

3.    Befindet sich der administrative Namensverwalter eines Namens in einem anderen Bereich des Verwalter­netzes als der primäre Namensverwalter, so kann es vorkommen, daß bei Netz­werk­partitionierung der globale Name nicht aufgelöst werden kann, obwohl der primäre Namenseintrag und das Objekt selbst erreichbar sind.

Das nachfolgende Kapitel diskutiert diese Probleme und zeigt Lösungs­möglich­keiten auf. Durch Verfahren zur Replikation von Namenseinträgen wird der Nachrichtenaufwand bei der Lokali­sierung und der Registrierung erheblich reduziert. Gegenstand der Betrachtungen des nächsten Kapitels sind zudem Maßnahmen zur Aufrechterhaltung der Funktions­fähigkeit der Namens­verwaltung bei Ausfall einzelner Namensver­walter und bei Partitionie­rung des Verwal­ternetzes. Diskutiert werden auch Lösungen für Konsistenzprobleme, die sich aus der Replikation von Namenseinträgen und aus Ausfällen ergeben.

 

Die dynamische globale Namensverwaltung ermöglicht die selbständige Verwaltung eines glo­balen Namens­raums. Aus der Dynamik der Verfahren erwachsen­ jedoch Effizienz- und Konsi­stenzprobleme, die durch Maßnahmen zur Replikation und Konsis­tenzer­haltung kompen­siert werden müssen.


 

 



[1]       2n, wobei n der Anzahl der kontaktierten Namensverwalter entspricht.

[2]       Die Anzahl der notwendigen Nachrichten beträgt hierbei 2n, wobei n der Anzahl der kontaktierten Namensverwalter entspricht.

[3]       Die Ziffern in Abbildung 4.4, Abbildung 4.5 und Abbildung 4.6 kennzeichnen die Abfolge der Nachrichten bei der Auflösung von Namen.

[4]       Vgl. hierzu die Beziehungen zwischen Namen in Abschnitt 4.1.3.1.

[5]       Vergleiche Notation generischer Namen in Kapitel 2.


 [AL1]Bezug zur Netzwerktopologie

 [AL2]Automatische Konfiguration?

 [AL3]Ref

 [AL4]Adaptive Wahl des Verfahrens in Abhängigkeit von der Paketlaufzeit und Toplologie

 [AL5]Paßt die Reihenfolge von globaler Auflösung und Broadcast??

 [AL6]   location-independent names (Grapevine)

             authority-dependent names (V-System)

             tree-structured object names (LOCUS)

 

Nachteile der Zuordnung durch syntaktische Merkmale:

             Wechsel des verwaltenden Rechners

             beschränkt das Wachstum das Namensraums

 

 [AL7]structure-free name distribution: Flexibilität in der Auswahl der Verwaltungs­einheit

 

 [AL8]Gehört das hierher??

 [AL9]Was passiert, wenn ein Kontext durch Synonyme oder Links mehrere Namen trägt??

 [AL10]Zugriffsrechte auf namen

Zähler für Einträge pro Kontext?

Entfernen des originamen Namenseintrags

Wann kann ich mit dem Löschen stoppen?

Die Namensverwalter müssen übereinstimmen.

 [AL11]Was ist mit den Synonymen für globale Kontexte??

 

 [AL12]Wie werden Synonyme abgearbeitet?

Wo wird die Suche beginnen, aktueller Kontext oder Wurzel? OID+Restname oder ganzer Name

Register(Syn, Name)

Register(Syn, OID)

 [AL13]Bezug zu einem Beispiel??

 [AL14]Konsistenz

Parallelisierung

 [AL15]Probleme beim Einfügen und Löschen bestehen nicht, da lokale Operationen immer als Transaktionen ablaufen.

 [AL16]Probleme bei der Lokation, Zusammenfügen

Verschiedene Prozesse treffen sich beim Ergebnis

Verschiedene Prozesse liefern das Ergebnis an den Namensverwalter zurück, der die Schnittmenge bildet

Jeder Prozeß enthält die vollständige Beschreibung der Suchanfrage und liefert nur Ergebnisse, die dieser Angabe entsprechen.

 

Nachteil Ermitteln der Kontexte

Kontexte als Blätter ergeben ein Weglenkungsproblem

 

Problem: gleiche Objekt und Kontextnummern

 

Kontexte an den Blättern

 

Wie werden Kontext verteilt zusammengefaßt?

 

Wie erhalten solche Kontexte eine eigene ID?

 

 

 

 

 [AL17]Eigener Algorithmus

 [AL18]Bezug zu Kapitel 4?!

 [AL19]Wie sieht das genauer aus??

 [AL20]neben Objekt- und Kontext- und Pfadeinträgen auch attributierte Einträge

mit * registrieren oder Auflösen?!

Interpretieren der attributierten Namen

 

Wie finde ich eine Eigenschaft?

Wie prüfe ich eine Eigenschaft?

 

Reicht es alle Eigenschaften nur im primären Namensverwalter zu registrieren?

 

 [AL21]Was passiert, wenn die Eigenschaften nicht gleichzeitig registriert werden??