DE112014002696T5 - Verfahren und System für effizientes Sortieren in einer relationalen Datenbank - Google Patents

Verfahren und System für effizientes Sortieren in einer relationalen Datenbank Download PDF

Info

Publication number
DE112014002696T5
DE112014002696T5 DE112014002696.4T DE112014002696T DE112014002696T5 DE 112014002696 T5 DE112014002696 T5 DE 112014002696T5 DE 112014002696 T DE112014002696 T DE 112014002696T DE 112014002696 T5 DE112014002696 T5 DE 112014002696T5
Authority
DE
Germany
Prior art keywords
enumeration
sorted
values
list
catalog
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.)
Pending
Application number
DE112014002696.4T
Other languages
English (en)
Inventor
Alessandro Scotti
Luca Lazzaro
Leonardo Lanni
Francesco Carteri
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112014002696T5 publication Critical patent/DE112014002696T5/de
Pending legal-status Critical Current

Links

Images

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

Die vorliegende Erfindung betrifft ein Verfahren, ein Computerprogrammprodukt und ein System zum Berechnen einer sortierten Liste von Aufzählungswerten in einer bestimmten Sprache, die aus mindestens einer relationalen Datenbank gelesen werden, die mindestens eine Datentabelle enthält, die Aufzählungs-Programmiervariablenwerte speichert, und mindestens eine Katalogtabelle, die in mindestens einer Sprache einen Ausdruck der Aufzählungs-Programmiervariablenwerte speichert, wobei das Verfahren die Schritte des Empfangens einer Anforderung zum Bereitstellen von Aufzählungsvariablenwerten einschließlich einer in einer bestimmten Reihenfolge sortierten Liste der Werte einer bestimmten Aufzählung in einer bestimmten Sprache aufweist; anschließend werden alle Ausdrücke der Aufzählungswerte für die bestimmte Sprache für die bestimmte Aufzählung, die in einer entsprechenden Katalogtabelle gelesen wird, in der bestimmten Reihenfolge sortiert; wenn die sortierte Liste der bestimmten Aufzählungsausdruckswerte mit einer Liste der bestimmten Aufzählungsvariablenwerte übereinstimmt, die in der bestimmten Reihenfolge in derselben Katalogtabelle sortiert sind, wird die sortierte Liste von Aufzählungswerten in einer bestimmten Sprache aus dieser geordneten Katalogtabelle erstellt; wenn in dem vorhergehenden Schritt keine Übereinstimmung gefunden wurde, wenn die sortierte Liste der bestimmten Aufzählungsausdruckswerte mit einer Liste der bestimmten Aufzählungsvariablenwerte übereinstimmt, die in der umgekehrten Reihenfolge aus der bestimmten Reihenfolge in derselben Katalogtabelle sortiert wurden, wird die sortierte Liste von Aufzählungswerten in einer bestimmten Sprache aus der sortierten Katalogtabelle erstellt; wenn in einem der beiden vorhergehenden Schritte keine Übereinstimmung gefunden wurde, wird auf standardmäßige Weise eine neue verknüpfte Tabelle aus Daten- und Katalogtabelle aufgebaut.

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft Datenverarbeitungssysteme und insbesondere die Bearbeitung einer relationalen Datenbank; Ziel der Erfindung ist die Bereitstellung eines Verfahrens zum Sortieren von Aufzählungstabellen einer relationalen Datenbank.
  • Hintergrund der Erfindung
  • Aufzählungen sind Gruppen von benannten Ordinalzahlenwerten für eine qualitative Klassifizierung, die in einer aussagekräftigen Folge geordnet werden können. Zum Beispiel werden für Software-Anwendungen, die auf Computern Jobplanungen verwalten, Aufzählungen zum Qualifizieren von Status eines Jobs durch entsprechende Objektstatus verwendet, wobei jeder Status einer aus einer vordefinierten Gruppe von möglichen Status ist (READY, COMPLETE, FAILED, SUBMITTED, ... (BEREIT, VOLLSTÄNDIG, FEHLGESCHLAGEN, ÜBERGEBEN)}. Jeder Status wird als eine Zeichenfolge beschrieben. In einer Software-Anwendung kann jeder Wert jedoch zur Vereinfachung einem einfachen Aufzählungsvariablennamen zugehörig sein. Wenn zum Beispiel die eine Zeichenfolge als interne Variable angenommen wird, könnte der READY-Status „R” sein, SUBMITTED „S” und so weiter. Diese internen Werte, die zu Programmierungszwecken verwendet werden, haben für den Endbenutzer einer Software-Anwendung, der sie verwendet, keine Bedeutung. Zum Anzeigen der Daten der Anwendung für den Endbenutzer, zum Vorbereiten von verständlichen Berichten oder für irgendeinen anderen Fall, in dem eine verständliche Darstellung der Daten der Anwendung erforderlich ist, kann jedoch eine vollständige Zeichenfolge in der Sprache des Endbenutzers oder des Berichtlesers notwendig und wünschenswert sein. Zum Beispiel wird ein englischsprachiger Endbenutzer es verstehen, wenn der Job als „READY” angegeben wird, und ein italienischsprachiger Endbenutzer wird es verstehen, wenn der Job als „PRONTO” angegeben wird. Dies setzt voraus, dass der interne Wert des Jobstatus in eine Zeichenfolge umgewandelt wird, die in der Ländereinstellung der Benutzersprache gelesen wird. Es wird angemerkt, dass die in der Ländereinstellung bearbeiteten Daten Zeichenfolgen sind, die in alphabetischer Reihenfolge sortiert werden können. Aufzählungswerte können alles sein, sogar binäre Werte, solange sie auf irgendeine Weise sortiert werden können. Es soll angenommen werden, dass die Aufzählungsvariablenwerte zum Beispiel nach einem Befehl sortiert werden müssen, der vom Endbenutzer eingegeben wird, der die Daten der Anwendung anzeigt; wie hierin erklärt, ist für eine typische Software-Anwendung diese Anforderung nach dem Stand der Technik in Bezug auf Verarbeitungszeit und Speicherplatz wirklich kostspielig auszuführen, wenn die Notwendigkeit einer Darstellung der Aufzählungsvariablenwerte mit Zeichenfolgen in der Sprache des Endbenutzers mit der Sortierung der Zeichenfolgen in einer alphabetischen Reihenfolge einhergeht.
  • Eine typische Software-Anwendung, die eine relationale Datenbank zum Speichern von Variablenwerten verwendet, wird eine zusätzliche unabhängige Tabelle, den Katalog, zum Speichern der Zeichenfolgen in verschiedenen Sprachen verwenden, die den Aufzählungsvariablenwerten zugehörig sind. Zum Vorbereiten von Anwendungsvariablenwerten in einer für den Endbenutzer verständlichen Weise muss die Anwendung die nicht-verständlichen internen Aufzählungsvariablenwerte in entsprechende Zeichenfolgen in der Sprache des Endbenutzers übersetzen, indem sie in der Katalogtabelle gelesen werden. Für den Zugriff auf die Daten in relationalen Katalogdatenbanken führt die Anwendung SQL-Abfragen aus. Wenn die Anwendung die Aufzählungsvariablenwerte vorbereiten muss, die in alphabetischer Reihenfolge ihres Ausdrucks in der Ländereinstellung sortiert sind, wird eine JOIN-SQL-Anweisung zwischen der Anwendungsdatentabelle und der Katalogtabelle ausgeführt. Der Grund für den JOIN-Befehl für die beiden Tabellen ist, dass die Sortierung der Zeichenfolgen der Katalogdatenbank in alphabetischer Reihenfolge gleichzeitig mit den entsprechenden Aufzählungsvariablenwerten der Katalogdatenbank erfolgen muss. Eine JOIN-SQL-Operation kombiniert zwei Tabellen, indem alle möglichen Kombinationen jeder Zeile der ersten Tabelle mit allen Zeilen der zweiten Tabelle erzeugt werden; dazu müssen alle (n) Zeilen in der ersten Tabelle mit allen (m) Zeilen in der zweiten Tabelle mit Verarbeitungskosten von n × m geladen und verglichen werden; diese Operation ist daher sehr kostspielig, insbesondere, wenn tausende Objekte zu verarbeiten sind. Dies hat eine starke Auswirkung auf die Leistung der Software-Anwendungen, wie zum Beispiel Jobverwaltungsanwendungen, die hunderttausende von Jobs in einer verteilten Datenverarbeitungsumgebung planen.
  • Der oben veranschaulichte Nachteil muss für eine Software-Anwendung vermieden werden, die relationale SQL-Datenbanken für Daten und Katalog verwendet und sortierte Zeichenfolgen vorbereitet, die Aufzählungswerten entsprechen, die unter Verwendung einer Ländereinstellung umgewandelt werden. Es wird angemerkt, dass viel Arbeit in der Datenbanksystemtechnologie auf eine effiziente JOIN-Umsetzung abzielte, da relationale Systeme im Allgemeinen JOIN-SQL-Anweisungen verlangen, die dennoch sehr kostspielig geblieben sind.
  • Kurzdarstellung der Erfindung
  • Hier wird ein Verfahren zum Berechnen einer sortierten Liste von Aufzählungswerten in einer bestimmten Sprache beschrieben, die aus mindestens einer relationalen Datenbank gelesen werden, die mindestens eine Datentabelle enthält, die Programmier-Aufzählungsvariablenwerte speichert, und mindestens eine Katalogtabelle, die in mindestens einer Sprache einen Ausdruck der Programmier-Aufzählungsvariablenwerte speichert, wobei das Verfahren die folgenden Schritte aufweist:
    • – Empfangen einer Anforderung zum Bereitstellen von Aufzählungsvariablenwerten einschließlich einer in einer bestimmten Reihenfolge sortierten Liste der Werte einer bestimmten Aufzählung in einer bestimmten Sprache;
    • – Sortieren aller Ausdrücke in der bestimmten Sprache in der bestimmten Reihenfolge, die den Variablenwerten der bestimmten Aufzählung entsprechen, die in einer entsprechenden Katalogtabelle gelesen werden;
    • – wenn die sortierte Liste der bestimmten Aufzählungsausdruckswerte mit einer Liste der bestimmten Aufzählungsvariablenwerte übereinstimmt, die in der bestimmten Reihenfolge in derselben Katalogtabelle sortiert sind, Erstellen einer Liste der bestimmten Aufzählungsvariablenwerte in der entsprechenden Datentabelle, sortiert in der bestimmten Reihenfolge, wobei die anderen angeforderten Aufzählungsvariablen in der Datentabelle sind, wobei die folgenden Schritte übersprungen werden;
    • – wenn in dem vorhergehenden Schritt keine Übereinstimmung gefunden wurde, wenn die sortierte Liste der bestimmten Aufzählungsausdruckswerte mit einer Liste der bestimmten Aufzählungsvariablenwerte übereinstimmt, die in der umgekehrten Reihenfolge aus der bestimmten Reihenfolge in derselben Katalogtabelle sortiert wurden, Erstellen einer Liste der bestimmten Aufzählungsvariablenwerte in der entsprechenden Datentabelle, sortiert in der umgekehrten Reihenfolge aus der bestimmten Reihenfolge, wobei die anderen angeforderten Aufzählungsvariablen in der Datentabelle sind, wobei der folgenden Schritt übersprungen wird;
    • – wenn in einem der beiden vorhergehenden Schritte keine Übereinstimmung gefunden wurde, Erstellen einer neuen Tabelle, die mit derselben Katalogtabelle und der Datentabelle verknüpft wird, die die Aufzählungsvariablenwerte enthält, und Erstellen einer Liste mit den in der verknüpften Tabelle gelesenen Aufzählungsvariablenwerten, die nach den Ausdrücken der bestimmten Aufzählungsvariablenwerte in der bestimmten Sprache sortiert sind, wobei die anderen angeforderten Aufzählungsvariablen in der verknüpften Tabelle sind.
  • Das Verfahren weist ferner auf:
    • – in einem permanenten Speichermittel Speichern des Ergebnisses von Übereinstimmungen, die in den vorhergebenden Schritten ausgeführt wurden, die einer Signatur der Anforderung zugehörig sind;
    • – Ausführen des empfangenden Schritts;
    • – Lesen des Übereinstimmungsergebnisses in dem permanenten Speichermittel für diese Anforderung;
    • – wenn die Übereinstimmung in dem permanenten Speichermittel gefunden wird, Überspringen der Übereinstimmungsberechnung und direktes Ausführen der Erstellung einer sortierten Liste der anderen Schritte des Verfahrens.
  • Das Verfahren kann auch folgende erste Schritte aufweisen:
    • – Berechnen des Übereinstimmungsergebnisses für alle möglichen Aufzählungsvariablen und Sprachen in der mindestens einen Katalogtabelle;
    • – Ausführen des Schritts des Speicherns der Ergebnisse für eine in dem vorherigen Schritt berechnete Übereinstimmung in einem permanenten Speichermittel; wobei das Verfahren nach dem empfangenden Schritt ferner aufweist,
    • – Lesen des Übereinstimmungsergebnisses in dem permanenten Speichermittel für diese Anforderung;
    • – wenn die Übereinstimmung in dem permanenten Speichermittel gefunden wurde, Überspringen der Übereinstimmungsberechnung und direktes Ausführen der Erstellung einer sortierten Liste der anderen Schritte des Verfahrens.
  • Nach Empfang eines Ereignisses enthält das Verfahren auch einen Schritt des Mitteilens einer Änderung in der mindestens einen Katalogtabelle, die auf mindestens eine Aufzählung angewendet wird, wobei der Inhalt des permanenten Speichermittels durch Löschen der berechneten Übereinstimmungsergebnisse für sämtliche Anforderungen aktualisiert wird, die die Aufzählungen verwenden, die von der Änderung betroffen sind, und wobei die Übereinstimmung mit den neuen Katalogwerten für die von der Änderung betroffenen Aufzählung erneut berechnet wird.
  • In dem Verfahren ist der Ausdruck in der mindestens einen Katalogtabelle eine Zeichenfolge, und darin ist das Ordnen des Ausdrucks ein Ordnen, das in der alphabetischen Reihenfolge vorgenommen wird.
  • Das Verfahren kann als ein Computerprogrammprodukt umgesetzt werden, das Programmiercode-Anweisungen zum Ausführen der Schritte des Verfahrens aufweist, wenn das Programm auf einem Computer ausgeführt wird.
  • Ferner wird ein System beschrieben, das ein Mittel aufweist, das zum Ausführen des Verfahren wie beansprucht angepasst ist.
  • Kurzbeschreibung der Zeichnungen
  • 1 zeigt eine Datenverarbeitungsumgebung des Verfahrens einer Ausführungsform der Erfindung,
  • 2 ist eine Veranschaulichung der Datenbanktabellenverwaltung für ein Sortieren einer Aufzählung unter Verwendung einer Ländereinstellung nach dem Stand der Technik,
  • 3 ist ein Ablaufplan des Verfahrens gemäß einer Ausführungsform der Erfindung,
  • 4 zeigt eine Datenverarbeitungsumgebung des Verfahrens einer zweiten Ausführungsform der Erfindung,
  • 5 ist ein Ablaufplan des Verfahrens gemäß einer zweiten Ausführungsform der Erfindung.
  • Ausführliche Beschreibung
  • 1 zeigt eine Datenverarbeitungsumgebung des Verfahrens einer Ausführungsform der Erfindung. Es wird angenommen, dass eine Anwendung (100), die zum Beispiel auf einem Server ausgeführt wird, eine Datenbank (120) verwendet, um Daten in einer Tabelle 1 (125), ... Tabelle N ... zu speichern und um ländereinstellungsabhängige Informationen in einem Katalog 1 (130) ... Katalog N zu speichern, die Eingaben beschreiben, die zur Umsetzung von Aufzählungsvariablenwerten in Ausdrücke in einer für den Endbenutzer der Anwendung verständlichen bestimmten Sprache benötigt werden. Diese Figur ist nur eine Veranschaulichung, und die Anzahl von Tabellen, Katalogen ist variabel und unabhängig von dem Verfahren der Ausführungsform. Die Syntax der Anforderung (Programmierung auf höherer Ebene), die von dem Client an die Anwendung gesendet wird, und QUERY (ABFRAGE) (Programmierung auf niedrigerer Ebene zum Zugreifen auf relationale Datenbanken, die heute als SQL-Anweisungen standardisiert sind) dienen nur zur Veranschaulichung. Ein SQL-Entwickler greift mithilfe von SQL-Anweisungen wie SELECT (AUSWÄHLEN) auf die Datenbank zu, um auf ein Element aus einer Datenbanktabelle zuzugreifen. Oft ist jedoch eine weitere Abstraktionsebene oder eine API vorhanden, die Entwicklern die Aufgabe leichter macht (wobei „getOrderedObjects(LOCALE)” ein Beispiel dafür ist). Die API ermöglicht es den Entwicklern, in ihrer eigenen Domäne zu arbeiten statt mit Abfragen auf einer relativ niedrigen Ebene, um auf eine relationale Datenbank zuzugreifen.
  • Von der Client-Anwendung (105) wird eine Anforderung an die Anwendung gesendet, um eine Liste von Objekten zu erhalten, die nach den Werten einer Aufzählungsvariablen der Anwendung geordnet sind. Diese Anforderung kann zum Anzeigen einiger Ergebnisse für den Endbenutzer bestimmt sein. Die Anforderung (110) getOrderedObjects(LOCALE) verweist auf eine Anforderung für eine Liste von Objekten, die mindestens eine Aufzählungsvariable enthalten, geordnet nach der Umsetzung von Aufzählungsvariablenwerten in Ausdrücke, die für den Endbenutzer der Anwendung in einer bestimmten Sprache (LOCALE (LÄNDEREINSTELLUNG), angegeben als Parameter) verständlich sind, wobei eine derartige Umsetzung in dem Katalog gespeichert wird. Anders ausgedrückt, das System erhält eine Anforderung für eine Liste von Objekten. Das beschriebene Verfahren wird verwendet, sobald:
    • – die angeforderten Objekte mindestens einen Typ einer Aufzählungsvariablen enthalten
    • – der Aufzählungstyp nicht unverändert verwendet wird, sondern stattdessen in eine entsprechende Kennzeichnung (Label) umgesetzt wird, indem er in einem Katalog gesucht wird (z. B. zu dem Zweck, ihn für den Benutzer darzustellen)
    • – die angeforderte Liste von Objekten gemäß der Kennzeichnung sortiert wird, die aus dem Katalog stammt.
  • Es wird angemerkt, dass ein oder mehrere Objekte angefordert werden können und der Prozess, wenn er auf ein Objekt angewendet wird, in der restlichen Beschreibung in derselben Weise auch auf mehr als ein Objekt angewendet werden kann. Bei der standardmäßigen Verarbeitung der Anforderung des Clients verknüpft die Anwendung die Datentabellen (125) und die Katalogtabellen (130), um eine JOIN-Tabelle zu erstellen, und sortiert sie wie gefordert (110). In einer Ausführungsform der Erfindung verlangt die Anwendung von einer neuen Software-Komponente der Anwendung, einem Abfrageoptimierungsprogramm (135), nach Empfang der Anforderung eine Abfrage zu erzeugen. Das Abfrageoptimierungsprogramm legt zuerst fest, welcher Aufzählungsvariablenwert-Sortierprozess angewendet wird. Zum Ermitteln der besten Strategie liest das Abfrageoptimierungsprogramm die Aufzählungswerte aus den Datentabellen und die Kennzeichnungen aus den Katalogtabellen (115) und berechnet eine Sortierstrategie, die anschließend zum Erzeugen einer Abfrage verwendet wird. Es gibt die sortierte Liste „OrderedObjects by(LOCALE)” (112) an den Anforderer zurück, zum Beispiel die Client-Anwendung (105), Es wird angemerkt, dass eine Variation sein könnte, dass die Ordnung vollkommen an die Komponente des Abfrageoptimierungsprogramms delegiert wird, das die geordnete Liste vorbereiten könnte, wobei diese Wahl das globale Verfahren zum Optimieren der Sortierung von Aufzählungsvariablen, ausgedrückt in einer bestimmten Sprache, nicht ändert.
  • Der Prozess der bevorzugten Ausführungsform, wie ausführlich in der Beschreibung von 3 erörtert, kann schnellere und effizientere Abfragen im Vergleich mit dem herkömmlichen Prozess nach dem Stand der Technik erzeugen, der in jedem Fall eine JOIN-Operation für Daten- und Katalogtabellen aufweist, wenn eine Anforderung zum Sortieren (110) verarbeitet werden muss.
  • 2 ist eine Veranschaulichung der Datenbanktabellenverwaltung zum Sortieren einer Aufzählung, die eine bestimmte Ländereinstellung nach dem Stand der Technik verwendet. Die Software-Anwendung, die zum Beispiel eine Jobverwaltungsanwendung ist, verwendet eine relationale Datenbank zum Speichern von Daten, wie in einer Anwendungsdaten-Tabelle (200) veranschaulicht. Die Tabelle weist mindestens eine Spalte (204) für die Status von Jobs auf, die Aufzählungswerte sind. Die Variable, die für den Status von Jobs verwendet wird, die durch die Software-Anwendung verwaltet werden, ist eine Zeichenfolge aus einem Buchstaben; da Computerprogramme oft in englischer Sprache geschrieben werden, wird hier als Beispiel angenommen, dass der verwendete Wert der Anfangsbuchstabe der englischen Wörter für Jobstatus ist: „R” wird für einen Job verwendet, der „Ready” ist, „S” für Job „Submitted”, „C” für „Complete” und „F” für „Failed”. Die Jobverwaltungsanwendung pflegt in einer Datenbankspalte 202 die Liste der Jobs, die verwaltet werden; in der Spalte 204 pflegt die Jobverwaltungsanwendung den entsprechenden Aufzählungsvariablenwert für jeden Job. In diesem Beispiel werden speziell die Jobs J1, J2, J3 und J4 behandelt.
  • Unabhängig davon enthält eine Katalogdatenbank, die der Entwickler ursprünglich erstellt haben kann (210), die Zeichenfolgen, die den Aufzählungswerten für alle unterstützten verschiedenen Sprachen entsprechen. Die Daten für englische Sprache umfassen die 4 Zeilen in der Katalogtabelle mit dem Wort „English”, das in einer Spalte 212 „Lang” (für „language”) gespeichert ist. Da es sich um eine Aufzählung handelt, weist jede Zeile der Ländereinstellung für die englische Sprache mindestens in einer Spalte 214 PS (Possible States (mögliche Status)) die Aufzählungswerte in einer finiten Zahl für einen Typ eines Jobstatus („Jobstatus” in Spalte 218) und in einer Spalte 216 „Label” (Kennzeichnung) die entsprechende Zeichenfolge in englischer Sprache auf, die ein aussagekräftiger Ausdruck in englischer Sprache ist. Die aussagekräftige Zeichenfolge für den Variablenwert „R” ist „Ready”. Desgleichen werden diese Zeichenfolgen für jedes Paar aus Aufzählungswert und unterstützter Sprache bereitgestellt. Zum Beispiel ist der aussagekräftige Ausdruck für denselben Variablenwert „R” in italienischer Sprache „Pronto”, wie in der Sprachenspalte „Label” 216 für die Zeile zu lesen ist, für die in der Spalte 212 „Italian” und in der Spalte 214 der Variablenwert „R” der möglichen Status zu lesen ist.
  • Die Aufzählung, die das Verfahren der Erfindung unterstützt, kann in einer bestimmten Sprache in der Katalogdatenbank als eine Zeichenfolge ausgedrückt werden, wie im Beispiel für Jobstatus (completed, failed usw.). Wenn der Ausdruck geordnet wird, kann dies in alphabetischer Reihenfolge geschehen oder in Bezug auf Uhrzeit oder Datum oder einer beliebigen Ordnung, die definiert werden kann. Dasselbe Verfahren gilt für diese anderen Fälle.
  • Es wird angemerkt, dass die Anwendungsdaten-Tabelle und die Katalogtabelle jeweils eine Tabelle, wie hier veranschaulicht, oder mehrere Tabellen enthalten können, zum Beispiel eine für jede Sprache für die Katalogdatenbank. Desgleichen kann jede Tabelle mehrere Spalten enthalten, auch wenn das vereinfachte Beispiel von 2 ausreichend ist, um das Verfahren nach dem Stand der Technik zu beschreiben. Ebenso wie ein Beispiel für die Anwendungsdaten eine zusätzliche Spalte „Stream” (Strom) (206) zum Speichern der Jobstrom-IDs für eine Gruppe von Jobs haben kann. Diese Jobstromvariable wird für die beispielhafte Jobverwaltungsanwendung zum Verwalten von Jobs nach Gruppe verwendet. Außerdem kann die Katalogtabelle verschiedene Aufzählungsvariablen enthalten, wobei die eine für das Beispiel von 2, der Jobstatus, die so genannte „State”-(Status) Variable in der Anwendungsdaten-Tabelle ist, sodass die in der Katalogtabelle betrachteten Zeilen der Aufzählungsvariablen „Jobstatus” zugehörig sind, wie in der Katalogtabellenspalte „Type” (Typ) erwähnt. Weitere Zeilen in der Katalogtabelle könnten einem „Type” entsprechen, der sich vom Jobstatus unterscheidet. In der Spalte „Type” in der Katalogtabelle könnte „EarlyAction” (frühzeitige Aktion) stehen: es könnte sein, dass diese Aufzählungsvariable in alphabetischer Reihenfolge in einer bestimmten Sprache sortiert werden muss (siehe anderes Beispiel in dem Dokument): diese Aufzählungsvariable gibt die Aktionen an, die für den Job ausgeführt werden müssen.
  • Die Jobverwaltungsanwendung kann die Katalogdatenbank immer für die Suche nach einem aussagekräftigen Wert in einer bestimmten Ländereinstellung verwenden. Sie sucht nach dem Schlüssel (State = R) in den Zeilen „English” des Katalogs und findet die Zeichenfolge „Ready”, oder in den Zeilen „Italian” des Katalogs und findet die Zeichenfolge „Pronto”. Wenn die Jobverwaltungsanwendung zu einem Zeitpunkt Datensätze der Aufzählungsvariablenwerte und deren entsprechende Zeichenfolge auf Grundlage von Ausdrücken vorbereiten und in der alphabetischen Reihenfolge der Zeichenfolgen sortieren muss, muss zuerst ein dynamischer Aufbau einer JOIN-Tabelle erfolgen. Eine hier veranschaulichte JOIN-Tabelle (220) weist mindestens die Spalten „Jobs” und „State” der Anwendungsdaten-Tabelle und eine Tabelle mit den Kennzeichnungen des jeweiligen Status wie in der Katalogtabelle gefunden auf. Tatsächlich ist es notwendig, die Anwendungsdaten-Tabelle und die Katalogtabelle zuerst durch eine JOIN-Operation zu verknüpfen und anschließend die Sortieroperation für die Katalogkennzeichnungen in der JOIN-Tabelle auszuführen.
  • Die SQL-Anweisungen, die ein Programm für den Zugriff auf relationale Datenbanken verwendet, können wie folgt lauten:
    SELECT ”etwas” FROM ”einer Tabelle” WHERE ”eine Bedingung angegeben werden kann, um die Anzahl von Daten zu begrenzen”
  • Beispiel:
    • SELECT (Jobs, State) FROM Application_data
    • WHERE (Application data.Stream = 'S1') was bedeutet:
    • SELECT Spalten mit der Bezeichnung „Jobs” und „State” FROM allen Zeilen in einer Tabelle mit der Bezeichnung „Application_data” WHERE der Wert einer Spalte mit der Bezeichnung „Stream” „S1” lautet. zum Programmieren der Sortierung einer Tabelle:
    • ORDER BY ”angeben, das Ergebnis nach einigen Kriterien anzuordnen”
  • Es soll angenommen werden, dass die Anwendung eine Anzeige der Liste von Jobs und ihrer Status vorbereitet, ausgedrückt in Italienisch und sortiert in der alphabetischen Reihenfolge der möglichen Jobstatus; die Anwendung verwendet die Datenbanken für Anwendungsdaten (200) und Katalog (210) von 2, die beide eine eindeutige Tabelle und die folgenden SQL-Anweisungen zum Erstellen der JOIN-Tabelle (220) aufweisen:
    SELECT (Jobs, State) FROM Application_data
    JOIN Katalog ON Application_Data.State = Catalog.PS
    WHERE (Catalog.Lang = 'Italian')
  • Diese Anweisungen erstellen die JOIN-Tabelle von 2 (220), die den entsprechenden Wert von Status aufweist, die die entsprechenden Kennzeichnungen in italienischer Sprache der Katalogtabelle sind. Diese JOIN-Tabelle enthält eine erste Spalte (222) von Job-IDs, die die Aufzählungsvariablenwerte (J1, J2, J3 und J4) sind, wie bereits in der Spalte „Jobs” in der Anwendungsdaten-Tabelle; sie weist auch eine zweite Spalte (224) der Jobstatus auf, die die Aufzählungsvariablenwerte (S, R, C, F) sind, wie bereits in der Anwendungsdaten-Tabelle. Eine dritte Spalte (226) weist die Kennzeichnungen auf, die in der Katalogtabelle unter „Label” (216) gelesen werden, wobei diese Kennzeichnungen den Status entsprechen, die in der Spalte „PS” (214) für die italienische Sprache gelesen werden, also für die Zeilen, in denen die Spalte „Lang” (212) „Italian” enthält. Dem Status „R” wird in der JOIN-Tabelle die Kennzeichnung „Pronto” zugeordnet, wie in der Katalogtabelle zu lesen; „S” wird zu „Inserito”, „C” zu „Terminato” und „F” zu „Fallito” zugeordnet.
  • Wenn die Verknüpfungstabelle bereit ist, kann die Anwendung die Zeilen gemäß der aufsteigenden alphabetischen Reihenfolge der Beschriftungen (226) unter Verwendung der folgenden SQL-Klausel ordnen, die auf die JOIN-Tabelle angewendet wird:
    ORDER BY Kennzeichnung ASC;
    das Ergebnis wird mit der sortierten JOIN-Tabelle (230) in 2 veranschaulicht, in der die Zeilen der JOIN-Tabelle 220 in alphabetischer Reihenfolge aller Kennzeichnungen in italienischer Sprache in der Spalte 226 sortiert sind (Fallito, Inserito, Pronto und Terminato). Die sortierte JOIN-Tabelle kann direkt für die Anzeige für einen italienisch sprechenden Benutzer der Anwendung verwendet werden, wobei die verschiedenen Status der Jobs, die aktuell von der Anwendung verwaltet werden, die in der aufsteigenden alphabetischen Reihenfolge der Zeichenfolge aufgelistet sind, die Jobstatus-Werte in italienischer Sprache beschreiben.
  • 3 ist ein Ablaufplan des Verfahrens gemäß einer Ausführungsform der Erfindung. Gemäß einer Ausführungsform der Erfindung wird zum Verarbeiten einer Anforderung zum Vorbereiten einer Darstellung mit Zeichenfolgen gemäß einer bestimmten Ländereinstellung für die Werte einer Aufzählungsvariablen zuerst die Sortierstrategie festgelegt.
  • Ein Beispiel für die Umsetzung ist ein Analysesystem für eine Entscheidung für die Sortierstrategie, wobei als Eingabe eine „OrdinalType”-Klasse und eine „userLocale” (d. h. Sprache) verwendet werden. Danach wird eine Werteliste abgerufen, die der internen Darstellung des Eingabetyps und den entsprechenden übersetzten Versionen aus dem Katalog entspricht. Wenn der Eingabetyp „BooleanValue” und die Sprache „English” ist, lauten die Werte intern „Y” und „N”, was im Katalog „Ja” und „Nein” entspricht.
  • Das System erzeugt die folgenden 3 Listen:
    • 1. in Reihenfolge ASCENDING (AUFSTEIGEND) sortierte interne Werte
    • 2. in Reihenfolge DESCENDING (ABSTEIGEND) sortierte interne Werte
    • 3. interne Werte, die nach der entsprechenden Katalogzeichenfolge in Reihenfolge ASCENDING sortiert sind
  • Zum Beispiel liegen im Fall eines „BooleanValue” diese Listen vor:
    • 1. (N, Y)
    • 2. (Y, N )
    • 3. (N, Y) entsprechend der sortierten Liste („No”, „Yes”)
  • Wenn die Sprache „English” ist, ist anzumerken, dass die nach der entsprechenden Katalogzeichenfolge in Reihenfolge ASCENDING sortierten internen Werte
    („No”, „Yes”) entsprechen, also (N, Y): 1. stimmt mit 3. überein
  • Wenn die Sprache jedoch „German” ist, entsprechen die nach der entsprechenden Katalogzeichenfolge in Reihenfolge ASCENDING sortierten internen Werte („Ja”, „Nein”), also (Y, N): 2. stimmt mit 3. überein
  • Das System ermittelt anschließend die optimale Sortierstrategie für jedes bestimmte Paar (Aufzählungstyp, Ländereinstellung) wie folgt:
    • – wenn list#3 (Liste 3) gleich list#1 (Liste 1) ist, lautet die Strategie „Katalog ignorieren (kein JOIN), nach Aufzählungswerten sortieren”
    • – wenn list#3 gleich list#2 (Liste 2) ist, lautet die Strategie „Katalog ignorieren (kein JOIN), nach Aufzählungswerten unter Verwendung einer umgekehrten Reihenfolge zu derjenigen sortieren, die durch die ursprüngliche Sortieroperation angefordert wird (wenn zum Beispiel eine Abfrage in Reihenfolge ASCENDING nach den Katalogzeichenfolgen sortiert werden soll, wird anschließend gemäß dieser Strategie zum Erreichen des gewünschten Ergebnisses die gegenwärtige Abfrage nach den Aufzählungswerten in Reihenfolge DESCENDING sortiert)”
    • – andernfalls lautet die Strategie „Katalog verwenden (JOIN-Operation für die Tabellen und eine Sortierung nach der Zeichenfolgen in der für den Endbenutzer erforderlichen Reihenfolge ausführen)”
  • In diesem einfachen Beispiel ist für die Ländereinstellung „English” list#3 = list#1, daher lautet die Strategie „Katalog ignorieren (kein JOIN), nach Aufzählungswerten sortieren”.
  • In diesem einfachen Beispiel ist für die Ländereinstellung „German” list#3 = list#2, daher lautet die Strategie „Katalog ignorieren (kein JOIN), nach Aufzählungswerten unter Verwendung einer umgekehrten Reihenfolge zu derjenigen sortieren, die durch die ursprüngliche Sortieroperation angefordert wird”.
  • Das gesamte System ist dynamisch, da die Sortierstrategie vom Typ, der Ländereinstellung (Sprache) und dem tatsächlichen Inhalt der Katalogtabelle abhängt.
  • In einem komplexeren Beispiel soll angenommen werden, dass ein Aufzählungstyp mit der Bezeichnung „EarlyAction” vorhanden ist, der drei Werte hat: „A” (ABEND), „C” (CONTINUE) und „F” (CONFIRM). Der englische Katalog sieht wie folgt aus:
    A → Abend
    C → Continue
    F → Confirm
  • In einer Katalogreihenfolge wird die Liste als A, F, C sortiert. Diese stimmt mit keiner „nativen” Reihenfolge überein, sodass die Strategie „Katalog verwenden” lautet und eine JOIN-Operation verwendet wird:
    SELECT·FROM Application_data
    JOIN Katalog mit Application_data.EarlyAction = Catalog.PS
    WHERE (Catalog.Lang = 'English und Catalog.Type = ”EarlyAction”)
    ORDER BY Katalogkennzeichnung
  • Im Folgenden wird der italienische Katalog betrachtet:
    A → Fine anomala
    C → Continua
    F → Conferma
  • In der Katalogreihenfolge ist die Liste als F, C, A sortiert. Dies stimmt mit der umgekehrten (DESCENDING) nativen Reihenfolge überein, sodass die beste Strategie jetzt lautet „Katalog ignorieren (kein JOIN), nach Aufzählungswerten unter Verwendung einer umgekehrten Reihenfolge zu derjenigen sortieren, die durch die ursprüngliche Sortieroperation angefordert wird”.
    SELECT·FROM Application_data
    ORDER BY Application_data.EarlyAction DESC
  • Es ist ersichtlich, dass unter Verwendung dieses Systems dieselbe Verwendungsabfrage zwei völlig verschiedene SQL-Anweisungen erzeugt, und dass durch die Nutzung der tatsächlichen Werte des italienischen Katalogs die zweite Abfrage optimiert wurde und auf eine effiziente Weise ausgeführt wird.
  • Der Ablaufplan von 3 beginnt mit einem ersten Schritt (300) des Abfangens der Standardanforderung in der Anwendung zum Aufbauen einer Liste von Zeichenfolgen für die Werte einer Aufzählungsvariablen in der Anwendung der Anwendungsdaten-Datenbank, geordnet nach der alphabetischen Reihenfolge der Zeichenfolgen, die diesem Wert in einer Sprachen-Ländereinstellung entsprechen, der in der Katalogdatenbank gespeichert ist. Dasselbe gilt für mehr als einen Aufzählungswert, die Beschreibung ändert sich dadurch nicht.
  • Die Sortierstrategie wird anschließend festgelegt, sie beginnt mit dem Erfassen der Liste von internen Aufzählungswerten, die nach der entsprechenden Katalogzeichenfolge in Reihenfolge ASCENDING sortiert sind: in der Katalogtabelle von 1 lautet das Ergebnis C, F, R, S, wenn die Ländereinstellung der Anforderung „English” lautet. Die Liste der internen Aufzählungswerte, sortiert in Reihenfolge ASCENDING, wird erfasst: in der Anwendungsdaten-Tabelle von 1 lautet das Ergebnis C, F, R, S, wenn die Ländereinstellung der Anforderung „English” lautet. Die beiden Listen werden verglichen (305), wenn das Prüfergebnis positiv ist, lautet die Strategie zum Ausführen der oben genannten Anforderung, die JOIN-Operation zu ignorieren und stattdessen die Aufzählungsvariablenwerte direkt zu sortieren (310) und zu der Anwendung zurückzukehren (315), um die Ausführung der Anforderung abzuschließen und die sortierten Aufzählungswerte durch die entsprechende Zeichenfolge in der Katalogdatenbank zu ersetzen.
  • Wenn nach dem Vergleichen der beiden Listen (305) das Prüfergebnis negativ ist, wird die Liste der in Reihenfolge DESCENDING sortierten internen Aufzählungswerte erfasst und mit der Liste von internen Aufzeichnungswerten verglichen (320), die nach der entsprechenden Zeichenfolge in Reihenfolge ASCENDING sortiert sind. Wenn das Prüfergebnis positiv ist, wird die Strategie zum Ausführen der oben genannten Anforderung lauten, die JOIN-Operation zu ignorieren und stattdessen die Aufzählungsvariablenwerte direkt zu sortieren (325) und zu der Anwendung zurückzukehren (315), um die Ausführung der Anforderung abzuschließen und die sortierten Aufzählungswerte durch die entsprechende Zeichenfolge in der Katalogdatenbank zu ersetzen.
  • Wenn das Ergebnis der zweiten Prüfung (320) zum Überprüfen, ob die nach der entsprechenden Katalogzeichenfolge in Reihenfolge ASCENDING sortierten internen Werte mit den in Reihenfolge DESCENDING sortierten internen Werte übereinstimmen, negativ ist, wird eine JOIN-Operation für die internen Werte und den Katalog ausgeführt (330), (wodurch die JOIN-Tabelle 220 von 2 erhalten wird). Danach wird eine Sortierung an der JOIN-Tabelle ausgeführt (335), (wodurch die sortierte JOIN-Tabelle 230 von 2 erhalten wird). Anschließend kehrt der Prozess zu der Anwendung zurück, wobei der Inhalt der sortierten JOIN-Tabelle das Ergebnis der Anforderung enthält.
  • Es wird angemerkt, dass der Ablaufplan ein Verfahren beschreibt, das bei einer Anforderung zum Sortieren einer bestimmten Aufzählung ausgeführt wird. Wenn die Anforderung für mehr als eine Aufzählung gilt (mehr als ein Programmierobjekt von getOrderedObject in dem Programm), wird der Ablaufplan für jede Aufzählung (jedes Objekt) wiederholt.
  • 4 zeigt eine Datenverarbeitungsumgebung des Verfahrens einer zweiten Ausführungsform der Erfindung. In einer zweiten Ausführungsform der Erfindung wird die Anwendung um eine zweite Funktion erweitert, die als eine zweite Software-Komponente, die „Strategie-Cachespeicher”-Komponente (400) für die Anwendung (100) umgesetzt werden kann. Die Strategie-Cachespeicher-Komponente, die ebenfalls mit der Anwendung in Beziehung steht, ist ein Verwaltungsprogramm zum Speichern einer Sortierstrategie, die für eine bestimmte Anforderung und gemäß dem Inhalt in dem Katalog berechnet wurde. Wie in 3 erläutert, wird eine Strategie zum Sortieren berechnet (305, 320), bevor eine Sortierung vorgenommen wird, um auf eine Anforderung zu antworten, den Ausdruck, der in einer bestimmten Sprache eine Aufzählungswertvariable beschreibt, in einer alphabetischen Reihenfolge (110) getOrderedObjects(LOCALE) zu sortieren. Diese Strategie wird durch das Abfrageoptimierungsprogramm für jede Anforderung zum Sortieren berechnet und kann sich ändern, wenn sich der Katalog ändert. Wenn das Abfrageoptimierungsprogramm die Sortierstrategie berechnet, werden einige Informationen aus der Katalogtabelle gelesen, und zwar die Liste von Kennzeichnungen für einen bestimmten Aufzählungstyp und eine bestimmte Aufzählungssprache. Jede Änderung an diesen Daten muss überwacht werden: wenn sich eine Kennzeichnung, die auf einen Wert eines bestimmten Typs verwiesen hat, in dem Katalog ändert, muss die Strategie für diesen Typ neu berechnet werden, anschließend kann die von dem Abfrageoptimierungsprogramm für eine Anforderung eines bestimmten Typs bereits berechnete Sortierstrategie nicht mehr verwendet werden, anschließend kann die von dem Abfrageoptimierungsprogramm für eine Anforderung bereits berechnete Sortierstrategie nicht mehr verwendet werden. Der Strategie-Cachespeicher speichert die Sortierstrategie, die vorher von dem Abfrageoptimierungsprogramm berechnet wurde, in einem Repository (420), wobei die Strategie unter Verwendung eines Paars aus (Schlüssel, Wert) verschlüsselt sein kann, wobei der Wert das Ergebnis der Berechnung der besten Strategie durch das Abfrageoptimierungsprogramm ist: alle Werte sind möglich, es könnte „1” sein, wenn das Ergebnis lautet „Datenbankwerte sortieren” (310) oder „2” für „REVERSE (umgekehrte) Sortierung von Datenbankwerten ausführen” (325) oder „3” für „JOIN-Tabelle erstellen und Sortierung an JOIN-Tabelle ausführen” (330, 335). Der Schlüssel ist einer Anforderung zugehörig, sodass Anforderungen, die dieselbe Ausgabe haben sollten, denselben Schlüssel haben. Das Abfrageoptimierungsprogramm sendet die für eine bestimmte Anforderung berechnete Strategie an den Strategie-Cachespeicher, der diese Informationen im Repository speichert.
  • Es ist anzumerken, dass ein Repository eine Art von permanentem Speichermittel für einen Computer ist; dasselbe Verfahren gilt für jeden anderen Typ eines permanenten Speichermittels.
  • Der Strategie-Cachespeicher behält die Informationen im Repository genau bei. Wenn der Katalog für einen bestimmten Typ aktualisiert wird, ist die Strategie für diesen Typ nicht mehr für die Anforderung gültig, und die Strategie-Cachespeicher-Komponente verwirft alle diesem Typ zugehörigen Informationen, sodass, wenn das Abfrageoptimierungsprogramm eine Strategie für eine Anforderung wiederverwenden muss, die Strategie neu berechnet wird und die Informationen erneut an den Strategie-Cachespeicher übergeben werden, der sie im Repository speichert. Der Strategie-Cachespeicher wird über jede Änderung im Repository durch einen Datenbank-TRIGGER benachrichtigt, der ein von relationalen Datenbanken bereitgestellter Mechanismus ist, der in Aktion tritt, wenn eine Änderung eintritt. Ein CatalogChange() (410) wird vom Strategie-Cachespeicher empfangen, der somit alle Informationen aus dem Repository verwirft, und das Abfrageoptimierungsprogramm muss die Strategie erneut berechnen und zum Speichern an die Strategie-Cachespeicher-Komponente übergeben.
  • Das Repository enthält ein Paar von Informationen, das eine Information ist, die zum Erkennen einer bestimmten Anforderung verwendet wird, und eine, die zum Erkennen eines Ergebnisses in der Übereinstimmung verwendet wird, das zum Festlegen berechnet wurde, welche Sortierstrategie anzuwenden ist. Zum Beispiel ist jede Signatur der Anforderung gültig; jede Variable für das Prüfergebnis ist gültig.
  • 5 ist ein Ablaufplan des Verfahrens gemäß einer zweiten Ausführungsform der Erfindung. Optionale Schritte (340, 342, 345), die dieser zweiten Ausführungsform entsprechen, wurden im Vergleich mit dem ersten Ablaufplan von 3 hinzugefügt. Die Sortierstrategie, die durch den in 3 veranschaulichten Ablauf berechnet wurde, kann optional in einem permanentem Repository (420) gespeichert werden. Wenn das Repository verwendet wird, wird bei einer benötigten Sortierung das Repository zuerst überprüft (Prüfung 340), um festzustellen, ob eine Sortierstrategie für die angegebenen Paare (Aufzählungstyp, Benutzersprache) gefunden wird, und falls dies der Fall ist (Antwort „Yes” auf Prüfung 340), wird der Rest des Ablaufs (d. h. alle Schritte ab und einschließlich Schritt 305) nicht ausgeführt.
  • Wenn das Repository verwendet wird, kann es auch beim Hochfahren der Anwendung aufgefüllt werden. Wenn die Anwendung startet, erzeugt sie in diesem Fall alle möglichen Paare (Aufzählungstyp, Benutzersprache), die die Anwendung unterstützen muss, sie erzeugt die richtige Sortierstrategie für jedes von ihnen und speichert sie im Repository.
  • Wenn das Repository verwendet wird, kann es auch auf eine dynamischere Weise aufgefüllt werden. In diesem Fall wartet die Anwendung, bis eine Abfrage mit einer Sortierklausel (110) ausgegeben wird, prüft dann, ob das Repository vorhanden ist und arbeitet und:
    • – wenn das Repository vorhanden ist, verwendet die Anwendung es zum Abrufen der Sortierstrategie und kehrt zurück
    • – wenn das Repository nicht vorhanden ist, erstellt die Anwendung es und berechnet und fügt ihm genau den Eintrag für das angegebene (Aufzählungstyp, Benutzersprache) Paar hinzu.
  • Die Anwendung kann auch festlegen, den Katalog auf Änderungen zu überwachen. Wenn der Katalog geändert wird, löscht die Anwendung das Sortierstrategie-Repository, um sicherzustellen, dass bei der nächsten Verwendung ganz von vorne begonnen wird. Dies kann zum Beispiel mit einem Datenbank-TRIGGER (410) in der Katalogtabelle umgesetzt werden.
  • Es ist anzumerken, dass, obwohl die Beschreibung und die Beispiele sich mit bestimmten spezifischen Objekten befassen, die Erfindung für alle Arten von Typen gilt, die aus einer Gruppe von lokalisierbaren Werten bestehen. Ein Aufzählungstyp könnte auf jeden Datentyp verallgemeinert werden, der dem Benutzer nicht direkt angezeigt werden kann, erfordert aber einen Schritt „in Zeichenfolge umsetzen”, wobei der Schritt „in Zeichenfolge umsetzen” durch Durchsuchen einer Tabelle umgesetzt wird, die Paare von (Wert, Zeichenfolge) enthält.
  • Die beschriebene Optimierung gilt in erster Linie dafür, wie oft die Optimierung angewendet werden kann. Die Antwort hängt zum großen Teil von den Aufzählungswerten, der Länge der Aufzählung und der Katalogsprache ab. Für eine Anwendung, die eine Jobplanung in einer verteilten Datenverarbeitungsumgebung ausführt, zeigt die für einige westliche Sprachen erfasste Statistik, dass 35% aller Fälle optimiert werden können. Dies kann abhängig von den Anwendungen auch unterschiedlich ausfallen. Die beschriebene Optimierung gilt auch dafür, wie viel sich durch die Verwendung der Optimierung gewinnen lässt. Es hängt hauptsächlich von den Tabellengrößen ab; auf Grundlage von typischen Werten, wie sie in der Literatur zu finden sind, kann die Einsparung einer kostspieligen JOIN-Operation die Leistung um das 10-fache (d. h. 1000%) oder mehr verbessern, aber eine Menge von Faktoren haben großen Einfluss darauf, wie in der Praxis zu sehen ist.
  • Die Verwendung eines Repository vermeidet ein erneutes Ausführen der Prüfung zum Festlegen der besten Strategie, wenn dieselbe Anforderung für dieselbe Aufzählung empfangen wird.

Claims (7)

  1. Verfahren zum Berechnen einer sortierten Liste von Aufzählungswerten in einer bestimmten Sprache, die aus mindestens einer relationalen Datenbank gelesen werden, die mindestens eine Datentabelle enthält, die Aufzählungs-Programmiervariablenwerte speichert, und mindestens eine Katalogtabelle, die in mindestens einer Sprache einen Ausdruck der Aufzählungs-Programmiervariablenwerte speichert, wobei das Verfahren die folgenden Schritte aufweist: – Empfangen einer Anforderung zum Bereitstellen von Aufzählungsvariablenwerten einschließlich einer in einer bestimmten Reihenfolge sortierten Liste der Werte einer bestimmten Aufzählung in einer bestimmten Sprache; – Sortieren aller Ausdrücke in der bestimmten Sprache in der bestimmten Reihenfolge, die den Variablenwerten der bestimmten Aufzählung entsprechen, die in einer entsprechenden Katalogtabelle gelesen werden; – wenn die sortierte Liste der bestimmten Aufzählungsausdruckswerte mit einer Liste der bestimmten Aufzählungsvariablenwerte übereinstimmt, die in der bestimmten Reihenfolge in derselben Katalogtabelle sortiert sind, Erstellen einer Liste der bestimmten Aufzählungsvariablenwerte in der entsprechenden Datentabelle, sortiert in der bestimmten Reihenfolge, wobei die anderen angeforderten Aufzählungsvariablen in der Datentabelle sind, wobei die folgenden Schritte übersprungen werden; – wenn in dem vorhergehenden Schritt keine Übereinstimmung gefunden wurde, wenn die sortierte Liste der bestimmten Aufzählungsausdruckswerte mit einer Liste der bestimmten Aufzählungsvariablenwerte übereinstimmt, die in der umgekehrten Reihenfolge aus der bestimmten Reihenfolge in derselben Katalogtabelle sortiert wurden, Erstellen einer Liste der bestimmten Aufzählungsvariablenwerte in der entsprechenden Datentabelle, sortiert in der umgekehrten Reihenfolge aus der bestimmten Reihenfolge, wobei die anderen angeforderten Aufzählungsvariablen in der Datentabelle sind, wobei der folgenden Schritt übersprungen wird; – wenn in einem der beiden vorhergehenden Schritte keine Übereinstimmung gefunden wurde, Erstellen einer neuen Tabelle, die mit derselben Katalogtabelle und der Datentabelle verknüpft wird, die die Aufzählungsvariablenwerte enthält, und Erstellen einer Liste mit den in der verknüpften Tabelle gelesenen Aufzählungsvariablenwerten, die nach den Ausdrücken der bestimmten Aufzählungsvariablenwerte in der bestimmten Sprache sortiert sind, wobei die anderen angeforderten Aufzählungsvariablen in der verknüpften Tabelle sind.
  2. Verfahren nach Anspruch 1, das des Weiteren aufweist: – in einem permanenten Speichermittel Speichern des Ergebnisses von Übereinstimmungen, die in den vorhergebenden Schritten ausgeführt wurden, die einer Signatur der Anforderung zugehörig sind; – Ausführen des empfangenden Schritts; Lesen des Übereinstimmungsergebnisses in dem permanenten Speichermittel für diese Anforderung; – wenn die Übereinstimmung in dem permanenten Speichermittel gefunden wird, Überspringen der Übereinstimmungsberechnung und direktes Ausführen der Erstellung einer sortierten Liste der anderen Schritte des Verfahrens.
  3. Verfahren nach Anspruch 1, das des Weiteren die ersten Schritte aufweist zum: – Berechnen des Übereinstimmungsergebnisses für alle möglichen Aufzählungsvariablen und Sprachen in der mindestens einen Katalogtabelle; – Ausführen des Schritts des Speicherns der Ergebnisse für eine in dem vorherigen Schritt berechnete Übereinstimmung in einem permanenten Speichermittel; wobei das Verfahren nach dem empfangenden Schritt ferner aufweist, – Lesen des Übereinstimmungsergebnisses in dem permanenten Speichermittel für diese Anforderung; – wenn die Übereinstimmung in dem permanenten Speichermittel gefunden wurde, Überspringen der Übereinstimmungsberechnung und direktes Ausführen der Erstellung einer sortierten Liste der anderen Schritte des Verfahrens.
  4. Verfahren nach einem der Ansprüche 2 bis 3, wobei nach Empfang eines Ereignisses, das eine Änderung in der mindestens einen Katalogtabelle mitteilt, die auf mindestens eine Aufzählung angewendet wird, der Inhalt des permanenten Speichermittels durch Löschen der berechneten Übereinstimmungsergebnisse für sämtliche Anforderungen aktualisiert wird, die die Aufzählungen verwenden, die von der Änderung betroffen sind, und die Übereinstimmungen mit den neuen Katalogwerten für die von der Änderung betroffenen Aufzählung erneut berechnet werden.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei der Ausdruck in der mindestens einen Katalogtabelle eine Zeichenfolge ist, und wobei die Ordnung des Ausdrucks eine Ordnung ist, die in der alphabetischen Reihenfolge vorgenommen wird.
  6. Computerprogrammprodukt, das Programmiercode-Anweisungen zum Ausführen der Schritte des Verfahrens nach einem der Ansprüche 1 bis 5 aufweist, wenn das Programm auf einem Computer ausgeführt wird.
  7. System, das ein Mittel aufweist, das zum Ausführen des Verfahrens nach einem der Ansprüche 1 bis 5 angepasst ist.
DE112014002696.4T 2013-06-07 2014-05-22 Verfahren und System für effizientes Sortieren in einer relationalen Datenbank Pending DE112014002696T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
ITMI2013A000940 2013-06-07
IT000940A ITMI20130940A1 (it) 2013-06-07 2013-06-07 Metodo e sistema per ordinamento efficace in una banca dati relazionale
PCT/IB2014/061615 WO2014195818A1 (en) 2013-06-07 2014-05-22 Method and system for efficient sorting in a relational database

Publications (1)

Publication Number Publication Date
DE112014002696T5 true DE112014002696T5 (de) 2016-03-24

Family

ID=49487167

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014002696.4T Pending DE112014002696T5 (de) 2013-06-07 2014-05-22 Verfahren und System für effizientes Sortieren in einer relationalen Datenbank

Country Status (5)

Country Link
US (1) US9916339B2 (de)
JP (1) JP6369841B2 (de)
DE (1) DE112014002696T5 (de)
IT (1) ITMI20130940A1 (de)
WO (1) WO2014195818A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886838B2 (en) * 2022-05-24 2024-01-30 Oracle International Corporation Space- and time-efficient enumerations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001154890A (ja) * 1999-11-30 2001-06-08 Toshiba Corp Rdbデータキャッシングシステム及び記録媒体
US7783637B2 (en) * 2003-09-30 2010-08-24 Microsoft Corporation Label system-translation of text and multi-language support at runtime and design
JP5048417B2 (ja) * 2007-08-07 2012-10-17 株式会社富士通ビー・エス・シー データベース管理プログラム及びデータベース管理装置
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
JP5199948B2 (ja) * 2009-05-22 2013-05-15 日本電信電話株式会社 データベース管理方法、データベース装置、およびプログラム
JP5342087B2 (ja) * 2011-03-30 2013-11-13 株式会社日立製作所 計算機システム及びデータ管理方法
US8473483B2 (en) * 2011-06-07 2013-06-25 Microsoft Corporation Performing parallel joins on distributed database data

Also Published As

Publication number Publication date
JP6369841B2 (ja) 2018-08-08
WO2014195818A1 (en) 2014-12-11
US9916339B2 (en) 2018-03-13
ITMI20130940A1 (it) 2014-12-08
JP2016524758A (ja) 2016-08-18
US20160132544A1 (en) 2016-05-12

Similar Documents

Publication Publication Date Title
DE112020002600T5 (de) Entdecken einer semantischen bedeutung von datenfeldern anhand von profildaten der datenfelder
DE69910219T2 (de) Transformation der perspektive auf tabellen von relationalen datenbanken
DE112012000280B4 (de) Organisation von Tabellen mit reduzierten Indizes
DE602004003361T2 (de) System und verfahren zur erzeugung von verfeinerungskategorien für eine gruppe von suchergebnissen
DE112015000218B4 (de) Verfahren, System und Computerprogramm zum Abtasten einer Mehrzahl von Speicherbereichen in einem Arbeitsspeicher nach einer spezifizierten Anzahl von Ergebnissen
US7174345B2 (en) Methods and systems for auto-partitioning of schema objects
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE112015000347T5 (de) Verarbeiten von Datensätzen in einer Ablage für große Datenmengen
DE202020005722U1 (de) Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan
DE202013012496U1 (de) Systeme für asynchrone Schemaänderungen
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker
DE102013200355A1 (de) Zusammenfügen von Dokumenten aud der Grundlage der Kenntnis eines Dokumentenschemas
DE202015009258U1 (de) Effizientes Anmerkungssystem für verteilte Versionsverwaltungssysteme
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE102012221251A1 (de) Semantisches und kontextbezogenes Durchsuchen von Wissensspeichern
DE60300984T2 (de) Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung
WO2002021327A2 (de) Verfahren und computerprogramm zur erzeugung von dateien für ein datenbanksystem für ein betriebswirtschaftliches anwendungsprogramm
DE602004008742T2 (de) Methode und system zum abbilden von xml auf eine n-dimensionale datenstruktur
DE112010002620T5 (de) Ontologie-nutzung zum ordnen von datensätzen nachrelevanz
DE10056763A1 (de) Generieren von Einschränkungsabfragen mit Hilfe von Tensordarstellungen
DE112018002626T5 (de) Verfahren und Systeme zur optimierten visuellen Zusammenfassung von Sequenzen mit zeitbezogenen Ereignisdaten
EP1276056A1 (de) Verfahren zum Verwalten einer Datenbank
DE112014002696T5 (de) Verfahren und System für effizientes Sortieren in einer relationalen Datenbank
DE112021006697T5 (de) Vertrauenzugriffspriorisierungssignal

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R016 Response to examination communication