-
Technisches
Gebiet
-
Die
vorliegende Erfindung betrifft allgemein die elektronische Datenverarbeitung
und insbesondere Verfahren, Computerprogrammprodukte und Systeme
zum Abrufen von Daten.
-
Allgemeiner
Stand der Technik
-
Bestimmte
Anwendungen stellen Abfrageschnittstellen bereit, die es einem Benutzer
ermöglichen,
boolesche Ausdrücke
zu definieren, die mehrere Bedingungen zur Auswahl von Daten aus
einem Computersystem, wie zum Beispiel einem Datenbanksystem oder
einem Dateisystem, enthalten. Zum Beispiel können die booleschen Ausdrücke in einer
Standard-Abfragesprache (SQL) geschrieben sein. Sie werden dann
zu dem Computersystem gesendet und dort ausgeführt. Solche Computersysteme
werden zum Beispiel in den Patentanmeldungen WO 02/061612 und WO
02/061613 beschrieben. Ein boolescher Ausdruck kann mehrere Bedingungen enthalten,
die durch boolesche Operatoren verknüpft werden. Eine Bedingung
enthält
in der Regel einen Attributnamen, einen Operator und einen Wert
oder Wertebereich.
-
Zum
Beispiel können
die folgenden drei Bedingungen in bezug auf das Attribut birth_date
mit den Operatoren AND oder OR verknüpft werden.
birth_date
zwischen 1938 und 1990
birth_date <= 1940
birth_date > 1920
-
Vorteilhafterweise
wird in dem System der vollständige
boolesche Ausdruck in disjunktiver oder konjunktiver Normalform
verarbeitet. Bei diesem Beispiel wird angenommen, daß alle Bedingungen
mit einem booleschen AND verknüpft
werden oder alle Bedingungen mit einem booleschen OR verknüpft werden.
Wenn der boolesche Ausdruck viele Bedingungen enthält, kann
es absichtlich oder unabsichtlich geschehen, daß sich bestimmte der Bedingungen
auf dasselbe Attribut beziehen.
-
Bestimmte
Kombinationen von Bedingungen, die sich auf dasselbe Attribut beziehen,
können entweder
aus logischen Gründen
zu uninteressanten Ergebnissen führen
oder bewirken, daß mehr
Bedingungen als notwendig zu dem Computersystem weitergeleitet werden.
Es können
die folgenden Fälle
unterschieden werden:
Nullmenge: die Ergebnismenge ist leer
(null Datensätze
gefunden). Dazu kann es kommen, wenn alle Bedingungen mit AND verknüpft werden.
Gesamte
Suchdomäne:
die Ergebnismenge besteht aus allen in das Computersystem geladenen
oder darin gespeicherten Datensätzen,
so daß die
Selektivität
null ist. Dazu kann es kommen, wenn die Bedingungen mit OR verknüpft werden.
Mehr
Bedingungen als notwendig: zwei oder mehr Bedingungen, die sich
auf dasselbe Attribut beziehen, weisen in bezug auf ihre Selektivität eine Überlappung
auf. Das heißt,
es besteht eine gewisse Redundanz in den Bedingungen des booleschen
Ausdrucks.
-
Ein
System zur Bestimmung der Untergrenze eines Überschneidungsbereichs als
Maximum der Bereichsuntergrenzen bzw. der Obergrenze als Minimum
der Bereichsobergrenzen ist aus dem US-Patent Nr. 5,664,172 von
Day et al. bekannt.
-
Kurze Darstellung
der Erfindung
-
Die
vorliegende Erfindung liefert Verfahren, Computerprogrammprodukte
und Computersysteme, die durch die unabhängigen Ansprüche beschrieben
werden, um einen booleschen Ausdruck zu vereinfachen, indem mehrere
seiner Bedingungen, die sich auf dasselbe Attribut beziehen, zu
weniger (einer oder mehreren) Bedingungen zusammengefaßt werden.
Das Bereitstellen eines vereinfachten oder reduzierten booleschen
Ausdrucks in einer Abfrage an ein Computersystem kann zu einem effizienteren
Auswahlprozeß führen, da
weniger Bedingungen ausgewertet und deshalb weniger potentiell große Zwischenergebnismengen
verknüpft
werden müssen.
-
Ferner
kann eine Vorauswertung des booleschen Ausdrucks zeigen, daß die Verknüpfung der Bedingungen
in der Auswertung aus logischen Gründen entweder zu null Datensätzen oder
allen Datensätzen
führt.
In diesem Fall hat es überhaupt
keinen Wert, die Abfrage zu dem Computersystem zu senden. Das heißt, die
Arbeitslast des Computersystems kann geringer gehalten werden, wenn
man einen Vorauswahlmechanismus für boolesche Ausdrücke der vorliegenden
Erfindung verwendet.
-
Bei
einer Ausführungsform
der vorliegenden Erfindung kann eine graphische Benutzeroberfläche (GUI)
für die
Vorauswertung und zum Informieren eines Benutzers verwendet werden.
-
Die
Aspekte der Erfindung werden mittels der in den angefügten Ansprüchen konkret
herausgestellten Elemente und Kombinationen realisiert und erreicht.
Außerdem
ist die beschriebene Kombination der Merkmale der Erfindung nicht
als Beschränkung
aufzufassen, und alle Merkmale können in
anderen Konstellationen kombiniert werden, ohne von dem Gedanken
der Erfindung abzuweichen. Es versteht sich, daß sowohl die obige allgemeine
Beschreibung als auch die folgende ausführliche Beschreibung lediglich
beispielhaft und veranschaulichend sind und nicht die beschriebene
Erfindung einschränken
sollen.
-
Kurze Beschreibung der
Zeichnungen
-
1 ist
ein vereinfachtes Blockschaltbild eines Computersystems, das mit
einer Ausführungsform
der Erfindung verwendet werden kann;
-
2 zeigt
ein Beispiel für
eine graphische Benutzeroberfläche,
die durch das Computersystem einem Benutzer bereitgestellt werden
kann;
-
3 ist
ein vereinfachtes Flußdiagramm
eines Verfahrens, das durch eine Ausführungsform der Erfindung ausgeführt werden
kann;
-
4 zeigt
ein erstes Beispiel für
das Anwenden des Verfahrens in bezug auf ein numerisches Attribut;
-
5 ist
ein zweites Beispiel für
das Anwenden des Verfahrens in bezug auf ein numerisches Attribut;
und
-
6 ist
ein drittes Beispiel für
das Anwenden des Verfahrens in bezug auf ein alphanumerisches Attribut.
-
Ausführliche
Beschreibung der Erfindung
-
In
den gesamten Zeichnungen wurden zur Bezeichnung von identischen
oder ähnlichen
Teilen dieselben Bezugszahlen verwendet.
-
Definitionen
von nachfolgend verwendeten Begriffen:
-
Boolesche Operatoren:
-
In
booleschen Aussagen verwendete Operatoren, z.B. AND, OR.
-
Relationale Operatoren:
-
In
relationalen Aussagen verwendete Operatoren, z.B.
- <
- (kleiner als)
- <=
- (kleiner oder gleich)
- >
- (größer als)
- >=
- (größer oder
gleich)
- =
- (ist gleich)
- <>
- (nicht gleich)
- [..]
- (zwischen)
- ]..[
- (nicht zwischen)
-
Relationale
Operatoren können
mit einem booleschen NOT verknüpft
werden. Ein solcher verknüpfter
Ausdruck kann in einen reinen relationalen Operator übersetzt
werden. Zum Beispiel entspricht "NOT >" dann "<=".
-
Bedingung:
-
Relationale
Aussage, die Daten vergleicht, wie zum Beispiel numerische Daten
oder alphanumerische Daten, wobei ein oder mehrere relationale Operatoren
verwendet werden.
-
Boolescher Ausdruck:
-
Aussage
mit mehreren Bedingungen, die mit booleschen Operatoren verknüpft werden.
-
1 ist
ein vereinfachtes Blockschaltbild eines Computersystems 990,
das mit einer Ausführungsform
der Erfindung verwendet werden kann. Das Computersystem 990 enthält mehrere
Datenverarbeitungseinrichtungen (z.B. eine erste Datenverarbeitungseinrichtung 901 und
eine zweite Datenverarbeitungseinrichtung 902), die über ein
Netzwerk 999, wie zum Beispiel ein lokales Netzwerk (LAN),
ein großflächiges Netzwerk
(WAN), das Internet oder ein drahtloses Netzwerk kommunizieren.
-
Die
zweite Datenverarbeitungseinrichtung 902 kann zum Beispiel
ein Backend-System sein, wie zum Beispiel ein Datenbanksystem, ein
Dateisystem oder ein Anwendungssystem, das Daten 300 speichert.
Die Daten 300 können
auch an einer beliebigen Stelle innerhalb oder außerhalb
des Computersystems 990 gespeichert sein.
-
Mit
der ersten Datenverarbeitungseinrichtung 901 können boolesche
Ausdrücke 310 zur
Verwendung in einer QUERY (Abfrage) zum Abrufen gewählter Daten
aus der zweiten Datenverarbeitungseinrichtung 902 zusammengestellt
werden. Zum Beispiel kann die erste Datenverarbeitungseinrichtung 901 ein
Frontend-Computer sein, der einem Benutzer eine graphische Benutzeroberfläche (GUI)
bereitstellt.
-
Bei
einer Ausführungsform
der Erfindung kann die erste Datenverarbeitungseinrichtung 901 ein
Computerprogrammprodukt ausführen,
das in einen Speicher der ersten Datenverarbeitungseinrichtung geladen
wird, um ein Verfahren 400 zum logischen Auswerten des
booleschen Ausdrucks 310 und zum Erzeugen eines reduzierten
booleschen Ausdrucks 320, der stattdessen in der Abfrageaussage
verwendet wird, auszuführen.
Das Computerprogrammprodukt enthält
verschiedene Teile von Computerprogrammanweisungen, die bewirken,
daß mindestens
ein Prozessor der ersten Datenverarbeitungseinrichtung 901 entsprechende
Schritte und Funktionen des Verfahrens 400 ausführt.
-
In
einem Aspekt der Erfindung wird mit in der folgenden Beschreibung
beschriebenen Algorithmen und Verfahren die Anzahl von Bedingungen
in der booleschen Aussage 310 verringert, indem logische Redundanzen
beseitigt werden.
-
In
einem anderen Aspekt der Erfindung kann die erste Datenverarbeitungseinrichtung 901 vermeiden,
Abfragen zu der zweiten Datenverarbeitungseinrichtung 902 zu
senden, wenn im voraus von einem logischen Standpunkt aus gesehen
klar ist, daß unabhängig von
den gegebenen Daten die Abfrageergebnismenge entweder leer sein
wird oder alle in der zweiten Datenverarbeitungseinrichtung 902 verfügbaren Datensätze umfassen
wird, so daß keine Selektivität besteht.
Es kann eine entsprechende Benachrichtigung zu dem Benutzer gesendet
werden. Der Benutzer kann ein menschlicher Benutzer sein, aber auch eine
weitere Datenverarbeitungseinrichtung, die über das Netzwerk 999 mit
der ersten Datenverarbeitungseinrichtung 901 kommuniziert.
-
2 zeigt
ein Beispiel für
eine GUI, die durch das Computersystem 990 einem menschlichen Benutzer
bereitgestellt werden kann. Die GUI kann dem Benutzer auf einem
Ausgabegerät 950,
wie zum Beispiel einem Monitor, dem Benutzer präsentiert werden. In dem Beispiel
ist das Ausgabegerät 950 über das
Netzwerk 999 mit der ersten Datenverarbeitungseinrichtung 901 verbunden.
Das Ausgabegerät 950 kann
jedoch auch integraler Bestandteil einer beliebigen Datenverarbeitungseinrichtung
in dem Computersystem 990 sein, und in diesem Fall würde die Kommunikation
zwischen der Datenverarbeitungseinrichtung und dem Ausgabegerät vorteilhafterweise
durch einen internen Bus abgewickelt. In den folgenden Beispielen
wird angenommen, daß die
erste Datenverarbeitungseinrichtung die GUI implementiert. Die GUI
kann jedoch auch durch eine beliebige andere Datenverarbeitungseinrichtung
in dem Computersystem 990 implementiert werden. In diesem Fall
würde die
im folgenden als durch die erste Datenverarbeitungseinrichtung 901 durchgeführte Funktionalität durch
die andere Datenverarbeitungseinrichtung ausgeführt.
-
Die
GUI kann dem Benutzer spezifische Benutzeroberflächenkomponenten bereitstellen
(z.B. die Spalte ATTRIBUTES, die Spalte OPERATION, die Spalte VALUE1,
die Spalte VALUE2 und die Optionsschaltflächen AND/OR), die es dem Benutzer erlauben,
boolesche Ausdrücke
zusammenzustellen. Zum Beispiel kann der Benutzer in der Spalte
ATTRIBUTES Auswahlattribute eingeben (die im folgenden als Attribute
bezeichnet werden), wie etwa COUNTRY, BIRTH DATE oder LAST NAME.
In die Spalte OPERATION können
dann Beziehungsoperatoren eingegeben werden. Mit VALUE1 und VALUE2
kann man Bedingungswerte in bezug auf das Attribut und den Beziehungsoperator
in der entsprechenden Zeile eingeben. Vorteilhafterweise kann der
Benutzer einen Teil der vorzunehmenden Einträge oder alle aus entsprechenden
Reservoirs auswählen,
die zum Beispiel in einer Dropdown-Listenbox oder in einem Wertehilfe-Popup
visualisiert werden können.
Zum Beispiel kann die GUI den Benutzer bei der Zusammenstellung
des booleschen Ausdrucks 310 in disjunktiver oder konjunktiver
Normalform durch entsprechende Benutzung der Optionsschaltflächen AND/OR
unterstützen.
-
In
dem Beispiel wurden drei Bedingungen, die sich auf das Attribut
BIRTH DATE beziehen, eingegeben.
BIRTH DATE [..] 1938 und 1990
BIRTH
DATE <= 1940
BIRTH
DATE > 1920
-
Unter
der Annahme, daß sie
mit einem booleschen AND verknüpft
werden (z.B. durch Auswählen
der entsprechenden Optionsschaltfläche), können sie von einem logischen
Standpunkt aus gesehen durch eine einzige Bedingung ersetzt werden: BIRTH
DATE [..] 1938 und 1940. Diese Bedingung wird Teil des reduzierten
booleschen Ausdrucks 320. Der reduzierte boolesche Ausdruck 320 kann
entweder auf der UI angezeigt oder hinter der Szene ausgeführt werden,
so daß die
UI die Änderung
nicht anzeigt, sondern einfach die optimierte QUERY, die den reduzierten
booleschen Ausdruck 320 enthält, zu der zweiten Datenverarbeitungseinrichtung 902 sendet.
-
3 ist
ein vereinfachtes Flußdiagramm des
Verfahrens 400 zum logischen Auswerten eines booleschen
Ausdrucks 310, der in einer Abfrageaussage verwendet wird,
das durch eine Ausführungsform
der Erfindung ausgeführt
werden kann. Zum Beispiel kann das Verfahren 400 durch
die erste Datenverarbeitungseinrichtung 901 ausgeführt werden.
-
Der
boolesche Ausdruck 310 bezieht sich auf ein Attribut und
enthält
mehrere Bedingungen Ci, i = 1 m (alle in der Beschreibung verwendeten
Indizes sind Elemente der natürlichen
Zahlen), aus denen die Schritte bestehen.
-
In
dem Empfangsschritt 410 empfängt das Computersystem 990 (vgl. 1)
den booleschen Ausdruck 310. Wie zum Beispiel in 2 beschrieben,
gibt ein Benutzer den booleschen Ausdruck in eine entsprechende
GUI ein. Alternativ dazu kann jede beliebige Datenverarbeitungseinrichtung
in dem Computersystem 990 den booleschen Ausdruck von einer
anderen Datenverarbeitungseinrichtung empfangen.
-
In
dem Zerlegungsschritt 420 wird der boolesche Ausdruck in
die mehreren Bedingungen Ci, i = 1_m zerlegt. Das Computersystem 990 kann
dies durch Verwendung eines Analysierers erzielen, der boolesche
und Beziehungsoperatoren erkennen kann.
-
Für jede Bedingung
Ci der mehreren werden die folgenden Schritte durchgeführt:
-
Extrahieren 421 mindestens
eines sich auf das Attribut beziehenden Bedingungswerts aus der Bedingung
Ci. Der mindestens eine Bedingungswert definiert einen Wertebereich
der Bedingung. In dem Beispiel von 2 enthält die erste
Bedingung die beiden abzurufenden Bedingungswerte 1938 und 1990.
In diesem Fall repräsentiert
ein Bedingungswert den kleinsten Bedingungswert und der andere Bedingungswert
repräsentiert
den größten Bedingungswert
des durch die erste Bedingung abgedeckten Wertebereichs. Die zweite
Bedingung enthält
nur einen Bedingungswert 1940, der den größten Bedingungswert des Wertebereichs
der zweiten Bedingung definiert. Abhängig von dem in der Bedingung verwendeten
Beziehungsoperator werden der größte und/oder
der kleinste Bedingungswert in den Wertebereich der Bedingung aufgenommen
oder von diesem ausgeschlossen. Falls der Operator ist gleich (=) verwendet
wird, entspricht der Wertebereich einem einzigen Wert, nämlich dem
entsprechenden Identitätsbedingungswert.
-
Einfügen 422 des
mindestens einen Bedingungswerts in eine Bedingungswerteliste in
sortierter Reihenfolge. Die Bedingungswerteliste kann als eine Datenstruktur
implementiert werden, wie zum Beispiel eine Listenstruktur oder
eine Tabellenstruktur. Vorteilhafterweise wird eine lineare bidirektionale Zeigerliste
von Objekten verwendet. In diesem Fall werden zwei Zeiger zwischen
zwei Listenelementen verwendet, die in entgegengesetzte Richtungen
zeigen. Dadurch kann die Liste in beiden Richtungen durchquert werden.
Jedes Objekt repräsentiert
einen Bedingungswert. Die Einfügung
in sortierter Reihenfolge kann erreicht werden, indem entweder der
Bedingungswert unmittelbar an seiner Endstelle oder an einer beliebigen
Stelle, z.B. am Ende der Datenstruktur, eingefügt und ein entsprechender Sortieralgorithmus
angewandt wird.
-
Initialisieren 423 eines
Beziehungsvektors des mindestens einen Bedingungswerts. Bei einer Implementierung
enthält
der Beziehungsvektor eine Komponente LESS THAN, eine Komponente
EQUAL TO und eine Komponente GREATER THAN. Vorteilhafterweise wird
jede dieser drei Komponenten als ein Zähler realisiert. Bei dieser
Implementierung wird jede Beziehungsvektorkomponente des mindestens einen
Bedingungswerts auf einen Anfangswert gesetzt, wenn die Bedingungsliste
keinen weiteren Bedingungswert aufweist. Vorteilhafterweise ist
der Anfangswert null, es können
stattdessen aber auch andere Werte benutzt werden. Die Beziehungsvektorkomponenten
des ersten Bedingungswerts, der zu einer leeren Bedingungswerteliste
hinzugefügt
wird, werden anders ausgedrückt
alle auf denselben Anfangswert gesetzt.
-
Wenn
die Bedingungswerteliste bereits andere Bedingungswerte enthält, können zwei
alternative Mechanismen zur Initialisierung verwendet werden. Bei
einer ersten Alternative wird jede Beziehungsvektorkomponente des
eingefügten
Bedingungswerts auf den Komponentenwert von LESS THAN des Beziehungsvektors
des nächstgrößeren Bedingungswerts
in der Bedingungswerteliste gesetzt. Bei einer zweiten Alternative
wird jede Beziehungsvektorkomponente des eingefügten Bedingungswerts auf den
Komponentenwert von GREATER THAN des Beziehungsvektors des nächst kleineren
Bedingungswerts in der Bedingungsliste gesetzt. Es gilt nur eine
der beiden Alternativen, wenn der Bedingungswert am Anfang (erste
Alternative) oder am Ende (zweite Alternative) der Bedingungswerteliste
eingefügt
wird.
-
Einstellen 424 der
Beziehungsvektoren für den
mindestens einen Bedingungswert der Bedingung Ci und jeden weiteren
Bedingungswert, der sich in der Bedingungsliste befindet und der
in dem Wertebereich der Bedingung Ci liegt. Nachdem der Bedingungswert
eingefügt
wurde, wird mindestens eine Beziehungsvektorkomponente für den mindestens einen
Bedingungswert um ein Inkrement erhöht, um den Beziehungsoperator
der Bedingung widerzuspiegeln. Zum Beispiel beträgt das Inkrement 1, obwohl
stattdessen auch jedes andere Inkrement benutzt werden kann. Wenn
zum Beispiel der Beziehungsoperator der Bedingung "=" ist, dann wird die Komponente EQUAL
TO erhöht.
Wenn der Beziehungsoperator der Bedingung ">=" ist, werden die Komponente
EQUAL TO und die Komponente GREATER THAN erhöht. Wenn der Beziehungsoperator der
Bedingung "<" ist, wird die Komponente LESS THAN
erhöht.
-
Nachdem
der Beziehungsvektor für
den eingefügten
Bedingungswert gemäß der gerade
verarbeiteten Bedingung eingestellt wurde, wird das Inkrement durch
jede Beziehungsvektorkomponente jedes weiteren Bedingungswerts in
der Bedingungsliste propagiert, solange der weitere Bedingungswert
in dem Wertebereich der gerade verarbeiteten Bedingung liegt. Anders
ausgedrückt,
wird jede Beziehungsvektorkomponente jedes weiteren Bedingungswerts
in der Bedingungswerteliste erhöht, wenn
der weitere Bedingungswert zu einem Wertebereich gehört, auf
den sich die gerade verarbeitete Bedingung auswirkt.
-
Nachdem
alle Bedingungen des booleschen Ausdrucks 310, die sich
auf das Attribut beziehen, verarbeitet wurden, kann in bestimmten
Fällen
der boolesche Ausdruck 310 gemäß jedem Beziehungsvektor auf
den reduzierten booleschen Ausdruck 320 reduziert 430 werden.
Abhängig
von dem booleschen Operator, der zum Verknüpfen der Bedingungen in dem
booleschen Ausdruck 310 verwendet wird, können verschiedene
Teilmengen von Bedingungswerten identifiziert werden.
-
Wenn
der AND-Operator verwendet wird, kann in der Bedingungsliste eine
AND-Teilmenge 201 (vgl. 4 und 6)
von Bedingungswerten identifiziert werden. Jeder der Teilmengenbedingungswerte
weist mindestens eine Beziehungsvektorkomponente auf, deren Wert
gleich dem Inkrement multipliziert mit der Anzahl von Bedingungen
in der Vielzahl von Bedingungen des booleschen Ausdrucks 310 ist.
Der reduzierte boolesche Ausdruck 320 kann durch Verknüpfen der
AND-Teilmengenbedingungswerte mit booleschen Operatoren und mit Beziehungsoperatoren
gemäß ihren
Beziehungsvektoren zusammengestellt werden. Wenn die AND-Teilmenge 201 leer
ist, gibt dies an, daß keine
Datensätze
den booleschen Ausdruck 310 erfüllen können. In diesem Fall kann eine
entsprechende Benachrichtigung (NOTIFICATION, vgl. 1)
zu dem Benutzer gesendet werden, bevor die Abfrage gesendet wird oder
anstelle davon.
-
Wenn
der OR-Operator verwendet wird, kann in der Bedingungswerteliste
eine OR-Teilmenge 202 (vgl. 6) von Bedingungswerten
identifiziert werden. Bei einer Implementierung enthält die OR-Teilmenge 202 von
Bedingungswerten in der Bedingungsliste mindestens einen Teilmengenbedingungswert,
der mindestens eine Beziehungsvektorkomponente mit dem Anfangswert
aufweist. Diese OR-Teilmenge enthält die Bedingungswerte der
Bedingungswerteliste mit einem Wertebereich, bei dem mindestens
ein Wert nicht den booleschen Ausdruck 320 erfüllt. Der
reduzierte boolesche Ausdruck 320 kann durch Verknüpfen der
OR-Teilmengenbedingungswerte mit booleschen Operatoren und mit Beziehungsoperatoren
gemäß ihren
Beziehungsvektoren zusammengestellt werden. Bei dieser Implementierung
kann der reduzierte boolesche Ausdruck 320 zusammengestellt
werden, indem die nicht erfüllenden
Werte aus den Ergebnissen des reduzierten booleschen Ausdrucks ausgeschlossen
werden. Zum Beispiel enthält
die OR-Teilmenge einen Wert "5" und die Komponente
EQUAL TO hat den Anfangswert. Dann kann der reduzierte boolesche
Ausdruck "<> 5" sein.
-
Bei
einer anderen Implementierung enthält die OR-Teilmenge von Bedingungswerten in der
Bedingungsliste mindestens einen Teilmengenbedingungswert, der mindestens
eine Beziehungsvektorkomponente mit einem Wert größer als
der Anfangswert aufweist. Bei dieser Implementierung enthält die OR-Teilmenge
die Bedingungswerte der Bedingungswerteliste mit einem Wertebereich,
wobei mindestens ein Wert den booleschen Ausdruck 320 erfüllt. Bei
dieser Implementierung kann die reduzierte boolesche Aussage durch
Aufnehmen aller erfüllenden
Werte in den reduzierten booleschen Ausdruck zusammengestellt werden.
-
Wenn
die OR-Teilmenge 202 überhaupt
keine Selektivität
des booleschen Ausdrucks anzeigt, kann eine entsprechende Benachrichtigung
(NOTIFICATION, vgl. 1) zu dem Benutzer gesendet
werden, bevor die Abfrage gesendet wird oder anstelle davon. Im
Fall eines menschlichen Benutzers kann dies eine visuelle Benachrichtigung
(z.B. ein Popup) oder ein Klang (z.B.
-
eine
Nachricht oder ein Piepen) sein. Im Fall eines nichtmenschlichen
Benutzers (z.B. Datenverarbeitungseinrichtung) kann die Benachrichtigung durch
Erheben eines Ereignisses, eine Fehlernachricht oder eine Warnung
in einem Format, das durch den nichtmenschlichen Benutzer verarbeitet
werden kann, implementiert werden.
-
Die
logische Auswertung des booleschen Ausdrucks 310 durch
die erste Datenverarbeitungseinrichtung 901 kann deshalb
letztendlich die Arbeitslast der zweiten Datenverarbeitungseinrichtung 902 verringern,
indem das Senden von Abfragen, die keine nützlichen Ergebnisse liefern,
verhindert wird.
-
Fachleute
können
das Verfahren auch auf mehrdimensionale Attribute anwenden, wie
zum Beispiel auf Vektoren oder Matrizen. Für solche Attribute wird das
Verfahren 400 für
jede Attributkomponente auf die beschriebene Weise durchgeführt.
-
4 zeigt
ein erstes Beispiel für
das Anwenden des Verfahrens 400 in bezug auf ein numerisches
Attribut.
-
Bei
diesem ersten Beispiel hat das Computersystem 990 einen
boolesche Ausdruck 310 empfangen 410, der die
folgenden Bedingungen in bezug auf ein Attribut n enthält:
C1:
n > 5
C2: n <= 30
C3: n
zwischen 25 und 70
-
Alle
drei Bedingungen werden mit dem booleschen AND-Operator verknüpft.
-
Zum
Beispiel führt
die erste Datenverarbeitungseinrichtung 901 eine logische
Auswertung des booleschen Ausdrucks 310 aus, um zu bestimmen, ob
die drei Bedingungen durch weniger Bedingungen zusammengefaßt werden
können
und ob logisch der Fall ist, daß entweder
null Datensätze
oder alle Datensätze,
die in der zweiten Computereinrichtung gespeichert sind, mit der
Menge von Bedingungen übereinstimmen
werden.
-
Listenelemente
in der Bedingungswerteliste werden als Kästen mit vier Teilen dargestellt.
Der obere Teil enthält
den Bedingungswert. Die unteren drei Teile repräsentieren drei Komponenten
des Beziehungsvektors für
den Bedingungswert. Der untere linke Teil enthält die Komponente LESS THAN ("<"-Zähler), der
untere mittlere Teil die Komponente EQUAL TO ("="-Zähler) und
der untere rechte Teil die Komponente GREATER THAN (">"-Zähler). In
allen folgenden Beispielen wird die Notation
Bedingungswert/("<"counter, "="counter, ">"counter)
für Elemente
der Bedingungswerteliste verwendet. Für jede Bedingung sind in der
Bedingungswerteliste zwei Zeilen gezeigt. Die obere Zeile zeigt
die Bedingungswerte mit ihren Beziehungsvektoren nach dem Extrahieren 421,
Einfügen 422 und
Initialisieren 423 in bezug auf die aktuelle Bedingung.
Die untere Zeile stellt den Status nach der Einstellung 424 dar
(vgl. 3).
-
In
der Menge von Bedingungen treten die vier Bedingungswerte "5", "30", "25" und "70" auf. Nachdem alle
Bedingungswerte eingefügt
wurden, enthält
die Bedingungswerteliste deshalb vier Listenelemente.
-
Als
erstes wird die Bedingung C1 verarbeitet. Der Bedingungswert "5" wird eingefügt und der Beziehungsvektor
wird auf den Anfangswert (0,0,0) initialisiert, weil zu diesem Zeitpunkt
kein anderer Bedingungswert in der Bedingungsliste enthalten ist. Der
Beziehungsoperator von C1 ist ">". Deshalb wird der ">"-Zähler erhöht. Das
in dem Beispiel verwendete Inkrement ist 1. Das Listenelement 5/(0,0,1)
spiegelt nun die Bedingung "> 5" in bezug auf das Attribut n der Bedingung
C1 wider.
-
Dann
wird Bedingung C2 verarbeitet. Der Bedingungswert "30" wird eingefügt und sein
Beziehungsvektor wird mit dem Komponentenwert "1" von GREATER
THAN des Beziehungsvektors des nächstkleineren
Bedingungswerts "5" initialisiert (INIT).
Nun repräsentiert
die gesamte Bedingungswerteliste die Bedingung "> 5". Der initialisierte
Beziehungsvektor (1,1,1) wird dann durch Erhöhen des "<"-Zählers und
des "="-Zählers eingestellt.
Das Listenelement 30/(2,2,1) spiegelt nun die Bedingung "<= 30" mit Bezug auf das Attribut n der Bedingung
C2 wider. Dann wird das Inkrement in den Beziehungsvektor des Listenelements
5/(0,0,1), dessen Bedingungswert "5" in
dem Wertebereich der Bedingung C2 liegt, propagiert (INCR). Dies
führt zu
dem eingestellten Listenelement 5/(1,1,2). Nun repräsentiert
die Bedingungswerteliste zusätzlich
zu der Bedingung C1 die Bedingung C2.
-
Als
letztes wird die Bedingung C3 verarbeitet. Beide Bedingungswerte "25" und "70" werden in sortierter
Reihenfolge in die Bedingungswerteliste eingefügt. Nach der Initialisierung
(INIT) der jeweiligen Beziehungsvektoren werden die Listenelemente 25/(2,2,2)
und 70/(1,1,1) aufgenommen, so daß die gesamte Bedingungswerteliste
immer noch die Bedingung C2 zusätzlich
zu Bedingung C1 repräsentiert.
Die Beziehungsvektoren der neuen eingefügten Bedingungswerte sind die
eingestellten, um die Bedingung C3 widerzuspiegeln. Die Bedingung
C3 "zwischen 25
und 70" ist eine
Verknüpfung
der beiden Bedingungen "≥ 25" und "≤ 70". Deshalb werden die entsprechenden
Beziehungsvektorkomponenten entsprechend erhöht, was zu den Listenelementen 25/(2,3,3)
und 70/(2,2,1) führt.
Da der Bedingungswert "30" in dem Wertebereich
der Bedingung C3 liegt, wird das Inkrement zu seinem entsprechenden Beziehungsvektor propagiert,
was zu dem Listenelement 30/(3,3,2) führt. Nun repräsentiert
die gesamte Bedingungswerteliste alle drei Bedingungen C1, C2 und
C3 ("> 5", "≤ 30" und "zwischen 25 und 70" mit Bezug auf das
Attribut n).
-
Die
erste Datenverarbeitungseinrichtung 901 kann nun die AND-Teilmenge 201 identifizieren,
die Bedingungswerte in der Bedingungswerteliste enthält, wobei
jeder der Teilmengenbedingungswerte mindestens eine Beziehungsvektorkomponente
aufweist, die einen Wert gleich dem Inkrement, multipliziert mit
der Anzahl von Bedingungen in der Vielzahl, aufweist. In dem Beispiel
ist das Inkrement "1" und die Anzahl von
Bedingungen beträgt "3". Das heißt, jedes Listenelement mit
einem Beziehungsvektor, der mindestens eine Vektorkomponente mit
einem Wert von 3 enthält,
ist Teil der Schnittmenge aller drei Bedingungen. Da die Listenelemente
25/(2,3,3) und 30/(3,3,2) diese Anforderung erfüllen, bilden sie die AND-Teilmenge 201.
-
Auf
der Basis der AND-Teilmenge 201 kann der reduzierte boolesche
Ausdruck 320 zusammengestellt werden, weil die drei Bedingungen
des Beispiels auf eine einzige Bedingung reduziert werden können: 25 ≤ n ≤ 30 (n zwischen
25 und 30).
-
5 zeigt
ein zweites Beispiel für
die Anwendung des Verfahrens 400 in bezug auf das numerische
Attribut n.
-
Bei
diesem zweiten Beispiel hat das Computersystem 990 einen
booleschen Ausdruck 310 empfangen 410, der die
folgenden Bedingungen wieder mit Bezug auf das Attribut n enthält:
C1': n = 100
C2': n nicht zwischen
70 und 90
C3':
n > 60
C4': n < 10
C5': n <> 95
-
Alle
fünf Bedingungen
werden zum Beispiel mit dem booleschen OR-Operator verknüpft, indem die
OR-Optionsschaltfläche in der
GUI von 2 ausgewählt und die Bedingungen für das Attribut
entsprechend eingegeben werden.
-
Das
Listenelement für
den Bedingungswert "100" der Bedingung C1' wird nach der Einfügung und
Initialisierung eingestellt, um den "="-Relationaloperator
widerzuspiegeln, indem "="counter in dem Beziehungsvektor
erhöht
wird. Dies führt
zu dem Listenelement 100/(0,1,0).
-
Die
beiden Bedingungswerte "70" und "90" werden aus der Bedingung
C2' extrahiert.
Der Relationaloperator "nicht
zwischen" entspricht "<"AND">". Deshalb
werden "<"counter des Bedingungswerts "70" und ">"counter
des Bedingungswerts "90" entsprechend erhöht, was
zu den Listenelementen 70/(1,0,0) und 90/(0,0,1) führt. Um
die Bedingungen C1' und
C2' in der Bedingungswerteliste
einheitlich widerzuspiegeln, wird das dritte Listenelement mit dem
Bedingungswert "100" (der in dem Wertebereich der
Bedingung C2' liegt)
eingestellt, indem die Beziehungsvektorkomponenten erhöht (INCR)
werden. Das Ergebnis ist 100/(1,2,1).
-
Die
Bedingung C3' enthält alle
zuvor eingefügten
Bedingungswerte in ihrem Wertebereich. Nachdem das Listenelement
für den
Bedingungswert "60" auf 60/(1,1,1) initialisiert
(INIT) wurde und nachdem das Listenelement auf 60/(1,2,2) eingestellt
wurde, wird deshalb das Inkrement zu allen weiteren Listenelementen
propagiert (INCR). Dies führt
zu den eingestellten Listenelementen 70/(2,1,1), 90/(1,1,2) und
100/(2,3,2).
-
Der
Wertebereich der Bedingung C4' wirkt sich
auf keine der zuvor eingefügten
Listenelemente aus. Deshalb muß nur
das den Bedingungswert "10" enthaltende Listen element
eingestellt werden, um den "<"-Operator widerzuspiegeln, indem "<"counter nach
der Initialisierung (INIT) erhöht
wird. Das Ergebnis ist das Listenelement 10/(2,1,1).
-
Die
Bedingung C5' schließt den Bedingungswert "95" aus den Ergebnisdatensätzen des
booleschen Ausdrucks 310 aus. Alle zuvor eingefügten Listenelemente
fallen jedoch in den Wertebereich der Bedingung C5'. Nach der Initialisierung
(INIT) auf 95/(2,2,2) werden entsprechend "<"counter und">"counter
auf 95/(3/2/3) erhöht
und das Inkrement wird zu allen Beziehungsvektoren aller anderen Listenelemente
in der Bedingungswerteliste propagiert (INCR). Das Endergebnis der
Bedingungswerteliste einschließlich
aller fünf
Bedingungen lautet: 10/(3,2,2), 60/(2,3,3), 70/(3,2,2), 90/(2,2,3), 95/(3,2,3)
und 100/(3,4,3).
-
Da
der boolesche Ausdruck die fünf
Bedingungen mit OR verknüpft,
muß mindestens
eine der fünf
Bedingungen übereinstimmen,
d.h. die Beziehungsvektorkomponenten müssen mindestens den Wert eines
Inkrements (1 in dem Beispiel) aufweisen. Da alle Vektorkomponenten
alle Listenelemente in 5 einen Wert von mindestens "1" aufweisen, liegen mindestens alle Bedingungswerte
zwischen "10" und "100" in dem übereinstimmenden
Wertebereich. In dem Listenelement für den Bedingungswert "100" ist ">"counter
jedoch auch größer als
1. Deshalb stimmen alle Werte größer als "100" auch mit den fünf Bedingungen überein. Ähnlich ist
in dem Listenelement für
den Bedingungswert "10" "<"counter größer als
1, so daß alle
Werte von weniger als 10 auch mit den fünf Bedingungen übereinstimmen.
Deshalb kann keine OR-Teilmenge
mit Bedingungswerten mit mindestens einer Vektorkomponente, die
den Anfangswert "0" aufweist, identifiziert
werden.
-
Die
Schlußfolgerung
ist, daß alle
möglichen Werte
mit den fünf
Bedingungen C1' bis
C5' übereinstimmen,
wenn sie mit OR verknüpft
werden, und die Selektivität
somit null ist. Ein entsprechender reduzierter boolescher Ausdruck
ist in diesem Fall sinnlos, da alle in der zweiten Datenverarbeitungseinrichtung 902 verfügbaren Datensätze mit
den fünf
Bedingungen übereinstimmen.
Deshalb hat es keinen Wert, eine entsprechende Abfrage zu senden.
Zum Beispiel kann die erste Datenverarbeitungseinrichtung 901 das
Senden der Abfrage unterdrücken.
Zusätzlich
kann die erste Datenverarbeitungseinrichtung 901 dem Benutzer
eine entsprechende Benachrichtigung senden, zum Beispiel durch Anzeigen
eines Informations-Popup für
den Benutzer.
-
Hätte man
die fünf
Bedingungen mit AND verknüpft,
wäre die
entsprechende AND-Teilmenge leer, da keine der Beziehungsvektorkomponenten
irgendwelcher der Listenelemente einen Zählerwert von "5" (Anzahl der Bedingungen mal dem Inkrement)
aufweist. Unabhängig
von den gegebenen Daten ist es also von einem logischen Standpunkt
aus gesehen unmöglich,
alle fünf
Bedingungen gleichzeitig zu erfüllen.
Deshalb ist es sinnlos, eine solche Abfrageaussage, die außerdem weitere
Bedingungen enthalten könnte,
zu der zweiten Datenverarbeitungseinrichtung zu senden. Die erste
Datenverarbeitungseinrichtung kann den die GUI benutzenden Benutzer
einfach darüber
informieren, daß in
diesem Fall die Ergebnismenge leer ist, wie zum Beispiel mit einem
Popup oder einer entsprechenden Klangnachricht. Die zweite Datenverarbeitungseinrichtung
wird von der nutzlosen Arbeitslast befreit und kann die entsprechende
Datenverarbeitungskapazität
anderweitig verwenden.
-
6 zeigt
ein drittes Beispiel für
die Anwendung des Verfahrens 400 in diesem Fall auf ein
alphanumerisches Attribut.
-
Das
Verfahren 400 und die entsprechenden Algorithmen, die in 4 und 5 besprochen
wurden, können
auch auf alphanumerische Daten angewandt werden. Das Beispiel von 6 verwendet Familiennamen
(LAST NAME, vgl. 2) als Beispiel für ein alphanumerisches
Attribut. Es werden nicht alle Operatoren in diesem Beispiel abgedeckt. Theoretisch
können
alle in 4, 5 bereits
verwendeten Relationaloperatoren verwendet werden. In der Praxis
ist es jedoch relativ ungewöhnlich,
wenn Wertebereiche (wie LAST NAME < "Smith" oder LAST NAME zwischen "Miller" und "Smith") an alphanumerischen
Attributen gewählt
werden.
-
Im
Gegensatz zu Suchen, die numerische Attribute verwenden, können bei
alphanumerischen Attributen Wildcards wie zum Beispiel "*" verwendet werden. Dieses dritte Beispiel
illustriert die Verwendung eines "*"-Wildcard am Ende
einer Zeichenkette. Fachleute können
die Erkenntnisse auf andere Wildcard-Muster oder ähnliche
Muster anwenden.
-
Man
nehme an, daß ein
boolescher Ausdruck empfangen wird, der die folgenden Bedingungen
in bezug auf das Attribut a enthält,
das für
LAST NAME steht:
C1'': a = Mi*
C2'': a = Miller
C3'':
a <> Smith
-
Der
boolesche Ausdruck verknüpft
alle drei Bedingungen mit AND.
-
Das
dritte Beispiel zeigt die sukzessive Anwendung der drei Bedingungen
und die resultierende Bedingungswerteliste mit den jeweiligen Beziehungsvektorkomponenten.
-
Da
das Wildcard "*" einen Wertebereich
angibt, wird eine Bedingung wie C1'' durch
zwei Listenelemente repräsentiert.
In diesem Beispiel kann die Bedingung "= Mi*" als "≥ Mi" und "≤ MiZZZZZZZZZZZZ ..." repräsentiert
werden. Die Obergrenze des Wertebereichs kann wie hier geschrieben unter
Verwendung des Großbuchstabens "Z" repräsentiert werden, dem Buchstaben
des Alphabets mit der höchsten
ASCII-Zahl. Wie oft "Z" wiederholt wird, ist
gleich der Anzahl von in der Zeichenkette verbleibenden Zeichen.
Zum Beispiel hat der Wert eine Länge
von 2 Zeichen. Wenn eine Metadatendeklaration für das Attribut (z.B. LAST NAME)
eine Länge
von 60 Zeichen aufweist, dann müssen
noch 60–2
= 58 Zeichen mit "Z" aufgefüllt werden.
-
Eine
vorteilhafte Alternative zur Repräsentation der oberen Grenze
für die
Bedingung besteht darin, "Mi*" für die obere
Grenze zu schreiben. Hierbei wird die obere Grenze nicht explizit
definiert. Das Wildcard "*" gibt nur an, daß dieses
Element als obere Grenze eines Bereichs verwendet wird, wobei es implizit
klar ist, daß es
keine Buchstabenkombination, die mit "Mi" beginnt,
gibt, die außerhalb
der oberen Grenze liegt.
-
Bei
einer Ausführungsform
der Erfindung arbeitet der vorgeschlagene Algorithmus ohne explizite obere
Grenze. Es reicht ein Platzhalter für eine obere Grenze aus. Dies
ist bequem, da es bedeutet, daß keine
Zeichenkettenoperation durchgeführt
werden muß,
um die Zeichenkette mit Zeichen wie etwa "Z" aufzufüllen, und
keine Metadateninformationen ausgewertet werden müssen, um
die Anzahl hinzuzufügender
Zeichen zu berechnen.
-
Die
Bedingungswerteliste des dritten Beispiels wird ähnlich wie bei dem ersten und
dem zweiten Beispiel erläutert
erzeugt. Nachdem alle drei Bedingungen C1'' bis
C3'' verarbeitet wurden,
enthält die
Bedingungswerteliste die Listenelemente Mi/(1,2,2), Miller/(2,3,2),
MI*/(2,2,1) und Smith/(1,0,1).
-
Die
erste Datenverarbeitungseinrichtung 901 kann nun die AND-Teilmenge 201 identifizieren,
die den Bedingungswert des Listenelements Miller/(2,3,2) enthält, weil
er der einzige Bedingungswert mit mindestens einer Beziehungsvektorkomponente ist,
die einen Wert gleich dem Inkrement (in diesem Fall 1), multipliziert
mit der Anzahl von Bedingungen (in diesem Fall 3), aufweist.
-
Auf
der Basis der AND-Teilmenge 201 kann der reduzierte boolesche
Ausdruck 320 zusammengestellt werden, weil die drei Bedingungen
des Beispiels auf eine einzige Bedingung reduziert werden können: a
= "Miller". Die anderen Bedingungen
sind redundant.
-
Wären die
drei Bedingungen in dem booleschen Ausdruck 310 durch einen
booleschen OR-Operator verknüpft,
kann die erste Datenverarbeitungseinrichtung eine OR-Teilmenge 202 von
Bedingungswerten in der Bedingungswerteliste mit mindestens einem
Teilmengenbedingungswert identifizieren, der einen Beziehungsvektor
mit mindestens einer Beziehungsvektorkomponente aufweist, die von
dem Anfangswert "0" verschieden ist.
In dem Beispiel ist dies für
den Bedingungswert des Listenelements Smith/(1,0,1) der Fall. Da "="counter für "Smith" immer noch "0" ist,
aber alle anderen Vektorkomponenten Werte ≥ 1 aufweisen, lautet die äquivalente
Bedingung für
die reduzierte boolesche Aussage 320, die die drei ursprünglichen
Bedingungen C1'' bis C3'' ersetzen kann: a <> Smith.
Die anderen Bedingungen sind redundant.
-
Manchmal
ist es nicht möglich,
die Vielzahl von Bedingungen auf nur eine Bedingung zu reduzieren,
sondern es verbleiben zwei oder mehr Bedingungen, die jeweils ein
Intervall repräsentieren,
das von den anderen Intervallen disjunkt ist. Man nehme an, daß sich diese
disjunkten Intervalle auf ein Attribut (numerisch oder alphanumerisch)
mit einer Kardinalität
beziehen, die klein genug ist, so daß die gesamte Liste von Attributwerten
lokal in der ersten Datenverarbeitungseinrichtung gespeichert ist.
Zum Beispiel kann ein Attribut COUNTRY eine Kardinalität von 100
aufweisen, und die Liste von 100 verschiedenen Werten für COUNTRY kann
lokal in der ersten Datenverarbeitungseinrichtung gespeichert werden. Man
nehme nun an, daß eine
Menge von N Bedingungen auf zwei disjunkte Intervalle (zwei Bedingungen)
reduziert wird. Wenn keine Werte zwischen den inneren Intervallgrenzen
auftreten, so daß diese Grenzen
tatsächlich
benachbarte Punkte sind, können
die beiden disjunkten Intervalle zu einem Ergebnisintervall vereinigt
werden, wobei das Ergebnis darin besteht, daß die beiden Bedingungen weiter
auf nur eine Bedingung reduziert werden. Dieses Prinzip kann zur
Vereinigung von mehr als zwei Intervallen verallgemeinert werden.
Es kann geschehen, daß nur
ein Teil der Intervalle zu einem Intervall zusammengeführt werden
kann, während
andere Intervalle nicht zusammengeführt werden können, weil
es Werte zwischen den Intervallgrenzen gibt, die nicht mit den Bedingungen übereinstimmen.
Sogar in diesen Fällen
erhält
man eine Reduktion der ursprünglichen Anzahl
von Bedingungen, was zu weniger Arbeitslast für die zweite Datenverarbeitungseinrichtung
führt.
-
Die
Erfindung kann in digitalen elektronischen Schaltkreisen oder in
Computerhardware, Firmware, Software oder in Kombinationen davon
implementiert werden. Die Erfindung kann als ein Computerprogrammprodukt
implementiert werden, d.h. als ein greifbar in einem Informationsträger, z.B.
in einem maschinenlesbaren Speichergerät oder in einem propagierten
Signal realisierten Informationsträger zur Ausführung durch
eine Datenverarbeitungsvorrichtung oder zur Steuerung ihrer Funktionsweise, wie
zum Beispiel eines programmierbaren Prozessors, eines Computers
oder mehrerer Computer. Ein Computerprogramm kann in einer beliebigen
Form von Programmiersprache geschrieben werden, einschließlich compilierter
oder interpretierter Sprachen, und es kann in beliebiger Form eingesetzt
werden, zum Beispiel als ein selbstständiges Programm oder als ein
Modul, als eine Komponente, eine Subroutine oder eine andere Einheit,
die für
die Verwendung in einer Datenverarbei tungsumgebung geeignet ist.
Ein Computerprogramm kann eingesetzt werden, um in einem Computer
oder auf mehreren Computern an einem Standort oder über mehrere
Standorte verteilt und durch ein Kommunikationsnetz verbunden ausgeführt zu werden.
-
Verfahrensschritte
der Erfindung können durch
einen oder mehrere programmierbare Prozessoren durchgeführt werden,
die ein Computerprogramm zur Durchführung von Funktionen der Erfindung
ausführen,
indem an Eingangsdaten operiert und eine Ausgabe erzeugt wird. Verfahrensschritte können auch
durch eine erfindungsgemäße Vorrichtung
durchgeführt
werden, die als spezielle Logikschaltkreise implementiert wird,
wie z.B. ein FPGA (field programmable gate array) oder ein ASIC
(anwendungsspezifische integrierte Schaltung).
-
Für die Ausführung eines
Computerprogramms geeignete Prozessoren sind zum Beispiel sowohl
allgemeine als auch spezielle Mikroprozessoren und beliebige einzelne
oder mehrere Prozessoren einer beliebigen Art von digitalem Computer.
Im allgemeinen empfängt
ein Prozessor Anweisungen und Daten aus einem Nur-Lese-Speicher
oder einem Direktzugriffsspeicher oder aus beidem. Die wesentlichen
Elemente eines Computers sind mindestens ein Prozessor zum Ausführen von
Anweisungen und ein oder mehrere Speichergeräte zum Speichern von Anweisungen
und Daten. Im allgemeinen enthält
ein Computer außerdem
ein oder mehrere Massenspeichergeräte zum Speichern von Daten,
z.B. magnetische, magnetooptische Datenträger oder optische Datenträger, oder
ist wirksam an solche angekoppelt, um Daten von ihnen zu empfangen
oder Daten zu ihnen zu transferieren. Geeignete Informationsträger zur
Realisierung von Computerprogrammanweisungen und Daten sind u.a.
alle Arten von nichtflüchtigem
Speicher, darunter zum Beispiel Halbleiterspeicherbausteine wie
zum Beispiel EPROM, EEPROM und Flash-Speicherbausteine; magnetische Datenträger, z.B.
interne Festplatten oder wechselbare Datenträger; magnetooptische Datenträger; und CD-ROM- und DVD-ROM-Datenträger. Der
Prozessor und der Speicher können
durch spezielle Logikschaltkreise ergänzt oder in diese integriert
werden.
-
Um
einen Dialog mit einem Benutzer bereitzustellen, kann die Erfindung
auf einem Computer implementiert werden, der ein Anzeigegerät aufweist, z.B.
einen Monitor mit Kathodenstrahlröhre (CRT) oder Flüssigkristallanzeige
(LCD), zum Anzeigen von Informationen für den Benutzer, sowie eine
Tastatur und ein Zeigegerät,
z.B. eine Maus oder einen Trackball, wodurch der Benutzer Eingaben
in dem Computer bereitstellen kann. Für den Dialog mit einem Benutzer
können
auch andere Arten von Geräten
verwendet werden; zum Beispiel kann dem Benutzer gegebene Rückmeldung
eine beliebige Form von Wahrnehmungsrückmeldung sein, wie zum Beispiel
visuelle Rückmeldung,
hörbare
Rückmeldung
oder Tastrückmeldung;
und Eingaben von dem Benutzer können
in beliebiger Form empfangen werden, zum Beispiel akustisch, per
Sprache oder Tasteingabe.
-
Die
Erfindung kann in einem Datenverarbeitungssystem implementiert werden,
das eine Backend-Komponente, z.B. als einen Datenserver, enthält, oder
das eine Middleware-Komponente, z.B. einen Anwendungsserver, enthält, oder
das eine Frontend-Komponente enthält, wie z.B. einen Client-Computer
mit einer graphischen Benutzeroberfläche oder einen Web-Browser,
durch den ein Benutzer mit einer Implementierung der Erfindung in
Dialog treten kann, oder eine beliebige Kombination solcher Backend-,
Middleware- oder Frontend-Komponenten.
Die Komponenten des Systems können durch
eine beliebige Form oder ein beliebiges Medium der digitalen Datenkommunikation,
z.B. ein Kommunikationsnetzwerk, verbunden werden. Zu Beispielen
für Kommunikationsnetze
gehören
ein lokales Netzwerk (LAN) und ein großflächiges Netzwerk (WAN), z.B.
das Internet.
-
Das
Datenverarbeitungssystem kann Clients und Server enthalten. Ein
Client und ein Server sind im allgemeinen voneinander abgesetzt
und treten in der Regel durch ein Kommunikationsnetzwerk miteinander
in Dialog. Die Beziehung von Client und Server entsteht mittels
Computerprogrammen, die auf den jeweiligen Computern ablaufen und
eine Client-Server-Beziehung zueinander aufweisen.