-
Diese
Erfindung bezieht sich auf ein Verfahren zum Verteilen von Indexdaten
unter einer Mehrzahl vernetzter Knoten sowie auf ein System zum Verwalten
eines Index, der Indexdateien umfaßt, die über die Knoten eines Computernetzwerks
verteilt sind.
-
Computernetzwerke
können
sich ständig
erhöhende
Datenmengen speichern. Um diese Daten effektiv zu verwalten, benutzen
diese Netzwerke verschiedene Indexierschemata, um die gespeicherten Daten
in einer Weise zu repräsentieren,
die die Informationssuche und -wiedergewinnung erleichtert. Gegenwärtig verfügbare Verwaltungsschemata
basieren auf einem Zentralrechner zum Koordinieren der Verteilung
von Indizes und Daten unter den Computern des Netzwerks. Die Daten
und Indizes sind üblicherweise
unter einem Netzwerk von Server-Computern verteilt, auf welche von
anderen Computern, z. B. Personalcomputern, an dem Netzwerk zugegriffen werden
kann.
-
Ein
Nachteil dieser herkömmlichen,
zentral koordinierten Verwaltungsschemata besteht darin, daß sie nicht
gut vergrößerbar (skalierbar)
sind. Das heißt,
sie können
nicht soweit erweitert werden, daß sie die sich stets erhöhenden an
dem Computernetzwerk verfügbaren
Datenmengen ohne beträchtliche Modifikationen
der Art und Weise, in der die Daten und Indizes gehandhabt werden,
aufnehmen können.
Der von dem Zentralcomputer herrührende Mehraufwand
zur Verfolgung und Koordinierung der verteilten Informationen behindert
die Effizienz, mit welcher diese Systeme arbeiten. Dieses Problem
tritt in den Intranets auf, die von Organisationen verwendet werden,
um ihre Daten zu speichern, und sie wird noch verschlimmert, wenn
Daten aus dem viel größeren Internet
von diesem Intranets gespeichert und verfolgt werden.
-
Ein
weiterer Nachteil dieser verteilten Systeme besteht darin, daß nur relativ
leistungsfähige
Server-Computer verwendet werden, um Indizes und Daten zu speichern.
Es werden Server verwendet, weil sie mehr Informationen speichern
können als Personalcomputer
und weil dies die Anzahl der Computer minimiert, die der Verwaltungscomputer
koordinieren muß.
Jedoch ignoriert die Beschränkung
der verteilten Informationen auf Server die beträchtliche Verarbeitungs- und
Speicherleistung, die auf den vielen kleineren Computern vorhanden
ist, die die Mehrheit der Knoten eines Netzwerks bilden.
-
Es
sind Agenten verfügbar,
um das Internet nach Daten, die durch einen Benutzer spezifiziert wurden,
zu durchsuchen. Jedoch lokalisieren diese Agenten bloß die spezifizierten
Daten und gewinnen sie aus den Netzwerk-Sites. Sie sind nicht so
aufgebaut, daß sie
Daten und Indexdateien verwalten, indexieren oder verteilen können.
-
Aus
dem US-Patent 5,337,360 A ist ein "traveling program" bekannt, welches sich in Abhängigkeit
von Benutzereingaben durch ein Netzwerk bewegen und dabei bestimmte
Funktionen ausführen kann.
Der Artikel von T. Johnson u.a., "Distributed Indices for Accessing Distributed
Data", Twelfth IEEE Symposium
on Mass Storage Systems, 26.–29.
April 1993, Proceedings, S. 199–207,
befaßt
sich mit verteilten Indizes zum Zugreifen auf verteilte Daten. Die Indexdaten
sind auf mehrere Knoten/Speichereinrichtungen verteilt. Der Artikel
befaßt
sich auch mit dem Replizieren von Indexdaten und dem dynamischen
Umverteilen von Indexdaten.
-
Aufgabe
der Erfindung ist die Schaffung eines Verfahrens und Systems zum
Verwalten von Indexdaten, welches skalierbar ist und nicht auf hoch leistungsfähige zentrale
Server-Computer
angewiesen ist.
-
Diese
Aufgabe wird erfindungsgemäß durch ein
Verfahren mit den Merkmalen des Anspruchs 1 bzw. ein System mit
den Merkmalen des Anspruchs 7 gelöst.
-
Die
vorliegende Erfindung verwendet autonome Agenten, um die Verteilung
von Daten und Indexinformationen unter den Knoten eines Computernetzwerks
zu verwalten, was das Erfordernis einer zentralen Koordination beseitigt.
Gemäß der vorliegenden
Erfindung enthält
jeder Netzwerkknoten einen Datenspeicher und eine Agentenschnittstelle zum
Ausführen
der autonomen Agenten. Die autonomen Agenten bewegen sich unabhängig voneinander durch
die Netzwerkknoten, wobei sie die Agentenschnittstelle an jedem
von ihnen besuchten Knoten verwenden, um ihre Funktionen auszuführen. Der Agent
ist ein kodiertes Script, dessen Funktion darin besteht, Indexblöcke zu und
von den Datenspeichern der Netzwerkknoten in Übereinstimmung mit einem Übertragungskriterium
zu übertragen.
Das Übertragungskriterium
ist einseitig derart vorbelastet (biased), daß Indexblöcke einer Art auf einem Netzwerkknoten
angehäuft
werden, um eine Indexdatei für
diese Art zu bilden.
-
Vorteilhafte
und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Die
Erfindung kann unter Bezugnahme auf die folgende detaillierte Beschreibung
und die begleitenden Zeichnungen verstanden werden.
-
1 ist
eine Blockdarstellung eines Computerknotens, der die zum Implementieren
der vorliegenden Erfindung erforderlichen Elemente enthält.
-
2 ist
eine Blockdarstellung eines Computernetzwerks zum Implementieren
des Daten- und Index-Verteilungssystems gemäß der vorliegenden Erfindung.
-
3 ist
eine schematische Darstellung einer verteilten Index- und Datenbank,
die gemäß der vorliegenden
Erfindung verwaltet wird.
-
4 ist
ein Ablaufdiagramm, das ein Ausführungsbeispiel
eines Verfahrens zeigt, das durch einen autonomen Indexagenten implementiert
wird, um Indexdaten auf einem Computernetzwerk gemäß der vorliegenden
Erfindung zu verwalten.
-
5 ist
ein Ablaufdiagramm, das ein Ausführungsbeispiel
eines Verfahrens zeigt, das durch einen autonomen Abfrageagenten
zum Identifizieren von Dokumenten in Abhängigkeit von einer Abfrage gemäß der vorliegenden
Erfindung implementiert wird.
-
6 ist
ein Ablaufdiagramm, das ein Ausführungsbeispiel
eines Verfahrens zeigt, das durch einen autonomen Balance-Agenten
zum Regulieren der Größe von Indexdateien
gemäß der vorliegenden Erfindung
implementiert wird.
-
7 ist
ein Ablaufdiagramm, das ein Ausführungsbeispiel
eines Verfahrens zeigt, das durch einen autonomen Replizieragenten
zum Replizieren von Indexdateien gemäß der vorliegenden Erfindung implementiert
wird.
-
Die
vorliegende Erfindung verwendet die unkoordinierten Aktivitäten autonomer
Agenten, um ein dezentralisiertes skalierbares System zum Verwalten von
Daten- und Indexinformationen zur Verfügung zu stellen, das unter
den Knoten eines Netzwerks verteilt ist. Das Auftauchen eines scheinbar
koordinierten Ergebnisses (Index/Daten-Management) aus den unkoordinierten
Aktivitäten
unabhängiger
Agenten wird als Stigmergie bezeichnet. Viele Beispiele stigmergischer
Aktivität
treten in der Natur auf. Ein derartiges Beispiel ist das Entstehen
einer anscheinend koordinierten Sammelaktivität aus den unabhängigen Aktionen
der Ameisen einer Kolonie, wenn jede Ameise auf die Bedingungen
in ihrer unmittelbaren Nähe
auf eine einfache, vorhersagbare Weise reagiert.
-
Zum
Zwecke dieser Erörterung
bezieht sich der Begriff "Agent" auf ein ausführbares
Script-Programm, das spezielle Schnittstellen verwendet, um sich
zwischen den Computerumgebungen zu bewegen und um eine spezielle
Funktion in der Umgebung, die es besucht, auszuführen. "Agent" kann sich darüber hinaus auf Nachrichtenpakete
beziehen, die Schnittstellen verwenden, um sich zwischen den Computerumgebungen
zu bewegen, wobei jede Schnittstelle mehrere Funktionen implementiert.
In diesem Fall werden Daten in dem Agenten-Nachrichtenpaket zusammen
mit einer Anzeige, welche Funktion auf die Daten angewendet werden
soll, übertragen.
Die Rolle des ausführbaren
Scripts wird somit von der in dem Agenten-Nachrichtenpaket angezeigten
Schnittstellenfunktion bedient.
-
Bei
der vorliegenden Erfindung sind die berechnenden Umgebungen die
Knoten des Computernetzwerks, auf welchem die Daten verteilt werden sollen,
und die speziellen Schnittstellen sind Agentenschnittstellen, die
diesen Netzwerkknoten zugeordnet sind. Die Netzwerkknoten können spezialisierte
Server zum Behandeln einer dezentralen Verwaltungsfunktion und Mehrzweckcomputer,
wie beispielsweise Personalcomputer (PCs) und Work stations, umfassen.
Bei einem Ausführungsbeispiel
der Erfindung können
die autonomen Agenten als Java-Applets implementiert sein, wobei
in diesem Falle die Agentenschnittstelle eine Java-Laufzeitumgebung
ist.
-
Ein
Merkmal der vorliegenden Erfindung ist die Anhäufung von Indexblöcken zu
Indexdateien durch autonome Agenten. Die von Agenten, die diese Indexierfunktion
ausführen
(Indexagenten) ausgeführten
Scripts sind identisch. Die entstehende Koordinierung folgt aus
dem Kriterium, das die Übertragung
von Indexblöcken
zwischen jedem Indexagenten und den von ihm besuchten Knoten lenkt.
Wenn dieses Kriterium geeignet ausgewählt ist, besteht der Nettoeffekt
der unkoordinierten Aktivitäten
der autonomen Agenten darin, daß Indexblöcke der
gleichen Art in einer Indexdatei für die Art angehäuft werden. Die
Indexdatei ist typischerweise über
eine begrenzte Anzahl von Netzwerkknoten verteilt, wobei die tatsächliche
Anzahl von der Größe der Datei
und dem Grad der in das System eingebauten Redundanz abhängig ist.
Somit ist das Erfordernis eines zentralen koordinierenden Computers
zum Identifizieren, Anhäufen
und Verteilen der Indexdaten beseitigt. Da die Größe des sich
ergebenden Systems nicht länger durch
die Last des Mehraufwands bei dem Zentralcomputer eingeschränkt ist,
ist das System skalierbar bzw. beliebig vergrößerbar.
-
Im
Rahmen dieser Erörterung
bezieht sich "Index" auf eine Darstellung
eines Dokumentensatzes, die Datensätze einer Datenbank oder andere
Informationen, die zur Datenwiedergewinnung organisiert werden können. Bei
einer Datenbankanwendung beispielsweise ist der Index die Sammlung
der Indexfelder in der Datenbank und bei einem elektronischen Dokumentensatz
weist der Index den Satz von Begriffen auf, die zum Darstellen des
Inhalts des Dokumentensatzes verwendet werden. In dem letztgenannten
Fall kann beispielsweise der Index-Begriff aus dem Dokument selbst
abgeleitet, aus einem Lexikon ausgewählt oder durch ein Expertensystem
zur Verfügung
gestellt werden.
-
Der
Begriff "Indexblock" bezieht sich auf
Daten, die den Wert eines Indexfeldes für ein bestimmtes Dokument oder
einen bestimmten Datensatz identifizieren. Alternativ kann ein In dexblock
die Werte mehrerer Indexfelder für
ein Dokument oder einen Datensatz identifizieren, wenn die Indexfelder
aufeinander bezogen sind. Indexblöcke werden aus einem Dokument
oder Datensatz aus ein Indexierschema abgeleitet. Im Falle eines
Dokumentensatzes kann der Wert eines Indexblocks für ein Dokument
eine 0 oder eine 1 sein, was davon abhängt, ob das Dokument den Indexbegriff,
der durch das Feld repräsentiert
wird, enthält.
Im Falle eines Satzes von Datensätzen
ist der Wert des Indexblocks der Wert des Indexfeldes für einen
bestimmten Datensatz. In beiden Fällen bestimmt ein Indexfeld
oder eine Anzahl aufeinander bezogener Indexfelder für das spezielle
Dokument oder für
den speziellen Datensatz die Art des zugehörigen Indexblocks. Indexblöcke einer
gegebenen Art werden in Indexdateien für die Art angehäuft oder
angesammelt. In Abhängigkeit
von ihrer Größe kann
eine Indexdatei auf einem Einzelknoten angeordnet oder über verschiedene
Knoten verteilt sein, um die Last für irgendeinen Computer zu minimieren. Wie
oben erörtert,
werden Indexdateien typischerweise als Sicherung gegen Verluste
von Netzwerkknoten repliziert.
-
Zusätzlich zu
Dokumentensätzen
und Datenbankdatensätzen
können
auch andere Arten von Informationen in Indexblöcken zur Verarbeitung durch
die vorliegende Erfindung analysiert werden, z. B. Indexfelder,
Wertepaare. In der folgenden Erörterung
wird der Begriff "Dokument" verwendet, um Dokumentensätze, Datenbankdatensätze und
diese anderen Arten von indexierbaren Informationen zu bezeichnen.
Die verschiedenen Indexierschemata, die zur Verarbeitung von Dokumenten
zu Indexblöcken geeignet
sind, sind gut bekannt und werden hier nicht detaillierter erörtert.
-
Wie
oben angemerkt, bewegen sich Indexagenten zwischen den Netzwerkknoten,
identifizieren Indexblöcke
an diesen Knoten und übertragen
Indexblöcke
zu anderen Netzwerkknoten in Übereinstimmung
mit dem benutzten Übertragungskriterium. Der
Nutzeffekt dieser Aktionen besteht darin, daß Indexblöcke einer gegebenen Art in
Indexdateien bei einer relativ kleinen Anzahl von Netzwerkknoten
angehäuft
werden, vorausgesetzt, daß Übertragungskriterium
ist geeignet ausgewählt.
Gemäß einem
Satz von Kriterien legt ein einen Indexblock tragender Indexagent
ihn an einem Knoten mit einer Wahrscheinlichkeit ab, die proportional
der Anzahl der Indexblöcke
der gleichen Art an diesem Knoten ist. Der Indexagent gewinnt einen
Indexdatenblock aus dem Knoten mit einer Wahrscheinlichkeit, die
umgekehrt proportional zur Anzahl von Indexdatenblöcken der
gleichen Art bei diesem Knoten ist.
-
Die
vorliegende Erfindung kann autonome Agenten benutzen, um zusätzlich zu
der oben beschriebenen Indexfunktion weitere Funktionen durchzuführen. Beispielsweise
kann ein Balance-Agent benutzt
werden, um zu sichern, daß der
Index bei einem beliebigen Knoten nicht zu groß wird. Bei einem Ausführungsbeispiel
der Erfindung bestimmt jeder Balance-Agent die Anzahl von Einträgen (Indexblöcken) in
der Indexdatei, die bei jedem von ihm besuchten Knoten angehäuft sind.
Wenn die Anzahl einen Maximalwert überschreitet, teilt der Balance-Agent
die Indexdatei in zwei Teile auf und überträgt eine der partiellen Indexdateien
auf einen anderen Knoten.
-
In ähnlicher
Weise können
Replikationsagenten verwendet werden, um Indexdateien bei mehrerer
Knoten des Netzwerks zu replizieren, um die Datenbank robuster gegenüber dem
Verlust von Knoten zu machen. Dies ist insbesondere dann wichtig,
wenn beispielsweise die Netzwerkknoten Personalcomputer sind, da
diese abgeschaltet werden können,
wenn sie nicht in Benutzung sind. Abfrageagenten können benutzt
werden, um Daten in Erwiderung einer Abfrage aus den Indexdateien
zu gewinnen und um die wiedergewonnenen Daten zu dem Knoten zurückzugeben,
von welchem die Abfrage herrührte.
-
Da
die vorliegende Erfindung keinen zentralen, koordinierenden Computer
benutzt, bestimmt jeder Agent, welchen Knoten er als nächsten besucht. Das
System kann so implementiert werden, daß jeder Agent sein nächstes Ziel
auf eine zufällige
Weise auswählt.
Dies ist jedoch nicht sehr effektiv, insbesondere wenn die Anzahl
der Knoten an dem Netzwerk sich erhöht. Ein bevorzugtes Ausführungsbeispiel
der vorliegenden Erfindung nimmt Richtungs- und Zeitinformationen
aus den besuchenden Agenten in die Agentenschnittstelle jedes Knotens
auf. Diese Informationen geben Hinweise an einen Agenten, der einen
Knoten besucht, darüber,
welcher Knoten als nächstes
besucht werden kann, und wie lange es her ist, daß der Agent
zuletzt den aktuellen Knoten besucht hat. Die gegebenen Hinweise
werden durch den Zustand des Agenten bei dem Knoten bestimmt. Der
Zustand eines Agenten wird zum Teil durch die Funktion des Agenten
bestimmt und davon, ob der Agent Indexdaten (Block/Datei/Dateiabschnitt)
trägt. Wenn
der Agent Indexdaten trägt,
hängt der
Zustand des Agenten darüber
hinaus von der Art des von ihm getragenen Indexblocks ab. Dieses
Merkmal wird unten detaillierter erörtert.
-
Es
wird jetzt auf 1 Bezug genommen, in der eine
Blockdarstellung eines Computerknotens 100 gezeigt ist,
der als Netzwerkknoten der vorliegenden Erfindung fungieren kann.
Der Knoten 100 weist eine Agentenschnittstelle 110 auf,
die mit einem Datenspeicher 130 gekoppelt ist. Zu Zwecken
der Veranschaulichung ist der Datenspeicher 130 als einer
gezeigt, der eine Indexdatei 140, Indexblöcke 142 und
Daten 144 enthält.
Grundsätzlich
kann ein Knoten sämtliche,
einige oder keinen dieser unterschiedlichen Datentypen enthalten.
Beispielsweise ist es ein Zweck der vorliegenden Erfindung, die
Indexblöcke 142 in
Indexdateien 140 anzuhäufen,
und es braucht nicht für
jeden Knoten des Netzwerks erforderlich zu sein, eine Indexdatei 140 in
ihrem Datenspeicher zu enthalten. In ähnlicher Weise können ausgewählte Knoten,
z. B. Server-Knoten, so markiert sein, daß sie Dokumentendaten speichern
sollen.
-
Der
Knoten 100 ist darüber
hinaus mit vier autonomen Agenten 122, 124, 126, 128 (kollektiv
als Agenten 120) gezeigt, die in einer Agentenschnittstelle 110 ausgeführt werden.
Vier Agenten 120 sind zur Veranschaulichung gezeigt. Die
vorliegende Erfindung erfordert nicht, daß zu einer vorgegebenen Zeit
irgendeiner oder sämtliche
dieser Agenten 120 in dem Knoten 100 vorhanden
sind. Autonome Agenten 120 umfassen einen Indexagenten 122,
einen Balance-Agenten 124, einen Abfrageagenten 126 und
einen Replikationsagenten 128.
-
Die
Agentenschnittstelle 110 schafft eine Laufzeitumgebung
für die
Agenten 120, welche sie als Nachrichtenpakete über ei nen
Netzwerkkommunikationskanal 150 empfängt. Für diesen Zwecke enthält die Agentenschnittstelle 110 ein
Anwendungsprogrammschnittstellen(API)-Paket 116, welches
dem Agenten 120 einen Zugriff auf verschiedene Ressourcen
des Knotens 100 ermöglicht.
Diese Ressourcen umfassen CPU-Zeit, Datenspeicher 130,
Speicherplätze 112, 114 und
den Netzwerkkommunikationskanal 150. Die Agenten 122, 124, 126 verwenden
Ressourcen, auf die über
das API-Paket 116 zugegriffen wird, um die von ihnen kodierten Funktionen
durchzuführen,
z. B. das Anhäufen
von Indexblöcken,
das Ausbalancieren der Größe der Indexdateien
bzw. das Bedienen von Abfragen. Bei einem Ausführungsbeispiel der Erfindung
ist die Agentenschnittstelle 110 eine Java-Laufzeitumgebung,
die durch die Pakete 116 erweitert worden ist, um Agenten,
d. h. Java-Applets, zu unterstützen,
die die verschiedenen hier beschriebenen Funktionen haben.
-
Die
Speicherplätze 112, 114 speichern
Richtungs- bzw. Zeitinformationen zur Verwendung durch die Agenten 120 bei
der Bestimmung ihrer Aktionen am Knoten 100. Bei einem
Ausführungsbeispiel
der Erfindung umfassen die Richtungsinformationen Zeiger auf mit
dem Knoten 100 verbundene Netzwerkknoten, bei denen es
wahrscheinlich ist, daß sie
einen Pfad zu einem Knoten zur Verfügung stellen, der eine Indexdatei
eines bestimmten Typs hält.
Diese Zeiger funktionieren als für
den Zustand eines Agenten 120 spezifische Hinweise darauf,
bei welchen Verbindungen es wahrscheinlicher ist, daß diese dem
Agenten den Abschluß seiner
Funktion ermöglichen.
Beispielsweise kann die Verbindung vom Knoten 100, bei
der es am wahrscheinlichsten ist, daß sie zu dem Netzwerkknoten
führt,
bei welchem Indexblöcke
einer gegebenen Art angesammelt werden, identifiziert und erneut
verstärkt
werden, indem die Verbindungen verfolgt werden, die von wiedergewonnene
Indexblöcke
der spezifizierten Art tragenden Abfrageagenten 124 zum
Knoten 100 verfolgt wurden. Hinweise können darüber hinaus erneut geltend gemacht
werden, indem identifiziert wird, welche mit dem Knoten 100 verbundenen
Netzwerkknoten von Indexagenten 122 genommen wurden, die
die spezifizierte Indexblockart trugen.
-
Zeitinformationen 114 in
Form von zeitlich abnehmenden Markern, die von verschiedenen Agenten 120,
die den Knoten 100 besucht haben, hinterlassen wurden,
können
ebenfalls nützliche
Informationen denjenigen Agenten 120 zur Verfügung stellen,
die den Knoten nachfolgend besuchen. Beispielsweise kann ein Indexagent 122,
der Indexblockdaten trägt
(ein beladener Agent) und der Netzwerkknoten abtastet, ein zeitlich
abnehmendes Signal in dem Speicher 114 hinterlassen, um
zu markieren, wie lange es her ist, daß er den Knoten 100 besucht
hat. Wenn der beladene Indexagent 122 den Knoten 100 erneut
besucht und den Speicher 114 abtastet, bevor das Signal
abgeklungen ist, so erkennt er, daß er jüngst bei dem Knoten 100 gewesen
ist. Wenn beispielsweise die Abklingzeit so ausgewählt wird,
daß sie
die Durchschnittszeit zwischen der Datengewinnung und dem -ablegen
für einen
Teilnehmer reflektiert, so kann ein Teilnehmer, der seinen eigenen
Zeitmarker an dem Knoten erkennt, annehmen, daß er den Knoten mit seiner
aktuellen Datenbeladung bereits abgetastet hat und den Datenspeicher 130 des
Knotens nicht erneut abzutasten braucht.
-
Es
sei angemerkt, daß die
den Knoten besuchenden Agenten 120 Verbindungen zu anderen Netzwerkknoten
zufällig
auswählen
können.
Jedoch ist es eindeutig effektiver, die Zustände der Agenten 120,
die den Knoten 100 zuvor besucht haben, zu überwachen.
Insbesondere bei Netzwerken, die eine große Anzahl von Netzwerkknoten
aufweisen, kann diese Art der historischen Informationen die Effektivität, mit welcher
das System arbeitet, beträchtlich
erhöhen.
Die Verwendung von Richtungs- und Zeitinformationen in Speichern 112 bzw. 114 wird
unten detaillierter erörtert.
-
Es
wird jetzt auf 2 Bezug genommen, in der eine
Blockdarstellung eines Computernetzwerks 200 gezeigt ist,
das das System der vorliegenden Erfindung implementiert. Das Computernetzwerk 200 weist
Computerknoten 100(1)–100(4) auf,
die über die
Netzwerkverbindungen 150 miteinander gekoppelt sind. Ein
Abfrageagent 126, ein Balance-Agent 124 und Indexagenten 122(a), 122(b) bewegen
sich zwischen den Knoten 100(1)–100(4), während ein
Indexagent 122(c) und ein Replikationsagent 128 in den
Knoten 100(1) bzw. 100(2) ausgeführt werden.
In der folgenden Diskussion werden Bezugszeichen nicht indexiert,
solange es nicht erforderlich ist, um einen speziellen der Knoten 100(1)–100(4) oder
seine Komponenten zu identifizieren.
-
Jeder
der Computerknoten 100 enthält einen Richtungsspeicherplatz 112,
in welchem Richtungshinweise (Pfeile), die sich auf Indexdateien
der Arten A und B beziehen, gespeichert sind. Bei dem offenbarten
Ausführungsbeispiel
des Systems 200 zeigen die Richtungshinweise auf andere
Knoten 100, bei denen es wahrscheinlich ist, daß sie zu
Indexdateien der Arten A oder B führen. Beispielsweise hat der
Indexagent 122(a) einen Indexblock von der Art A aus dem
Datenspeicher 130(1) gewonnen (unter Verwendung eines Übertragungskriteriums,
das unten erörtert
wird), den Speicherplatz 112(1) für einen Richtungshinweis auf
die Indexdatei A gelesen und sich selbst zum Knoten 100(2) gemäß dem Richtungshinweis
gesendet. In ähnlicher
Weise hat der Indexagent 122(b) einen Indexblock der Art
B aus dem Datenspeicher 130(1) gewonnen und sich selbst
zunächst
zum Knoten 100(2) und dann zum Knoten 100(3) gemäß den Richtungshinweisen
in den Speicherplätzen 112(1) bzw. 112(2) gesendet.
-
Ein
weiterer Indexagent 122(c) wird in einer Agentenschnittstelle 110(1) ausgeführt. In
Abhängigkeit
von dem Übertragungskriterium,
das durch die Indexagenten 122 implementiert wird, kann
der Indexagent 122(c) den Indexblock von der Art X gewinnen
und ihn zu einem anderen Knoten des Computersystems 200 übertragen.
Durch Verwendung geeigneter Kriterien sichern die unabhängigen Aktionen der
Indexagenten 122, daß die
Indexblöcke 142 auf irgendeinem
Knoten in dem System 200 sich an denjenigen Knoten anhäufen, die
die zugehörigen
Indexdateien 140 halten, beispielsweise die Knoten 100(2), 100(3), 100(4) in 2.
-
Der
Abfrageagent 126 repräsentiert
einen Abschnitt einer Abfrage, die am Knoten 100(1) erzeugt
wurde, um Dokumente zu identifizieren, die unter anderem mehr als
Null Indexfelder von der B-Art enthalten. Der Abfrageagent 126 folgte
einem Richtungshinweis im Speicherplatz 112(1) zum Computerknoten
(3) bei seiner Suche nach Übereinstimmungen mit einem
Wert für das
B-Art-Indexfeld, das in der Abfrage spezifiziert worden ist. Wenn
der Abfrageagent 126 B-Art-Indexdateien in den Knoten 100(3), 100(4) auffindet,
vergleicht er den spezifizierten Wert mit den Einträgen (B-Art-Indexblöcken) in der
B-Art-Indexdatei,
um diejenigen Dokumente zu identifizieren, die den spezifizierten
Wert aufweisen. Der Abfrageagent 126 macht die Richtungshinweise auf
B-Indexdateien in den Knoten 100(1), 100(3) und 100(4) erneut
geltend, wenn er zum Knoten 100(1) zurückkehrt oder sendet einen anderen
Agenten zurück
zum Knoten 100(1) mit der wiedergewonnenen Information.
-
Der
gezeigte Balance-Agent 124 schiebt die Daten zum Knoten 100(4),
um die Größe der B-Art-Indexdatei 140(3) im
Knoten 100(3) zu reduzieren. Der Replikationsagent 128 wird
in der Agentenschnittstelle 110(2) ausgeführt. Der
Replikationsagent 128 sichert, daß es ausreichende Kopien der
Indexdateien 140 gibt, um das System 200 robust
gegen den Verlust eines oder mehrerer Knoten zu machen. Beispielsweise
kann der Replikationsagent 126 so programmiert sein, daß er die
Knoten des Computersystems 200 durchmustert und jeweils
eine Kopie irgendeiner Indexdatei 140, die nicht wenigstens
eine Back-up-Kopie hat, zu einem anderen Knoten bewegt. Sofern B-Art-Indexdateien 140 dieses Redundanzkriterium
nicht erfüllen,
werden sie zu zwei anderen Knoten des Systems kopiert, um ein Überladen
irgendeines Knotens zu vermeiden.
-
Es
wird auf 3 Bezug genommen, in der eine
schematische Darstellung eines Computerknotens 100 gezeigt
ist, der mit anderen Knoten 308 eines Computernetzwerks 310 in
Interaktion tritt. Der Knoten 100 enthält eine Benutzerschnittstelle 320 zum
Hinzufügen
von Dokumenten zu den Daten, die über das Computernetzwerk 310 verteilt
sind, oder zum Initiieren von Abfragen an die verteilten Daten. Ein
Bibliotheksmodul 330 enthält Software zum Erzeugen von
Indexblöcken 142(a)–142(j) und
Daten 144 aus dem zu den Daten hinzugefügten Dokument. Ein anderer
Teil des Bibliotheksmoduls 330 analysiert eine Abfrage
bezüglich
ihrer Komponentenindexfelder und erzeugt einen Abfrageagenten 126 für jede Art
von Indexdatei, die von der Abfrage abgedeckt wird. Bei einem Ausführungsbeispiel
der Erfin dung werden Dokumente, die die Abfrage befriedigen, über die
Indexblöcke 142 identifiziert,
die zum Bibliotheksmodul 320 durch die Abfrageagenten 326 zurückgegeben
werden. Dokumente einschließlich jeden
in der Abfrage spezifizierten erscheinenden Begriff werden von dem
Bibliotheksmodul 330 identifiziert, wobei die zu dem Knoten 100 zurückgegebenen
Daten verwendet werden. Diese Dokumente können dann durch das Bibliotheksmodul 330 wiedergewonnen
werden. Die Dokumentendaten selbst können über das Netzwerk oder auf ausgewählten Server-Knoten
unter Verwendung der für
den Indexdaten beschriebenen Verfahren verteilt sein.
-
Die
Pfade der verschiedenen autonomen Agenten 120 vom Knoten 100 durch
den Rest des Netzwerks 310 sind durch die unterbrochenen
Linien 340, 340' zwischen
dem Knoten 100 und Netzwerkknoten 308 angezeigt.
Das gezackte Erscheinungsbild der unterbrochenen Linien 340 zeigt
die verschiedenen Knoten 308 an, die von verschiedenen autonomen
Agenten 120, z. B. den Indexagenten 122, Abfrageagenten 126,
die ihre Scripte implementieren, besucht werden. Beispielsweise
kann ein Indexagent 122, der mit einem j-Art-Indexblock
beladen ist, eine Anzahl unterschiedlicher Knoten besuchen, bevor
er einen Knoten 301 erreicht, der die zugehörige Indexdatei
hält. Die
gekrümmten
Pfeile 350 zeigen die Aktion von Balance-Agenten 124 an,
welche große
Indexdateien unter verschiedenen Wirten (Knoten) aufteilen, um die
Last an einem beliebigen Computerknoten 308 zu minimieren.
Die gepunkteten Pfeile 360 zeigen die Aktion der replizierenden Agenten 128 an,
welche Kopien der gesamten Indexdateien auf unterschiedlichen Computerknoten
als Sicherung gegen den Verlust irgendeines Computerknotens erzeugen.
Beispielsweise wurde eine Kopie einer angesammelten Indexdatei (i)
zwischen fünf unterschiedlichen
Knoten 302 aufgeteilt, eine zweite Kopie wurde zwischen
drei unterschiedlichen Knoten 304 aufgeteilt und eine dritte
Kopie wurde unter vier unterschiedlichen Knoten 302 aufgeteilt.
-
Die
Verteilung von Indexblöcken
unter Netzwerkknoten 308 in dem System ist nicht statisch.
Es werden neue Indexblöcke
zu der Indexdatei (i) hinzugefügt,
wenn zusätzliche
Dokumente in die Datenbank eingegeben werden. Durch Implementierung von
Wahrscheinlichkeitsübertragungskriterien
in beispielsweise dem Index-Agenten 122 können Indexdateien 140 für die Indexblöcke 142 der
gleichen Art auf mehr als einem Knoten angehäuft werden und sogar unterschiedliche
Indexblöcke
enthalten. Indexagenten 122 können diese Indexblöcke zwischen unterschiedlichen
Knoten bewegen und können
sogar einen Indexblock aus einem Knoten, der seine zugehörige Indexdatei
speichert, zu einem Knoten bewegen, der keine geeignete Indexdatei
enthält. Diese
letzte Art einer Übertragung
ist auf die benutzten Wahrscheinlichkeitsübertragungskriterien zurückzuführen, tritt
aber bei gut gewählten Übertragungskriterien
selten auf.
-
wie
oben angemerkt, werden die autonomen Agenten 120 so programmiert,
daß sie
sich selbst zwischen den Knoten eines Computernetzwerks übertragen
und die in ihren Scripten kodierten Funktionen bei den Knoten, die
sie besuchen, implementieren. Die Funktionen werden so implementiert,
daß das
Ziel, z. B. die Anhäufung
von Indexblöcken
einer gegebenen Art bei einer relativ kleinen Anzahl von Knotenorten,
durch die kollektiven, unkoordinierten Aktionen der Agenten 120 ausgeführt wird.
-
Im
Falle der Indexagenten 122 wird dies über das Kriterium ausgeführt, welches
benutzt wird, um zu bestimmen, ob ein Indexblock zwischen seinem Datenspeicher
und dem des von ihm besuchten Knotens übertragen werden soll. Insbesondere
belastet (biases) das benutzte Kriterium die Indexagenten derart
einseitig vor, daß sie
Indexblöcke
aus denjenigen Knoten zurückgewinnen,
auf welchen relativ wenige Indexblöcke der gleichen Art angeordnet
sind, und daß sie
Indexblöcke
auf denjenigen Knoten ablegen, die relativ mehr Indexblöcke der
gleichen Art aufweisen.
-
Es
wird jetzt auf 4 Bezug genommen, in der ein
Ausführungsbeispiel
eines Verfahrens 400 gezeigt ist, das durch Indexagenten 120 zum
Verwalten einer verteilten Datenbank in Übereinstimmung mit der vorliegenden
Erfindung implementiert wird. wenn ein unbeladener Indexagent, d.
h. ein Indexagent, der keine Indexblockdaten trägt, an einem Netzwerkknoten
ein trifft, identifiziert 410 er einen Indexblock in dem
Datenspeicher, und wendet 420 ein Wiedergewinnungskriterium
auf den Indexblock an. Wenn das Kriterium erfüllt ist 424, gewinnt 428 der
Indexagent den Indexblock aus dem Knotendatenspeicher. Andernfalls
wiederholt er den Prozeß mit
einem anderen Indexblock.
-
Ein
Ausführungsbeispiel
des Wiedergewinnungskriteriums gewinnt Indexblöcke mit einer Wahrscheinlichkeit
wieder, die umgekehrt proportional zur Anzahl der Indexblöcke in dem
Knotenspeicher, die von der gleichen Art wie der identifizierte
Indexblock sind, ist. Dies kann beispielsweise implementiert werden,
indem der Indexagent so programmiert wird, daß er das Verhältnis zwischen
einer zufällig
ausgewählten
Zahl zwischen 0 und 1 und der Anzahl von Indexblöcken in dem Knotenspeicher,
die die gleiche Art wie der identifizierte Indexblock aufweisen,
(Blockanzahl) bestimmt. Sofern das Ergebnis größer als 1 ist, wird das Wiedergewinnungskriterium
als erfüllt angesehen
und der Indexblock wird zu dem Indexagenten übertragen. Anderenfalls wird
der Indexblock in dem Knotendatenspeicher belassen.
-
Sobald
der Indexagent einen Indexblock wiedergewonnen (gelesen) hat 428,
wählt er
einen neuen Knoten aus 430. Der Auswahlschritt 430 umfaßt das Lesen
des Richtungsspeichers 112 bezüglich der Richtungshinweise
auf einen neuen Knoten, das Schreiben seines Zeitmarkers in den
Zeitspeicher (114) und das Zugreifen auf die richtige Netzwerkverbindung.
-
An
dem neuen Knoten liest der beladene Indexagent den Zeitspeicher
(114), um zu bestimmen 434, ob er unlängst bei
dem neuen Knoten gewesen ist. Sofern dies der Fall ist, wiederholt
der Indexagent den Auswahlschritt 430 bei dem neuen Knoten
(Lesen von Richtungshinweisen, Schreiben von Zeitmarkern, Übertragung).
Sofern er nicht unlängst
bei dem neuen Knoten gewesen ist, identifiziert der Indexagent Indexblöcke in dem
Datenspeicher des Knotens 438 und wendet ein Ablegekriterium
an 440. Sofern das Ablegekriterium erfüllt ist, legt der Indexagent
den Indexblock bei dem neuen Knoten ab 444. Sofern das
Ablegekriterium nicht erfüllt
ist, wiederholt der noch beladene Indexagent den Auswahlschritt 430,
wobei er die Richtungs/Zeit-Informationen des aktuellen Knotens
verwendet.
-
Sobald
er entladen ist, kann der Indexagent einen neuen Knoten für einen
Besuch auswählen 450.
Dies kann zufällig
erfolgen oder durch Anwendung irgendeines Kriteriums zum Auswählen des Knotens.
Alternativ kann der Agent beendet werden.
-
Ein
Ausführungsbeispiel
des Ablegekriteriums (Schritt 440) legt Indexblöcke mit
einer Wahrscheinlichkeit ab, die direkt proportional zur Anzahl der
Indexblöcke
in dem Knotenspeicher ist, die von der gleichen Art wie der geladene
Indexblock sind. Dies kann beispielsweise implementiert werden,
indem der Indexagent so programmiert wird, daß er das Verhältnis zwischen
der Anzahl von Indexblöcken
in dem Speicher des Knotens, die von der gleichen Art wie der Indexblock
in seinem Speicher sind, (die Blockanzahl) und einer zufällig ausgewählten Zahl
zwischen 0 und dieser Blockanzahl bestimmt. Sofern das Ergebnis
größer als
1 ist, wird das Ablegekriterium als erfüllt angesehen, und der Indexblock wird
zu dem Datenspeicher des Knotens übertragen. Anderenfalls wiederholt
der Agent den Knotenauswahlschritt 430 unter Verwendung
der Richtungs/Zeit-Informationen
in dem aktuellen Knoten.
-
Das
Ablege- und Wiedergewinnungskriterium in dem offenbarten Ausführungsbeispiel
verwenden die erste Potenz der Blockanzahl. Die Wirkung dieser Kriterien
besteht darin, daß Indexagenten
Indexblöcke
an Knoten mit einer Wahrscheinlichkeit ablegen, die direkt proportional
zur Blockanzahl an diesem Knoten ist, und Indexblöcke aus
Knoten mit einer Wahrscheinlichkeit gewinnen, die umgekehrt proportional
zu der Blockanzahl an diesem Knoten ist. Jedoch können diese Übertragungskriterien
unter Verwendung einer beliebigen funktionellen Abhängigkeit
bestimmt werden, die mit der Blockanzahl an diesem Knoten wächst.
-
Es
wird jetzt auf 5 Bezug genommen, in der ein
Ausführungsbeispiel
eines Verfahrens 500 gezeigt ist, das durch einen Abfrageagenten
gemäß der vorliegenden
Erfindung implementiert wird. Wie in Verbindung mit 3 angemerkt
wurde, werden Abfragen in die unterschiedlichen Indexfelder analy siert,
die sie spezifizieren, und ein Abfrageagent wird initialisiert,
um die Indexdatei zu lokalisieren und Dokumente zu identifizieren,
die den Wert des in der Abfrage spezifizierten Indexfeldes aufweisen.
Somit wird ein Abfrageagent an dem Ursprungsknoten initialisiert 510,
wobei der Indexdateityp und Wert in der Abfrage spezifiziert sind.
Der Abfrageagent wählt
einen neuen Knoten 530, den er bei der Suche der spezifizierten
Indexdatei besuchen wird. Der Auswahlschritt 530 umfaßt das Lesen
des Richtungsspeichers nach Richtungshinweisen für einen neuen Knoten, das Schreiben
seines Zeitmarkers in den Zeitspeicher und das Zugreifen auf die
geeignete Netzwerkverbindung.
-
An
dem neuen Knoten überprüft der Abfrageagent
den Zeitspeicher, um zu bestimmen 534, ob er unlängst den
Knoten besucht hat. Wenn er dies tat, kehrt er zum Auswahlschritt 530 zurück und wählt einen
anderen Knoten aus. Wenn der Abfrageagent den neuen Knoten nicht
unlängst
besucht hat, identifiziert er 538 irgendwelche Indexdateien
in dem Datenspeicher des Knotens. Wenn die gesuchte Indexdateiart
an dem Knoten gespeichert ist 540, liest 544 der
Abfrageagent die Indexdateieinträge
und kopiert 546 den Dokument-ID jedes Indexblocks, der
mit dem in der Abfrage spezifizierten wert übereinstimmt, in seinen Speicher.
Der Abfrageagent kann dann seinen Pfad zurück zu dem Ursprungsknoten zurückverfolgen 548 und
die Dokument-IDs zu dem Knotenspeicher für eine Analyse übertragen.
Wenn sich die gesuchte Indexdatei nicht an dem aktuellen Knoten befindet 540,
wiederholt der Abfrageagent den Auswahlschritt 530, um
einen weiteren Knoten für
die Suche auszuwählen.
-
Aufgrund
der von dem Indexiersystem gemäß der vorliegenden
Erfindung benutzten Wahrscheinlichkeitssuchverfahren gibt es keine
Garantie, daß die
mehreren Kopien von Indexdateien mit jedem neuen Indexblock aktualisiert
werden. Im Ergebnis können
mehrere Abfrageagenten, die für
den gleichen Indexdateityp initialisiert sind, inkonsistente Ergebnisse
zurückgeben.
Diese Inkonsistenzen können
identifiziert und für
jede Indexdatei, die Objekt einer Abfrage ist, gelöst werden.
-
Bei
einem Ausführungsbeispiel
der Erfindung initialisiert der Ursprungsknoten mehrere Abfrageagenten
für jeden
gesuchten Indexdateityp, um die Konsistenz der verschiedenen Kopien
einer Indexdatei zu testen. Für
jede verarbeitete Abfrage werden mehrere Abfrageagenten für jede gesuchte
Indexdatei initialisiert, und die Indexdateien werden gekennzeichnet
(flagged) (mit zeit-abhängigen
Markern), sobald sie durchsucht worden sind. Dies vermeidet, daß verschiedene
Abfrageagenten die gleiche Version der Indexdatei durchsuchen, und
die Abfrageagenten werden gezwungen, mit Ergebnissen aus unterschiedlichen
Versionen der Indexdatei zu antworten. Die aus unterschiedlichen
Indexdateiversionen gewonnenen Ergebnisse können verglichen werden, um
irgendwelche Inkonsistenzen zu identifizieren.
-
Eine
Reihe von Verfahren kann verwendet werden, um Inkonsistenzen zu
eliminieren, die zwischen den Versionen einer Indexdatei identifiziert wurden.
Ein derartiges Verfahren versieht jeden Indexblock mit einem Zeitstempel,
und es werden irgendwelche Inkonsistenzen zwischen den aus unterschiedlichen
Versionen einer Indexdatei gewonnenen Indexblöcken zugunsten des zuletzt
gespeicherten Indexblocks gelöst.
Ein anderes Verfahren nimmt das von der Mehrheit der Abfrageagenten
zurückgegebene
Ergebnis als das richtige Ergebnis. Es können auch andere Verfahren,
die Kombinationen des Zeitstempel- und Mehrheitsverfahrens einschließen, verwendet
werden, um Inkonsistenzen zwischen durchsuchten Datendateien zu
lösen.
-
Balance-Agenten
werden bei einem Ausführungsbeispiel
mit der vorliegenden Erfindung benutzt, um zu sichern, daß keiner
der Knoten überladen
wird. Diese Agenten besuchen unterschiedliche Netzwerkknoten und
bestimmen die Größe irgendwelcher
an dem besuchten Knoten identifizierten Indexdateien. Wenn ein Balance-Agent
feststellt, daß die
Größe einer
Indexdatei einen Maximalwert überschreitet,
gewinnt bzw. liest er einen Abschnitt der Indexdatei, bewegt ihn
zu einem neuen Knoten und legt den gewonnenen Abschnitt der Indexdatei
bei dem neuen Knoten ab. Der Balance-Agent kann darüber hinaus
Informationen (Richtungshinweise, Zeitmarker) in den Agenten schnittstellen
der getroffenen Knoten aktualisieren, um die Übertragung zu reflektieren.
-
Es
wird jetzt auf 6 Bezug genommen, in der ein
Ausführungsbeispiel
eines Verfahrens 600 gezeigt ist, das von einem autonomen
Balance-Agenten implementiert wird, um die Last auf den Knoten des
Computernetzwerks auszubalancieren. Anfänglich bestimmt der Balance-Agent 610,
ob eine Indexdatei an dem aktuellen Knoten angehäuft worden ist. Sofern eine
Indexdatei vorhanden ist 620, bestimmt der Balance-Agent 620,
ob die Größe der Indexdatei
einen Maximalwert überschreitet.
Der verwendete Maximalwert kann auf unterschiedliche Weise gesetzt
werden. Beispielsweise kann er ein fester Prozentsatz des auf dem
Computerknotens verfügbaren
Speichers sein oder er kann ein fester Wert für sämtliche Knoten sein. Wenn der
Maximalwert überschritten
wird, gewinnt der Balance-Agent einen Abschnitt der Indexdatei 630,
z. B. die Hälfte
der Einträge
(Indexblöcke)
in der Indexdatei und wählt
einen neuen Knoten aus 640, um ihn zu besuchen.
-
Der
Auswahlschritt 640 kann eine Reihe von Operationen umfassen,
einschließlich
der Aktualisierung von Zeitinformationen (z. B. das Setzen des zeitabhängigen Markers
des Balance-Agenten) in der Agentenschnittstelle, des Aktualisierens
des Richtungshinweises für
die Indexdateiart, um dem Knoten anzuzeigen, daß der Agent ihn mit dem wiedergewonnenen
Indexdateiabschnitt besuchen wird, und des Übertragens an den nächsten Knoten.
Der Balance-Agent kann darüber
hinaus die Richtungshinweise für
die Indexdateiart überprüfen, um
das Besuchen eines Knotens zu vermeiden, der bereits Daten aus der
Indexdatei oder einer ihrer Kopien enthält.
-
An
dem neuen Knoten überprüft der Balance-Agent
die Datenspeicherkapazität 650,
und legt dann, wenn sie ausreichend ist, den gewonnenen Abschnitt
der Indexdatei ab 660. Dann wählt der Balance-Agent einen
neuen Knoten aus 670, um ihn zu besuchen. Der Auswahlschritt 670 umfaßt das Aktualisieren
der Übertragungsinformationen
in der Agentenschnittstelle, um das Vorhandensein des Indexdateiabschnitts
zu reflektieren. Wenn beim Schritt 650 der Balance-Agent
feststellt, daß die
Daten speicherkapazität
unzureichend ist, wird der Auswahlschritt 640 bei dem aktuellen
Knoten wiederholt.
-
Replikationsagenten
werden bei einem Ausführungsbeispiel
der Erfindung benutzt, um das verteilte Indexiersystem widerstandsfähig gegenüber dem
Verlust einer oder mehrerer Knoten, auf welchen Indexdateien gespeichert
sind, zu machen. Diese Agenten besuchen die Knoten des Netzwerks
und verfolgen die Anzahl von Kopien jeder Indexdatei, die auf den
besuchten Knoten identifiziert werden. Sofern die Anzahl kleiner
als ein ausgewählter
Minimalwert für
irgendeine der identifizierten Indexdateiarten ist, gewinnt der
Replikationsagent eine Kopie der Datei und legt sie an einem neuen
Knoten ab. Der Replikationsagent aktualisiert darüber hinaus
Informationen (Richtungshinweise, zeitabhängige Marker) in den betroffenen
Agentenschnittstellen, um das Vorhandensein einer neuen Kopie zu
reflektieren.
-
Da
es keinen zentralen koordinierenden Computer gibt, um die Bewegung
des Replikationsagenten zwischen den Netzwerkknoten zu lenken, können Stichprobenverfahren
benutzt werden, um die Anzahl der Kopien für jede Indexdatei zu verfolgen.
Wenn es beispielsweise 50 Knoten in dem Netzwerk gibt und jede Indexdateiart
5 Kopien aufweisen sollte, so kann der Replikationsagent so programmiert
werden, daß er
neue Kopien einer Indexdatei erzeugt, wenn zumindest eine Indexdatei
einer gegebenen Art nach dem Besuch von 10 Knoten nicht erfaßt worden
ist. Dies kann mit Hilfe von Zählern
für jede
Indexdateiart ausgeführt
werden, um die Anzahl der besuchten Knoten und die Anzahl der bei
diesen Besuchen erfaßten
Kopien zu verfolgen.
-
Es
wird jetzt auf 7 Bezug genommen, in der ein
Ausführungsbeispiel
eines Verfahrens 700 gezeigt ist, das von einem autonomen
Replikationsagenten zum Aufrechterhalten einer Minimalanzahl von
Kopien für
jede Art einer Indexdatei in dem System implementiert ist. Indexdateiarten
sind in Klammern angezeigt, d. h. node_cntr(i), gefolgt von den verschiedenen
Zählern,
wobei die Zähler
für eine spezielle
Indexdateiart eingestellt werden. Es wird kein Artindikator gezeigt,
sofern die Zähler
für sämtliche
Indexdateiarten eingestellt sind.
-
Wenn
der Replikationsagent an einem Knoten eintrifft, inkrementiert er 720 die
node_cntrs für sämtliche
Indexdateiarten und identifiziert 710 irgendwelche Indexdateien
in dem Speicher des Knotens. Sofern eine Indexdatei vorhanden ist 730,
z. B. die Indexdateiart (i), bestimmt der Replikationsagent 730,
ob ein Replikations-Flag für
die Indexdateiart gesetzt ist, z. B. replicate(i) = 1. Wenn dies
der Fall ist, kopiert der Replikationsagent die Indexdateiart in seinen
Datenspeicher 734, um eine Kopie der Indexdatei an einem
neuen Knoten zu erzeugen. Wenn replicate(i) nicht gesetzt ist, wird
replica_cntr(i) inkrementiert 736 und mit der Minimalanzahl
der erforderlichen Kopien verglichen 738. Wenn replica_cntr(i) das
Minimum erreicht 738, werden replica_cntr(i) und node_cntr(i)
auf 0 zurückgesetzt 739,
und die node_cntrs werden für
sämtliche
Indexdateien gegen einen Maximalwert überprüft 750, z. B. 10 Knotenbesuche,
wie bei dem vorhergehenden Beispiel.
-
Ein
node_cntr(j) erreicht den Maximalwert 750, wenn sein zugehöriger replica_cntr(j)
nicht die Minimalanzahl von Kopien erreicht, bevor die Maximalanzahl
von Knoten besucht worden ist. Bei dem Beispiel haben die j-Art-Indexdateien
keine ausreichende Anzahl von Kopien. Demzufolge wird replicate(j)
gesetzt 752, und ein neuer Knoten wird ausgewählt 760.
-
Wenn
beim Schritt 730 der Replikationsagent feststellt, daß keine
Indexdatei vorhanden ist, bestimmt er 740, ob irgendwelche
Replikations-Flags gesetzt sind. Wenn replicate(j) gesetzt ist und
der Replikationsagent eine Kopie der Indexdatei (j) aufweist 742,
legt er 744 die Kopie ab und setzt 746 replicate(j)
auf 0 zurück.
Wenn der Replikationsagent noch keine Kopien der Indexdatei (j)
hat, bewegt er sich zum Schritt 750.
-
Hier
wurde somit ein System und ein Verfahren zum Verteilen und Verwalten
von Index- und Dateninformationen zwischen den Knoten eines Computernetzwerks über die
kollektiven Aktionen autonomer Agenten angegeben. Jeder Agent überträgt sich selbst
zwischen den Knoten eines Computernetzwerks und implementiert eine
spezielle Funktion gemäß den Bedingungen, die
er an dem Knoten identifiziert. Verschiedene Klassen von Agenten
implementieren unterschiedliche Funktionen. Diese Funktionen umfassen
Kriterien, die von den an dem Netzwerkknoten identifizierten Bedingungen
abhängig sind
und die ausgewählt
werden, um eine entstehende Koordination aus den unabhängigen Aktivitäten der
verschiedenen autonomen Agenten zu erzeugen.