DE60300984T2 - Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung - Google Patents

Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung Download PDF

Info

Publication number
DE60300984T2
DE60300984T2 DE60300984T DE60300984T DE60300984T2 DE 60300984 T2 DE60300984 T2 DE 60300984T2 DE 60300984 T DE60300984 T DE 60300984T DE 60300984 T DE60300984 T DE 60300984T DE 60300984 T2 DE60300984 T2 DE 60300984T2
Authority
DE
Germany
Prior art keywords
condition
value
list
boolean expression
subset
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 - Lifetime
Application number
DE60300984T
Other languages
English (en)
Other versions
DE60300984D1 (de
Inventor
Volker Sauermann
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.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Application granted granted Critical
Publication of DE60300984D1 publication Critical patent/DE60300984D1/de
Publication of DE60300984T2 publication Critical patent/DE60300984T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Description

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

Claims (18)

  1. Computerimplementiertes Verfahren zum logischen Auswerten eines in einer Abfrageaussage verwendeten booleschen Ausdrucks, wobei sich der boolesche Ausdruck auf ein Attribut bezieht und eine Vielzahl von Bedingungen (C1, C2, C3) enthält, mit den folgenden Schritten: Empfangen (410) des booleschen Ausdrucks (310); Zerlegen (420) des booleschen Ausdrucks (310) in die Vielzahl von Bedingungen (C1, C2, C3); Reduzieren (430) des booleschen Ausdrucks (310); dadurch gekennzeichnet, daß für jede Bedingung der Vielzahl von Bedingungen (C1, C2, C3) die folgenden Schritte durchgeführt werden: Extrahieren (421) mindestens eines Bedingungswerts, der sich auf das Attribut bezieht, aus der jeweiligen Bedingung, wobei der mindestens eine Bedingungswert einen Wertebereich der Bedingung definiert; Einfügen (422) des mindestens einen Bedingungswerts in eine Bedingungswerteliste in sortierter Reihenfolge; Initialisieren (423) eines Beziehungsvektors für den mindestens einen Bedingungswert, wobei der Beziehungsvektor eine Komponente LESS THAN, eine Komponente EQUAL TO und eine Komponente GREATER THAN umfaßt; Einstellen (424) der Beziehungsvektoren für den mindestens einen Bedingungswert und für jeden weiteren Bedingungswert, der sich in der Bedingungsliste befindet und der in dem Wertebereich der Bedingung liegt, durch Erhöhen mindestens einer Beziehungsvektorkomponente für den mindestens einen Bedingungswert um ein Inkrement, um die Bedingung widerzuspiegeln, und durch Propagieren des Inkrements durch jede Beziehungsvektorkomponente für jeden weiteren Bedingungswert in der Bedingungsliste, solange der weitere Bedingungswert in dem Wertebereich der Bedingung liegt; so daß der boolesche Ausdruck (310) gemäß jedem Beziehungsvektor reduziert (430) wird.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Extrahierens (421) einen größten Bedingungswert und/oder einen kleinsten Bedingungswert der Bedingung abruft.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Schritt des Extrahierens (421) einen Identitätsbedingungswert der Bedingung abruft.
  4. Verfahren nach einem der vorherigen Ansprüche, wobei der Initialisierungsschritt (423) durch die folgenden Schritte durchgeführt wird: Setzen jeder Beziehungsvektorkomponente für den mindestens einen Bedingungswert auf einen Anfangswert, wenn die Bedingungsliste keinen weiteren Bedingungswert aufweist; Setzen jeder Beziehungsvektorkomponente auf den Komponentenwert von LESS THAN des Beziehungsvektors für den nächstgrößeren Bedingungswert in der Bedingungswerteliste; oder Setzen jeder Beziehungsvektorkomponente auf den Komponentenwert von GREATER THAN des Beziehungsvektors für den nächst kleineren Bedingungswert in der Bedingungswerteliste.
  5. Verfahren nach Anspruch 1, wobei der Schritt des Reduzierens (430) folgendes umfaßt: Identifizieren einer AND-Teilmenge (201) von Bedingungswerten in der Bedingungswerteliste, wobei jeder Teilmengenbedingungswert mindestens eine Beziehungsvektorkomponente aufweist, die einen Wert gleich dem Inkrement, multipliziert mit der Anzahl von Bedingungen in der Vielzahl, aufweist; und Zusammenstellen eines reduzierten booleschen Ausdrucks (320) auf der Basis der AND-Teilmenge.
  6. Verfahren nach Anspruch 1, wobei der Schritt des Reduzierens (430) folgendes umfaßt: Identifizieren einer OR-Teilmenge (202) von Bedingungswerten in der Bedingungswerteliste, wobei jeder Teilmengenbedingungswert mindestens eine Beziehungsvektorkomponente mit dem Anfangswert aufweist; und Zusammenstellen eines reduzierten booleschen Ausdrucks (320) auf der Basis der OR-Teilmenge.
  7. Verfahren nach Anspruch 5, weiterhin umfassend: wenn die AND-Teilmenge (201) leer ist, Senden einer entsprechenden Benachrichtigung zu einem Benutzer.
  8. Verfahren nach Anspruch 6, weiterhin umfassend: wenn die OR-Teilmenge (202) leer ist, Senden einer entsprechenden Benachrichtigung zu einem Benutzer.
  9. Verfahren nach Anspruch 5 oder 6, wobei der reduzierte boolesche Ausdruck (320) eine Bedingung umfaßt, die mindestens eine erste Bedingung und eine zweite Bedingung zusammenführt, wobei sich die erste und die zweite Bedingung auf das Attribut beziehen und disjunkte Intervalle repräsentieren, wobei zwischen den inneren Intervallgrenzen der disjunkte Intervalle keine Werte auftreten.
  10. Computerprogrammprodukt zum logischen Auswerten eines in einer Abfrageaussage verwendeten booleschen Ausdrucks, das auf einem Datenträger gespeichert oder durch ein Signal geführt wird und eine Vielzahl von Anweisungen umfaßt, die, wenn sie in einen Speicher einer Datenverarbeitungseinrichtung (901) geladen werden, bewirken, daß mindestens ein Prozessor der Datenverarbeitungseinrichtung (901) die Schritte beliebiger der Ansprüche 1 bis 9 ausführt.
  11. Computersystem (990) zum logischen Auswerten eines in einer Abfrageaussage verwendeten booleschen Ausdrucks, wobei sich der boolesche Ausdruck (310) auf ein Attribut bezieht und eine Vielzahl von Bedingungen (C1, C2, C3) umfaßt, umfassend: eine Datenverarbeitungseinrichtung (901) mit einem Speicher zum Empfangen (410) des booleschen Ausdrucks und zum Speichern einer Bedingungswerteliste; und mit mindestens einem Prozessor zum Ausführen von Computerprogrammanweisungen für folgendes: Zerlegen (420) des booleschen Ausdrucks (310) in die Vielzahl von Bedingungen (C1, C2, C3); für jede Bedingung der Vielzahl Ausführung von Anweisungen für folgendes: Extrahieren (421) mindestens eines Bedingungswerts, der sich auf das Attribut bezieht, aus der Bedingung, wobei der mindestens eine Bedingungswert einen Wertebereich der Bedingung definiert; Einfügen (422) des mindestens einen Bedingungswerts in eine Bedingungswerteliste in sortierter Reihenfolge; Initialisieren (423) eines Beziehungsvektors für den mindestens einen Bedingungswert, wobei der Beziehungsvektor eine Komponente LESS THAN, eine Komponente EQUAL TO und eine Komponente GREATER THAN umfaßt; Einstellen (424) der Beziehungsvektoren für den mindestens einen Bedingungswert und für jeden weiteren Bedingungswert, der sich in der Bedingungsliste befindet und der in dem Wertebereich der Bedingung liegt, wobei die Computerprogrammanweisungen, die bewirken, daß der mindestens eine Prozessor einstellt (424), folgendes aufweisen: einen ersten Teil zum Erhöhen mindestens einer Beziehungsvektorkomponente für den mindestens einen Bedingungswert um ein Inkrement, um die Bedingung widerzuspiegeln; und einen zweiten Teil zum Propagieren des Inkrements durch jede Beziehungsvektorkomponente für jeden weiteren Bedingungswert in der Bedingungsliste, solange der weitere Bedingungswert in dem Wertebereich der Bedingung liegt; und Ausführen weiterer Programmanweisungen zum Reduzieren (430) des booleschen Ausdrucks (310) gemäß jedem Beziehungsvektor.
  12. Computersystem nach Anspruch 11, wobei die Computerprogrammanweisungen, die bewirken, daß der mindestens eine Prozessor initialisiert (423), folgendes aufweisen: einen ersten Teil zum Setzen jeder Beziehungsvektorkomponente für den mindestens einen Bedingungswert auf einen Anfangswert, wenn die Bedingungsliste keinen weiteren Bedingungswert aufweist; und einen zweiten Teil zum Setzen jeder Beziehungsvektorkomponente auf den Komponentenwert von LESS THAN des Beziehungsvektors für den nächstgrößeren Bedingungswert in der Bedingungswerteliste; oder zum Setzen jeder Beziehungsvektorkomponente auf den Komponentenwert von GREATER THAN des Beziehungsvektors für den nächstkleineren Bedingungswert in der Bedingungswerteliste.
  13. Computersystem nach Anspruch 11 oder 12, wobei der Speicher folgendes speichert: eine AND-Teilmenge (201) von Bedingungswerten in der Bedingungswerteliste, wobei jeder Teilmengenbedingungswert mindestens eine Beziehungsvektorkomponente aufweist, die einen Wert gleich dem Inkrement, multipliziert mit der Anzahl von Bedingungen in der Vielzahl, aufweist; und wobei der mindestens eine Prozessor ferner Computerprogrammanweisungen zum Zusammenstellen eines reduzierten booleschen Ausdrucks (320) auf der Basis der AND-Teilmenge (201) ausführt.
  14. Computersystem nach Anspruch 11 oder 12, wobei der Speicher folgendes speichert: eine OR-Teilmenge (202) von Bedingungswerten in der Bedingungswerteliste, wobei jeder Teilmengenbedingungswert mindestens eine Beziehungsvektorkomponente mit dem Anfangswert aufweist; und wobei der mindestens eine Prozessor ferner Computerprogrammanweisungen zum Zusammenstellen eines reduzierten booleschen Ausdrucks (320) auf der Basis der OR-Teilmenge (202) ausführt.
  15. Computersystem nach Anspruch 11 oder 12, wobei der Speicher folgendes speichert: eine OR-Teilmenge von Bedingungswerten in der Bedingungswerteliste, wobei jeder Teilmengenbedingungswert mindestens eine Beziehungsvektorkomponente mit einem Wert größer als der Anfangswert aufweist; und wobei der mindestens eine Prozessor ferner Computerprogrammanweisungen zum Zusammenstellen eines reduzierten booleschen Ausdrucks (320) auf der Basis der OR-Teilmenge (202) ausführt.
  16. Computersystem nach Anspruch 13, wobei der mindestens eine Prozessor ferner Computerprogrammanweisungen zum Senden einer entsprechenden Benachrichtigung zu einem Benutzer, wenn die AND-Teilmenge (201) leer ist, ausführt.
  17. Computersystem nach Anspruch 14, wobei der mindestens eine Prozessor ferner Computerprogrammanweisungen zum Senden einer entsprechenden Benachrichtigung zu einem Benutzer, wenn die OR-Teilmenge (202) leer ist, ausführt.
  18. Computersystem nach einem der Ansprüche 13 bis 15, wobei der Speicher eine Liste aller Werte des Attributs speichert; und der mindestens eine Prozessor ferner Computerprogrammanweisungen zum Zusammenführen mindestens einer ersten Bedingung und einer zweiten Bedingung ausführt, wobei sich die erste und die zweite Bedingung auf das Attribut beziehen und disjunkte Intervalle repräsentieren, wobei zwischen den inneren Intervallgrenzen disjunkter Intervalle keine Werte auftreten.
DE60300984T 2003-06-04 2003-06-04 Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung Expired - Lifetime DE60300984T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP03012687A EP1484691B1 (de) 2003-06-04 2003-06-04 Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung

Publications (2)

Publication Number Publication Date
DE60300984D1 DE60300984D1 (de) 2005-08-11
DE60300984T2 true DE60300984T2 (de) 2006-04-27

Family

ID=33155151

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60300984T Expired - Lifetime DE60300984T2 (de) 2003-06-04 2003-06-04 Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung

Country Status (5)

Country Link
US (1) US7730053B2 (de)
EP (1) EP1484691B1 (de)
AT (1) ATE299278T1 (de)
DE (1) DE60300984T2 (de)
WO (1) WO2004109542A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8018471B2 (en) 2006-05-15 2011-09-13 Microsoft Corporation Visual component/clause merging
US10031938B2 (en) * 2006-12-04 2018-07-24 International Business Machines Corporation Determining Boolean logic and operator precedence of query conditions
US9147213B2 (en) 2007-10-26 2015-09-29 Zazzle Inc. Visualizing a custom product in situ
GB2466851A (en) * 2009-01-13 2010-07-14 Oracle Int Corp Method and interface for defining a complex Boolean expression
US9529842B2 (en) * 2009-12-28 2016-12-27 International Business Machines Corporation Dynamically creating queries to find related records in a database
US8479089B2 (en) * 2011-03-08 2013-07-02 Certusoft, Inc. Constructing and applying a constraint-choice-action matrix for decision making
US9824138B2 (en) * 2011-03-25 2017-11-21 Orbis Technologies, Inc. Systems and methods for three-term semantic search
BR112014004988A2 (pt) 2011-08-31 2017-05-30 Zazzle Com Inc processo de ladrilho para recuperação de imagem digital
US9442968B2 (en) 2014-03-31 2016-09-13 Sap Se Evaluation of variant configuration using in-memory technology
US10223419B2 (en) * 2015-07-16 2019-03-05 Futurewei Technologies, Inc. System and method for predicate pushdown and partition pruning in a distributed database
US10387443B2 (en) 2016-05-09 2019-08-20 Sap Se Exporting and importing database containers
US11093443B2 (en) 2017-06-29 2021-08-17 Sap Se Database-level container group management
US10674438B2 (en) 2017-06-29 2020-06-02 Sap Se Restricting access to external schemas from within a database level container by whitelisting allowed schemas
US10984021B2 (en) 2017-06-29 2021-04-20 Sap Se Deployment of independent database artifact groups
US10776330B2 (en) 2017-06-29 2020-09-15 Sap Se Optimized re-deployment of database artifacts
US10657114B2 (en) 2017-11-28 2020-05-19 Sap Se Reserving key specifications
US11030164B2 (en) 2018-01-18 2021-06-08 Sap Se Artifact deployment for application managed service instances

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8929158D0 (en) * 1989-12-23 1990-02-28 Int Computers Ltd Database system
US5560007A (en) * 1993-06-30 1996-09-24 Borland International, Inc. B-tree key-range bit map index optimization of database queries
US5664172A (en) 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
US6665664B2 (en) * 2001-01-11 2003-12-16 Sybase, Inc. Prime implicates and query optimization in relational databases

Also Published As

Publication number Publication date
WO2004109542A1 (en) 2004-12-16
EP1484691A1 (de) 2004-12-08
US20070038597A1 (en) 2007-02-15
US7730053B2 (en) 2010-06-01
ATE299278T1 (de) 2005-07-15
DE60300984D1 (de) 2005-08-11
EP1484691B1 (de) 2005-07-06

Similar Documents

Publication Publication Date Title
DE60300984T2 (de) Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung
DE19842688B4 (de) Verfahren zum Filtern von Daten, die von einem Datenanbieter stammen
DE60130475T2 (de) Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem
EP0910829B1 (de) Datenbanksystem
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
DE69433165T2 (de) Assoziatives textsuch- und wiederauffindungssystem
DE68927743T2 (de) Sortier-/Mischausgabe
DE10028688B4 (de) Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten
DE69910219T2 (de) Transformation der perspektive auf tabellen von relationalen datenbanken
DE60036303T2 (de) Methode und modell für dynamische anfragen
DE69126795T2 (de) Dateienverwaltungssystem mit graphischer benutzerschnittstelle zum aufstellen von fragen
DE602004003361T2 (de) System und verfahren zur erzeugung von verfeinerungskategorien für eine gruppe von suchergebnissen
DE69628374T2 (de) Datenverwaltungssystem
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE602005002062T2 (de) Optimierung der Sperrgranularität mittels Bereichssperren
DE102012210401A1 (de) Anpassung von Regeln für die Datenqualität auf der Grundlage von Anforderungen einer Benutzeranwendung
DE102013200355A1 (de) Zusammenfügen von Dokumenten aud der Grundlage der Kenntnis eines Dokumentenschemas
DE112013000987T5 (de) Erzeugen von Visualisierungen einer Anzeigegruppe von Tags, die Inhaltsinstanzen in Suchkriterien erfüllenden Objekten darstellen
DE102012209711A1 (de) Systeme und Verfahren zum Verwenden grafischer Darstellungen für die Verwaltung von Abfrageergebnissen
DE69719641T2 (de) Ein Verfahren, um Informationen auf Bildschirmgeräten in verschiedenen Grössen zu präsentieren
DE112008004025T5 (de) Analysieren von Ereignissen
DE60032258T2 (de) Bestimmen ob eine variable numerisch oder nicht numerisch ist
DE602004008742T2 (de) Methode und system zum abbilden von xml auf eine n-dimensionale datenstruktur
DE112010002620T5 (de) Ontologie-nutzung zum ordnen von datensätzen nachrelevanz
DE112018002626T5 (de) Verfahren und Systeme zur optimierten visuellen Zusammenfassung von Sequenzen mit zeitbezogenen Ereignisdaten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition