DE102013215530A1 - Detecting Multi-Column Composite Key Column Sets - Google Patents

Detecting Multi-Column Composite Key Column Sets Download PDF

Info

Publication number
DE102013215530A1
DE102013215530A1 DE102013215530.1A DE102013215530A DE102013215530A1 DE 102013215530 A1 DE102013215530 A1 DE 102013215530A1 DE 102013215530 A DE102013215530 A DE 102013215530A DE 102013215530 A1 DE102013215530 A1 DE 102013215530A1
Authority
DE
Germany
Prior art keywords
column
columns
candidate
values
current
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.)
Ceased
Application number
DE102013215530.1A
Other languages
English (en)
Inventor
Martin Oberhofer
Sebastian Nelke
Yannick Saillet
Jens Seifert
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 DE102013215530A1 publication Critical patent/DE102013215530A1/de
Ceased 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/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • 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
    • 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/2228Indexing structures
    • G06F16/2272Management thereof

Landscapes

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

Abstract

Die Erfindung betrifft ein von einem Computer ausgeführtes Verfahren zum Erkennen von einer oder mehreren mehrspaltigen Spaltengruppen mit zusammengesetztem Schlüssel, wobei das Verfahren aufweist: a) Zugreifen (102) auf eine Vielzahl von ersten Spalten (P1 bis P3); b) Auswählen (104) von zwei oder mehr der ersten Spalten, um sie als eine aktuelle Gruppe (218) von in Frage kommenden Spalten zu verwenden; c) Feststellen (106), indem Objektkennungen miteinander verglichen werden, die in Verbindung mit Parameterwerten der in Frage kommenden Spalten gespeichert werden, ob für die aktuelle Gruppe von in Frage kommenden Spalten mindestens ein Tupel (219) aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Kennungen der Objektkennungen gespeichert werden; d1) falls das mindestens eine Tupel nicht vorhanden ist, Kennzeichnen (110) der aktuellen in Frage kommenden Spaltengruppe als eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel; d2) andernfalls Ersetzen (112) der zweiten in Frage kommenden Spalte durch eine andere ausgewählte Spalte der ersten Spalten oder Hinzufügen der anderen ausgewählten Spalte der ersten Spalten zu der in Frage kommenden Spaltengruppe.

Description

  • Bereich der Erfindung
  • Die Erfindung betrifft den Bereich der Datenverarbeitung und, genauer gesagt, das Erkennen von mehrspaltigen Spaltengruppen mit zusammengesetztem Schlüssel.
  • Hintergrund
  • Im Bereich der Datenmodellierung und Datenanalyse besteht ein allgemeines Problem darin, Kombinationen von Parametern festzustellen, bei denen die Kombination von entsprechenden Parameterwerten für jeden einzelnen Datensatz in einer Datenbank eindeutig ist. Die Feststellung von solch eindeutigen Kombinationen von Parametern ermöglicht die Angabe von Indexstrukturen, die von Parameterwerten der eindeutigen Parameterkombination abgeleitet werden. Die Indexstrukturen und/oder die Kenntnis der eindeutigen Kombination von Parametern ermöglicht es, die Leistungsfähigkeit von Abfrageoptimierungsprogrammen in Datenbanken zu verbessern und somit die Geschwindigkeit des Datenabrufs und der Datenanalyse zu erhöhen. Da eine der gängigsten Datenbankarten zur Speicherung von großen Datenmengen zu Produktions- oder Analysezwecken ein relationales Datenbankverwaltungssystem ist, bei dem ”Parameter” oder ”Attribute” von Datenobjekten durch Spalten dargestellt werden, ist das Problem, die eindeutigen Kombinationen von Parametern zu ermitteln, auch als das Problem bekannt, mehrspaltige, eindeutige Schlüsselsätze in einer Datenbank zu ermitteln.
  • Aktuelle Vorgehensweisen zur Datenprofilerstellung, um mehrspaltige eindeutige Schlüsselsätze zu ermitteln, sind zu langsam, als dass sie in der Praxis auf größere Datenbanken angewendet werden könnten. Gunopulos (Gunopulos D., "Discovering all most specific sentences". In: Transactions an Database Systems (TODS), Band 28, Ausgabe 2, 2003) zeigte, dass das Erkennen von mehrspaltigen, zusammengesetzten eindeutigen Schlüsseln insbesondere bei größeren Datenbanken sehr zeitaufwendig ist, da die Anzahl der möglichen Schlüssel mit der Anzahl der Parameter/Spalten exponentiell zunimmt.
  • Das manuelle Ermitteln der mehrspaltigen, zusammengesetzten Schlüsselsätze durch einen Fachmann im Bereich von Datendomänen ist besonders bei größeren Datenbanken ebenfalls keine Option. Mehrspaltige zusammengesetzte Schlüsselsätze sind ein den Daten innewohnendes Merkmal. Das Merkmal ist dem Anwendungsentwickler oder dem Datenbankadministrator nicht immer bekannt. Daher können mehrspaltige, eindeutige Schlüsselsätze ohne eine eingehende Datenanalyse nicht vorhergesehen werden. Eine manuelle Datenauswertung, um mehrspaltige, zusammengesetzte Schlüsselsätze zu ermitteln, würde zu viel Zeit in Anspruch nehmen, als dass es eine brauchbare Option wäre.
  • Eine weitere Vorgehensweise besteht darin, mehrspaltige, eindeutige Schlüsselsätze zu erzwingen, indem man eine entsprechende Bedingung, z. B. in einer relationalen Datenbank, erzeugt. Diese Vorgehensweise hat den Nachteil, dass nicht alle vorhandenen mehrspaltigen, eindeutigen Schlüsselsätze erkannt werden. Darüber hinaus kann solch eine manuell auferlegte Bedingung zu Fehlern führen, falls ein weiterer Datensatz, der eine bereits vorhandene Kombination von Eigenschaftswerten aufweist, in die Datenbank eingefügt wird.
  • Kurzdarstellung der Erfindung
  • Es ist eine Aufgabe von Ausführungsformen der Erfindung, ein verbessertes, von einem Computer ausgeführtes Verfahren, einen von einem Computer lesbaren Datenträger und ein Computersystem vorzusehen, um eine oder mehrere mehrspaltige Spaltengruppen mit zusammengesetztem Schlüssel zu erkennen. Die Aufgabe wird durch die Merkmale der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen angegeben. Soweit nicht ausdrücklich anders angegeben, können Ausführungsformen der Erfindung frei miteinander kombiniert werden.
  • In der hier verwendeten Weise ist eine ”mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel” (multi-column composite key column set (MCCKCS)) eine Kombination von zwei oder mehr Spalten, die jeweils einen Parameter darstellen, wobei in einer bestimmten Datenbank keine zwei Datenbanksätze oder Datenobjekte vorhanden sind, die für jeden der Parameter der Kombination denselben gemeinsam verwendeten Parameterwert aufweisen. Anders ausgedrückt, eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel ist eine Kombination von Spalten und entsprechenden Parametern, wobei es in einer bestimmten Datenbank keine zwei Datenobjekte und entsprechende Objektkennungen gibt, die alle Parameterwerte der Kombination von Parametern gemeinsam verwenden.
  • In der hier verwendeten Weise ist eine ”minimale mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel” (minimal multi-column composite key column set (MMCCKCS)) eine beliebige MCCKCS, die nicht länger eine 'MCCKCS ist, nachdem beliebige ihrer Spalten entfernt wurden. Somit ist jede MMCCKCS eine MCCKCS und kann eine Untergruppe von einer oder mehreren weiteren MCCKCS sein.
  • Ein ”Parameter”, der auch als ”Attribut” oder ”Merkmal” bezeichnet wird, ist ein Charakteristikum, das ein bestimmtes Objekt definiert oder beschreibt. Beispiele für einen Parameter sind ”Farbe”, ”Höhe”, ”Breite”, ”Alter”, ”Name”, ”Adresse” oder dergleichen. Vorzugsweise wird ein Parameter einem einzelnen Datenwert zugewiesen, aber eine Zuweisung zu zusammengesetzten Datenwerten ist ebenfalls möglich (der Parameter ”Adresse” kann den Straßennamen, die Hausnummer und die Postleitzahl aufweisen).
  • Ein ”Parameterwert” ist ein Datenwert, der einem Parameter und üblicherweise auch einer Objektkennung (die auch als ”Objekt-ID” bezeichnet wird) eines Datenobjekts zugewiesen wird. Somit gibt ein Parameterwert, der in Verbindung mit einer Objekt-ID gespeichert wird, an, dass der Parameter (z. B. ”Alter”) ein Charakteristikum ist, welches das Datenobjekt (z. B. Mr. Smith), das von der Objekt-ID dargestellt wird, beschreibt, und einen bestimmten Parameterwert (z. B. 45 Jahre) hat.
  • In der hier verwendeten Weise ist eine ”erste Spalte” eine Datenstruktur, die einen oder mehrere unterschiedliche Parameterwerte eines einzelnen Parameters aufweist, welcher von der ersten Spalte dargestellt wird. Anders ausgedrückt, alle Parameterwerte in einer ersten Spalte sind eindeutig. Jeder der unterschiedlichen Parameterwerte einer ersten Spalte wird in Verbindung mit einer oder mehreren Objektkennungen von Objekten gespeichert, die von dem unterschiedlichen Parameterwert beschrieben oder gekennzeichnet werden. Wie sich von der Tatsache ableiten lässt, dass ein beliebiger der unterschiedlichen Parameterwerte in Verbindung mit mehreren Objektkennungen gespeichert werden könnte, sind die unterschiedlichen Parameterwerte einer ersten Spalte nur in der ersten Spalte eindeutig; in einem Datensatz, der eine Vielzahl der Objekte aufweist, sind sie gewöhnlich nicht eindeutig.
  • In der hier verwendeten Weise ist eine ”zweite Spalte” ein spaltenorientiertes oder ein relationales Datenbankverwaltungssystem. Eine zweite Spalte stellt einen einzelnen Parameter dar, der hier als ”Eigenschaft” bezeichnet wird und einen oder mehrere Eigenschaftswerte aufweisen kann. Die Eigenschaftswerte einer zweiten Spalte sind üblicherweise nicht eindeutig.
  • In der hier verwendeten Weise ist eine ”relationale Datenbank” eine Datenbank, in der Daten in Form von einer oder mehreren Tabellen organisiert sind, wobei jeder Datensatz einer Zeile von mindestens einer der Tabellen entspricht, wobei jede Spalte eine Eigenschaft eines Datenobjekts darstellt. Beispiele für relationale Datenbankverwaltungssysteme sind MySQL oder PostgreSQL. Eine ”Eigenschaft”, die ein Datenobjekt kennzeichnet, das in einer relationalen Datenbank gespeichert ist, ist ein Synonym für einen ”Parameter”, der das Datenobjekt kennzeichnet. Um jedoch das Verständnis zu erleichtern, werden Parameter und entsprechende Parameterwerte, die in einer relationalen Datenbank oder in einer anderen Form einer nicht spaltenorientierten Datenbank gespeichert werden, im Folgenden als ”Eigenschaften” und ”Eigenschaftswerte” bezeichnet.
  • In der hier verwendeten Weise ist eine ”spaltenorientierte Datenbank” eine Datenbank, in der Daten in Form von einer oder mehreren Spalten organisiert sind, die hier auch als ”erste Spalten” bezeichnet werden. Jede erste Spalte weist einen oder mehrere unterschiedliche Parameterwerte auf, z. B. in Form einer geordneten Liste. Jeder der unterschiedlichen Parameterwerte wird in Verbindung mit einer oder mehreren Objekt-IDs von Datenobjekten gespeichert, die von dem unterschiedlichen Parameterwert gekennzeichnet werden. Beispiele für spaltenorientierte Datenbankverwaltungssysteme sind Vertica und Sybase IQ.
  • In der hier verwendeten Weise bezieht sich der Begriff ”Kardinalität” auf das Konzept der Kardinalität, wie es in der Mengenlehre (Mathematik) verwendet wird. In der Mathematik ist die Kardinalität einer Menge ein Maß für die Anzahl der Elemente in der Menge.
  • In der hier verwendeten Weise ist eine ”in Frage kommende Spalte” eine erste Spalte, die ausgewählt wurde, um als Bestandteil einer aktuellen in Frage kommenden Spaltengruppe zu dienen.
  • In der hier verwendeten Weise bezieht sich der Begriff ”Tupel” auf einen geordneten oder ungeordneten Satz einer Vielzahl von unterschiedlichen Parameterwerten, die jeweils aus verschiedenen in Frage kommenden Spalten ausgewählt wurden. Vorzugsweise ist ein Tupel eine ungeordnete Menge. Dies bedeutet, dass Sätze von unterschiedlichen Parameterwerten, die jeweils aus verschiedenen in Frage kommenden Spalten ausgewählt wurden, welche sich nur in Bezug auf die Abfolge von unterschiedlichen Parameterwerten voneinander unterscheiden, als identische Tupel betrachtet werden.
  • In einem Aspekt betrifft die Erfindung ein von einem Computer ausgeführtes Verfahren, das dazu dient, eine oder mehrere mehrspaltige Spaltengruppen mit zusammengesetztem Schlüssel zu erkennen. Das Verfahren weist auf:
    • a) Zugreifen auf eine Vielzahl von ersten Spalten, wobei jede erste Spalte einen Parameter darstellt, wobei jede erste Spalte einen Satz von unterschiedlichen Parameterwerten ihrer jeweiligen Parameter aufweist, wobei jeder unterschiedliche Parameterwert in Verbindung mit einer oder mehreren Objektkennungen gespeichert wird; wobei die Objektkennungen als Teil der jeweiligen ersten Spalte gespeichert werden können;
    • b) Auswählen von zwei oder mehr der ersten Spalten, um sie als eine aktuelle Gruppe von in Frage kommenden Spalten zu verwenden, wobei die Gruppe mindestens eine erste und eine zweite in Frage kommende Spalte aufweist, wobei die Gruppe eine aktuelle Kardinalität (k) hat;
    • c) Feststellen, indem Objektkennungen miteinander verglichen werden, die in Verbindung mit Parameterwerten der in Frage kommenden Spalten gespeichert werden, ob für die aktuelle Gruppe von in Frage kommenden Spalten mindestens ein Tupel aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Kennungen der Objektkennungen gespeichert werden, wobei jedes Tupel aus Parameterwerten aus einem Parameterwert einer jeden in Frage kommenden Spalte der aktuellen in Frage kommenden Spaltengruppe besteht;
    • d1) falls das mindestens eine Tupel nicht vorhanden ist, Kennzeichnen der aktuellen in Frage kommenden Spaltengruppe als eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel;
    • d2) andernfalls Ersetzen der zweiten in Frage kommenden Spalte durch eine andere ausgewählte Spalte der ersten Spalten, um eine neue aktuelle in Frage kommende Spaltengruppe mit der aktuellen Kardinalität (k) zu erzeugen, oder Hinzufügen der anderen ausgewählten Spalte der ersten Spalten zu der aktuellen in Frage kommenden Spaltengruppe, um eine neue aktuelle in Frage kommende Spaltengruppe mit einer neuen aktuellen, um eins erhöhten Kardinalität (k + 1) zu erzeugen, wobei die andere erste Spalte noch kein Element einer zuvor ausgewählten in Frage kommenden Spaltengruppe mit der aktuellen Kardinalität (k) war, und Wiederholen der Schritte c) bis d).
  • Die Merkmale können vorteilhaft sein, da eine erste Spalte, d. h. eine spaltenorientierte Datenstruktur, und nicht die Tabellenstruktur einer relationalen Datenbank verwendet wird, um die MCCKCS zu ermitteln. Dies ist vorteilhaft, da eine spaltenorientierte Datenstruktur die Informationen einer relationalen Datenbank stark verdichtet speichern kann, wodurch größere Datenmengen in den – gewöhnlich begrenzten – Arbeitsspeicher geladen werden können. Daher ist es in vielen Fällen nicht notwendig, während der Ausführung des Verfahrens auf die vergleichsweise langsamen Festplatten zuzugreifen, da die gesamte spaltenorientierte Datenstruktur im Arbeitsspeicher gespeichert werden kann. In einem weiteren vorteilhaften Aspekt ermöglicht die Nutzung von spaltenorientierten Datenstrukturen einen spaltenbasierten Zugriff, was keine Verarbeitung von ganzen Zeilen erforderlich macht, wodurch die Datenmenge, die verarbeitet wird, beträchtlich verringert wird. In einem weiteren vorteilhaften Aspekt wird das Erkennen von MCCKCS auf der Grundlage des Vergleichs von Objektkennungen durchgeführt, bei denen es sich üblicherweise um Datenwerte kleiner Größe, vorzugsweise numerische Datenwerte, handelt, die besonders schnell miteinander verglichen werden können, z. B. mittels einer Hash-Funktion oder bevorzugt mittels Berechnungen von Bitmatrizen. Die Verwendung einer spaltenorientierten Datenstruktur und ein Vergleich von Objektkennungen kann den Prozess des Erkennens von MCCKCS folglich deutlich beschleunigen und somit die Auswertung von sehr großen Datensätzen auf darin enthaltene MCCKCS ermöglichen. Bei bisherigen Vorgehensweisen wurden MCCKCS erkannt, indem Parameterwerte miteinander verglichen wurden. Da Parameterwerte üblicherweise viel größer als Objekt-IDs sind, waren die Vorgehensweisen auf große Datensätze gewöhnlich nicht anwendbar.
  • Eine Kardinalität einer in Frage kommenden Spaltengruppe ist ein Maß für die Anzahl der darin enthaltenen in Frage kommenden Spalten.
  • Die Reihenfolge der in Frage kommenden Spalten in einer in Frage kommenden Spaltengruppe wird bei der Ermittlung der Gesamtheit der in Frage kommenden Spaltengruppen nicht berücksichtigt, welche unter Berücksichtigung einer aktuellen Kardinalität k und einer Gesamtzahl von verfügbaren ersten Spalten kombinatorisch möglich ist.
  • Gemäß bevorzugten Ausführungsformen bestehen die Objekt-IDs aus Datenwerten kleiner Größe, vorzugsweise unter 1 Kilobyte und bevorzugt unter 500 Byte, die sehr schnell miteinander verglichen werden können.
  • Vorzugsweise wird eine Objekt-ID als ein numerischer Datenwert gespeichert, z. B. in dem Datentyp String oder VarChar oder Float. Noch bevorzugter wird eine Objekt-ID in einem ganzzahligen Datentyp wie zum Beispiel SmallInteger, Integer, Long, BigInt oder dergleichen, gespeichert. Die Speicherung der Objekt-IDs in einem ganzzahligen Datentyp kann vorteilhaft sein, da ein Vergleich auf Gleichheit sehr schnell und mit nur minimalem Berechnungsaufwand durchgeführt werden kann.
  • Manchen Ausführungsformen entsprechend werden die Objekt-IDs mittels einer Hash-Funktion miteinander verglichen. Beispielsweise sieht die Programmiersprache Java Datenstrukturen wie zum Beispiel ”hash map” oder ”hash set” vor, die als Behälter verwendet werden können, um Hash-Werte der Objekt-IDs zu berechnen und um schnell einen Schnittpunkt zwischen zwei Sätzen von Objekt-IDs festzustellen. Folglich ermöglicht die Hash-Funktion selbst in dem Fall, dass eine Objekt-ID als ein Datentyp STRING gespeichert sein sollte, einen schnellen Vergleich der Objekt-IDs. Die Merkmale können vorteilhaft sein, da der Vergleich viel schneller als bei aktuellen Verfahren nach dem Stand der Technik durchgeführt werden kann, die den Vergleich von Parameterwerten in relationalen Datenbanken ungeachtet ihrer Länge und ihres Datentyps zum Gegenstand haben. Hash-Werte von Kennungen können viel schneller verglichen werden als längere String-Werte, die durch eine sequenzielle Datenbankabfrage einer relationalen Datenbanktabelle ausgewertet werden.
  • Gemäß bevorzugten Ausführungsformen werden die Objekt-IDs mit Hilfe von ganzzahligen Berechnungen miteinander verglichen. Zum Beispiel werden die in einem ganzzahligen Datentyp gespeicherten Objekt-IDs in Form von Bitmatrizen in den Speicher geladen. Indem man auf jedes Paar von verglichenen Bits, die zwei verglichenen Objekt-IDs entnommen werden, Exklusiv-ODER-(XOR-)Operationen anwendet, kann die Gleichheit von zwei verglichenen Objekt-IDs sehr schnell festgestellt werden. Dies liegt daran, dass der Vergleich eine Form einer ganzzahligen Berechnung ist, die von den meisten derzeit verwendeten Verarbeitungseinheiten äußerst effizient durchgeführt werden kann. Somit kann ein Schnittpunkt von zwei Sätzen von Objekt-IDs besonders effizient festgestellt werden.
  • Gemäß Ausführungsformen wird das Verfahren gestartet, indem eine erste Spalte der ersten Spalten als die erste in Frage kommende Spalte ausgewählt wird, ausgewertet wird, ob die ausgewählte erste Spalte ein einspaltiger eindeutiger Schlüssel ist und indem mit der Auswahl einer weiteren ersten Spalte als der zweiten in Frage kommenden Spalte fortgefahren wird. Die Durchführung des Schritts d2) weist das Auswählen einer Spalte der ersten Spalten, die nicht zu der aktuellen in Frage kommenden Spaltengruppe gehören, als die andere erste Spalte auf.
  • Gemäß Ausführungsformen wird die ausgewählte erste Spalte nur dann als eine weitere in Frage kommende Spaltengruppe verwendet (anders ausgedrückt: sie wird zu der aktuellen in Frage kommenden Spaltengruppe hinzugefügt), wenn die erste in Frage kommende Spalte nicht bereits ein einspaltiger eindeutiger Schlüssel ist. Wenn die ausgewählte erste Spalte ein einspaltiger eindeutiger Schlüssel ist, wird sie durch eine andere der ersten Spalten ersetzt. Da eine beliebige in Frage kommende Spaltengruppe, die einen einspaltigen eindeutigen Schlüssel aufweist, trivialerweise eine MCCKCS ist, kann das Ausschließen dieser Art von ersten Spalten vorteilhaft sein, da es den Suchraum verringert und gegebenenfalls die Geschwindigkeit des Verfahrens erhöht.
  • Gemäß Ausführungsformen wird jede der Vielzahl der ersten Spalten in Verbindung mit einem oder mehreren numerischen Werten gespeichert. Die numerischen Werte können beispielsweise als Teil von Metadaten der jeweiligen ersten Spalte gespeichert werden. Die Auswahl von beliebigen der ersten Spalten im Schritt b) und/oder eine Auswahl von der anderen Spalte der ersten Spalten im Schritt d2) weist auf: Auswerten der numerischen Werte der ausgewählten ersten Spalte im Hinblick auf eine oder mehrere erste Bedingungen und Verwenden der ersten Spalte, um die aktuelle Gruppe von in Frage kommenden Spalten im Schritt b) zu erzeugen oder um die neue aktuelle Gruppe von in Frage kommenden Spalten im Schritt d2) nur dann zu erzeugen, wenn die ersten Bedingungen erfüllt sind. Die Merkmale können vorteilhaft sein, da eine Auswertung und ein Vergleich von numerischen Datenwerten sehr schnell durchgeführt werden kann. Die numerischen Werte werden vorzugsweise als im Voraus berechnete Metadaten in Verbindung mit den jeweiligen ersten Spalten gespeichert, so dass folglich kein Zugriff auf die Parameterwerte oder Objekt-IDs notwendig ist, um die numerischen Datenwerte auszuwerten. In vielen Fallen kann eine Auswertung der numerischen Informationen bereits deutlich machen, dass die aktuelle in Frage kommende Spaltengruppe nicht die Grundlage für eine MCCKCS sein kann, und der Vergleich der Objektkennungen kann in diesen Fällen vollständig entfallen. Wenn im Schritt b) oder im Schritt d2) eine erste Spalte ausgewählt wird, kann eine bloße Auswertung der numerischen Werte, die in Verbindung mit der ausgewählten ersten Spalte gespeichert sind, somit zeigen, dass die erste Spalte in Verbindung mit den vorhandenen in Frage kommenden Spalten keine MCCKCS bereitstellen kann. In diesem Fall wird kein Vergleich der Objektkennungen durchgeführt und eine andere Spalte der ersten Spalten wird ausgewählt. Manchen Ausführungsformen entsprechend werden die numerischen Werte in dem Moment, in dem die spaltenorientierte Datenstruktur erzeugt wird, berechnet und in Verbindung mit den jeweiligen ersten Spalten gespeichert. Überdies oder alternativ können die numerischen Werte zu einem späteren Zeitpunkt berechnet und gespeichert werden, indem eine bereits vorhandene spaltenorientierte Datenstruktur analysiert wird.
  • In der hier verwendeten Weise bezieht sich ein ”numerischer Wert” auf einen Datenwert, der einen numerischen Wert angibt. Die numerischen Werte können in einer beliebigen Art von Datentyp, z. B. als ein String, vorzugsweise jedoch in Form eines Datentyps wie zum Beispiel Integer, Long, Float oder dergleichen, gespeichert werden.
  • Gemäß Ausführungsformen weisen die numerischen Werte mindestens eine Anzahl-unterschiedlicher-Werte (distinct-values-number) (Vdist) und/oder mindestens eine Anzahl-maximaler-Häufigkeit (maximum-frequency-number) (Vmaxf) auf. Die Anzahl-unterschiedlicher-Werte gibt die Anzahl der unterschiedlichen Parameterwerte der ersten Spalte an, in Verbindung mit welcher der jeweilige unterschiedliche Parameterwert gespeichert wird. Die Anzahl-maximaler-Häufigkeit gibt die höchstmögliche Anzahl der Objekt-IDs an, die einem beliebigen der unterschiedlichen Parameterwerte der ersten Spalte zugewiesen werden. Die Auswertung der ersten Bedingungen an den numerischen Werten der ausgewählten ersten Spalte weist die Feststellung auf, dass mindestens eine der ersten Bedingungen nicht erfüllt ist, wenn:
    • • die Anzahl-maximaler-Häufigkeit (Vmaxf), die in Verbindung mit der ausgewählten ersten Spalte gespeichert wird, größer als die Anzahl-unterschiedlicher-Werte (Vdist) ist, die in Verbindung mit einer jeden der in Frage kommenden Spalten in der aktuellen in Frage kommenden Spaltengruppe gespeichert wird, oder wenn die Anzahl-maximaler-Häufigkeit (Vmaxf), die in Verbindung mit beliebigen der aktuellen in Frage kommenden Spalten gespeichert wird, größer als die Anzahl-unterschiedlicher-Werte (Vdist) ist, die in Verbindung mit der ersten Spalte gespeichert wird; und/oder
    • • ein Produkt aus der Anzahl-unterschiedlicher-Werte (Vdist) der ausgewählten ersten Spalte und der Anzahl-unterschiedlicher-Werte (Vdist), die in Verbindung mit einer jeden der in Frage kommenden Spalten in der aktuellen in Frage kommenden Spaltengruppe gespeichert wird, kleiner ist als die Gesamtzahl der Objekt-IDs von mindestens einem von beiden, der ausgewählten ersten Spalte oder den in Frage kommenden Spalten; zum Beispiel können eine erste Spalte C1 und zwei in Frage kommende Spalten C2 und C3 ausgewertet werden; wenn die Anzahl-unterschiedlicher-Werte von C1 ”3” beträgt, die Anzahl-unterschiedlicher-Werte von C2 ”4” und die Anzahl-unterschiedlicher-Werte von C3 ”5” beträgt, würde das Produkt berechnet werden als 2 × 3 × 4 = 24. Falls eine beliebige der drei ersten Spalten C1, C2 oder C3 insgesamt 25 oder mehr unterschiedliche Objekt-IDs aufweist, erfüllt die ausgewählte erste Spalte nicht mindestens eine der ersten Bedingungen; und/oder
    • • die Anzahl-unterschiedlicher-Werte (Vdist), die in Verbindung mit der ausgewählten ersten Spalte gespeichert wird, gleich oder kleiner 1 ist; die Nichtaufnahme der Art von ersten Spalten in einer in Frage kommenden Spaltengruppe kann vorteilhaft sein, da solche ersten Spalten nicht dazu beitragen, aus einer in Frage kommenden Spaltengruppe eine MCCKCS zu machen.
  • Da beliebige der Prüfungen an numerischen Werten durchgeführt werden, die besonders wirksam verarbeitet werden können. Folglich kann die Feststellung, welche der ersten Spalten zu einer neuen in Frage kommenden Spaltengruppe hinzugefügt werden sollten, äußerst effizient durchgeführt werden. Die Geschwindigkeit wird dadurch weiter erhöht, dass der kombinatorische Raum von ersten Spalten, die möglicherweise als in Frage kommende Spalte verwendet werden sollen, verringert wird, was die Geschwindigkeit des Verfahrens weiter erhöht.
  • Gemäß Ausführungsformen weist die Auswahl von einer beliebigen der ersten Spalten, um diese erste Spalte als in Frage kommende Spalte zu verwenden (z. B. wenn die aktuelle in Frage kommende Gruppe erstellt, ihre Zusammensetzung geändert oder wenn die Kardinalität der aktuellen in Frage kommenden Gruppe erhöht wird), auf:
    • • falls ein Datentyp, der zur Speicherung von Parameterwerten des Parameters in der ausgewählten ersten Spalte verwendet wird, in einer schwarzen Liste von Datentypen enthalten ist, anstelle der ersten Spalte Auswählen einer anderen Spalte der ersten Spalten als in Frage kommende Spalte; wobei die schwarze Liste zum Beispiel einen Bilddatentyp oder einen binären Datentyp aufweisen kann; und/oder
    • • falls die ausgewählte erste Spalte zu einer MCCKCS gehört, die zuvor für eine Kardinalität ermittelt wurde, die kleiner als die aktuelle Kardinalität ist, und falls das Hinzufügen der ausgewählten ersten Spalte zu der aktuellen in Frage kommenden Spaltengruppe die resultierende in Frage kommende Spaltengruppe zu einer Übergruppe der zuvor ermittelten MCCKCS machen würde, anstelle der ersten Spalte Auswählen einer anderen Spalte der ersten Spalten als in Frage kommende Spalte; Ausschließen dieser Art von ersten Spalten vom Hinzugefügtwerden zu einer aktuellen in Frage kommenden Spaltengruppe, und folglich wird das Ausschließen von einer beliebigen Art einer in Frage kommenden Gruppe, die bereits eine zuvor ermittelte MCCKCS aufweist, von der weiteren Verarbeitung auch als ”Säubern” des kombinatorischen Raums von den ersten Spalten bezeichnet.
  • Die Merkmale tragen gegebenenfalls dazu bei, dass der kombinatorische Raum von ersten Spalten, die möglicherweise als in Frage kommende Spalten ausgewählt werden, verringert wird, was die Geschwindigkeit des Verfahrens folglich erhöht. Vorzugsweise wird die andere ausgewählte erste Spalte auch darauf geprüft, ob sie eine erste Bedingung verletzt, ob sie ein einspaltiger Schlüssel ist und/oder ob sie zu einer MCCKCS gehört, die eine Untergruppe der möglichen in Frage kommenden Spaltengruppe ist.
  • Gemäß Ausführungsformen weist die schwarze Liste Datentypen auf, auf deren Grundlage die Erzeugung eines MCCKCS-Index von einem Datenbankverwaltungssystem nicht unterstützt wird, das als eine Quelle der Daten dient, die in den ersten Spalten enthalten sind. Überdies oder alternativ kann die schwarze Liste Datentypen aufweisen, die üblicherweise keine MCCKCS-Indizes unterstützen, welche schnell durchsucht oder verarbeitet werden können. Beispielsweise sind Datentypen wie BLOB oder XML gewöhnlich nicht zur Unterstützung von Indizes geeignet, die wirtschaftlich verarbeitet werden können. Das Ausschließen von ersten Spalten, die einen XML-Datentyp, einen binären oder einen Bilddatentyp aufweisen, kann vorteilhaft sein, da diese Datentypen nicht zum Erzeugen von Indizes geeignet sind. Die Datentypen können oftmals nicht ausreichend komprimiert werden und stellen Indizes bereit, die nicht viel kleiner als die ursprünglichen Datenwerte sind und die möglicherweise nicht in den Arbeitsspeicher geladen werden können.
  • Gemäß Ausführungsformen werden die ersten Spalten in absteigender Reihenfolge in Bezug auf ihre Anzahl-unterschiedlicher-Werte (vdist) sortiert. Der Schritt b) wird entsprechend dieser Reihenfolge durchgeführt. Je höher die Anzahl-unterschiedlicher-Werte (Vdist) von einer Spalte der ersten Spalten ist, desto früher wird diese erste Spalte in den Schritten b) und d2) folglich ausgewählt. Die Merkmale können vorteilhaft sein, da die Wahrscheinlichkeit, MCCKCS in einer in Frage kommenden Spaltengruppe zu finden, deren in Frage kommende Spalten jeweils viele verschiedene unterschiedliche Parameterwerte aufweisen, höher ist als bei in Frage kommenden Spalten, die nur wenige unterschiedliche Parameterwerte aufweisen. Die Anzahl von kombinatorisch möglichen in Frage kommenden Spaltengruppen für eine bestimmte Kardinalität k unter Berücksichtigung einer Gesamtheit von f ersten Spalten ist f! / k!(n – k). Folglich ist die Anzahl von kombinatorisch möglichen in Frage kommenden Spaltengruppen bereits bei kleinen Werten von f riesig und die Auswahl der ersten Spalten, bei denen die Wahrscheinlichkeit, dass sie die resultierende in Frage kommende Spaltengruppe zu einer MCCKCS machen, am höchsten ist, kann die Ausführungszeit somit deutlich verringern. Da die in Frage kommenden Spalten und die ersten Spalten in Abhängigkeit von ihrer jeweiligen Anzahl an unterschiedlichen Parameterwerten ausgewertet werden, ist somit die Anzahl der in Frage kommenden Spaltengruppen, die praktisch ausgewertet werden muss, bis eine MCCKCS gefunden wird, tatsächlich viel kleiner.
  • Gemäß Ausführungsformen wird dem Benutzer ein Mittel an die Hand gegeben, z. B. eine grafische Benutzeroberfläche (GUI), um eine vorher festgelegte Anzahl von MCCKCS anzugeben. Das Verfahren kann automatisch enden, nachdem die vorher festgelegte Anzahl von MCCKCS gefunden wurde. Das Verfahren kann iterativ für mehrere Kardinalitäten von in Frage kommenden Spaltengruppen ausgeführt werden, wobei die Kardinalitäten in aufeinanderfolgenden Iterationen erhöht werden. Falls eine vorher festgelegte Anzahl von 7 MCCKCS ermittelt werden soll, ermittelt das Verfahren somit zuerst vorhandene MCCKCS für k = 2 und dann iterativ für 3, 4, 5, 6 und 7.
  • Gemäß Ausführungsformen weist das Verfahren des Weiteren auf:
    • e) Bereitstellen eines Benutzerschnittstellenmittels, das einem Benutzer die Angabe eines Kardinalitäts-Schwellwerts ermöglicht; wobei es sich bei dem Benutzerschnittstellenmittel beispielsweise um eine grafische Benutzeroberfläche in Verbindung mit einer Tastatur, einer Maus und/oder einem berührungsempfindlichen Bildschirm handeln kann;
    • f) Wiederholen der Schritte c) bis d), bis alle kombinatorisch möglichen, in Frage kommenden Spaltengruppen für die aktuelle Kardinalität als aktuelle in Frage kommende Spaltengruppe ausgewählt und im Hinblick darauf, ob sie eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel sind, ausgewertet wurden;
    • g) Feststellen, ob die aktuelle Kardinalität den angegebenen Kardinalitäts-Schwellwert unterschreitet;
    • h1) wenn die aktuelle Kardinalität den angegebenen Kardinalitäts-Schwellwert unterschreitet, Erhöhen der aktuellen Kardinalität; Auswählen von einer der ersten Spalten, die nicht zu der aktuellen in Frage kommenden Gruppe gehören; Hinzufügen der ausgewählten ersten Spalte als eine weitere in Frage kommende Spalte zu der aktuellen in Frage kommenden Spaltengruppe; und Wiederholen der Schritte f), g) und h);
    • h2) beende andernfalls das Verfahren.
  • Die Merkmale können vorteilhaft sein, da sie es gegebenenfalls ermöglichen, die Daten auf eine MCCKCS, die 2, 3, ... und kmax in Frage kommende Spalten umfasst, abzufragen. Da die Kardinalität schrittweise erhöht wird, entspricht die erste MCCKCS, die erkannt werden soll, einer in Frage kommenden Spaltengruppe, die eine vergleichsweise kleine Kardinalität hat. Dadurch können Indizes erzeugt werden, die auf MCCKCSs mit verschiedenen Kardinalitäten beruhen. Je weniger Spalten in einer MCCKCS enthalten sind, desto kleiner ist der Index, der auf der Grundlage dieser MCCKCS (”minimalen MCCKCS”) erzeugt werden soll.
  • Gemäß Ausführungsformen endet das Verfahren, nachdem es in Frage kommende Spaltengruppen der Kardinalität k = 12 ausgewertet hat. Dies kann vorteilhaft sein, da in der Praxis MCCKCSs mit mehr als 12 Spalten beispielsweise von Abfrageplanern selten verwendet werden. Vorzugsweise werden MCCKCSs mit einer Kardinalität von 2 bis 6 Spalten durchsucht.
  • Das 'Säubern' des kombinatorischen Raums der ersten Spalten in den Schritten b) und/oder d2) kann vorteilhaft sein, da jede beliebige Art einer in Frage kommenden Spalte, die als Untergruppe eine zuvor ermittelte MCCKCS aufweist, trivialerweise auch eine MCCKCS ist, für den Benutzer aber keinen Mehrwert hat. Wenn man diese Arten von in Frage kommenden Spaltengruppen ausschließt, verringert sich folglich die Anzahl der in Frage kommenden Spaltengruppen und folglich verringert sich die zur Durchführung des Verfahrens notwendige Gesamtmenge. Durch das Säubern kann man gegebenenfalls schnell eine MMCCKCS feststellen, was die Geschwindigkeit des Prozesses des Datenabrufs und der Abfrageplanung sogar noch wirksamer beschleunigt als MCCKCS.
  • Genauer gesagt, eine MMCCKCS hat für einen Benutzer mehr Wert als eine MCCKCS, die die MMCCKCS als eine Untergruppe aufweist, da (M)MCCKCS von Abfrageoptimierungsprogrammen von relationalen Datenbanken ausgewertet werden. Je kleiner die ermittelte MCCKCS ist, desto geringer ist der Verbrauch von Arbeitsspeicherkapazität von mehrspaltigen eindeutigen Indizes, die zur Abfrageplanung und Datenverarbeitung verwendet werden.
  • Gemäß Ausführungsformen werden für eine Kardinalität k einer bestimmten in Frage kommenden Spaltengruppe mindestens einige der kombinatorisch möglichen in Frage kommenden Spaltengruppen parallel auf mehreren gleichzeitig ausführbaren Prozessoren oder Verarbeitungseinheiten ausgewählt und im Hinblick darauf, ob sie eine MCCKCS sind, ausgewertet.
  • Gemäß Ausführungsformen wird der Schritt c) auf der Grundlage eines Vergleichs von Objekt-IDs von unterschiedlichen Datenwerten durchgeführt, die von Paaren von in Frage kommenden Spalten abgeleitet werden, wobei der Vergleich für jedes kombinatorisch mögliche in Frage kommende Spaltenpaar in der aktuellen in Frage kommenden Spaltengruppe parallel, d. h. in verschiedenen Threads, die auf verschiedenen CPUs ausgeführt werden, durchgeführt wird.
  • Gemäß Ausführungsformen wird das Verfahren iterativ entsprechend dem folgenden Pseudocode ausgeführt, wobei: kmax eine vorher festgelegte maximale Kardinalität einer in Frage kommenden Spaltengruppe ist; wobei das Verfahren endet, wenn kmax erreicht ist; wobei ccscur eine aktuelle in Frage kommende Spaltengruppe ist; und wobei k eine aktuelle Kardinalität der aktuellen in Frage kommenden Spaltengruppe ist.
  • Führe für jede aktuelle Kardinalität k, 2 <= k <= kmax Folgendes durch:
    Führe für jede mögliche in Frage kommende Spaltengruppe ccscur {c_1, c2, ..., c_k}, die aus der Gesamtheit der ersten Spalten {c1, c2, ..., c_k, ..., ctotal} unter Berücksichtigung von k ausgewählt wird, Folgendes durch:
    wähle eine der in Frage kommenden Spalten c_1 von ccscur aus;
    führe für jeden unterschiedlichen Parameterwert d_i in der ausgewählten ersten Spalte c_1, deren Anzahl Objekt-IDs (object-ID_count) >= 2 beträgt, Folgendes durch:
    ermittle die Liste Li_i von Objekt-IDs, die in Verbindung mit dem unterschiedlichen Parameterwert d_i gespeichert sind;
    führe für jede in Frage kommende Spalte c_f der anderen in Frage kommenden Spalten {c_2, ..., c_k} der aktuellen in Frage kommenden Spaltengruppe parallel Folgendes durch:
    Setze für jeden unterschiedlichen Parameterwert d_j in der in Frage kommenden Spalte c_f den Zähler für übereinstimmende Objekt-IDs (object-ID_match_counter) = 0;
    prüfe für jeden unterschiedlichen Parameterwert d_j in der in Frage kommenden Spalte c_f, deren Anzahl Objekt-IDs >= 2 in c_f beträgt, ob eine oder mehrere Objekt-IDs, die in Verbindung mit d_j gespeichert sind, Teil der Liste Li_i sind;
    wenn ja, erhöhe den object-ID_match_counter für den unterschiedlichen Parameterwert d_i in der in Frage kommenden Spalte c_f um 1;
    wenn für alle c_i in ccscur mindestens ein object-ID_match_counter >= 2 für den unterschiedlichen Wert d_i gefunden wurde: beende die Berechnung für die aktuelle in Frage kommende Spaltengruppe ccscur, da die Spaltenkombination von ccscur keine MCCKCS ist;
    andernfalls: Feststellen, dass die aktuelle in Frage kommende Spaltengruppe ccscur eine MCCKCS bildet;
  • Gemäß Ausführungsformen weist das Verfahren darüber hinaus für jede der ersten Spalten das Sortieren der darin enthaltenen unterschiedlichen Parameterwerte in absteigender Reihenfolge in Bezug auf die Anzahl der Objektkennungen, die in Verbindung mit dem unterschiedlichen Parameterwert gespeichert sind, auf. Die Durchführung des Schritts c) weist für jedes der kombinatorisch möglichen Tupel aus Parameterwerten unter Berücksichtigung der aktuellen in Frage kommenden Spaltengruppe das Auswählen des Tupels aus Parameterwerten auf, indem für jede in Frage kommende Spalte in der aktuellen in Frage kommenden Spaltengruppe einer ihrer unterschiedlichen Parameterwerte entsprechend der Reihenfolge ausgewählt wird. Die Anzahl der kombinatorisch möglichen Tupel aus unterschiedlichen Parameterwerten unter Berücksichtigung einer aktuellen in Frage kommenden Spaltengruppe der Kardinalität k ist das Produkt aus der Anzahl der unterschiedlichen Parameterwerte #DPV einer jeden der in Frage kommenden Spalten C in der in Frage kommenden Spaltengruppe (z. B. #DPV(C1) × #DPV(C2) x, ..., x #DPV(Ck)). Aufgrund dessen jedoch, dass die Anzahl der zugehörigen Objekt-IDs in absteigender Reihenfolge sortiert wird, ist es in den meisten Fällen gewöhnlich nicht notwendig, alle kombinatorisch möglichen Tupel auszuwerten, da Verletzer der MCCKCS-Bedingung früh gefunden werden. Je höher die Anzahl der Objektkennungen ist, die in Verbindung mit einem der Parameterwerte gespeichert sind, desto früher wird der Parameterwert ausgewählt, um das Tupel bereitzustellen. Dabei wird das Tupel der ausgewählten unterschiedlichen Parameterwerte bereitgestellt. Die Merkmale können vorteilhaft sein, da das Risiko, dass der Parameterwert in Verbindung mit anderen oft auftretenden Parameterwerten mehr als einer gemeinsam verwendeten Objekt-ID zugewiesen wird und folglich verhindert, dass die aktuelle in Frage kommende Spaltengruppe eine MCCKCS ist, umso höher ist, je höher die Anzahl der Objekt-IDs ist, die einem unterschiedlichen Parameterwert zugewiesen werden. In vielen Fällen zeigen die ersten paar Tupel aus Parameterwerten, die ausgewertet werden, bereits an, dass die aktuelle in Frage kommende Spaltengruppe keine MCCKCS bildet. Folglich wird die große Mehrheit der kombinatorisch möglichen Tupel aus unterschiedlichen Parameterwerten für die aktuelle in Frage kommende Spaltengruppe nie ausgeführt, da bereits die Auswertung der ersten paar Tupel zeigt, dass die aktuelle in Frage kommende Spaltengruppe keine MCCKCS ist.
  • In Abhängigkeit von der Ausführungsform kann das Sortieren der unterschiedlichen Datenwerte beim Erzeugen der ersten Spalten oder zu einem späteren Zeitpunkt, wenn die ersten Spalten bereits erzeugt worden sind, z. B. indem einer Quellendatenbank Daten entnommen wurden, durchgeführt werden. Vorzugsweise werden Parameterwerte, die nur einmal in einer Quellendatenbank vorkommen (was bedeutet, dass nur eine Objekt-ID zu dem Parameterwert gehört), beim Anlegen der ersten Spalten weggelassen, da diese Parameterwerte nicht dazu beitragen, Verletzer der MCCKCS-Bedingung zu finden. Es sei angemerkt, dass (Vdist) und (Vmaxf) diese Parameterwerte nach wie vor zählen müssen. Aus diesem Grund erfolgt die Ermittlung der Anzahl-unterschiedlicher-Werte (Vdist) und der Anzahl-maximaler-Häufigkeit Vmaxf auf der Grundlage der Parameterwerte einer Quellendatenbank, der die ersten Spalten entnommen und mit Daten gefüllt wurden.
  • Gemäß Ausführungsformen weist das Durchführen des Schritts c) auf:
    • – c1) Bestimmen eines ersten Tupels aus Parameterwerten, indem ein Parameterwert aus einer jeden der ersten Spalten der in Frage kommenden Spaltengruppe ausgewählt wird;
    • – c2) Auswählen der Objektkennungen, die in Verbindung mit jedem der im Schritt c1) ausgewählten Parameterwerte gespeichert werden; und
    • – Berechnen eines Schnittpunkts der im Schritt c2) ausgewählten Objektkennungen mittels einer Hash-Funktion oder mittels Bitmatrix-Operationen;
    • – c3.1) falls der berechnete Schnittpunkt mehr als eine Objektkennung aufweist, Feststellen, dass für die aktuelle Gruppe von in Frage kommenden Spalten mindestens ein Tupel aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Kennungen der Objektkennungen gespeichert werden, und Durchführen von d2);
    • – c3.2) andernfalls Auswählen eines zweiten Tupels, das aus einer anderen noch nicht ausgewerteten Kombination von Parameterwerten der in Frage kommenden Spaltengruppe besteht, und Wiederholen der Schritte c1) bis c3), bis c3.1) erreicht ist oder bis alle kombinatorisch möglichen Tupel aus unterschiedlichen Parameterwerten unter Berücksichtigung der aktuellen in Frage kommenden Spaltengruppe ausgewertet sind.
  • Die Merkmale können vorteilhaft sein, da die Berechnung eines Schnittpunkts von Objektkennungen mittels einer Hash-Funktion oder vorzugsweise mittels Bitmatrix-Operationen besonders schnell durchgeführt werden kann.
  • Gemäß Ausführungsformen weist das Verfahren des Weiteren auf: Auswählen von einem oder mehreren Datensätzen einer Datenbank, wobei jeder der Datensätze einen oder mehrere Eigenschaftswerte aufweist, die jeweils einer Eigenschaft entsprechen; Auswählen von einer oder mehreren der Eigenschaften und entsprechender Eigenschaftswerte der ausgewählten Datensätze; und Erzeugen der spaltenorientierten Datenstruktur als eine Ableitung der ausgewählten Eigenschaftswerte.
  • Das Anlegen der ersten Spalten weist auf: Darstellen einer jeden der ausgewählten Eigenschaften als eine entsprechende der ersten Spalten; für jede der ausgewählten Eigenschaften Ermitteln ihres unterschiedlichen Eigenschaftswerts in der Datenbank und Verwenden der ermittelten unterschiedlichen Eigenschaftswerte als die unterschiedlichen Parameterwerte der Spalte, welche die Eigenschaft darstellt; und für jeden der ermittelten unterschiedlichen Eigenschaftswerte Ermitteln der ausgewählten Datensätze, die den unterschiedlichen Eigenschaftswert aufweisen, und Darstellen von Datensatzkennungen der ermittelten Datensätze als die Objektkennungen, die in Verbindung mit dem unterschiedlichen Parameterwert gespeichert werden, der den unterschiedlichen Eigenschaftswert darstellt. Die Merkmale können vorteilhaft sein, da sie es ermöglichen, jede Art von Datenquelle, z. B. relationale Datenbanken, XML-Dateien, Textdateien, durch Kommata getrennte Dateien, binäre Datenbanken oder dergleichen, in eine spaltenorientierte Datenstruktur umzuwandeln, um eine darin enthaltene MCCKCS wirtschaftlich zu ermitteln. In einem weiteren vorteilhaften Aspekt kann diese Umwandlung somit das Erkennen von MCCKCS in Daten ermöglichen, die ursprünglich in einer Weise gespeichert wurden, welche das Erkennen von minimalen Parametersätzen, die einen eindeutigen zusammengesetzten Schlüssel für die Daten bilden, verhindert oder beträchtlich verlangsamt.
  • Gemäß Ausführungsformen sind die Datensätze Datensätze von einer oder mehreren Tabellen einer relationalen Datenbank. In der relationalen Datenbank werden die Eigenschaften durch Spalten der Tabellen dargestellt. Das Auswählen der Datensätze und der Eigenschaften weist für jede der einen oder der mehreren Tabellen auf: Auswerten, ob die Tabelle eine oder mehrere zweite Bedingungen erfüllt; und Auswählen der Datensätze und der Eigenschaften der Tabelle nur, wenn die zweiten Bedingungen erfüllt sind.
  • Dabei ist mindestens eine der zweiten Bedingungen nicht erfüllt, wenn:
    • – die Anzahl der Datensätze in der ausgewerteten Tabelle einen Zeilenanzahl-Schwellwert unterschreitet; wobei die Zeilenanzahl eine absolute Zeilenanzahl, z. B. 100 Zeilen, oder eine relative Zeilenanzahl, z. B. 10% der Zeilenanzahl der Tabelle, die die höchste Anzahl von Zeilen hat, sein könnte; und/oder
    • – die Tabelle keinen Datensatz aufweist; und/oder
    • – eine Zeitspanne zwischen einem aktuellen Zeitpunkt und einem letzten Zugriffszeitpunkt einen Zeitschwellwert überschreitet, wobei der letzte Zugriffszeitpunkt ein Zeitpunkt von einem letzten Lese- oder Schreibzugriff auf die ausgewertete Tabelle ist.
  • Die Merkmale können vorteilhaft sein, da sie die Gesamtmenge an Daten verringern, die zum Anlegen der ersten Spalten verwendet wird, ohne Informationen zu verlieren, die für die Ermittlung einer MCCKCS hilfreich sein könnten.
  • Gemäß Ausführungsformen weist das Auswählen von der einen oder den mehreren Eigenschaften für jede der Eigenschaften auf: Auswerten, ob die Eigenschaft eine oder mehrere dritte Bedingungen erfüllt; und Auswählen der Eigenschaft nur, wenn die dritten Bedingungen erfüllt sind.
  • Mindestens eine dritte Bedingungen ist nicht erfüllt, wenn:
    • – die Anzahl der unterschiedlichen Eigenschaftswerte der Eigenschaft einen Schwellwert für unterschiedliche Werte (distinct-value threshold) unterschreitet, z. B. einen Wert von ”2” unterschreitet; beispielsweise bewirken Spalten vom Datentyp BOOLEAN oder Spalten, die nur eine sehr begrenzte Anzahl von unterschiedlichen Eigenschaftswerten aufweisen, gewöhnlich nicht, dass eine Gruppe von Spalten eine MCCKCS ist, so dass solche Eigenschaften und entsprechende Spalten einer Quellendatenbank übersprungen werden können; und/oder
    • – ein Datentyp, der zur Speicherung der Eigenschaftswerte der Eigenschaft in der Datenbank verwendet wird, ein Datentyp ist, der keine Erzeugung eines mehrspaltigen eindeutigen index an dem Eigenschaftswert zulässt, und/oder ein Datentyp ist, der Indexstrukturen vorsieht, deren Durchsuchungszeit oder deren Verbrauch von Speicherkapazität üblicherweise einen vorher festgelegten Schwellwert für die Durchsuchungszeit oder einen vorher festgelegten Schwellwert für den Verbrauch von Speicherkapazität überschreitet; übliche Beispiele können binäre Datentypen, z. B. BLOBS, oder Varbinary- oder Bilddatentypen, z. B. Vargraphic, sein, die üblicherweise mehr Speicherplatz in Anspruch nehmen und eine langsamere Durchsuchungsleistung aufweisen als Indizes, die auf ganzen Zahlen oder auf kurzen Strings aufgebaut sind; und/oder
    • – die Größe der in der Datenbank gespeicherten Eigenschaftswerte der Eigenschaft einen Größen-Schwellwert überschreitet; wobei sich das Merkmal auf die tatsächliche Größe beziehen kann, die von den gespeicherten Eigenschaftswerten der Eigenschaft benötigt wird; und/oder
    • – ein Datentyp, der zur Speicherung der Eigenschaftswerte in der Datenbank verwendet wird, angibt, dass die Größe der Eigenschaftswerte einen Größen-Schwellwert überschreitet; wobei sich das Merkmal auf Datentypen wie zum Beispiel ”VarChar(60)” beziehen kann, die angeben, dass mindestens ein paar der Eigenschaftswerte wahrscheinlich viel Speicherplatz in Anspruch nehmen werden; da dies bereits von dem Datentyp angegeben wird, ist eine Auswertung des tatsächlich in Anspruch genommenen Speicherplatzes nicht notwendig; und/oder
    • – die Eigenschaftswerte der Eigenschaft in einer Spalte eines relationalen Datenbankverwaltungssystems gespeichert werden und die Spalte eine Bedingung für die Eindeutigkeit aller darin enthaltenen Eigenschaftswerte aufweist, wobei die Eindeutigkeit von dem relationalen Datenbankverwaltungssystem auferlegt wird; zum Beispiel kann die Eindeutigkeit mittels einer Primärschlüssel-Bedingung, einer Bedingung in Form von einem eindeutigen Index, einer selbsterzeugten seriellen Bedingung usw. auferlegt werden; solche Eigenschaften und entsprechenden Spalten bilden einen einspaltigen eindeutigen Schlüsselsatz und können nicht zum Erkennen von MCCKCS beitragen, die nicht trivial sind;
    • – die Anzahl der unterschiedlichen Eigenschaftswerte, die in einer Spalte einer relationalen Datenbanktabelle gespeichert werden, welche die Eigenschaft darstellt, gleich der Anzahl der Zeilen dieser Tabelle ist; solche Eigenschaften und entsprechenden Spalten bilden einen einspaltigen Schlüsselsatz und können nicht zum Erkennen von MCCKCS beitragen; und/oder
    • – ein Datentyp, der zur Speicherung der Eigenschaftswerte der Eigenschaft in der Datenbank verwendet wird, ein Bilddatentyp oder ein binärer Datentyp ist.
  • Die Merkmale können vorteilhaft sein, da sie die Gesamtmenge an Daten verringern, die zum Anlegen der ersten Spalten verwendet wird, ohne die Fähigkeit des Verfahrens zu beeinträchtigen, darin enthaltene MCCKCS zu ermitteln.
  • Gemäß Ausführungsformen stellt jede der ersten Spalten eine zweite Spalte einer Tabelle eines relationalen Datenbankverwaltungssystems dar und jede der Objektkennungen stellt eine Kennung eines Eintrags in einer Tabelle des relationalen Datenbankverwaltungssystems dar. Das Verfahren weist des Weiteren auf:
    • – Kennzeichnen der zweiten Spalten des relationalen Datenbankverwaltungssystems, das von den in Frage kommenden Spalten dargestellt wird, von denen festgestellt wurde, dass es sich um eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel handelt; und
    • – Erzeugen von einem mehrspaltigen zusammengesetzten Index, der die gekennzeichneten zweiten Spalten abdeckt, oder Auffordern eines Benutzers, die Erzeugung von einem mehrspaltigen zusammengesetzten Index, der die gekennzeichneten zweiten Spalten abdeckt, einzuleiten, und/oder
    • – Schreiben eines Hinweises, dass ein mehrspaltiger zusammengesetzter Index die gekennzeichneten zweiten Spalten abdeckt, in einen Datenbankkatalog des relationalen Datenbankverwaltungssystems, wobei der Katalog und der Hinweis von einem Abfrageplaner des Datenbankverwaltungssystems verwendet werden, um Abfragen zu optimieren, die an in dem Datenbankverwaltungssystem gespeicherten Daten durchgeführt werden.
  • Die Merkmale können vorteilhaft sein, da die Umwandlung von mindestens Teilen der Daten eines relationalen DBMS in die ersten Spalten eine schnelle Kennzeichnung von MCCKCS nicht nur für die ersten Spalten, sondern auch von der ursprünglichen relationalen Datenbank möglich macht. Indem man einen entsprechenden mehrspaltigen Index erzeugt und/oder den Datenbankkatalog ändert, kann die Abfrageleistung von Abfragen der ursprünglichen relationalen Datenbank erhöht werden. Der Ausdruck ”erste Spalte stellt eine zweite Spalte dar” kann zum Beispiel angeben, dass die erste Spalte auf der Grundlage der Eigenschaftswerte der zweiten Spalte erzeugt wurde und dass der Parameter der ersten Spalte identisch mit der Eigenschaft der zweiten Spalte ist.
  • Gemäß Ausführungsformen weist das Verfahren auf: falls im Schritt c) festgestellt wird, dass für eine aktuelle in Frage kommende Spaltengruppe mindestens ein Tupel aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Objektkennungen gespeichert werden, Ausgeben eines Berichts, wobei der Bericht einen Hinweis auf die in Frage kommenden Spalten und/oder das Tupel aus unterschiedlichen Parameterwerten und Objektkennungen, die in Verbindung mit den unterschiedlichen Parameterwerten gespeichert werden, aufweist. Die Merkmale können vorteilhaft sein, da sie eine wirksame Erkennung von Duplikaten ermöglichen, die möglicherweise irrtümlich in eine spaltenorientierte Datenbank, welche die ersten Spalten aufweist, oder in eine Quellendatenbank, von der die ersten Spalten abgeleitet wurden, eingefügt wurden.
  • In einem weiteren Aspekt betrifft die Erfindung einen von einem Computer lesbaren Datenträger, welcher einen damit realisierten, von einem Computer lesbaren Programmcode aufweist, der, wenn er von einem Prozessor ausgeführt wird, den Prozessor veranlasst, ein Verfahren nach einer der vorstehenden Ausführungsformen auszuführen.
  • In einem weiteren Aspekt betrifft die Erfindung ein Computersystem, das aufweist:
    • – einen von einem Computer lesbaren Datenträger mit einer Vielzahl von darin gespeicherten ersten Spalten, wobei jede erste Spalte einen Parameter darstellt, wobei jede erste Spalte einen entsprechenden Satz von unterschiedlichen Parameterwerten aufweist, wobei jeder unterschiedliche Parameterwert in Verbindung mit einer oder mehreren Objektkennungen gespeichert wird;
    • – einen Prozessor, der so ausgelegt ist, dass er eine oder mehrere mehrspaltige Spaltengruppen mit zusammengesetztem Schlüssel erkennt, indem er:
    • a) auf die ersten Spalten zugreift;
    • b) zwei oder mehr der ersten Spalten auswählt, um sie als eine aktuelle Gruppe von in Frage kommenden Spalten zu verwenden, wobei die Gruppe mindestens eine erste und eine zweite in Frage kommende Spalte aufweist, wobei die Gruppe eine aktuelle Kardinalität (k) hat;
    • c) feststellt, indem er Objektkennungen miteinander vergleicht, die in Verbindung mit Parameterwerten der in Frage kommenden Spalten gespeichert werden, ob für die aktuelle Gruppe von in Frage kommenden Spalten mindestens ein Tupel aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Kennungen der Objektkennungen gespeichert werden, wobei jedes Tupel aus Parameterwerten aus einem Parameterwert einer jeden in Frage kommenden Spalte der aktuellen in Frage kommenden Spaltengruppe besteht;
    • d1) die aktuelle in Frage kommende Spaltengruppe als eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel kennzeichnet, falls das mindestens eine Tupel nicht vorhanden ist;
    • d2) andernfalls die zweite in Frage kommende Spalte durch eine andere ausgewählte Spalte der ersten Spalten ersetzt, um eine neue aktuelle in Frage kommende Spaltengruppe mit der aktuellen Kardinalität (k) zu erzeugen, oder die andere ausgewählte Spalte der ersten Spalten zu der aktuellen in Frage kommenden Spaltengruppe hinzufügt, um eine neue aktuelle in Frage kommende Spaltengruppe mit einer neuen aktuellen, um eins erhöhten Kardinalität (k + 1) zu erzeugen, wobei die andere erste Spalte noch kein Element einer zuvor ausgewählten in Frage kommenden Spaltengruppe mit der aktuellen Kardinalität (k) war, und die Schritte c) bis d) wiederholt.
  • Manchen Ausführungsformen entsprechend weist das Computersystem den von einem Computer lesbaren Datenträger auf, wobei der Datenträger ein Bestandteil des Computers sein kann, der den Prozessor aufweist, oder er kann mit dem Prozessor betriebsfähig verbunden sein, z. B. über eine Netzwerkverbindung, die dem Prozessor den Zugriff auf die ersten Spalten ermöglicht.
  • Kurze Beschreibung der Zeichnungen
  • Im Folgenden werden bevorzugte Ausführungsformen der Erfindung anhand eines Beispiels ausführlicher beschrieben, wobei nur Bezug auf die Zeichnungen genommen wird, bei denen:
  • 1 einen Ablaufplan einer Ausführungsform des erfindungsgemäßen Verfahrens zeigt,
  • 2 ein Blockschaubild eines Computersystems zeigt, das eine spaltenorientierte Datenbank mit mehreren ersten Spalten aufweist.
  • Ausführliche Beschreibung
  • Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt realisiert werden. Folglich können Aspekte der vorliegenden Erfindung die Form einer ganz in Hardware realisierten Ausführungsform, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das sich auf einem oder mehreren von einem Computer lesbaren Datenträgern) befindet, auf dem beziehungsweise denen sich der von einem Computer lesbare Programmcode befindet. Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Der von einem Computer lesbare Datenträger kann ein von einem Computer lesbarer Signaldatenträger oder ein von einem Computer lesbares Speichermedium sein. Ein von einem Computer lesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das von einem Computer lesbare Speichermedium würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. In Zusammenhang mit diesem Schriftstück kann ein von einem Computer lesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • 1 zeigt einen Ablaufplan eines Verfahrens, das dazu dient, eine oder mehrere mehrspaltige Spaltengruppen mit zusammengesetztem Schlüssel zu erkennen. 2 zeigt ein Blockschaubild eines Computersystems 200, das eine spaltenorientierte Datenbank 206 mit mehreren ersten Spalten und ein MCCKCS-Erkennungsmodul 213 aufweist, um das in 1 gezeigte Verfahren auszuführen. Gemäß Ausführungsformen der Erfindung können manche Verfahrensschritte auch von dem Datenentnahme- und -umwandlungsmodul 212 durchgeführt werden. Im Folgenden werden Ausführungsformen der Erfindung durch Bezugnahme auf die 1 und 2 beschrieben. Im Schritt 102 wird von einem MCCKCS-Erkennungsmodul 213 auf eine spaltenorientierte Datenbank 206 zugegriffen, die eine Vielzahl von ersten Spalten P1, P2 und P3 aufweist. Jede erste Spalte stellt einen Parameter, z. B. ”Rang”, ”Alter”, ”ist_anwesend”, ”Name”, ”Farbe” oder dergleichen, dar. Jede erste Spalte weist einen jeweiligen Satz von unterschiedlichen Parameterwerten DPV (distinct parameter values) auf, die beispielsweise von einer Quellendatenbank 205, z. B. einer relationalen Datenbank, abgeleitet wurden. In der spaltenorientierten Datenbank 206 wird jeder unterschiedliche Parameterwert in Verbindung mit einer oder mehreren Objektkennungen OIDs auf einem Speichermedium 204 gespeichert.
  • In einem zweiten Schritt 104 wählt das MCCKCS-Erkennungsmodul eine oder mehrere erste Spalten aus, um eine in Frage kommende Spaltengruppe 218 zu erzeugen. Die in Frage kommende Spaltengruppe weist mindestens eine erste und eine zweite in Frage kommende Spalte auf. In 2 sind drei erste Spalten P1, P2 und P3 gezeigt. Für eine Kardinalität k = 2 der aktuellen in Frage kommenden Spaltengruppe könnte die aktuelle in Frage kommende Spaltengruppe entweder {P1, P2} oder {P1, P3} oder {P2, P3} sein. Für eine Kardinalität k = 3 wäre die in Frage kommende Spaltengruppe {P1, P2, P3}. Ausführungsformen der Erfindung können an mehreren hundert oder sogar mehreren tausend ersten Spalten Operationen durchführen, aber der Einfachheit halber sind nur drei erste Spalten P1 bis P3 gezeigt. Die Auswertung, die lediglich Lesezugriff auf verschiedene in Frage kommende Spaltengruppen erfordert, kann parallel ausgeführt werden, wodurch die aktuelle Hardware-Architektur mit mehreren Berechnungskernen wirtschaftlich genutzt wird.
  • Im Schritt 106 vergleicht das MCCKCS-Erkennungsmodul die Objektkennungen, die in Verbindung mit Parameterwerten der in Frage kommenden Spalten der aktuellen in Frage kommenden Spaltengruppe gespeichert werden, miteinander. Der Schritt kann tupelweise durchgeführt werden, d. h., indem ein Schnittpunkt aller Objekt-IDs berechnet wird, die in Verbindung mit einem bestimmten Tupel aus unterschiedlichen Parameterwerten, welche von allen aktuellen in Frage kommenden Spalten abgeleitet wurden, gespeichert werden. Eine in Frage kommende Spalte ist einfach eine erste Spalte, die gerade zu der aktuellen in Frage kommenden Spaltengruppe gehört. Alle kombinatorisch möglichen Tupel aus Parameterwerten können mindestens so lange ausgewertet werden, bis ein Tupel 219 gefunden wird, das angibt, dass die aktuelle in Frage kommende Spaltengruppe keine MCCKCS bilden kann. Jedes Tupel besteht aus einem Parameterwert pro in Frage kommender Spalte der aktuellen in Frage kommenden Spaltengruppe. Falls beispielsweise P2 und P3 die aktuelle in Frage kommende Spaltengruppe bilden, könnte ein solches Tupel {P2:12, P3:Tom} oder {P2:12, P3:Jenny} oder {P2:15, P3:Tom} oder {P2:15, P3:Jenny} sein. Wenn die Auswertung der Tupel der aktuellen in Frage kommenden Spaltengruppe das Tupel {P2:12, P3:Tom} erreicht, würde das MCCKCS-Erkennungsmodul feststellen, dass zwei Objektkennungen 1 und 2 in Verbindung mit den unterschiedlichen Parameterwerten ”12” und ”Tom” des Tupels gespeichert sind. Dadurch stellt das Modul 213 im Schritt 108 fest, dass die aktuelle in Frage kommende Spaltengruppe keine MCCKCS bilden kann. Folglich kann ein Vergleich von Objektkennungen von allen anderen kombinatorisch möglichen Tupel für die aktuelle in Frage kommende Spaltengruppe übersprungen werden. Das Modul 213 fährt in diesem Fall mit dem Schritt 112 fort, in dem eine der in Frage kommenden Spalten, die hier als ”zweite in Frage kommende Spalte” bezeichnet wird, durch eine andere der ersten Spalten ersetzt wird oder die andere erste Spalte zu der aktuellen in Frage kommenden Spaltengruppe hinzugefügt wird, um eine neue aktuelle in Frage kommende Spaltengruppe zu erzeugen. P2 oder P3 könnte beispielsweise durch P1 ersetzt werden. Alternativ könnte die Kardinalität der aktuellen in Frage kommenden Spaltengruppe erhöht werden, z. B., indem zusätzlich P1 in die neue aktuelle in Frage kommende Spaltengruppe aufgenommen wird.
  • Falls P1 und P3 die aktuelle in Frage kommende Spaltengruppe bilden, die unter Berücksichtigung der aktuellen in Frage kommenden Spaltengruppe erstellt werden können, und werden für eine Auswertung eingeplant. Die Tupel würden aus (P1:A, P3:Tom}, (P1:A, P3:Jenny}, (P1:B, P3:Tom} und {P1:B, P3:Jenny} bestehen. Eine Auswertung der Tupel ergibt, dass keines der Tupel aus unterschiedlichen Parameterwerten besteht, die jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Objektkennungen gespeichert werden. Folglich stellt das Modul 213 im Schritt 108 fest, dass es für die aktuelle in Frage kommende Spaltengruppe kein solches Tupel gibt, und fährt mit dem Schritt 110 fort. Dabei wird die aktuelle in Frage kommende Spaltengruppe als eine MCCKCS gekennzeichnet. Falls nur eine einzige MCCKCS ermittelt werden soll, kann das Verfahren jetzt beendet werden. Falls weitere MCCKCS ermittelt werden sollen, kann das Modul 213 eine der Spalten von der aktuellen in Frage kommenden Spaltengruppe durch eine Spalte von den anderen Spalten oder durch Hinzufügen von einer weiteren ersten Spalte zu der in Frage kommenden Spaltengruppe ersetzen. Die weitere erste Spalte ist vorzugsweise eine Spalte, die eine höhere Anzahl von unterschiedlichen Parameterwerten als alle anderen ersten Spalten zugewiesen hat bzw. der eine höhere Anzahl von unterschiedlichen Parameterwerten als allen anderen ersten Spalten zugewiesen wurde, welche noch nicht hinsichtlich der aktuellen Kardinalität k ausgewertet wurden.
  • Gemäß Ausführungsformen wird das Verfahren weiter beschleunigt, indem durch das MCCKCS-Erkennungsmodul 213 eine oder mehrere erste Bedingungen 214, die in einem Speichermedium gespeichert sind, welches mit dem MCCKCS-Erkennungsmodul betriebsfähig verbunden ist, ausgewertet werden. Die eine oder die mehreren ersten Bedingungen werden an jeder ersten Spalte ausgewertet, die im Schritt 104 oder im Schritt 112 hinzugefügt werden soll, um eine neue aktuelle in Frage kommende Spaltengruppe zu erzeugen. Falls die erste Spalte nicht mindestens eine der ersten Bedingungen erfüllt, wird die erste Spalte nicht als eine in Frage kommende Spalte zu der neuen in Frage kommenden Spaltengruppe hinzugefügt. Stattdessen wird eine andere erste Spalte ausgewählt. Die ersten Bedingungen sind Bedingungen, die, wenn sie an im Voraus berechneten numerischen Daten ausgewertet werden, welche in Verbindung mit der entsprechenden ersten Spalte gespeichert werden, einen Hinweis darauf geben, ob es der ersten Spalte nicht möglich ist, zu bewirken, dass die neue aktuelle in Frage kommende Spaltengruppe eine MCCKCS wird, oder die angeben, dass die erste Spalte selbst ein einspaltiger Schlüssel ist. Im letzteren Fall wäre jede beliebige in Frage kommende Spaltengruppe, die die erste Spalte aufweist, trivialerweise eine MCCKCS; daher wird diese Art von ersten Spalten ebenfalls mit Hilfe der ersten Bedingungen ausgefiltert. Die spaltenorientierte Datenbank 206 wurde möglicherweise als eine Ableitung einer Quellendatenbank, z. B. einer relationalen Datenbank 205, angelegt. Die spaltenorientierte Datenbank 206 kann von einem spaltenorientierten Datenverwaltungssystem wie zum Beispiel Vertica verwaltet werden. Die Quellendatenbank 205 kann auf demselben Computersystem 200 wie die spaltenorientierte Datenbank gehostet werden, wobei das Computersystem einen Prozessor 202, einen Hauptspeicher 203 und ein von einem Computer lesbares Speichermedium 204 aufweist. Gemäß anderen Ausführungsformen kann die Quellendatenbank auf einem anderen Computer gehostet werden. Die relationale Datenbank weist mindestens eine Tabelle auf, in der eine Vielzahl von Datensätzen gespeichert sind. Jeder Datensatz ist durch eine Datensatzkennung (record identifier (RID)) gekennzeichnet. Jeder Datensatz weist eine Vielzahl von Eigenschaftswerten auf, die jeweiligen Eigenschaften P_1, P_2 und P_3, wie zum Beispiel ”Rang” (P_1), ”Alter” (P_2) oder ”ist_Teilnehmer” (P_3), entsprechen. Das Datenentnahme- und Umwandlungsmodul 212 wertet aus, ob die Tabellen und die Eigenschaften der Quellendatenbank 205 zweite Bedingungen 215 und dritte Bedingungen 216 erfüllen. Nur wenn die Bedingungen 215, 216 erfüllt sind, werden die Eigenschaften und die entsprechenden Eigenschaftswerte der Quellendatenbank verwendet, um die ersten Spalten P1 bis P3 zu erzeugen und um die unterschiedlichen Parameterwerte und die zugewiesenen Objektkennungen zu berechnen, um die Spaltendatenbank 206 anzulegen. Üblicherweise hat die spaltenorientierte Datenbank 206 nur einen Bruchteil der Größe der relationalen Datenbank 205, aber der Informationsgehalt in Bezug auf das Vorhandensein einer MCCKCS ist in diesen Datenbanken 205 und 206 weitgehend gleich. Nachdem eine oder mehrere MCCKCS ermittelt wurden, indem die spaltenorientierte Datenbank 206 ausgewertet wurde, speichert das MCCKCS-Erkennungsmodul 213 oder ein zugehöriges Modul 217 Informationen über die MCCKCS in einem Datenbank-(DB-)Katalog 201, der von einem Abfrageplaner der relationalen Datenbank 205 verwendet wird. Darüber hinaus oder alternativ kann das Modul 213 oder 217 automatisch mehrspaltige Indexstrukturen mit zusammengesetztem Schlüssel an den Spalten in der Quellendatenbank 205 erzeugen, welche den in Frage kommenden Spalten entsprechen, die eine MCCKCS bilden. Ebenso kann ein Benutzer von den Modulen 213 oder 217 aufgefordert werden, dies zu tun.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Gunopulos D., ”Discovering all most specific sentences”. In: Transactions an Database Systems (TODS), Band 28, Ausgabe 2, 2003 [0003]

Claims (15)

  1. Von einem Computer ausgeführtes Verfahren, das dazu dient, eine oder mehrere mehrspaltigen Spaltengruppen mit zusammengesetztem Schlüssel zu erkennen, wobei das Verfahren aufweist: a) Zugreifen (102) auf eine Vielzahl von ersten Spalten (P1, P2, P3), wobei jede erste Spalte einen Parameter darstellt, wobei jede erste Spalte einen Satz von unterschiedlichen Parameterwerten (DPV) ihres jeweiligen Parameters aufweist, wobei jeder unterschiedliche Parameterwert in Verbindung mit einer oder mehreren Objektkennungen (OIDs) gespeichert wird; b) Auswählen (104) von zwei oder mehr der ersten Spalten, um sie als eine aktuelle Gruppe (218) von in Frage kommenden Spalten zu verwenden, wobei die Gruppe mindestens eine erste (P2) und eine zweite (P3) in Frage kommende Spalte aufweist, wobei die Gruppe eine aktuelle Kardinalität (k) hat; c) Feststellen (106), indem Objektkennungen miteinander verglichen werden, die in Verbindung mit Parameterwerten der in Frage kommenden Spalten gespeichert werden, ob für die aktuelle Gruppe von in Frage kommenden Spalten mindestens ein Tupel (219) aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Kennungen der Objektkennungen gespeichert werden, wobei jedes Tupel aus Parameterwerten aus einem Parameterwert einer jeden in Frage kommenden Spalte der aktuellen in Frage kommenden Spaltengruppe besteht; d1) falls das mindestens eine Tupel nicht vorhanden ist, Kennzeichnen (110) der aktuellen in Frage kommenden Spaltengruppe als eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel; d2) andernfalls Ersetzen (112) der zweiten in Frage kommenden Spalte durch eine andere ausgewählte Spalte der ersten Spalten, um eine neue aktuelle in Frage kommende Spaltengruppe mit der aktuellen Kardinalität (k) zu erzeugen, oder Hinzufügen der anderen ausgewählten Spalte der ersten Spalten zu der aktuellen in Frage kommenden Spaltengruppe, um eine neue aktuelle in Frage kommende Spaltengruppe mit einer neuen aktuellen, um eins erhöhten Kardinalität (k + 1) zu erzeugen, wobei die andere erste Spalte noch kein Element einer zuvor ausgewählten in Frage kommenden Spaltengruppe mit der aktuellen Kardinalität (k) war, und Wiederholen der Schritte c) bis d).
  2. Von einem Computer ausgeführtes Verfahren nach Anspruch 1, wobei jede der Vielzahl der ersten Spalten in Verbindung mit einem oder mehreren numerischen Werten gespeichert wird; und wobei die Auswahl von beliebigen der ersten Spalten im Schritt b) und/oder eine Auswahl von der anderen Spalte der ersten Spalten im Schritt d2) das Auswerten der numerischen Werte der ausgewählten ersten Spalte im Hinblick auf eine oder mehrere erste Bedingungen und das Verwenden der ersten Spalte, um die aktuelle Gruppe von in Frage kommenden Spalten im Schritt b) zu erzeugen oder um die neue aktuelle Gruppe von in Frage kommenden Spalten im Schritt d2) nur dann zu erzeugen, wenn die ersten Bedingungen erfüllt sind, aufweist.
  3. Von einem Computer ausgeführtes Verfahren nach Anspruch 2, – wobei die numerischen Werte mindestens eine Anzahl-unterschiedlicher-Werte (Vdist), welche die Anzahl der unterschiedlichen Parameterwerte der zugehörigen ersten Spalte angibt, und/oder mindestens eine Anzahl-maximaler-Häufigkeit (Vmaxf), welche die maximale Anzahl der Objekt-IDs angibt, die einem beliebigen der unterschiedlichen Parameterwerte der ersten Spalte zugewiesen werden, aufweist; und – wobei die Auswertung der ersten Bedingungen an den numerischen Werten der ausgewählten ersten Spalte die Feststellung aufweist, dass mindestens eine der ersten Bedingungen nicht erfüllt ist, wenn: • die Anzahl-maximaler-Häufigkeit (Vmaxf), die in Verbindung mit der ausgewählten ersten Spalte gespeichert wird, größer als die Anzahl-unterschiedlicher-Werte (Vdist) ist, die in Verbindung mit einer jeden der in Frage kommenden Spalten in der aktuellen in Frage kommenden Spaltengruppe gespeichert wird, oder wenn die Anzahl-maximaler-Häufigkeit (Vmaxf), die in Verbindung mit beliebigen der aktuellen in Frage kommenden Spalten gespeichert wird, größer als die Anzahl-unterschiedlicher-Werte (Vdist) ist, die in Verbindung mit der ersten Spalte gespeichert wird; und/oder • ein Produkt aus der Anzahl-unterschiedlicher-Werte (Vdist) der ausgewählten ersten Spalte und der Anzahl-unterschiedlicher-Werte (Vdist), die in Verbindung mit einer jeden der in Frage kommenden Spalten in der aktuellen in Frage kommenden Spaltengruppe gespeichert wird, kleiner ist als die Gesamtzahl der Objekt-IDs von mindestens einem von beiden, der ausgewählten ersten Spalte oder den in Frage kommenden Spalten; und/oder • die Anzahl-unterschiedlicher-Werte (Vdist), die in Verbindung mit der ausgewählten ersten Spalte gespeichert wird, gleich oder kleiner 1 ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei das Auswählen von einer beliebigen der ersten Spalten im Schritt b) oder im Schritt d2), um die erste Spalte als eine in Frage kommende Spalte zu verwenden, aufweist: – falls ein Datentyp, der zur Speicherung von Parameterwerten des Parameters in der ausgewählten ersten Spalte verwendet wird, in einer schwarzen Liste von Datentypen enthalten ist, anstelle der ersten Spalte Auswählen einer anderen Spalte der ersten Spalten als in Frage kommende Spalte; und/oder – falls die ausgewählte erste Spalte zu einer MCCKCS gehört, die zuvor für eine Kardinalität ermittelt wurde, die kleiner als die aktuelle Kardinalität ist, und falls das Hinzufügen der ausgewählten ersten Spalte zu der aktuellen in Frage kommenden Spaltengruppe die resultierende in Frage kommende Spaltengruppe zu einer Übergruppe der zuvor ermittelten MCCKCS machen würde, anstelle der ersten Spalte Auswählen einer anderen Spalte der ersten Spalten als in Frage kommende Spalte.
  5. Von einem Computer ausgeführtes Verfahren nach einem der Ansprüche 1 bis 4, das des Weiteren aufweist: – Sortieren der ersten Spalten in absteigender Reihenfolge in Bezug auf ihre Anzahl-unterschiedlicher-Werte (Vdist); – Durchführen des Schritts b) entsprechend der Reihenfolge, wobei die erste Spalte in den Schritten b) und d2) umso früher ausgewählt wird, je höher die Anzahl-unterschiedlicher-Werte (Vdist) von einer der ersten Spalten ist.
  6. Von einem Computer ausgeführtes Verfahren nach einem der vorhergehenden Ansprüche, das des Weiteren aufweist: e) Bereitstellen eines Benutzerschnittstellenmittels (220), das es einem Benutzer ermöglicht, einen Kardinalitäts-Schwellwert anzugeben; f) Wiederholen der Schritte c) bis d), bis alle kombinatorisch möglichen, in Frage kommenden Spaltengruppen für die aktuelle Kardinalität als aktuelle in Frage kommende Spaltengruppe ausgewählt und im Hinblick darauf, ob sie eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel sind, ausgewertet wurden; g) Feststellen, ob die aktuelle Kardinalität den angegebenen Kardinalitäts-Schwellwert unterschreitet; h1) wenn die aktuelle Kardinalität (k) den angegebenen Kardinalitäts-Schwellwert unterschreitet, Erhöhen der aktuellen Kardinalität; Auswählen von einer der ersten Spalten, die nicht zu der aktuellen in Frage kommenden Gruppe gehören; Hinzufügen der ausgewählten ersten Spalte als eine weitere in Frage kommende Spalte zu der aktuellen in Frage kommenden Spaltengruppe; und Wiederholen der Schritte f), g) und h); h2) beende andernfalls das Verfahren.
  7. Von einem Computer ausgeführtes Verfahren nach einem der Ansprüche, wobei der Vergleich der Objektkennungen miteinander, um identische Objektkennungen festzustellen, aufweist: – Darstellen einer jeden der Objektkennungen, die verglichen werden sollen, als eine Bitmatrix und Anwenden einer bitweisen Vergleichsoperation auf die Bitmatrizen; oder – Berechnen eines Hash-Werts von jeder der zu vergleichenden Objektkennungen und Vergleichen der Hash-Werte miteinander.
  8. Von einem Computer ausgeführtes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren des Weiteren aufweist: – für jede der ersten Spalten Sortieren der darin enthaltenen unterschiedlichen Parameterwerte in absteigender Reihenfolge in Bezug auf die Anzahl der Objektkennungen, die in Verbindung mit dem unterschiedlichen Parameterwert gespeichert werden; wobei das Durchführen des Schritts c) für jedes der kombinatorisch möglichen Tupel aus Parameterwerten unter Berücksichtigung der aktuellen in Frage kommenden Spaltengruppe aufweist: – Auswählen des Tupels aus Parameterwerten, indem für jede in Frage kommende Spalte in der aktuellen in Frage kommenden Spaltengruppe einer ihrer unterschiedlichen Parameterwerte entsprechend der Reihenfolge ausgewählt wird, wodurch das Tupel aus ausgewählten unterschiedlichen Parameterwerten bereitgestellt wird, wobei der Parameterwert zur Bereitstellung des Tupels umso früher ausgewählt wird, je höher die Anzahl der Objektkennungen ist, die in Verbindung mit einem der Parameterwerte gespeichert werden.
  9. Von einem Rechner ausgeführtes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Durchführen des Schritts c) aufweist: – c1) Bestimmen eines ersten Tupels aus Parameterwerten, indem ein Parameterwert aus einer jeden der ersten Spalten der in Frage kommenden Spaltengruppe ausgewählt wird; – c2) Auswählen der Objektkennungen, die in Verbindung mit jedem der im Schritt c1) ausgewählten Parameterwerte gespeichert werden; und – Berechnen eines Schnittpunkts der im Schritt c2) ausgewählten Objektkennungen mittels einer Hash-Funktion; – c3.1) falls der berechnete Schnittpunkt mehr als eine Objektkennung aufweist, Feststellen, dass für die aktuelle Gruppe von in Frage kommenden Spalten mindestens ein Tupel aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Kennungen der Objektkennungen gespeichert werden, und Durchführen von d2); – c3.2) andernfalls Auswählen eines zweiten Tupels, das aus einer anderen noch nicht ausgewerteten Kombination von Parameterwerten der in Frage kommenden Spaltengruppe besteht, und Wiederholen der Schritte c1) bis c3), bis c3.1) erreicht ist oder bis alle kombinatorisch möglichen Tupel aus unterschiedlichen Parameterwerten unter Berücksichtigung der aktuellen in Frage kommenden Spaltengruppe ausgewertet sind.
  10. Von einem Computer ausgeführtes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren des Weiteren aufweist: – Auswählen von einem oder mehreren Datensätzen einer Datenbank (205), wobei jeder der Datensätze einen oder mehrere Eigenschaftswerte aufweist, der beziehungsweise die jeweils einer Eigenschaft (P_1, P_2, P_3) entsprechen; – Auswählen von einer oder mehreren der Eigenschaften und entsprechender Eigenschaftswerte der ausgewählten Datensätze; – Anlegen der ersten Spalten als eine Ableitung der ausgewählten Eigenschaftswerte, wobei das Anlegen aufweist: • Darstellen einer jeden der ausgewählten Eigenschaften als eine entsprechende Spalte der ersten Spalten (P1, P2, P3); • für jede der ausgewählten Eigenschaften Ermitteln ihrer unterschiedlichen Eigenschaftswerte in der Datenbank und Verwenden der ermittelten unterschiedlichen Eigenschaftswerte als die unterschiedlichen Parameterwerte der Spalte, welche die Eigenschaft darstellt; • für jeden der ermittelten unterschiedlichen Eigenschaftswerte Ermitteln der ausgewählten Datensätze, die den unterschiedlichen Eigenschaftswert aufweisen, und Darstellen von Datensatzkennungen (RIDs) der ermittelten Datensätze als die Objektkennungen (OIDs), die in Verbindung mit dem unterschiedlichen Parameterwert gespeichert werden, welcher den unterschiedlichen Eigenschaftswert darstellt.
  11. Verfahren nach Anspruch 10, wobei die Datensätze Datensätze von einer oder mehreren Tabellen einer relationalen Datenbank sind, wobei die Eigenschaften durch Spalten in den Tabellen dargestellt werden, und wobei das Auswählen der Datensätze und der Eigenschaften für jede der einen oder der mehreren Tabellen aufweist: – Auswerten, ob die Tabelle eine oder mehrere zweite Bedingungen erfüllt; und – Auswählen der Datensätze und der Eigenschaften der Tabelle nur, wenn die zweiten Bedingungen erfüllt sind; wobei mindestens eine der zweiten Bedingungen nicht erfüllt ist, wenn: – die Anzahl der Datensätze in der ausgewerteten Tabelle einen Zeilenanzahl-Schwellwert unterschreitet; und/oder – die Tabelle keinen Datensatz aufweist; und/oder – eine Zeitspanne zwischen einem aktuellen Zeitpunkt und einem letzten Zugriffszeitpunkt einen Zeitschwellwert überschreitet, wobei der letzte Zugriffszeitpunkt ein Zeitpunkt von einem letzten Lese- oder Schreibzugriff auf die ausgewertete Tabelle ist.
  12. Verfahren nach Anspruch 10 oder 11, wobei das Auswählen von der einen oder den mehreren Eigenschaften für jede der Eigenschaften aufweist: Auswerten, ob die Eigenschaft eine oder mehrere dritte Bedingungen erfüllt; und Auswählen der Eigenschaft nur, wenn die dritten Bedingungen erfüllt sind; wobei mindestens eine dritte Bedingung nicht erfüllt ist, wenn: – die Anzahl der unterschiedlichen Eigenschaftswerte der Eigenschaft einen Schwellwert für unterschiedliche Werte unterschreitet; und/oder – ein Datentyp, der zur Speicherung der Eigenschaftswerte der Eigenschaft in der Datenbank verwendet wird, ein Datentyp ist, der keine Erzeugung eines mehrspaltigen eindeutigen Index an dem Eigenschaftswert zulässt, und/oder ein Datentyp ist, der Indexstrukturen vorsieht, deren Durchsuchungszeit einen vorher festgelegten Schwellwert für die Durchsuchungszeit überschreitet oder deren Verbrauch von Speicherkapazität einen vorher festgelegten Schwellwert für den Verbrauch von Speicherkapazität überschreitet; und/oder – die Größe der in der Datenbank gespeicherten Eigenschaftswerte der Eigenschaft einen Größen-Schwellwert überschreitet; und/oder – ein Datentyp, der zur Speicherung der Eigenschaftswerte in der Datenbank verwendet wird, angibt, dass die Größe der Eigenschaftswerte einen Größen-Schwellwert überschreitet; und/oder – die Eigenschaftswerte der Eigenschaft in einer Spalte eines relationalen Datenbankverwaltungssystems (205) gespeichert werden und die Spalte eine Bedingung für die Eindeutigkeit aller darin enthaltenen Eigenschaftswerte aufweist, wobei die Eindeutigkeit von dem relationalen Datenbankverwaltungssystem auferlegt wird; – die Anzahl der unterschiedlichen Eigenschaftswerte, die in einer Spalte einer relationalen Datenbanktabelle gespeichert werden, welche die Eigenschaft darstellt, gleich der Anzahl der Zeilen der Tabelle ist; und/oder – ein Datentyp, der zur Speicherung der Eigenschaftswerte der Eigenschaft in der Datenbank verwendet wird, ein Bilddatentyp oder ein binärer Datentyp ist.
  13. Von einem Computer ausgeführtes Verfahren nach einem der vorhergehenden Ansprüche, wobei jede der ersten Spalten eine zweite Spalte einer Tabelle eines relationalen Datenbankverwaltungssystems (205) darstellt und wobei jede der Objektkennungen eine Kennung eines Eintrags in einer Tabelle des relationalen Datenbankverwaltungssystems darstellt; wobei das Verfahren des Weiteren aufweist: – Kennzeichnen der zweiten Spalten des relationalen Datenbankverwaltungssystems, das von den in Frage kommenden Spalten dargestellt wird, von denen festgestellt wurde, dass es sich um eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel handelt; und – Erzeugen von einem mehrspaltigen zusammengesetzten Index, der die gekennzeichneten zweiten Spalten abdeckt, oder Auffordern eines Benutzers, die Erzeugung von einem mehrspaltigen zusammengesetzten index, der die gekennzeichneten zweiten Spalten abdeckt, einzuleiten, und/oder – Speichern eines Hinweises, dass ein mehrspaltiger zusammengesetzter index die gekennzeichneten zweiten Spalten abdeckt, in einen Datenbankkatalog (210) des relationalen Datenbankverwaltungssystems, wobei der Katalog und der Hinweis von einem Abfrageplaner (209) des Datenbankverwaltungssystems verwendet werden, um Abfragen zu optimieren, die an in dem Datenbankverwaltungssystem (205) gespeicherten Daten durchgeführt werden.
  14. Von einem Computer lesbarer Datenträger (204), der einen damit realisierten, von einem Computer lesbaren Programmcode aufweist, der, wenn er von einem Prozessor (202) ausgeführt wird, den Prozessor veranlasst, ein Verfahren nach einem der vorhergehenden Ansprüche durchzuführen.
  15. Computersystem (200), das aufweist: – eine Schnittstelle (221), um das Computersystem mit einem von einem Computer lesbaren Datenträger, in dem eine Vielzahl von ersten Spalten (P1, P2, P3) gespeichert werden, betriebsfähig zu verbinden, wobei jede erste Spalte einen Parameter darstellt, wobei jede erste Spalte einen entsprechenden Satz von unterschiedlichen Parameterwerten aufweist, wobei jeder unterschiedliche Parameterwert in Verbindung mit einer oder mehreren Objektkennungen (OIDs) gespeichert wird; – einen Prozessor (202), der so ausgelegt ist, dass er eine oder mehrere mehrspaltige Spaltengruppen mit zusammengesetztem Schlüssel erkennt, indem er: a) auf die ersten Spalten zugreift; b) zwei oder mehr der ersten Spalten auswählt, um sie als eine aktuelle Gruppe (218) von in Frage kommenden Spalten zu verwenden, wobei die Gruppe mindestens eine erste (P2) und eine zweite (P3) in Frage kommende Spalte aufweist, wobei die Gruppe eine aktuelle Kardinalität (k) hat; c) feststellt, indem er Objektkennungen miteinander vergleicht, die in Verbindung mit Parameterwerten der in Frage kommenden Spalten gespeichert werden, ob für die aktuelle Gruppe von in Frage kommenden Spalten mindestens ein Tupel (219) aus Parameterwerten vorhanden ist, dessen Parameterwerte jeweils in Verbindung mit zwei oder mehr gemeinsam verwendeten Kennungen der Objektkennungen gespeichert werden, wobei jedes Tupel aus Parameterwerten aus einem Parameterwert einer jeden in Frage kommenden Spalte der aktuellen in Frage kommenden Spaltengruppe besteht; d1) falls das mindestens eine Tupel nicht vorhanden ist, die aktuelle in Frage kommende Spaltengruppe als eine mehrspaltige Spaltengruppe mit zusammengesetztem Schlüssel kennzeichnet; d2) andernfalls die zweite in Frage kommende Spalte durch eine andere ausgewählte Spalte der ersten Spalten ersetzt, um eine neue aktuelle in Frage kommende Spaltengruppe mit der aktuellen Kardinalität (k) zu erzeugen, oder die andere ausgewählte Spalte der ersten Spalten zu der aktuellen in Frage kommenden Spaltengruppe hinzufügt, um eine neue aktuelle in Frage kommende Spaltengruppe mit einer neuen aktuellen, um eins erhöhten Kardinalität (k + 1) zu erzeugen, wobei die andere erste Spalte noch kein Element einer zuvor ausgewählten in Frage kommenden Spaltengruppe mit der aktuellen Kardinalität (k) war, und die Schritte c) bis d) wiederholt.
DE102013215530.1A 2012-08-21 2013-08-07 Detecting Multi-Column Composite Key Column Sets Ceased DE102013215530A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1214851.6 2012-08-12
GB1214851.6A GB2505183A (en) 2012-08-21 2012-08-21 Discovering composite keys

Publications (1)

Publication Number Publication Date
DE102013215530A1 true DE102013215530A1 (de) 2014-02-27

Family

ID=47017063

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013215530.1A Ceased DE102013215530A1 (de) 2012-08-21 2013-08-07 Detecting Multi-Column Composite Key Column Sets

Country Status (4)

Country Link
US (1) US9104784B2 (de)
CN (1) CN103631842B (de)
DE (1) DE102013215530A1 (de)
GB (1) GB2505183A (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619581B2 (en) * 2013-12-20 2017-04-11 Microsoft Technology Licensing, Llc Constructing queries for execution over multi-dimensional data structures
CN104778166B (zh) * 2014-01-09 2018-02-13 腾讯科技(深圳)有限公司 页面安全标识显示方法、装置和网络***
US11227104B2 (en) * 2014-05-11 2022-01-18 Informatica Llc Composite data creation with refinement suggestions
US10552439B2 (en) 2014-05-11 2020-02-04 Informatica Llc Grid format data viewing and editing environment
US10650558B2 (en) * 2016-04-04 2020-05-12 Palantir Technologies Inc. Techniques for displaying stack graphs
CN108171528B (zh) * 2016-12-07 2022-02-25 阿里巴巴集团控股有限公司 一种归因方法及归因***
US10614236B2 (en) * 2017-03-01 2020-04-07 International Business Machines Corporation Self-contained consistent data masking
US10699070B2 (en) * 2018-03-05 2020-06-30 Sap Se Dynamic retrieval and rendering of user interface content
CN108984787A (zh) * 2018-07-30 2018-12-11 佛山市甜慕链客科技有限公司 一种用于生成索引的多个数据字段的方法及***
CN109101641B (zh) * 2018-08-20 2022-09-23 联想(北京)有限公司 表格处理方法、装置、***和介质
US10942908B2 (en) * 2019-01-14 2021-03-09 Business Objects Software Ltd. Primary key determination
CN109815242B (zh) * 2019-02-02 2021-04-02 中国农业银行股份有限公司 一种数据处理方法及***
US11556529B2 (en) * 2019-08-13 2023-01-17 Sigma Computing, Inc. Top frequency worksheet filtering
CN112446043A (zh) * 2019-08-30 2021-03-05 ***通信有限公司研究院 一种类候选键的确定方法和电子设备

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548749A (en) * 1993-10-29 1996-08-20 Wall Data Incorporated Semantic orbject modeling system for creating relational database schemas
JPH0969096A (ja) * 1995-08-31 1997-03-11 Nec Corp 記事配置装置
US5995957A (en) 1997-02-28 1999-11-30 International Business Machines Corporation Query optimization through the use of multi-column statistics to avoid the problems of column correlation
US5991762A (en) * 1997-06-30 1999-11-23 Sun Microsystems, Inc. Method and apparatus for creating a table object constructed from reusable column objects
US6353826B1 (en) * 1997-10-23 2002-03-05 Sybase, Inc. Database system with methodology providing improved cost estimates for query strategies
US6108664A (en) * 1997-10-31 2000-08-22 Oracle Corporation Object views for relational data
US6115837A (en) * 1998-07-29 2000-09-05 Neomagic Corp. Dual-column syndrome generation for DVD error correction using an embedded DRAM
US6223171B1 (en) * 1998-08-25 2001-04-24 Microsoft Corporation What-if index analysis utility for database systems
HK1020419A2 (en) * 1999-03-16 2000-03-17 Shi Piu Joseph Fong Frame model for universal database in database reengineering and integration
US6513029B1 (en) * 2000-04-20 2003-01-28 Microsoft Corporation Interesting table-subset selection for database workload materialized view selection
US6356890B1 (en) * 2000-04-20 2002-03-12 Microsoft Corporation Merging materialized view pairs for database workload materialized view selection
US6266658B1 (en) * 2000-04-20 2001-07-24 Microsoft Corporation Index tuner for given workload
US6356891B1 (en) * 2000-04-20 2002-03-12 Microsoft Corporation Identifying indexes on materialized views for database workload
AU6504801A (en) * 2000-05-26 2001-12-11 Computer Ass Think Inc System and method for automatically generating database queries
EP1368732B1 (de) * 2000-10-18 2008-01-23 Koninklijke Philips Electronics N.V. Digitale signalprozessorvorrichtung
WO2002045321A2 (en) * 2000-11-29 2002-06-06 Unilogic, Inc. A collaborative, fault-tolerant, scaleable, flexible, interactive real-time display and processing method and apparatus
US6801905B2 (en) * 2002-03-06 2004-10-05 Sybase, Inc. Database system providing methodology for property enforcement
US8589346B2 (en) * 2011-04-26 2013-11-19 Oracle International Corporation Techniques for combining statement level, procedural, and row level replication
US6957225B1 (en) 2002-05-07 2005-10-18 Oracle International Corporation Automatic discovery and use of column correlations in tables
AU2003243044A1 (en) * 2002-07-23 2004-02-09 Samsung Electronics Co., Ltd. Encoded multi-key index data stream structure
US7152073B2 (en) * 2003-01-30 2006-12-19 Decode Genetics Ehf. Method and system for defining sets by querying relational data using a set definition language
US7266561B2 (en) * 2004-03-18 2007-09-04 International Business Machines Corporation Method and apparatus for splitting and merging request and response data at runtime
US7302422B2 (en) * 2004-04-14 2007-11-27 International Business Machines Corporation Query workload statistics collection in a database management system
US7567959B2 (en) * 2004-07-26 2009-07-28 Google Inc. Multiple index based information retrieval system
US7424495B2 (en) 2005-08-19 2008-09-09 Oracle International Corporation Handling uniqueness constraints in a database system with versioned data
US7472140B2 (en) 2005-12-20 2008-12-30 Oracle International Corporation Label-aware index for efficient queries in a versioning system
US20070255685A1 (en) 2006-05-01 2007-11-01 Boult Geoffrey M Method and system for modelling data
US8838648B2 (en) * 2006-08-17 2014-09-16 International Business Machines Corporation Efficient discovery of keys in a database
CN100452043C (zh) * 2006-09-06 2009-01-14 南京中兴软创科技有限责任公司 一种多索引散列表的存储和检索方法
US20080140696A1 (en) * 2006-12-07 2008-06-12 Pantheon Systems, Inc. System and method for analyzing data sources to generate metadata
US8078610B2 (en) 2008-03-26 2011-12-13 Teradata Us, Inc. Optimization technique for dealing with data skew on foreign key joins
US8332655B2 (en) * 2009-01-30 2012-12-11 International Business Machines Corporation Method for order invariant correlated encrypting of data and SQL queries for maintaining data privacy and securely resolving customer defects
US8458167B2 (en) * 2009-04-01 2013-06-04 International Business Machines Corporation Client-based index advisor
US9063977B2 (en) * 2010-04-02 2015-06-23 Objectivity, Inc. Method and system for acceleration of pathway detection and ranking within an information technology database
US20110289118A1 (en) * 2010-05-20 2011-11-24 Microsoft Corporation Mapping documents to a relational database table with a document position column
US8996456B2 (en) * 2011-11-14 2015-03-31 Google Inc. Data processing service
US20140317093A1 (en) * 2013-04-22 2014-10-23 Salesforce.Com, Inc. Facilitating dynamic creation of multi-column index tables and management of customer queries in an on-demand services environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Gunopulos D., "Discovering all most specific sentences". In: Transactions an Database Systems (TODS), Band 28, Ausgabe 2, 2003

Also Published As

Publication number Publication date
CN103631842B (zh) 2016-12-28
GB2505183A (en) 2014-02-26
US9104784B2 (en) 2015-08-11
CN103631842A (zh) 2014-03-12
GB201214851D0 (en) 2012-10-03
US20140046927A1 (en) 2014-02-13

Similar Documents

Publication Publication Date Title
DE102013215530A1 (de) Detecting Multi-Column Composite Key Column Sets
DE102016105472B4 (de) Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen
DE112015000218B4 (de) Verfahren, System und Computerprogramm zum Abtasten einer Mehrzahl von Speicherbereichen in einem Arbeitsspeicher nach einer spezifizierten Anzahl von Ergebnissen
DE102014204827A1 (de) Auflösen ähnlicher Entitäten aus einer Transaktionsdatenbank
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
DE112016005350T5 (de) Speichern und abrufen von daten eines datenwürfels
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE202017007212U1 (de) System zur inkrementellen Clusterwartung einer Tabelle
DE112012000280T5 (de) Organisation von Tabellen mit reduzierten Indizes
DE202020005722U1 (de) Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan
DE112018004222T5 (de) Datenbankaufteilung
CN105912594B (zh) Sql语句处理方法和***
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE102013206281A1 (de) Optimieren von zerstreuten schemalosen Daten in relationalen Speichern
DE102013200355A1 (de) Zusammenfügen von Dokumenten aud der Grundlage der Kenntnis eines Dokumentenschemas
DE112013003205T5 (de) Verfahren und Vorrichtung zum Verarbeiten von Datenbankdaten in einem verteilten Datenbanksystem
EP3520014B1 (de) Verfahren und system zum anonymisieren von datenbeständen
DE112019001480T5 (de) Automatisches Optimieren der Ressourcennutzung in einemZieldatenbankverwaltungssystem zum Erhöhen der Arbeitslastleistung
DE112012004169T5 (de) Überwachen der Ausführung von gespeicherten Prozeduren
DE112016000776T5 (de) Effiziente Durchführung von Einfüge- und Punktabfrage-Operationen in einem Spaltenspeicher
DE202016007725U1 (de) Einzeltabellen-Multischema-Datenspeicher in einem Schlüsselwertspeicher
DE102014116117A1 (de) Verfahren und System zum Mining von Mustern in einem Datensatz
DE102014113693A1 (de) Verfahren und system zum laden von daten mit komplexen beziehungen
US9239867B2 (en) System and method for fast identification of variable roles during initial data exploration
DE102019215765A1 (de) System zur datenaufzeichnung und -analyse

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R003 Refusal decision now final