DE19782227B4 - Verfahren zum Verteilen von Indexdaten unter einer Mehrzahl vernetzter Knoten und System zum Verwalten eines Index - Google Patents

Verfahren zum Verteilen von Indexdaten unter einer Mehrzahl vernetzter Knoten und System zum Verwalten eines Index Download PDF

Info

Publication number
DE19782227B4
DE19782227B4 DE19782227A DE19782227A DE19782227B4 DE 19782227 B4 DE19782227 B4 DE 19782227B4 DE 19782227 A DE19782227 A DE 19782227A DE 19782227 A DE19782227 A DE 19782227A DE 19782227 B4 DE19782227 B4 DE 19782227B4
Authority
DE
Germany
Prior art keywords
index
node
agent
network
agents
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19782227A
Other languages
English (en)
Other versions
DE19782227T1 (de
Inventor
Robert Lake Oswego Adams
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE19782227B4 publication Critical patent/DE19782227B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Warehouses Or Storage Devices (AREA)

Abstract

Verfahren zum Verteilen von Indexdaten unter einer Mehrzahl vernetzter Knoten mit Hilfe einer Mehrzahl autonomer Agenten, wobei jeder Knoten einen Datenspeicher und eine Agentenschnittstelle zum Ausführen der Agenten enthält, wobei:
ein Indexblock an einem ersten Knoten des Netzwerks identifiziert wird (410);
der Indexblock gewonnen wird, wenn ein Gewinnungskriterium erfüllt ist (420–428);
der Indexblock mit einem Agenten zu einem zweiten Knoten des Netzwerks bewegt wird; und
der Indexblock einer Indexdatei an dem zweiten Knoten hinzugefügt wird (444), wenn ein Ablegekriterium erfüllt ist,
wobei das Gewinnungskriterium und das Ablegekriterium so gewählt sind, daß Indexblöcke einer gegebenen Art auf einem Netzwerkknoten angehäuft werden, wenn die Kriterien bei jedem Netzwerkknoten, der von den autonomen Agenten besucht wird, angewendet werden.

Description

  • 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.

Claims (13)

  1. Verfahren zum Verteilen von Indexdaten unter einer Mehrzahl vernetzter Knoten mit Hilfe einer Mehrzahl autonomer Agenten, wobei jeder Knoten einen Datenspeicher und eine Agentenschnittstelle zum Ausführen der Agenten enthält, wobei: ein Indexblock an einem ersten Knoten des Netzwerks identifiziert wird (410); der Indexblock gewonnen wird, wenn ein Gewinnungskriterium erfüllt ist (420428); der Indexblock mit einem Agenten zu einem zweiten Knoten des Netzwerks bewegt wird; und der Indexblock einer Indexdatei an dem zweiten Knoten hinzugefügt wird (444), wenn ein Ablegekriterium erfüllt ist, wobei das Gewinnungskriterium und das Ablegekriterium so gewählt sind, daß Indexblöcke einer gegebenen Art auf einem Netzwerkknoten angehäuft werden, wenn die Kriterien bei jedem Netzwerkknoten, der von den autonomen Agenten besucht wird, angewendet werden.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß beim Hinzufügen des Indexblocks zu einer Indexdatei des zweiten Knotens dann, wenn ein Ablegekriterium erfüllt ist, eine Indexblockart für den enthaltenen Indexblock identifiziert wird; eine Anzahl von Indexblöcken in dem Datenspeicher, die die identifizierte Indexblockart aufweisen, bestimmt wird; und der Indexblock in den Datenspeicher abgelegt wird, wenn die Anzahl der Indexblöcke einen statistisch bestimmten Schwellwert überschreitet.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß beim Gewinnen des Indexblocks dann, wenn ein Gewinnungskriterium erfüllt ist, eine Anzahl von Indexblöcken in dem Datenspeicher bestimmt wird, die eine ausgewählte Indexblockart aufweisen, und der Indexblock aus dem Datenspeicher gewonnen wird, wenn die Anzahl der Indexblöcke geringer als ein statistisch bestimmter Schwellwert ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß beim Bewegen zu einem zweiten Knoten des Netzwerks: Hinweisinformationen in dem ersten Knoten des Netzwerks gelesen werden, und sich der autonome Agent zu demjenigen zweiten Knoten des Netzwerks bewegt, auf den durch die Hinweisinformationen hingewiesen wird.
  5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß beim Hinzufügen des Indexblocks zu einer Indexdatei des zweiten Knotens: ein Zeitmarker auf dem zweiten Knoten überprüft wird; und der Indexblock nur dann am zweiten Knoten zur Indexdatei hinzugefügt wird, wenn der Zeitmarker anzeigt, daß der autonome Agent den zweiten Knoten nicht unlängst besucht hat.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß sich der autonome Agent zu einem anderen zweiten Knoten bewegt, wenn der Zeitmarker anzeigt, daß er unlängst den zweiten Knoten besucht hat.
  7. System zum Verwalten eines Index, der Indexdateien umfaßt, die über die Knoten eines Computernetzwerks verteilt sind, aufweisend: eine Agentenschnittstelle (110) auf jedem Knoten (100) des Netzwerks, wobei jede Agentenschnittstelle (110) eine Anwendungsprogrammschnittstelle (API) (116) zum Bereitstellen eines Zugriffs auf Resourcen des Knotens enthält; einen Datenspeicher (130) auf jedem Netzwerkknoten (100), der einen oder mehrere Indexblöcke (142) speichern kann; und eine Mehrzahl autonomer Indexagenten (122), wobei jeder Indexagent sich zwischen den Netzwerkknoten bewegen kann, um dabei Indexblöcke (142) zwischen den Datenspeichern (130) der Netzwerkknoten in Übereinstimmung mit einem Übertragungskriterium zu übertragen, wobei das Übertragungskriterium so gewählt ist, daß es Indexblöcke einer Art in einer Indexdatei (140) für die Art auf einem oder mehreren Knoten des Netzwerks anhäuft.
  8. System nach Anspruch 7 dadurch gekennzeichnet, daß ferner wenigstens ein autonomer Abfrageagent (126) vorgesehen ist, wobei sich jeder Abfrageagent zwischen den Netzwerkknoten bewegen kann, um eine Indexdatei (140) einer spezifizierten Art zu lokalisieren, die Indexblöcke (142) der Indexdatei (140) mit einem spezifizierten Wert zu vergleichen und einen oder mehrere Indexblöcke mit dem spezifizierten wert zu kopieren.
  9. System nach Anspruch 7 oder 8, dadurch gekennzeichnet, daß ein oder mehrere autonome Balanceagenten (124) vorgesehen sind, wobei jeder Balanceagent in der Läge ist, sich zwischen den Netzwerkknoten zu bewegen, um Indexdateien zu lokalisieren, eine Größe der lokalisierten Indexdateien mit einer ausgewählten Maximalgröße zu vergleichen und einen Teil der Indexdatei zu einem neuen Knoten zu übertragen, wenn die Größe der Indexdatei eine ausgewählte Maximalgröße überschreitet.
  10. System nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet, daß ferner ein oder mehrere autonome Replikationsagenten (128) vorgesehen sind, wobei jeder Replikationsagent in der Lage ist, sich zwischen den Netzwerkknoten zu bewegen, um eine Anzahl von Replikationen einer Indexdatei zu überwachen und eine neue Replikation der Indexdatei zu erzeugen, wenn die überwachte Anzahl geringer ist als eine ausgewählte Minimalanzahl von Replikationen.
  11. System nach einem der Ansprüche 7 bis 10, dadurch gekennzeichnet, daß die Agentenschnittstelle (116) Speicherplätze zum Speichern von Richtungsinformationen über die Indexdateien und Zeitinformationen über die autonomen Indexagenten aufweist.
  12. System nach einem der Ansprüche 7 bis 11, dadurch gekennzeichnet, daß das Übertragungskriterium die autonomen Agenten derart einseitig vorbelastet, daß Indexblöcke einer gegebenen Art aus Knoten, die eine relativ geringe Anzahl derartiger Indexblöcke aufweisen, gewonnen werden und diese auf einem Knoten, der relativ viele Indexblöcke der gegebenen Art aufweist, abgelegt werden.
  13. System nach Anspruch 11, dadurch gekennzeichnet, daß der autonome Indexagent die in dem Speicherplatz eines aktuellen Knotens gespeicherten Richtungsinformationen verwendet, um zu bestimmen, welchen Netzwerkknoten er als nächstes besucht.
DE19782227A 1996-12-30 1997-12-08 Verfahren zum Verteilen von Indexdaten unter einer Mehrzahl vernetzter Knoten und System zum Verwalten eines Index Expired - Fee Related DE19782227B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/777,517 1996-12-30
US08/777,517 US5963944A (en) 1996-12-30 1996-12-30 System and method for distributing and indexing computerized documents using independent agents
PCT/US1997/022399 WO1998029792A2 (en) 1996-12-30 1997-12-08 System and method for distributing and indexing computerized documents using independent agents

Publications (1)

Publication Number Publication Date
DE19782227B4 true DE19782227B4 (de) 2006-05-24

Family

ID=25110468

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19782227A Expired - Fee Related DE19782227B4 (de) 1996-12-30 1997-12-08 Verfahren zum Verteilen von Indexdaten unter einer Mehrzahl vernetzter Knoten und System zum Verwalten eines Index
DE19782227T Pending DE19782227T1 (de) 1996-12-30 1997-12-08 System und Verfahren zum Verteilen und Indexieren von Computerdokumenten unter Verwendung unabhängiger Agenten

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE19782227T Pending DE19782227T1 (de) 1996-12-30 1997-12-08 System und Verfahren zum Verteilen und Indexieren von Computerdokumenten unter Verwendung unabhängiger Agenten

Country Status (7)

Country Link
US (1) US5963944A (de)
AU (1) AU730684B2 (de)
DE (2) DE19782227B4 (de)
GB (1) GB2335770B (de)
HK (1) HK1024959A1 (de)
IL (1) IL130564A (de)
WO (1) WO1998029792A2 (de)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6412017B1 (en) 1996-07-01 2002-06-25 Microsoft Corporation Urgent replication facility
CA2202572C (en) * 1997-04-14 2004-02-10 Ka Lun Eddie Law A scaleable web server and method of efficiently managing multiple servers
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
JP3490256B2 (ja) * 1997-06-12 2004-01-26 三菱電機株式会社 エージェント方式
US6453334B1 (en) * 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US6163782A (en) * 1997-11-19 2000-12-19 At&T Corp. Efficient and effective distributed information management
US6507874B1 (en) 1998-01-07 2003-01-14 Microsoft Corporation System for efficient routing and translation of data
US6311058B1 (en) * 1998-06-30 2001-10-30 Microsoft Corporation System for delivering data content over a low bit rate transmission channel
US6289464B1 (en) 1998-01-07 2001-09-11 Microsoft Corporation Receiving wireless information on a mobile device with reduced power consumption
US6449638B1 (en) 1998-01-07 2002-09-10 Microsoft Corporation Channel definition architecture extension
US6434546B1 (en) * 1998-12-22 2002-08-13 Xerox Corporation System and method for transferring attribute values between search queries in an information retrieval system
US6463455B1 (en) * 1998-12-30 2002-10-08 Microsoft Corporation Method and apparatus for retrieving and analyzing data stored at network sites
JP4005739B2 (ja) 1999-03-24 2007-11-14 株式会社東芝 エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体
JP2001144754A (ja) * 1999-11-17 2001-05-25 Digital Vision Laboratories Corp ネットワーク・コミュニティ・システム及びネットワーク・コミュニティの構成方法
US20060248139A1 (en) * 1999-12-01 2006-11-02 Intel Corporation Networked computer management with a mobile software agent
US6742023B1 (en) * 2000-04-28 2004-05-25 Roxio, Inc. Use-sensitive distribution of data files between users
AUPQ475799A0 (en) * 1999-12-20 2000-01-20 Youramigo Pty Ltd An internet indexing system and method
WO2001046867A1 (en) * 1999-12-22 2001-06-28 Setnet Corp. Industrial capacity clustered mail server system and method
US7249155B1 (en) 2000-02-09 2007-07-24 International Business Machines Corporation Method for processing a request to multiple instances of a server program
WO2001075728A1 (en) * 2000-03-30 2001-10-11 I411, Inc. Methods and systems for enabling efficient retrieval of data from data collections
US20090216641A1 (en) * 2000-03-30 2009-08-27 Niration Network Group, L.L.C. Methods and Systems for Indexing Content
US8831995B2 (en) 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US20020087883A1 (en) * 2000-11-06 2002-07-04 Curt Wohlgemuth Anti-piracy system for remotely served computer applications
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US7233940B2 (en) * 2000-11-06 2007-06-19 Answers Corporation System for processing at least partially structured data
US7451196B1 (en) 2000-12-15 2008-11-11 Stream Theory, Inc. Method and system for executing a software application in a virtual environment
WO2002073437A1 (en) * 2001-03-12 2002-09-19 Edgestream, Inc. Seek architecture for media streaming
US20030126247A1 (en) * 2002-01-02 2003-07-03 Exanet Ltd. Apparatus and method for file backup using multiple backup devices
US20030167295A1 (en) * 2002-03-01 2003-09-04 Verity, Inc. Automatic network load balancing using self-replicating resources
GB0218188D0 (en) * 2002-08-06 2002-09-11 Hewlett Packard Co Methods and arrangements applicable to exhibition spaces
US20040059734A1 (en) * 2002-09-23 2004-03-25 Hubbert Smith Data access control
US7121134B2 (en) * 2002-10-08 2006-10-17 Ric Investments, Llc. Integrated sample cell and filter and system using same
US7174334B2 (en) * 2003-01-16 2007-02-06 Hewlett-Packard Development Company, L.P. System and method for efficiently replicating a file among a plurality of recipients
US7200598B2 (en) * 2003-01-16 2007-04-03 Hewlett-Packard Development Company, L.P. System and method for efficiently replicating a file among a plurality of recipients having improved scalability
US7512701B2 (en) * 2003-01-16 2009-03-31 Hewlett-Packard Development Company, L.P. System and method for efficiently replicating a file among a plurality of recipients in a reliable manner
US7454424B2 (en) * 2003-01-16 2008-11-18 Hewlett-Packard Development Company, L.P. System and method for efficiently replicating a file
US8626944B2 (en) * 2003-05-05 2014-01-07 Hewlett-Packard Development Company, L.P. System and method for efficient replication of files
WO2005001713A1 (en) * 2003-06-30 2005-01-06 International Business Machines Corporation Retrieving a replica of an electronic document in a computer network
US7523217B2 (en) * 2003-07-15 2009-04-21 Hewlett-Packard Development Company, L.P. System and method having improved efficiency and reliability for distributing a file among a plurality of recipients
US7349906B2 (en) * 2003-07-15 2008-03-25 Hewlett-Packard Development Company, L.P. System and method having improved efficiency for distributing a file among a plurality of recipients
GB2404466B (en) * 2003-07-31 2007-07-18 Hewlett Packard Development Co Method and apparatus for providing information about a real-world space
US7631310B1 (en) 2003-11-14 2009-12-08 Google Inc. Loadbalancing multiple files across computing devices
US7158021B2 (en) * 2004-04-22 2007-01-02 Scientific-Atlanta, Inc. Stigmergic sensor security system
US7546342B2 (en) * 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
US7240162B2 (en) 2004-10-22 2007-07-03 Stream Theory, Inc. System and method for predictive streaming
US20060168294A1 (en) 2004-11-13 2006-07-27 De Vries Jeff Hybrid local/remote streaming
US7778984B2 (en) * 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
US8024523B2 (en) 2007-11-07 2011-09-20 Endeavors Technologies, Inc. Opportunistic block transmission with time constraints
US9716609B2 (en) 2005-03-23 2017-07-25 Numecent Holdings, Inc. System and method for tracking changes to files in streaming applications
US7536426B2 (en) * 2005-07-29 2009-05-19 Microsoft Corporation Hybrid object placement in a distributed storage system
US8533309B1 (en) * 2005-10-24 2013-09-10 Crimson Corporation Systems and methods for distributed node detection and management
US7801912B2 (en) 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US7739239B1 (en) 2005-12-29 2010-06-15 Amazon Technologies, Inc. Distributed storage system with support for distinct storage classes
US8392400B1 (en) 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US7702640B1 (en) * 2005-12-29 2010-04-20 Amazon Technologies, Inc. Stratified unbalanced trees for indexing of data items within a computer system
KR100804671B1 (ko) * 2006-02-27 2008-02-20 엔에이치엔(주) 응답 지연 제거를 위한 로컬 단말기 검색 시스템 및 방법
US8261345B2 (en) 2006-10-23 2012-09-04 Endeavors Technologies, Inc. Rule-based application access management
US7792796B1 (en) * 2006-12-19 2010-09-07 Emc Corporation Methods, systems, and computer program products for optimizing resource allocation in a host-based replication environment
US20080195635A1 (en) * 2007-02-12 2008-08-14 Yahoo! Inc. Path indexing for network data
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US9785700B2 (en) 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
US8359365B2 (en) * 2008-02-11 2013-01-22 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallel document indexing
US8335776B2 (en) 2008-07-02 2012-12-18 Commvault Systems, Inc. Distributed indexing system for data storage
JP5310399B2 (ja) * 2009-09-01 2013-10-09 富士通株式会社 索引管理装置の処理方法および索引管理装置
US20110282883A1 (en) * 2010-03-26 2011-11-17 Nec (China) Co., Ltd. Indexing server and method therefor
US20120011200A1 (en) * 2010-07-06 2012-01-12 Roxbeam Media Network Corporation Method and apparatus for data storage in a peer-to-peer network
US8538920B2 (en) * 2011-08-08 2013-09-17 Hewlett-Packard Development Company, L.P. System and method for storage service
US9304815B1 (en) * 2013-06-13 2016-04-05 Amazon Technologies, Inc. Dynamic replica failure detection and healing
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337360A (en) * 1992-04-06 1994-08-09 Fischer Addison M Method and apparatus for creating, supporting, and using travelling programs
WO1995022111A1 (en) * 1994-02-08 1995-08-17 Telefonaktiebolaget Lm Ericsson Distributed data base system
EP0747844A1 (de) * 1995-06-07 1996-12-11 International Business Machines Corporation Ein Verfahren für die Ausführung verteilter Aufgaben von Netzbrowseranträgen
US5588147A (en) * 1994-01-14 1996-12-24 Microsoft Corporation Replication facility

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4956774A (en) * 1988-09-02 1990-09-11 International Business Machines Corporation Data base optimizer using most frequency values statistics
EP0408812B1 (de) * 1989-07-21 2000-03-01 Hewlett-Packard Company Verteilte auf Objekte basierende Systeme
JP2560510B2 (ja) * 1990-03-06 1996-12-04 日本電気株式会社 ネットワーク管理マネージャ切り替え方式
AU639802B2 (en) * 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5689706A (en) * 1993-06-18 1997-11-18 Lucent Technologies Inc. Distributed systems with replicated files
US5684984A (en) * 1994-09-29 1997-11-04 Apple Computer, Inc. Synchronization and replication of object databases
US5694594A (en) * 1994-11-14 1997-12-02 Chang; Daniel System for linking hypermedia data objects in accordance with associations of source and destination data objects and similarity threshold without using keywords or link-difining terms
US5793888A (en) * 1994-11-14 1998-08-11 Massachusetts Institute Of Technology Machine learning apparatus and method for image searching
US5706516A (en) * 1995-01-23 1998-01-06 International Business Machines Corporation System for communicating messages among agent processes
US5655081A (en) * 1995-03-08 1997-08-05 Bmc Software, Inc. System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architecture
US5701451A (en) * 1995-06-07 1997-12-23 International Business Machines Corporation Method for fulfilling requests of a web browser
US5765149A (en) * 1996-08-09 1998-06-09 Digital Equipment Corporation Modified collection frequency ranking method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337360A (en) * 1992-04-06 1994-08-09 Fischer Addison M Method and apparatus for creating, supporting, and using travelling programs
US5588147A (en) * 1994-01-14 1996-12-24 Microsoft Corporation Replication facility
WO1995022111A1 (en) * 1994-02-08 1995-08-17 Telefonaktiebolaget Lm Ericsson Distributed data base system
EP0747844A1 (de) * 1995-06-07 1996-12-11 International Business Machines Corporation Ein Verfahren für die Ausführung verteilter Aufgaben von Netzbrowseranträgen

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JOHNSON, T. u.a.: Distributed Indices for Acces- sing Distributed Data, 12th IEEE Symposium on Mass Storage Systems, 26.-29. April 1993, Proceedings, S. 199-207
JOHNSON, T. u.a.: Distributed Indices for Acces- sing Distributed Data, 12th IEEE Symposium on Mass Storage Systems, 26.-29. April 1993, Proceedings, S. 199-207 *
NWANA, H.S.: Software Agents: An Overview. In: Knowledge Engineering Review, Vol. 11, Nr. 2, 1995, S. 205-244 *
RUS, Daniela, u.a.: Automonous and Adaptive Agents that gather Information. In: AAAI '96 International Workshop on Intelligent Adaptive Agents, 1996, S. 107-116 *

Also Published As

Publication number Publication date
AU5594998A (en) 1998-07-31
GB2335770B (en) 2002-06-19
GB2335770A (en) 1999-09-29
HK1024959A1 (en) 2000-10-27
WO1998029792A3 (en) 1998-10-29
IL130564A (en) 2004-06-01
US5963944A (en) 1999-10-05
AU730684B2 (en) 2001-03-08
GB9914078D0 (en) 1999-08-18
WO1998029792A2 (en) 1998-07-09
DE19782227T1 (de) 1999-11-18
IL130564A0 (en) 2000-06-01

Similar Documents

Publication Publication Date Title
DE19782227B4 (de) Verfahren zum Verteilen von Indexdaten unter einer Mehrzahl vernetzter Knoten und System zum Verwalten eines Index
DE69705832T2 (de) Verfahren zum definieren und anwenden von regeln für nachrichtenverteilung für transaktionsverarbeitung in einer verteilten anwendung
DE69424597T2 (de) Erweiterbares Dateiensystem
DE69230452T2 (de) Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen
DE69618131T2 (de) Anordnung und Verfahren zur Betriebsmittelverwaltung von verteilten Objekten
DE69032390T2 (de) Verfahren und Vorrichtung zur Handhabung eines unbegrenzten Datenstromes in einem objektorientierten Programmiersystem
DE3855212T2 (de) Verfahren zur Berechnung eines transitiven Abschlusses
DE60211489T2 (de) System und Verfahren zur Bearbeitung von in mehreren Nachrichtenspeichern gespeicherten Nachrichten
DE69805437T2 (de) Informationsmanagementsystem
DE69025846T2 (de) Verfahren zur Verwendung gespeicherter partieller Bäume zur Berechnung eines Weges in einem Datenkommunikationsnetz
DE69128958T2 (de) Schneide- und Klebefilterung von unbegrenzten, dynamischen, unmodifizierbaren Datenströmen
DE69030551T2 (de) Prozess und Gerät zur Handhabung zeitaufwendiger und wiederverwendbarer Abfragen in einem objekt-orientierten Datenbankverwaltungssystem
DE3784190T2 (de) Eintragung eines datenbasisindex in das journal zur verbesserten rueckstellung.
DE69328400T2 (de) Hilfsverfahren zur Abfrageoptimierung eines relationellen Datenbankverwaltungssystems und daraus resultierendes syntaktisches Analyseverfahren
DE3688529T2 (de) Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation.
DE69432332T2 (de) Verfahren und Gerät zum Konvertieren von übertragenen digitalen Daten
DE69032389T2 (de) Prozess und Gerät zur Erhaltung der Datenintegrität einer Datenbank
DE4497149B4 (de) Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung
DE3856055T2 (de) Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen
DE69225566T2 (de) Rechnersystem
DE69024932T2 (de) Verfahren um Dokumente, die ein bestimmtes Attribut haben, mit Hilfe eines vektorrelationalen charakteristischen Objektes zu identifizieren
DE10255128A1 (de) Computer-implementierte PDF-Dokumentenverwaltung
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE19617381A1 (de) Objektumwandlungsverfahren von einem flachen Objektraum in einen Klassen - strukturierten Raum

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 15/173

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110701