DE112020000749T5 - Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern - Google Patents

Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern Download PDF

Info

Publication number
DE112020000749T5
DE112020000749T5 DE112020000749.9T DE112020000749T DE112020000749T5 DE 112020000749 T5 DE112020000749 T5 DE 112020000749T5 DE 112020000749 T DE112020000749 T DE 112020000749T DE 112020000749 T5 DE112020000749 T5 DE 112020000749T5
Authority
DE
Germany
Prior art keywords
index
history
data
index history
zone
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020000749.9T
Other languages
English (en)
Inventor
Ronald Barber
Vijayshankar Raman
Richard Sefton Sidle
Yuanyuan Tian
Pinar Tozun
Chen Luo
Adam Storm
Ronen Grosman
Matthew Spilchen
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 DE112020000749T5 publication Critical patent/DE112020000749T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/213Schema design and management with details for schema evolution support
    • 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
    • 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/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/14Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence

Landscapes

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

Abstract

Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung umfasst ein durch einen Computer umgesetztes Verfahren ein Erstellen eines hybriden Index für ein Mehrzonen-Datenspeichersystem, in dem eine erste Zone Daten aufweist, die für eine Transaktionsverarbeitung organisiert sind, und mit einer zweiten Zone, die Daten aufweist, die für eine Analysenverarbeitung organisiert sind. Jeder Indexeintrag in den hybriden Index umfasst einen Indexschlüssel mit einer Gleichheitsspalte, einer Anfangszeitstempelspalte und einer Tupelsequenznummernspalte. Das Verfahren umfasst ferner ein Aufbauen eines Indexverlaufs, der in den hybriden Index aufgenommen werden soll, wobei der Indexverlauf mehrere Indexeinträge umfasst. Ein Indexverlauf wird erstellt, indem Spalten durch Scannen von Datenblöcken aus der ersten Zone ausgewählt, Tupelsequenznummernwerte für die Indexeinträge, die in den hybriden Index aufgenommen werden sollen, berechnet und die Indexeinträge gemäß einer vorbestimmten Reihenfolge unter Verwendung der Spalten sortiert werden, die in den Indexverlauf aufgenommen werden sollen.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft im Allgemeinen Computertechnologie und insbesondere Indexerstellung für sich entwickelnde umfangreiche Datensätze in einem hybriden Transaktions-/Analysenverarbeitungssystem mit mehreren Mastern.
  • Die Popularität von Echtzeitanalysen, z.B. Risikoanalyse, Online-Empfehlungen und Aufdeckung von Betrugsfällen usw. erfordern Datenverwaltungssysteme zum Bearbeiten sowohl schneller gleichzeitiger Transaktionen (z.B. Online-Transaktionsverarbeitung bzw. OLTP) (Online Transaction Processing) als auch umfangreicher Analysenabfragen (z.B. Online-Analysenverarbeitung bzw. OLAP) (Online Analytical Processing) von aktuellen Daten. OLTP-Anwendungen vereinfachen es, Daten mit hoher Geschwindigkeit aufzunehmen, sie in Festplatten oder gemeinsam genutztem Speicher beizubehalten, und OLAP-Anwendungen vereinfachen ein gleichzeitiges Ausführen von Analysenabfragen von neu aufgenommenen Daten, um Erkenntnisse umgehend abzuleiten. Die Notwendigkeit von Echtzeitanalysen führte zur Entstehung von hybriden Transaktions- und Analysenverarbeitungs- (HTAP) (Hybrid Transactional and Analytical Processing) Systemen. HTAP-Systeme unterstützen sowohl OLTP als auch OLAP-Abfragen in einem einzelnen System, wodurch Echtzeitanalysen an neu aufgenommenen Daten ermöglicht werden. Eine feinkörnige Indexerstellung ist in HTAP-Systemen zwingend notwendig, um effiziente Punkt-Lookups und Bereichsabfragen für Hochgeschwindigkeits-Transaktionsverarbeitung und Echtzeitanalysen zu unterstützen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung umfasst ein durch einen Computer umgesetztes Verfahren ein Erstellen eines hybriden Index für ein Mehrzonen-Datenspeichersystem mit einer ersten Zone für Daten, die für eine Transaktionsverarbeitung organisiert sind, und einer zweiten Zone für Daten, die für eine Analysenverarbeitung organisiert sind. Jeder Indexeintrag in dem hybriden Index umfasst mindestens einen Indexschlüssel, der des Weiteren eine Gleichheitsspalte umfasst. Der Indexeintrag umfasst ferner eine Anfangszeitstempelspalte, die einen Zeitstempel für den Zeitpunkt angibt, an dem Daten eingefügt wurden, die dem Indexeintrag entsprechen. Der Indexeintrag umfasst ferner eine Tupelsequenznummernspalte, die die Position des Indexeintrags in einem hierarchischen Speicher angibt. Das Verfahren umfasst ferner ein Aufbauen eines in den hybriden Index aufzunehmenden Indexverlaufs. Der Indexverlauf umfasst mehrere Indexeinträge. Das Aufbauen des Indexverlaufs umfasst ein Bestimmen von Spalten, die in dem Indexverlauf durch Scannen der Datenblöcke aus der ersten Zone zu erstellen sind, wobei die Datenblöcke dem Indexverlauf zugeordnet werden sollen. Das Aufbauen des Indexverlaufs umfasst ferner ein Berechnen von Tupelsequenznummernwerten für die Indexeinträge, die in den hybriden Index aufgenommen werden sollen. Die Tupelsequenznummernwerte werden in der Tupelsequenznummernspalte gespeichert. Das Aufbauen des Indexverlaufs umfasst ferner ein Sortieren der Indexeinträge gemäß einer vorbestimmten Reihenfolge durch Verwenden der Spalten, die in den Indexverlauf aufgenommen werden sollen.
  • In einem oder mehreren Beispielen umfasst das Aufbauen des Indexverlaufs ferner ein Erstellen von Kopfdaten für den Indexverlauf und ein Einrichten eines Werts für den Indexverlaufszeiger, um auf die Kopfdaten zu zeigen. Die Kopfdaten umfassen einen Zeiger, der auf einen gegenwärtigen Wert eines Indexverlaufszeigers gesetzt ist. In einem oder mehreren Beispielen wird eine Übersicht von Datenelementen, die in dem Indexverlauf gespeichert sind, in den Kopfdaten gespeichert. Ferner umfasst das Aufbauen des Indexverlaufs in einem oder mehreren Beispielen ein Berechnen einer Versatzanordnung für den Indexverlauf. Die Versatzanordnung kann in den Kopfdaten gespeichert sein. Die Versatzanordnung ordnet die höchstwertigen n Bits der Hash-Werte einem Versatz des Indexeintrags in dem Indexverlauf zu.
  • In einem oder mehreren Beispielen umfasst der Indexeintrag ferner eine Sortierspalte in dem Indexschlüssel.
  • In einem oder mehreren Beispielen wird jedem Indexverlauf eine Ebenennummer zugewiesen, wobei die Ebenennummer die Quelle der Daten angibt, die zum Konstruieren des Indexverlaufs verwendet werden. In einem oder mehreren Beispielen gibt die Ebenennummer ferner eine Zone an, in der die dem Indexverlauf zugehörigen Daten gespeichert sind, wobei die Zone eine aus der Mehrzahl von Zonen in dem Mehrzonen-Datenspeichersystem ist. In einem oder mehreren Beispielen wird ein separater Thread zum Verwalten von einem oder mehreren Indexverläufen von jeder Ebene zugewiesen.
  • Ferner umfasst gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung ein durch einen Computer umgesetztes Verfahren in Reaktion auf ein Empfangen einer Anforderung zum Zusammenführen von zwei Indexverläufen, einem ersten Indexverlauf und einem zweiten Indexverlauf, in einer Datenbank, in der Daten durch Verwenden eines hierarchischen Datenspeichers gespeichert werden, ein Erstellen eines dritten Indexverlaufs, um Spalten aus dem ersten Indexverlauf und aus dem zweiten Indexverlauf aufzunehmen. Das Verfahren umfasst ferner ein globales Sortieren der Spalten aus dem ersten Indexverlauf und der Spalten aus dem zweiten Indexverlauf durch Verwenden einer Zusammenführungssortierung. Das Verfahren umfasst ferner auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer nicht permanenten Ebene gehört, ein Speichern des dritten Indexverlaufs nur in einem Cachespeicher. Das Verfahren umfasst ferner auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer permanenten Ebene gehört und eine Ebenennummer des dritten Indexverlaufs unter einer Löschebene liegt, ein Speichern des dritten Indexverlaufs in dem Cachespeicher und in einem gemeinsam genutzten Speicher. Das Verfahren umfasst ferner auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer permanenten Ebene gehört und die Ebenennummer des dritten Indexverlaufs gleich der Löschebene ist oder darüber liegt, ein Speichern des dritten Indexverlaufs nur in dem gemeinsam genutzten Speicher.
  • In einem oder mehreren Beispielen umfasst das Verfahren ferner ein Aktualisieren einer Liste von Indexverläufen in der Datenbank. Das Aktualisieren der Liste umfasst ein Wechseln eines Zeigers eines vierten Indexverlaufs, der auf eine Adresse des ersten Indexverlaufs zeigt, wobei der Zeiger auf eine Adresse des dritten Indexverlaufs gewechselt hat, und ein Löschen des ersten Indexverlaufs und des zweiten Indexverlaufs. Ferner werden in einem oder mehreren Beispielen der erste Indexverlauf und der zweite Indexverlauf gelöscht, nachdem der erste Indexverlauf und der zweite Indexverlauf in einen Indexverlauf zusammengeführt worden sind, der zu der permanenten Ebene gehört.
  • Die oben beschriebenen Merkmale können neben anderen Umsetzungstypen auch von mindestens einem System, einem Computerprogrammprodukt und einer Maschine bereitgestellt werden.
  • Weitere technische Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung verwirklicht. Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und werden als Bestandteil des beanspruchten Erfindungsgegenstands betrachtet. Zum besseren Verständnis wird auf die ausführliche Beschreibung und auf die Zeichnungen verwiesen.
  • Figurenliste
  • Die hierin beschriebenen Details der ausschließlichen Rechte werden insbesondere in den Ansprüchen am Ende der Patentschrift dargelegt und eindeutig beansprucht. Die vorgenannten und andere Merkmale und Vorteile der Ausführungsformen der Erfindung werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den begleitenden Zeichnungen offenkundig, in denen:
    • 1 eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
    • 2 Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
    • 3 einen Datenlebenszyklus in einem System auf HTAP-Grundlage darstellt;
    • 4 eine repräsentative Ansicht eines hybriden Index gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 5 einen beispielhaften Indexverlauf gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung zeigt;
    • 6 eine beispielhafte Verlaufszuweisung zur Indexverwaltung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 7 einen Ablaufplan für ein beispielhaftes Verfahren zum Aufbauen eines Indexverlaufs gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 8 einen Ablaufplan für ein beispielhaftes Verfahren zum Löschen eines Indexverlaufs gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 9 eine visuelle Veranschaulichung der Löschoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung in einem beispielhaften Szenario darstellt;
    • 10 einen Ablaufplan eines beispielhaften Verfahrens für eine Indexzusammenführungsoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 11 und 12 eine visuelle Veranschaulichung einer Indexzusammenführungsoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung in einem beispielhaften Szenario darstellt;
    • 13 einen Ablaufplan für ein beispielhaftes Verfahren zum Ausführen einer Indexentwicklungsoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 14 ein beispielhaftes Szenario für ein Weiterentwickeln eines Index gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung veranschaulicht;
    • 15 einen Pseudo-Code für die Indexverwaltungsoperationen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung bereitstellt;
    • 16 einen Pseudo-Code für ein Wiederherstellen einer Verlaufsliste gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 17 einen Ablaufplan eines beispielhaften Verfahrens zum Ausführen einer Bereichs-Scanabfrage auf einem einzelnen Indexverlauf gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt.
  • Die hierin dargestellten Abbildungen dienen zur Veranschaulichung. Es sind viele Variationen dieser Darstellung oder der hierin beschriebenen Operationen möglich, ohne vom Erfindungsgedanken der Erfindung abzuweichen. Die Aktionen können zum Beispiel in einer anderen Reihenfolge ausgeführt werden, oder Aktionen können hinzugefügt, gelöscht oder modifiziert werden. Der Begriff „verbunden“ und Variationen davon beschreiben zudem einen Datenübertragungspfad zwischen zwei Elementen und implizieren keine direkte Verbindung zwischen den Elementen ohne zwischen diesen liegende Elemente/Verbindungen. Alle diese Variationen werden als Teil der Patentschrift betrachtet.
  • In den begleitenden Figuren und der folgenden ausführlichen Beschreibung der offenbarten Ausführungsformen sind die in den Figuren veranschaulichten verschiedenen Elemente mit zwei- oder dreistelligen Bezugszeichen versehen. Mit kleineren Ausnahmen entspricht die Zahl bzw. entsprechen die Zahlen, die sich links außen von jedem Bezugszeichen befinden, der Abbildung, in denen das Element zuerst veranschaulicht wurde.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verschiedene Ausführungsformen der Erfindung werden hierin unter Bezugnahme auf die zugehörigen Zeichnungen beschrieben. Alternative Ausführungsformen der Erfindung sind denkbar, ohne von dem Schutzumfang dieser Erfindung abzuweichen. Verschiedene Verbindungen und positionsbezogene Beziehungen (z.B. über, unter, neben usw.) zwischen Elementen werden in der folgenden Beschreibung und in den Zeichnungen dargelegt. Diese Verbindungen und/oder positionsbezogenen Beziehungen können, sofern nicht anders spezifiziert, direkt oder indirekt sein, und die vorliegende Erfindung ist in dieser Hinsicht keinesfalls als einschränkend zu verstehen. Dementsprechend kann eine Verbindung von Entitäten entweder auf eine direkte oder eine indirekte Verbindung verweisen, und eine positionsbezogene Beziehung zwischen Entitäten kann eine direkte oder indirekte positionsbezogene Beziehung sein. Des Weiteren können die hierin beschriebenen verschiedenen Aufgaben und Prozessschritte in eine umfassendere Prozedur oder einen umfassenderen Prozess mit zusätzlichen Schritten oder einer zusätzlichen Funktionalität integriert werden, die hierin nicht im Detail beschrieben werden.
  • Die folgenden Definitionen und Abkürzungen sind für die Auslegung der Ansprüche und der Patentschrift zu verwenden. Wie hierin verwendet, sollen die Begriffe „weist auf“, „aufweisend“, „umfasst“, „umfassend“, „besitzt“, „besitzend“, „enthält“ oder „enthaltend“ oder irgendeine Variation davon eine nicht ausschließende Einbeziehung abdecken. Zum Beispiel ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Artikel oder eine Vorrichtung, die eine Liste von Elementen umfasst, nicht notwendigerweise auf nur diese Elemente beschränkt, sondern kann andere Elemente umfassen, die nicht ausdrücklich aufgelistet oder derartigen Zusammensetzungen, Gemischen, Prozessen, Verfahren, Artikeln oder Vorrichtungen eigen sind.
  • Außerdem bedeutet der hierin verwendete Begriff „beispielhaft“, dass „etwas als Beispiel, Variante oder zur Veranschaulichung dient“. Jede hierin als „beispielhaft“ beschriebene Ausführungsform oder Auslegung muss nicht notwendigerweise als gegenüber anderen Ausführungsformen oder Auslegungen bevorzugt oder vorteilhaft aufgefasst werden. Der Begriff „mindestens ein/eine“ und „ein/e oder mehrere“ ist als jede ganzzahlige Anzahl größer oder gleich eins zu verstehen, d.h. eins, zwei, drei, vier usw. Der Begriff „eine Mehrzahl“ ist als ganzzahlige Anzahl größer oder gleich zwei zu verstehen, d.h. zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung“ umfassen.
  • Die Begriffe „über“, „im Wesentlichen“, „ungefähr“ und Variationen davon sollen das Fehlermaß angeben, das einer Messung der bestimmten Menge auf Grundlage des Zeitpunkts der Anmeldungseinreichung auf der verfügbaren Ausrüstung zugehörig ist. Zum Beispiel kann „über“ einen Bereich von ±8 % oder 5 % oder 2 % eines bestimmten Werts umfassen.
  • Der Kürze halber werden herkömmliche Techniken in Bezug auf ein Erstellen und Verwenden von Aspekten der Erfindung hierin möglicherweise nicht ausführlich beschrieben. Insbesondere sind verschiedene Aspekte von Datenverarbeitungssystemen und bestimmten Computerprogrammen zum Umsetzen der hierin beschriebenen verschiedenen technischen Merkmale wohlbekannt. Dementsprechend werden der Kürze halber viele herkömmliche Umsetzungsdetails hierin nur kurz erwähnt oder vollständig weggelassen, ohne das wohlbekannte System und/oder Prozessdetails bereitzustellen.
  • Wie vorher beschrieben, unterstützen HTAP-Systeme sowohl OLTP als auch OLAP-Abfragen in einem einzelnen System, wodurch Echtzeitanalysen an neu aufgenommenen Daten ermöglicht werden. Eine feinkörnige Indexerstellung ist in HTAP-Systemen zwingend notwendig, um effiziente Punkt-Lookups und Bereichsabfragen für Hochgeschwindigkeits-Transaktionsverarbeitung und Echtzeitanalysen zu unterstützen. Die Indexerstellung von großen Datenvolumen in HTAP-Systemen ist jedoch mindestens aufgrund der Anforderungen hinsichtlich gemeinsam genutztem Speicher und Datenweiterentwicklung hochkomplex.
  • Vor allem sind reine Arbeitsspeicherlösungen für eine umfangreiche HTAP nicht ausreichend, zumindest aufgrund von Einschränkungen beim Verhindern einer Einflussnahme von Analysenabfragen auf operative Arbeitslast. Demzufolge behalten die meisten HTAP-Systeme Daten in einem hochverfügbaren, fehlertoleranten gemeinsam genutzten Speicher bei, einschließlich eines verteilten Dateisystems. Die meisten dieser gemeinsam genutzten Speicheroptionen sind jedoch im Hinblick auf direkten Zugriff und direkte Aktualisierung nicht gut. Zum Beispiel unterstützt HDFS Nur-Hinzufüge-Operationen und optimiert für Transfers auf Blockebene, und ein Objektspeicher gestattet keinen Direktzugriff innerhalb eines Objekts und überhaupt keine Aktualisierung für ein Objekt. Zum Aufnehmen der eindeutigen Merkmale von gemeinsam genutztem Speicher müssen Indexoperationen, z.B. Einfügen, Aktualisieren und Löschen, sequenzielle Eingaben/Ausgaben ohne direkte Aktualisierungen verwenden.
  • Ferner ist ein Zugreifen auf entfernt angeordneten gemeinsam genutzten Speicher über Netzwerke für Index-Lookups kostspielig, z.B. für ein Zugreifen auf Objektspeicher durch REST APIs über HTTP. Als Ergebnis dessen müssen Indexerstellungsverfahren auf HTAP die Speicherhierarchie in einer verteilten Cluster-Umgebung für eine Cachespeicherung voll ausnutzen. Insbesondere können sich vorhandene Lösungen große Arbeitsspeicher und Solid-State-Drives (SSDs) in moderner Hardware zunutze machen. Aufgrund des großen Datenumfangs in HTAP-Systemen können jedoch nur die Indexabschnitte mit den häufigsten Zugriffen lokal zwischengespeichert werden, während alte Einträge (cold entries) im gemeinsam genutzten Speicher verbleiben. Effektive Zwischenspeichermechanismen müssen entwickelt werden, um einen Index-Lookup zu vereinfachen.
  • Da HTAP-Systeme sowohl Transaktions- als auch Analysenarbeitslasten effizient unterstützen müssen, werden die Daten ferner in Bezug auf die Datenweiterentwicklung in der Regel in verschiedenen Organisationen gespeichert, in der Regel eine Organisation, die für Transaktionen der neueren Daten gut ist, und eine Organisation, die für Analysen der älteren Daten gut ist. Hier bezieht sich „Organisation“ auf einen Abschnitt von gespeicherten Daten, wobei der Abschnitt auf Zeitgrundlage bestimmt wird. Jeder Abschnitt kann durch Verwenden von verschiedenen Datenstrukturen gespeichert werden. Derartige „Organisationen“ werden verwendet, da sie, wenn die Daten älter werden, verarbeitet und auf Grundlage von Verarbeitungsergebnissen gespeichert werden. Zum Beispiel sind Transaktionsdaten aus der letzten Sekunde (oder jeder anderen Dauer) möglicherweise noch nicht für Analysenabfragen vollständig analysiert worden, doch werden sie, wenn sie analysiert und gespeichert sind, für ein Ausführen von derartigen Analysenabfragen organisiert. Das vorliegende Dokument verweist auf diese temporär getrennten Daten als verschiedene „Zonen“ von Daten. Wenn Daten in dem System altern, entwickeln sie sich von der transaktionsfreundlichen Zone zu der analysenfreundlichen Zone weiter. Die Weiterentwicklung der Daten von einer Zone zu einer anderen kann ein Reorganisieren der Daten gemäß Schemas umfassen, die verschiedenen Datenzonen zugehörig sind. In einem oder mehreren Beispielen können verschiedene Datenzonen in verschiedenen Typen von Speichereinheiten gespeichert werden, wie zum Beispiel RAM, SSD und dergleichen.
  • Derartige Zonen können auf verschiedene Weise umgesetzt werden. Zum Beispiel verwenden in einer oder mehreren Ausführungsformen der vorliegenden Erfindung lose verbundene HTAP-Lösungen nicht relationale Speicher für operative Arbeitslasten und kopieren periodisch Daten aus den nicht relationalen Speichern in Daten in Spaltenformat auf dem gemeinsam genutzten Speicher, sodass verteilte Datenbank-Maschinen sie effizient abfragen können. In einem oder mehreren Beispielen sind die Daten in einen leseoptimierten Hauptspeicher und einen schreiboptimierten Delta-Speicher organisiert. Schreibvorgänge werden zuerst in dem zeilenweisen Delta-Speicher gespeichert, der weiter in den Spalten-Hauptspeicher transformiert wird, um Analysenabfragen zu vereinfachen.
  • In einem oder mehreren Beispielsystemen hängen Transaktionen durch Verwenden von HTAP zuerst Schreibvorgänge an ein Transaktionsprotokoll an, das anschließend in spaltenförmige Datenblöcke gegroomt wird. Die Groom-Daten werden ferner periodisch für eine analysenfreundliche Organisation post-gegroomt, indem Datenversionen und eine Datenpartitionierung erstellt werden, die für Abfragen optimal sind. Die Datenweiterentwicklung über verschiedene Zonen in diesen HTAP-Systemen setzt sich immer weiter fort und stellt den Aufbau und die Verwaltung von Indices vor erhebliche Herausforderungen.
  • Vorhandene Lösungen zur Indexerstellung auf HTAP-Systemen mit mehreren Zonen unterstützen entweder nur die transaktionsfreundliche Zone und die lose verbundenen HTAP-Lösungen oder unterstützen separate Indices auf verschiedenen Zonen.
  • Um derartige technische Herausforderungen zu bewältigen, stellen eine oder mehrere Ausführungsformen der vorliegenden Erfindung dementsprechend einen protokollstrukturierten zusammenführungsähnlichen (LSM-ähnlichen) Index mit mehreren Versionen und mehreren Zonen bereit. Eine derartige Indexerstellung vereinfacht ein effizientes Abfragen von historischen Daten, wie zum Beispiel für Echtzeitanalyse, insbesondere für Analysenabfragen, die Teil einer Transaktion in dem wahren HTAP-Szenario sind. Als Ergebnis dessen werden Anforderungen von historischen Daten durch derartige Indices gedeckt. Ferner wird durch separate Indices auf verschiedenen Zonen eine geteilte Ansicht von Daten gezeigt, was zusätzliche Arbeit zum Kombinieren von Indexabfrageergebnissen erfordert, die sich über mehrere Zonen erstrecken. Insbesondere muss aufgrund der sich stets weiterentwickelnden Natur von HTAP-Daten sichergestellt werden, dass sich in den Endergebnissen keine Duplikate befinden oder Daten fehlen. Die durch eine oder mehrere Ausführungsformen der vorliegenden Erfindung hierin beschriebene Indexerstellung stellt einen konsistenten und einheitlichen Index über die verschiedenen Zonen in einem HTAP-System bereit.
  • Eine oder mehrere Ausführungsformen der vorliegenden Erfindung werden hierin im Kontext eines umfangreichen HTAP-Systems beschrieben, das komplexe Analysen und spaltenweise Datenverarbeitung nutzt, um schnelle Transaktionen und Analysen gleichzeitig zu ermöglichen. Es sollte jedoch klar sein, dass eine oder mehrere Ausführungsformen der vorliegenden Erfindung nicht auf eine derartige Umsetzung beschränkt sind, und dass die hierin beschriebenen Merkmale auf andere Kontexte anwendbar sind, die verschiedene Typen von HTAP-Systemen sowie von Datenverarbeitung verwenden.
  • Im Folgenden wird die Hintergrundtechnologie kurz beschrieben, nach der bestimmte Merkmale der hybriden Indexerstellung beschrieben werden, die von einer oder mehreren Ausführungsformen der vorliegenden Erfindung verwendet werden. Es sollte von vornherein klar sein, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud Computing enthält, dass eine Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
  • Die Eigenschaften sind wie folgt:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und Personal Digital Assistants (PDAs) usw.) unterstützen.
  • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt, und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Dienstmodelle sind wie folgt:
    • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme oder Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise Umgebungskonfigurationen, die eine Anwendung hosten.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Nutzungsmodelle sind wie folgt:
    • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten aufweist.
  • Unter folgender Bezugnahme auf 1 wird eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N, Daten austauschen können. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die in 1 gezeigten Typen von Datenverarbeitungseinheiten 54A bis N nur zur Veranschaulichung dienen sollen, und dass die Cloud-Computing-Knoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
  • Unter folgender Bezugnahme auf 2 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die von der Cloud Computing-Umgebung 50 (1) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 2 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 61; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und vernetzte Komponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 67 und Datenbank-Software 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und anderen Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 82 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware aufweisen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 84 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 85 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
  • Eine Arbeitslastschicht 90 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 91; Software-Entwicklung und Lifecycle-Management 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und Quellcode-Versionskontrolle 96. Es sollte klar sein, dass es sich hier nur um einige Beispiele handelt, und dass die Schichten in anderen Ausführungsformen verschiedene Dienste enthalten können.
  • In einem oder mehreren Beispielen kann ein HTAP-System als ein HTAP-System mit mehreren Mastern mit mehreren lose verbundenen Prozessen umgesetzt werden. Ferner werden in einem oder mehreren Beispielen Hochgeschwindigkeitstransaktionen mit einer schwachen Form von Snapshot-Isolierung und gleichzeitigen Analysenabfragen von aktuellen Daten unterstützt, indem zum Beispiel Anwendungsprogrammierschnittstellen für diesen Zweck verwendet werden.
  • 3 stellt einen Datenlebenszyklus in einem System auf HTAP-Grundlage dar. Wie ersichtlich ist und des Weiteren beschrieben wird, entwickeln sich Daten über mehrere Zonen in einem System 100 weiter, bei dem es sich um ein HTAP-System handelt. Das System 100 umfasst eine Verarbeitungseinheit 190, die mehrere Prozessoren umfassen kann. In einem oder mehreren Beispielen sind die mehreren Prozessoren Teil von verschiedenen Computerservern eines verteilten Datenverarbeitungssystems. Die Computerserver werden auch als „Knoten“ bezeichnet. Das System 100 umfasst auch verschiedene Typen von nicht flüchtigen Arbeitsspeichereinheiten. Die Arbeitsspeicherverwendung durch die Verarbeitungseinheit 190 unterscheidet sich je nach Typ der Arbeitsspeichereinheit.
  • Eine Tabelle in dem System 100 kann durch Verwenden eines vom Benutzer bereitgestellten Sharding-Schlüssels (als eine Untergruppe des primären Schlüssels) „fragmentiert“ („sharded“) sein. In der Datenverarbeitung einer Datenbank ist „Sharding“ eine Technik, die ein Skalieren einer Datenbank durch Segmentieren der Daten über mehrere Datenbanken vereinfacht. Ein Tabellen-Shard wird in mehreren Knoten repliziert, wobei eine Replik als übergeordneter Shard dient, während die restlichen untergeordnet sind. Eingefügte Datensätze werden durch die Sharding-Schlüssel zu verschiedenen Shards weitergeleitet. Jede Replik eines Shard kann Daten aufnehmen.
  • Als Teil der Datenaufnahme hängen Transaktionen Schreibvorgänge zuerst an einen arbeitsspeicherinternen Transaktionsprotokollpuffer 101 an. Jeder Shard in dem System 100 weist einen benannten Groomer auf, der auf der übergeordneten Replik ausgeführt wird. Der Groomer ist ein Prozess, der von einem oder mehreren der Prozessoren in der Verarbeitungseinheit 190 ausgeführt wird, insbesondere denjenigen, die der übergeordneten Replik zugewiesen sind.
  • Der Groomer führt in der zeitlichen Reihenfolge (z.B. jede Sekunde, alle 5 Sekunden usw.) Transaktionsprotokolle aus dem Transaktionsprotokollpuffer 101 von Shard-Repliken zusammen, setzt den gleichmäßig zunehmenden Anfangszeitstempel (beginTS) für jeden Datensatz, und erstellt eine Datendatei im Spaltenformat, die auch als Block bezeichnet wird, in einem gemeinsam genutzten Speicher 160 sowie in einem lokalen Cache 155. Auf den gemeinsam genutzten Speicher 160 kann im Allgemeinen langsamer (höhere Latenz) zugegriffen werden, was zur Nutzung des lokalen Cache 155 veranlasst. Zum Beispiel kann der gemeinsam genutzte Speicher 160 aus Festplattenlaufwerken, Magnetband, verteilten Dateisystemen, Cloud-Speicher und dergleichen bestehen, während der lokale Cache 155 aus Solid-State-Drives, nicht flüchtigen Arbeitsspeicher- (NVM) Einheiten und dergleichen bestehen kann. Der lokale Cache 155 ist als nicht flüchtig ausgelegt, sodass eine zwischengespeicherte Komponente 172 des hybriden Index, die von einer oder mehreren Ausführungsformen der vorliegenden Erfindung generiert wird, beibehalten werden kann. Der hybride Index ist eine Kombination aus einem Groom-Index 173 und einem Post-Groom-Index 174, wobei die zwischengespeicherte Komponente 172 Teil des hybriden Index ist, der in dem lokalen Cache 155 zwischengespeichert wird. Die verschiedenen Vorteile eines Beibehaltens der zwischengespeicherten Komponente 172 umfassen, dass die zwischengespeicherte Komponente 172 problemlos für das System 100 zur Verwendung verfügbar ist, falls/wenn in dem System 100 ein Fehler auftritt und es neu gestartet werden muss. Durch ein derartiges Beibehalten der zwischengespeicherten Komponente 172 muss der Indexerstellungsprozess nicht nochmals ausgeführt werden.
  • Jeder Groom-Block wird eindeutig durch eine gleichmäßig zunehmende ID identifiziert, die als Groom-Block-ID bezeichnet wird. Die Festschreibungszeit von Transaktionen in dem System 100 wird effektiv auf die Groom-Zeit verschoben. Ein weiterer separater Prozess, der als Post-Groomer bezeichnet wird, führt periodische (z.B. alle 10 Minuten, 15 Minuten, 30 Minuten usw.) Post-Groom-Operationen für neu gegroomte Blöcke aus, die sich in der Groom-Zone (103) befinden, um Daten analysenfreundlicher zu gestalten und Daten aus der Groom-Zone (103) in die organisierte (oder Post-Groom-) Zone (104) zu verschieben und zu transformieren. Die Post-Groom-Operation führt eine Reihe von Aufgaben an den neu gegroomten Daten aus der Groom-Zone (103) aus, wie zum Beispiel ein Setzen von Endzeitstempeln von aktualisierten Datensätzen für Versionskontrolle, ein Partitionieren von Daten auf Grundlage des benutzerdefinierten Partitionsschlüssels, der für Abfragen optimiert ist (für gewöhnlich verschieden von dem Sharding-Schlüssel), und ein Trennen der jüngsten Versionen von historischen Versionen, um Abfragen von den jüngsten Daten zu vereinfachen. Die Post-Groom-Operation veröffentlicht eine Dateiliste, die eine sich gleichmäßig erhöhende Post-Groom-Sequenznummer, den ID-Bereich von Groom-Blöcken aus der in dieser Operation weiterentwickelten Groom-Zone (103) und die Liste von generierten Blöcken in der Post-Groom-Zone (104) umfasst. Das System 100 organisiert Daten in einer separaten Groom-Zone (103) und Post-Groom-Zone (104), um eine schnelle Integration in die Groom-Zone (103) zu unterstützen. Währenddessen werden die Daten in der Groom-Zone (103) für Analysenabfragen durch den Post-Groomer durch Verwenden einer Optimierungsstrategie im Hintergrund optimiert, die die Optimierung eines Abschnitts von Daten verzögert, bis dieser Abschnitt benötigt wird, um das Verwenden von Datenverarbeitungsressourcen zum Optimieren von Daten zu vermeiden, die nicht verwendet werden.
  • Abhängig von der Aktualitätsanforderung muss eine Abfrage unter Umständen zusammen auf Daten in der Post-Groom-Zone (104) und der Groom-Zone (103) zugreifen. Auf Daten in dem Transaktionsprotokollpuffer (101) wird von Abfragen jedoch nicht zugegriffen, da er nicht festgeschriebene Daten enthält. Zum Vereinfachen von Punkt-Lookups und Transaktionsverarbeitung besteht das Ziel darin, einen Index für Daten sowohl in der Groom-Zone (103) als auch der Post-Groom-Zone (104) aufzubauen, wie in 1 gezeigt.
  • Der hybride Index stellt demgemäß eine einheitliche Ansicht für Abfragen bereit, da sich die Daten von einer Zone in die andere im Hintergrund weiterentwickeln. Beim Weiterentwickeln der Daten von der Groom-Zone (103) zu der Post-Groom-Zone (104) wird auch der hybride Index aktualisiert, indem der Groom-Index 173 und der Post-Groom-Index 174 aktualisiert werden. Der hybride Index (eine Kombination der Blöcke 172, 173, 174 in 3) beruht auf einem protokollstrukturierten zusammengeführten Baum (LSM-Baum).
  • Als Hintergrund zum LSM-Baum: der LSM-Baum ist eine permanente Indexstruktur, die für eine Aufnahme hoher Volumen optimiert ist. Statt Einträge an Ort und Stelle zu aktualisieren, wofür gegebenenfalls eine Zufalls-E/A erforderlich ist, stapelt der LSM-Baum Einfügungen im Arbeitsspeicher und schreibt die Daten auf die Festplatte durch Verwenden von sequenzieller E/A, wenn der Arbeitsspeicher voll ist. Jede Schreiboperation erstellt einen neuen Verlauf. Verläufe von LSM-Bäumen sind unveränderlich. Modifizierungen (Einfügungen, Aktualisierungen und Löschungen) werden durch Einfügen neuer Einträge in den Arbeitsspeicher bearbeitet. Eine Einfügung oder Aktualisierung fügt einfach einen neuen Eintrag mit demselben Schlüssel ein, während eine Löschung einen Tombstone-Eintrag (veralteten Eintrag) platziert, der angibt, dass der Schlüssel gelöscht worden ist. Eine Abfrage muss Einträge mit identischen Schlüsseln aus mehreren Verläufen abstimmen, wobei Einträge aus neueren (d.h. jüngeren) Verläufen diejenigen aus älteren Verläufen überschreiben. Ein „Verlauf“, wie hierin verwendet, kann auf verschiedene Weise strukturiert werden, wie zum Beispiel durch Verwenden eines B-Baums, einer sortierten Anordnung mit einer Liste von Seitenzeigern, die zum Anleiten der Suche im Arbeitsspeicher gespeichert sind, oder jeder anderen derartigen Datenstruktur.
  • Um die Anzahl von Verläufen niedrig zu halten, wodurch die Abfrageleistung verbessert wird, werden Verläufe periodisch in größere zusammengeführt. Im Allgemeinen umfassen Zusammenführungsprozesse, die in der Praxis allgemein verwendet werden, Leveling- (Abgleich) und Tiering- (Stufung) Funktionen. Diese werden im Folgenden kurz erörtert, es ist jedoch klar, dass jeder andere Zusammenführungsprozess in einer oder mehreren Ausführungsformen der vorliegenden Erfindung verwendet werden kann. In dem Leveling- und Tiering-Schema werden Verläufe in Ebenen organisiert, wobei ein neuer Verlauf in der niedrigsten Ebene 0 hinzugefügt wird, und Verläufe nach und nach in höhere Ebenen zusammengeführt werden. Die Leveling-Richtlinie optimiert Lookups für den Index, indem jede Ebene auf nur einen Verlauf begrenzt wird. Der Verlauf in Ebene L wird sofort mit dem Verlauf in der Ebene L + 1 zusammengeführt. Die Tiering-Richtlinie gestattet jedoch höchstens N Verläufe in der Ebene L, und diese Verläufe werden in der Ebene L + 1 in einen neuen Verlauf zusammengeführt, wodurch die fortgeführten Kosten von Einfügungen zu Lasten von Lookup-Kosten reduziert werden.
  • Obwohl eine LSM-ähnliche Indexerstellung in der bestehenden Technologie verwendet worden ist, wurde die technische Herausforderung einer Indexerstellung mit Mehrebenen-Speicherhierarchien und einer Weiterentwicklung von Daten nicht thematisiert, was von einer oder mehreren Ausführungsformen der vorliegenden Erfindung vorgenommen wird.
  • 4 stellt eine repräsentative Ansicht eines hybriden Index gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Ein hybrider Index 200 ist ein LSM-ähnlicher Index mit Verläufen 250, die in Ebenen über mehrere Zonen (103, 104) organisiert sind. Der hybride Index 200 umfasst auch einen Kopfdatenblock 402, der Metadaten für den hybriden Index 200 enthält, wie zum Beispiel eine Übersicht der in dem hybriden Index 200 enthaltenen Daten. Ferner sind die Indexverläufe 250 in Ebenen organisiert (z.B. Ebene 0 bis 5). Es ist anzumerken, dass in einem oder mehreren Beispielen nicht jede Ebene vorhanden sein kann, was vom Alter der Daten abhängt. Zum Beispiel sind in 4 die Daten in Ebene 0, Ebene 1 und Ebene 6 organisiert. In anderen Beispielen können die Indexverläufe 250 in verschiedener Anzahl von Ebenen (z.B. 0 bis 4 Ebenen) und/oder in verschiedene Ebenen (Ebenen 0, 1, 2 und 3) organisiert sein. Eine Datenaufnahme erstellt einen neuen Indexverlauf 250. Jeder Indexverlauf 250 weist eine Liste mit sortierten Zeilen auf (d.h. Indexeinträgen). Wie des Weiteren beschrieben, wird der hybride Index 200 durch Verwenden von Indexverwaltungsoperationen im Hintergrund verwaltet, die für Lesevorgänge blockierungsfrei sind. Die Indexverwaltungsoperationen umfassen eine Zusammenführungsoperation, die einen neuen Indexverlauf 250 in der nächsten Ebene, eine Indexlöschung und Speicherbereinigung zur Speicherplatzverwaltung und eine Indexweiterentwicklungsoperation erzeugt, die auszuführen ist, nachdem Daten sich weiterentwickelt haben oder von einer Zone zu einer anderen aktualisiert wurden.
  • Der hybride Index 200 kann jeweils in einem Einzelverlaufformat (250) und in einer Mehrfachverlaufsstruktur verwendet werden, wie hierin beschrieben wird. Hier ist ein Indexverlauf 250 (dargestellt durch ein Dreieck) eine indizierte Datei, die die indizierten Einträge für Daten aus einer Gruppe von Groom-Blöcken enthält. Der Block-ID-Bereich wird in jedem Indexverlauf markiert (in 4 als Dreieck dargestellt).
  • Wie in 4 gezeigt, kann der hybride Index 200 mehrere Verläufe 250 umfassen, wobei Ebene 0 bis 5 (die Ebenen 2 bis 5 sind nicht gezeigt) für die Groom-Zone 103 konfiguriert sind, während Ebene 6 bis 9 (die Ebenen 7 bis 9 sind nicht gezeigt) für die Post-Groom-Zone 104 konfiguriert sind. Zur besseren Übersichtlichkeit ist jeder Verlauf 250 mit dem Bereich von Groom-Block-IDs gekennzeichnet, denen er entspricht. In dem veranschaulichten Beispiel gehören mit 23-24 und 21-22 gekennzeichnete Groom-Verläufe zur Ebene 0, während mit 16-20 und 11-15 gekennzeichnet Verläufe zur Ebene 1 gehören. Mit 6-10 und 0-5 gekennzeichnete Post-Groom-Verläufe gehören zur Ebene 6.
  • Ein Indexverlauf 250 umfasst einen Indexschlüssel und null oder mehr Aufnahmespalten 220. Der Indexschlüssel 210 ist als ein zusammengesetzter Schlüssel mit null oder mehreren Gleichheitsspalten 212 (werden für Gleichheitsprädikate verwendet) und null oder mehreren Spalten 214 (werden für Bereichsprädikate verwendet) definiert. Die Aufnahmespalten 220 sind Spalten, die in dem Indexverlauf 250 enthalten sind, um eine Abfrageverarbeitung zu vereinfachen, indem ein nur auf den Index beschränkter Zugriff ermöglicht wird. Der hybride Index 200 umfasst mindestens eine Gleichheitsspalte 212 oder eine Sortierspalte 214, die in dem Indexschlüssel 210 spezifiziert werden muss.
  • Wenn die Gleichheitsspalte(n) 212 spezifiziert ist (sind), wird ein Hash-Wert der Gleichheitsspaltenwerte ebenfalls in dem Indexverlauf 250 gespeichert, um Indexabfragen zu beschleunigen. Der Indexverlauf 250 ist auf diese Weise eine Kombination aus Hash und Bereichsindex. In einer beispielhaften Internet-of-Things- (loT) Anwendung wird eine Einheiten-ID zu der Gleichheitsspalte 212 gemacht, während die Meidungsnummer (msg) zu einer Sortierspalte 214 gemacht wird. Als Sonderfall wird bzw. werden die Gleichheitsspalten 212 ausgelassen, wodurch der hybride Index 200 zu einem Bereichsindex wird. In dem vorgenannten Beispiel kann der Datensatz, der aufgenommen wird, neben anderen Datenelementen mindestens die Einheiten-ID, die msg und eine Meldung enthalten.
  • In einem oder mehreren Beispielen ist der Indexschlüssel der primäre Schlüssel einer Tabelle, d.h. der hybride Index 200 ist ein primärer Index.
  • Ein Indexverlauf kann logisch als eine Tabelle mit Zeilen betrachtet werden. Zusätzlich zu den in der vorgenannten Indexdefinition spezifizierten Spalten enthält die Tabelle zwei Extra-Spalten: Spalte „beginTS“ 230 und Spalte „Tupelsequenznummer“ (TSN) 235. Die Spalte „beginTS“ 230 gibt den Zeitstempel an, wann der Datensatz eingefügt wird. Die „beginTS“ in dem System 100 wird durch die Groom-Operation generiert. Die TSN-Spalte 235 spezifiziert die exakte Position des indizierten Datensatzes. In einem oder mehreren Beispielen kann eine TSN in dem System 100 eine 64-Bit-Ganzzahl sein, wobei die Bits höherer Ordnung die Block-ID angeben, während die Bits niedrigerer Ordnung den Datensatz-Versatz in diesem Block spezifizieren.
  • Dementsprechend hat jede Zeile in dem Indexverlauf eine Hash-Spalte 225, Gleichheitsspalten 212, Sortierspalten 214, beginTS 230, Aufnahmespalten 220 und TSN 235. In einem oder mehreren Beispielen werden die Zeilen in dem Indexverlauf nach der Hash-Spalte 225, den Gleichheitsspalten 212, den Sortierspalten 214 und in absteigender Reihenfolge von beginTS 230 geordnet.
  • Als Sonderfall, wenn die Gleichheitsspalten 212 nicht spezifiziert sind, wird die Hash-Spalte 225 aus dem Indexverlauf weggelassen. Die beginTS-Spalte 230 in absteigender Reihenfolge vereinfacht den Zugriff auf jüngere Versionen. Alle Sortierungsspalten, d.h. die Hash-Spalte 225, die Gleichheitsspalten 212, die Sortierspalten 214 und beginTS 230 werden in lexikografisch vergleichbaren Formaten gespeichert, sodass Schlüssel durch Verwenden von Arbeitsspeicher-Vergleichsoperationen verglichen werden können, wenn Indexabfragen verarbeitet werden.
  • Physisch wird ein Indexverlauf als ein Kopfdatenblock plus einem oder mehreren Datenblöcken mit festgelegter Kardinalität gespeichert (ausgenommen der letzte Datenblock). Der Kopfdatenblock enthält die Metadaten-Informationen des Indexverlaufs, wie zum Beispiel die Anzahl von Datenblöcken, die Zusammenführungsebene, zu der dieser Verlauf gehört, und den Bereich von Groom-Block-IDs, denen dieser Verlauf entspricht.
  • Zum Reduzieren von irrelevanten Verläufen während Indexabfragen wird eine Übersicht in dem Kopfdatenblock in einer oder mehreren Ausführungsformen der vorliegenden Erfindung gespeichert. Die Übersicht enthält den Bereich für jede in diesem Verlauf gespeicherte Schlüsselspalte. Ein Verlauf kann von einer Indexabfrage übersprungen werden, wenn der Eingabewert irgendeiner Schlüsselspalte den durch die Übersicht spezifizierten Bereich nicht überlappt.
  • Wenn in der Definition des hybriden Index 200 die Gleichheitsspalten 212 spezifiziert sind, umfasst der Kopfdatenblock eine Versatzanordnung von 2" Ganzzahlen, um Indexabfragen zu vereinfachen. Die Versatzanordnung ordnet den Wert der höchstwertigen n Bits von Hash-Werten dem Versatz in dem Indexverlauf zu. Beim Verarbeiten von Indexabfragen kann die Versatzanordnung verwendet werden, um einen kompakteren Start- und Ende-Versatz für binäre Suchen bereitzustellen, durch die die Anzahl von Blöcken effektiv begrenzt wird, auf die zugegriffen werden soll.
  • 5 zeigt einen beispielhaften Indexverlauf gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. In dem dargestellten Beispielszenario wird berücksichtigt, dass die Einheiten-ID (in 5 als „Einheit“ gekennzeichnet) die Gleichheitsspalte 212 ist und msg die Sortierspalte 214 ist. Der Einfachheit halber werden andere Spalten in dem Indexverlauf nicht gezeigt, und es wird vorausgesetzt, dass der Hash-Wert nur ein Byte in Anspruch nimmt. Tabelle a zeigt Indexeinträge in diesem Verlauf, wobei der Hash-Wert in dem binären Format gezeigt wird, und Tabelle b zeigt die Versatzanordnung mit den höchstwertigen 3 Bits von Hash-Werten. Das physische Layout dieses Indexverlaufs 250 wird in Tabelle c gezeigt, in der der Indexverlauf 250 einen Kopfdatenblock 402 und zwei Datenblöcke 504 enthält.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann der hybride Index 200 mehrere Verläufe umfassen, die in mehreren Ebenen organisiert sind. Verläufe in unteren Ebenen, z.B. Ebene 0, entsprechen jüngeren Daten und werden periodisch in höhere Ebenen zusammengeführt, um die Gesamtanzahl von Verläufen zu begrenzen. Daten in HTAP-Systemen werden jedoch im Allgemeinen in mehreren Zonen (103, 104) organisiert, wie hierin beschrieben, und die Daten entwickeln sich nach und nach von einer Zone zu einer anderen weiter. Um eine derartige Mehrzonen-Datenorganisation in HTAP-Systemen zu berücksichtigen, trennt der hybride Index 200 dementsprechend Ebenen in mehrere Zonen. In einem oder mehreren Beispielen enthält der hybride Index 200 zwei Zonen, eine für die Groom-Zone (103) und eine für die Post-Groom-Zone (104). In jeder Zone werden Verläufe auf Grundlage ihrer Erstellungszeit in einer Verbundliste miteinander verkettet, wobei die Kopfdaten 402 auf den jüngsten Verlauf zeigen. Verläufe können nur in derselben Zone zusammengeführt werden. Das heißt, Verläufe in der Groom-Zone 103 können nicht in einen neuen Verlauf in der Post-Groom-Zone 104 zusammengeführt werden. Stattdessen entwickeln sich Verläufe durch Indexweiterentwicklungsoperationen periodisch zu einer anderen Zone weiter, wenn sich die Daten im System im Lauf der Zeit weiterentwickeln. Die Einzelheiten von Indexweiterentwicklungsoperationen, z.B. Zusammenführen und Weiterentwickeln, werden hierin im Folgenden erörtert.
  • In einem oder mehreren Beispielen kann der Benutzer eine oder mehrere untere Ebenen als nicht permanent einrichten, um zu vermeiden, dass zu viele kleine Dateien in einen gemeinsam genutzten Speicher geschrieben werden, weil Verläufe in unteren Ebenen in der Regel klein sind und häufig zusammengeführt werden. Verläufe in nicht permanenten Ebenen sind nur im Arbeitsspeicher 150 und im SSD-Cache 155 vorhanden, werden aber nicht im gemeinsam genutzten Speicher 160 beibehalten, wodurch sich die Zusammenführungsleistung wesentlich verbessern kann. Zur Wiederherstellbarkeit muss die Ebene 0 als permanent eingerichtet werden, sodass das System nach Abstürzen/Ausfällen Indexverläufe nicht neu aufbauen muss.
  • 6 stellt eine beispielhafte Verlaufszuweisung für eine Indexverwaltung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. In dieser Veranschaulichung ist jeder Verlauf 250 mit der Ebene gekennzeichnet, zu der er gehört. Zum Minimieren von gleichzeitigen Indexmodifizierungen, die durch eine Indexverwaltung verursacht werden, wird jede Ebene einem dedizierten Indexverwaltungs-Thread 610 zugewiesen. Jeder Thread 610 führt periodisch Indexverwaltungsoperationen nur an den Verläufen 250 aus, die diesem Thread 610 zugewiesen sind. Dies garantiert, dass ein Indexverlauf 250 zur gleichen Zeit jeweils nur von einem Thread 610 modifiziert werden kann, wodurch Sperren und Konflikte zwischen gleichzeitigen Indexmodifizierungen minimiert werden. Indexverwaltungsoperationen umfassen Indexaufbau-, Lösch-, Zusammenführungs- und Weiterentwicklungsoperationen. Die Indexverwaltung wird gleichzeitig mit Indexabfragen und anderen Indexmodifizierungen ausgeführt. Um eine maximale Gleichzeitigkeit für Indexabfragen zu erzielen, werden atomare Zeigerwechsel (atomic pointer swaps) anstatt eines Sperrens verwendet. Alle Indexverwaltungsoperationen sind dergestalt, dass jede Indexmodifizierung, d.h. ein Zeigerwechsel, zu einem gültigen Zustand des Index führt. Als Ergebnis dessen sind Indexabfragen nicht blockierend und sperrenfrei.
  • Wie ferner in 6 gezeigt, wird die Zuweisung des Threads 610 um einen Verlauf 250 verschoben, das heißt, der Thread 610 für Ebene L bearbeitet alles außer den ersten Verlauf in Ebene L plus den ersten Verlauf in Ebene L + 1.
  • 7 stellt einen Ablaufplan eines beispielhaften Verfahrens zum Aufbauen eines Indexverlaufs gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Die Indexverwaltung umfasst eine Indexaufbauoperation, die einen neuen Indexverlauf 250 über die Datenblöcke in der Groom-Zone 103 erstellt, sodass Groom-Daten aus dem Index abgefragt werden können. Zum Aufbauen des Indexverlaufs 250 werden die Groom-Blöcke in der Groom-Zone 103 gescannt, um zu bestimmen, welche Spalten, d.h. Gleichheitsspalten 212, Sortierspalten 214 und Aufnahmespalten 220 in Schritt 702 in den Indexverlauf 250 aufgenommen werden sollen. Ferner werden in Schritt 704 die TSNs 235 berechnet. Ferner werden in Schritt 706 Hash-Werte 225 für die Gleichheitsspalten 212 berechnet (sofern vorhanden).
  • Ferner werden in Schritt 708 Indexeinträge in aufsteigender Reihenfolge von Hash-Werten 225, Sortierspalten 214, Gleichheitsspalten 212 und in absteigender Reihenfolge von beginTS 230 sortiert. Sortierte Einträge werden in Schritt 708 nacheinander in Index-Datenblöcke geschrieben. Ferner wird eine Versatzanordnung 510 im Wesentlichen gleichzeitig berechnet.
  • Nachdem alle Einträge ausgeschrieben worden sind, wird in Schritt 710 der Kopfdatenblock 402 erstellt, einschließlich einem Ausschreiben der Versatzanordnung 510 mit anderen notwendigen Feldern. Der neue Indexverlauf 250 wird der Groom-Verlaufsliste hinzugefügt, indem der neue Indexverlauf 250 so eingerichtet wird, dass er auf die erstellten Kopfdaten 402 zeigt, und indem die Kopfdaten 402 in Schritt 712 als der neue Indexverlauf 250 zurückgestellt werden. Zu beachten ist, dass die Reihenfolge von Zeigerwechseln wichtig ist, um die Richtigkeit für gleichzeitige Lesevorgänge zu garantieren.
  • 8 stellt einen Ablaufplan für ein beispielhaftes Verfahren zum Löschen eines Indexverlaufs gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Die Indexverwaltung umfasst eine Indexlöschoperation, die einige Indexeinträge aus dem Cache 155 entfernt, um Cache-Speicherplatz freizugeben. In der Regel umfassen umfangreiche HTAP-Systeme mehrschichtige Speicherhierarchien (3) mit dem Arbeitsspeicher 150, dem Cache 155 und dem gemeinsam genutzten Speicher 160. Der Cache 155, der ein SSD sein kann, dient als eine Cache-Schicht für den gemeinsam genutzten Speicher 160, um Indexabfragen zu beschleunigen. Im Allgemeinen passen die Indexverläufe 250 in den SSD-Cache 155, sodass der gemeinsam genutzte Speicher 160 zur Sicherung verwendet wird. Wenn der SSD-Cache 155 jedoch voll ist, entfernt die Indexlöschung einige Indexeinträge aus dem SSD-Cache 155, um Cache-Speicherplatz freizugeben. In einem oder mehreren Beispielen wird angenommen, dass auf jüngste Daten häufiger zugegriffen wird. Dementsprechend werden bei zunehmendem Index 200 ältere Verläufe, d.h. Verläufe in oberen Ebenen, aus dem SSD-Cache 155 gelöscht, um Cache-Speicherplatz freizugeben.
  • Die Indexlöschoperation wird von Indexverwaltungs-Threads 610 bearbeitet, die oben unter Bezugnahme auf 6 beschrieben wurden. Um sicherzustellen, dass Verläufe in einer korrekten Reihenfolge gelöscht werden, d.h. ältere Verläufe werden zuerst gelöscht, wird eine aktuelle Löschebene verfolgt. Die aktuelle Löschebene trennt gelöschte und zwischengespeicherte Verläufe. Mit anderen Worten, alle Verläufe 250 oberhalb der Löschebene werden gelöscht, während diejenigen unterhalb der Löschebene zwischengespeichert werden.
  • Nur der Thread für die aktuelle Löschebene darf Indexverläufe 250 löschen. Wenn der SSD-Cache-Speicherplatz voll ist, löscht dieser der aktuellen Löschebene zugehörige Thread 610 deren zugewiesene Verläufe 250, indem in Schritt 802, 804 Datenblöcke aus dem SSD-Cache 155 abgelegt werden. Wenn alle zugewiesenen Verläufe gelöscht worden sind, setzt der Thread 610 die Löschebene herab, indem die Beteiligung in Schritt 806 auf den Thread der nächstniedrigeren Ebene übertragen wird.
  • 9 stellt eine visuelle Veranschaulichung der Löschoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung in einem Beispiel-Szenario dar. In dem dargestellten Szenario werden die Indexverläufe 250 für die Block-IDs 0-18 und 19-36 aus dem Cache 155 abgelegt und werden dementsprechend nur in dem gemeinsam genutzten Speicher 160 gespeichert.
  • Wenn der SSD-Cache 155 im Gegensatz dazu freien Speicherplatz hat, werden die jüngsten Verläufe 250 (in der zum Löschen umgekehrten Richtung) in Schritt 808 in den SSD-Cache 155 geladen, um Indexabfragen zu beschleunigen. Im Fall eines Ladens lädt der Thread 610, der der aktuellen Löschebene zugewiesen ist, in Schritt 810 die entsprechenden Verläufe 250 aus der aktuellen Löschebene durch Zwischenspeichern von Datenblöcken aus dem gemeinsam genutzten Speicher 160 in den SSD-Cache 115. Ferner setzt der Thread 610 die Löschebene herauf, wenn alle zugewiesenen Verläufe zwischengespeichert sind, wobei die Beteiligung in Schritt 812, 814 auf den Thread der nächsthöheren Ebene übertragen wird,
  • Die Indexverwaltungsoperationen umfassen ferner eine Indexzusammenführung. Die Indexverläufe 250 werden periodisch zusammengeführt, um einen größeren Indexverlauf 250 zu bilden, um die Anzahl von Verläufen 250 zu begrenzen und die Abfrageleistung zu verbessern. Wie vorher hierin angemerkt, kann die Zusammenführung durch Verwenden einer Leveling-Richtlinie ausgeführt werden, die Indexabfragen optimiert, indem jede Ebene auf nur einen Indexverlauf 250 begrenzt wird. In diesem Fall wird ein erster Indexverlauf 250 in der Ebene L mit einem zweiten Indexverlauf 250 in der nächsten Ebene (L + 1) zusammengeführt, wenn die Größe des ersten Indexverlaufs 250 einen vorbestimmten Schwellenwert überschreitet. Dementsprechend wird der erste Indexverlauf 250 mehrmals zusammengeführt, bevor er aufgefüllt ist und in die nächste Ebene übergeht. Im Gegensatz dazu optimiert die Tiering-Richtlinie eine Schreibverstärkung, indem mehrere Indexverläufe 250 in jeder Ebene zulässig sind. In diesem Fall werden Indexverläufe in der Ebene L mit einem neuen Indexverlauf in der Ebene L + 1 zusammengeführt. Eine oder mehrere Ausführungsformen der vorliegenden Erfindung gleichen den Kompromiss zwischen Schreibverstärkung und Abfrageleistung durch Verwenden einer hybriden Zusammenführung aus, die die Leveling- und Tiering-Zusammenführungstechniken kombiniert. Ähnlich wie bei der Tiering-Richtlinie sind mehrere Indexverläufe 250 in jeder Ebene zulässig. Andererseits, ähnlich wie bei der Leveling-Richtlinie, erstellen Zusammenführungsverläufe in der Ebene L nicht immer einen neuen Verlauf in der Ebene L + 1. Wenn der erste Verlauf in der Ebene L + 1 nicht groß genug ist (als konfigurierbarer Parameter), wird er zusammen mit Verläufen in der Ebene L zusammengeführt. Andernfalls werden Verläufe in der Ebene L in einen neuen Verlauf in der Ebene L + 1 zusammengeführt. Somit ist ein Indexverwaltungs-Thread für die Ebene L für alle außer dem ersten Indexverlauf 250 von Ebene L plus dem ersten Indexverlauf 250 in der Ebene L + 1 verantwortlich, was zu der Zuweisung einer Verschiebung um einen Verlauf führt, wie in 6 gezeigt.
  • 10 stellt einen Ablaufplan eines beispielhaften Verfahrens für eine Indexzusammenführungsoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Zunächst umfasst das Verfahren ein Bestimmen von zu erstellenden Spalten in dem neuen Indexverlauf 250, bei dem es sich um den zusammengeführten Indexverlauf handelt, indem Spalten in dem ersten Indexverlauf und dem zweiten Indexverlauf gescannt werden, die in Schritt 902 zusammengeführt werden sollen. Ein Ausbilden eines neuen Indexverlaufs 250 während der Zusammenführungsoperation unterscheidet sich im Vergleich zum Erstellen eines Indexverlaufs 250 aus Groom-Blöcken in der Groom-Zone 103 dadurch, dass Einträge in jedem Indexverlauf, der zusammengeführt wird, bereits sortiert sind. Dementsprechend muss im Fall der Zusammenführung eine Zusammenführungssortierung ausgeführt werden, um die beiden Indexverläufe 250, die zusammengeführt werden, in Schritt 904 global zu sortieren.
  • Das Schreibziel des neuen Verlaufs hängt von der aktuellen Indexlöschebene und nicht permanenten Ebenen des hybriden Index 200 ab. Wenn der neue Verlauf 250 insbesondere zu einer nicht permanenten Ebene gehört, wird er in Schritt 906, 908 nur in den SSD-Cache 155 geschrieben. Wenn die zusammengeführte Ebene andererseits unterhalb der aktuellen Indexlöschebene liegt, wird der neue Indexverlauf 250 sowohl in den SSD-Cache 155 als auch den gemeinsam genutzten Speicher 160 geschrieben, wodurch Cache-Fehltreffer in Schritt 906, 910 und 912 nach der Indexzusammenführung verringert werden. Wenn der neue Indexverlauf 250 letztendlich beibehalten wird und oberhalb der aktuellen Indexlöschebene liegt, wird er in Schritt 906, 910 und 908 nur in den gemeinsam genutzten Speicher 160 geschrieben.
  • Der neue Indexverlauf 250 ersetzt dann die zusammengeführten Indexverläufe in der Verlaufsliste. Insbesondere der neue Indexverlauf 250 wird so festgelegt, dass er auf den Indexverlauf 250 zeigt, auf den ursprünglich von dem letzten zusammengeführten Verlauf gezeigt wurde, und anschließend wird der Indexverlauf vor dem ersten zusammengeführten Verlauf in Schritt 914 so festgelegt, dass er auf den neuen Indexverlauf 250 zeigt. Eine Sperre über die Verlaufsliste ist erforderlich, um die Richtigkeit einer Verlaufsersetzung sicherzustellen, weil zwei Zeiger gelesen und festgelegt werden, was keine atomare Operation ist, und Zeiger gleichzeitig durch den Thread der nächsten Ebene modifiziert werden können. Allerdings ist der Sperrenaufwand vernachlässigbar, weil er sich nur auf Indexverwaltungsoperationen auswirkt, die selten vorkommen, z.B. jede Sekunde oder Minute, und diese Sperren blockieren keine Indexabfragen.
  • Ferner werden die zusammengeführten Verläufe 250 gelöscht, wenn der letzte Lesevorgang in Schritt 916 sie verlässt. Allerdings können Indexverläufe in der ersten Ebene vor den nicht permanenten Ebenen nicht sofort nach dem Zusammenführen entfernt werden, weil Indexverläufe ansonsten bei einem Systemabsturz verloren gehen könnten. Stattdessen werden diese Verläufe verfolgt und erst gelöscht, nachdem sie in der ersten Ebene nach den nicht permanenten Ebenen zusammengeführt worden sind. Zum Beispiel angenommen, nicht permanente Ebenen sind als Ebene 1 bis 2 konfiguriert; das heißt, wenn Verläufe in der Ebene 0 in der Ebene 1 zusammengeführt werden, können sie aus Gründen der Wiederherstellbarkeit nicht sofort gelöscht werden. Das System verfolgt diese Verläufe und löscht sie erst, wenn sie in der Ebene 3 zusammengeführt worden sind, die auf dem gemeinsam genutzten Speicher 160 wieder beibehalten wird.
  • Die Indexverwaltung umfasst auch ein Weiterentwickeln des Index, wenn sich die Daten aus Blöcken in der Groom-Zone 103 zu den Blöcken in der Post-Groom-Zone 104 weiterentwickelt haben. Wie vorher beschrieben, verschiebt der Post-Groomer Datenblöcke in der Groom-Zone 103 periodisch in die Post-Groom-Zone 104 und markiert sie als veraltet und letztendlich als zu löschen. Dementsprechend müssen auch Indexeinträge aus der Groom-Verlaufsliste zu der Post-Groom-Verlaufsliste weiterentwickelt werden, sodass nicht mehr auf veraltete Groom-Blöcke verwiesen wird. Eine Index-Weiterentwicklung ist jedoch mindestens aufgrund der folgenden Herausforderungen nicht trivial.
  • Zunächst wird eine Datenweiterentwicklung in einem oder mehreren HTAP-Systemen von separaten Prozessen bearbeitet. Zum Beispiel ist der Post-Groomer ein separater Prozess, der auf einem von dem Indexerstellungsprozess verschiedenen Knoten ausgeführt wird. Eine Herausforderung besteht somit darin, die Datenübertragung und Koordinierung zwischen mehreren Prozessen während der Indexweiterentwicklungsoperation zu minimieren. Darüber hinaus wendet die Indexweiterentwicklungsoperation selbst mehrere Modifizierungen auf den Index an, z.B. wird ein neuer Verlauf zu der Post-Groom-Verlaufsliste hinzugefügt, und alte Verläufe in der Groom-Verlaufsliste werden beseitigt, was für ein Erreichen einer Blockierungsfreiheit für Indexabfragen eine weitere Herausforderung darstellt.
  • 13 stellt einen Ablaufplan für ein beispielhaftes Verfahren zum Ausführen einer Indexweiterentwicklungsoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Zum Bewältigen der Datenweiterentwicklung, die von separaten Prozessen bearbeitet wird, wird die Indexweiterentwicklungsoperation in einer oder mehreren Ausführungsformen der vorliegenden Erfindung durch den Indexerstellungsprozess ohne jede Koordinierung asynchron ausgeführt. Nach jeder Post-Groom-Operation veröffentlicht der Post-Groomer die Post-Groom-Sequenznummer (PSN) für diese Operation und behält sie bei. PSN ist eine zunehmende Sequenznummer, um jeden Verlauf der Post-Groom-Prozedur eindeutig zu identifizieren. In der Zwischenzeit verfolgt der Indexerstellungsprozess die höchste Post-Groom-Sequenznummer, die indiziert wurde, d.h. IndexedPSN, und fragt die jüngste PSN weiterhin ab. Wenn die IndexedPSN kleiner als die PSN ist, führt der Indexerstellungsprozess die Indexweiterentwicklungsoperation für IndexedPSN+1 aus, wodurch garantiert wird, dass sich der Index in einer richtigen Reihenfolge weiterentwickelt, und erhöht die IndexedPSN in Schritt 1002, 1010 und 1020, wenn die Operation beendet ist. Es ist anzumerken, dass die asynchrone Indexweiterentwicklung keine Auswirkung auf Indexabfragen hat, weil die Post-Groom-Operation nur Daten von einer Zone zu einer anderen verschiebt, ohne irgendwelche neuen Daten zu erzeugen. Für eine Abfrage spielt es keine Rolle, ob auf einen Datensatz von der Groom-Zone 103 oder der Post-Groom-Zone 104 zugegriffen wird.
  • Um Blockierungsfreiheit für Indexabfragen durch Beseitigen alter Verläufe in der Groom-Verlaufsliste, zu erreichen, zerlegt bzw. zerlegen eine oder mehrere Ausführungsformen der vorliegenden Erfindung die Indexweiterentwicklungsoperation in eine Abfolge von atomaren Unteroperationen. Jede Unteroperation ist eine atomare Modifizierung des Indexzustands. Ferner wird garantiert, dass jede Unteroperation zu einem korrekten Indexzustand führt, wodurch Blockierungs- und Sperrenfreiheit für Indexabfragen erreicht wird. Zum Beispiel wird die Indexweiterentwicklungsoperation für eine bestimmte Post-Groom-Sequenznummer wie folgt ausgeführt. Erstens wird ein Indexverlauf 250 für Datenblöcke, die durch die Post-Groom-Operation erzeugt wurden, aufgebaut und anschließend der Post-Groom-Verlaufsliste in Schritt 1012 hinzugefügt. Es ist anzumerken, dass der Verlaufskopfdatenblock immer noch den Bereich vom Groom-Block-IDs enthält, denen dieser Verlauf entspricht. Zweitens wird die höchste Groom-Block-ID, die durch Verläufe in der Post-Groom-Verlaufsliste abgedeckt ist, in Schritt 1014 aktualisiert. Zu diesem Zeitpunkt sind alle Verläufe in der Groom-Verlaufsliste mit einer abschließenden Groom-Block-ID, die nicht größer als dieser aktualisierte Wert ist, automatisch veraltet und werden von Indexabfragen ignoriert, weil Einträge in diesen Verläufen bereits durch die Post-Groom-Liste abgedeckt worden sind. Abschließend werden die veralteten Verläufe in der Groom-Verlaufsliste in Schritt 1016 von jedem Indexverwaltungs-Thread speicherbereinigt. In einem oder mehreren Beispielen wird die Speicherbereinigung ausgeführt, sobald die Anzahl von Verläufen in der Groom-Liste einen vorbestimmten Schwellenwert überschreitet. Bevor andere Indexverwaltungsoperationen ausgeführt werden, entfernt der Thread zuerst veraltete Verläufe aus der Verlaufsliste, wodurch gleichzeitige Modifizierungen mit anderen Indexverwaltungsoperationen auf diesen Verläufen vermieden werden.
  • Im Vorgenannten nimmt jeder Schritt nur eine Modifizierung an dem hybriden Index 200 vor und ist somit atomar. Zwischen beliebigen zwei der vorgenannten Schritte kann der hybride Index 200 doppelte Einträge enthalten, d.h. ein Datensatz mit derselben Version könnte sowohl von einem Groom-Verlauf als auch einem Post-Groom-Verlauf indiziert werden. Darüber hinaus, selbst nach dem letzten Schritt der Indexweiterentwicklungsoperation, kann der hybride Index 200 immer noch Duplikate enthalten, da Groom-Blöcke in der Groom-Zone 103, die von der Post-Groom-Operation in Anspruch genommen wurden, möglicherweise nicht perfekt an die Grenzwerte von Indexverläufen 250 angepasst sind. Duplikate sind jedoch für Indexabfragen nicht schädlich. Sie werden während der Abfrageverarbeitung während der Bearbeitung entfernt, um zu garantieren, dass für jeden übereinstimmenden Schlüssel nur eine Version zurückgegeben wird, während der Rest, einschließlich Duplikate, verworfen wird. Die Details einer Abfrageverarbeitung werden hierin im Folgenden ausführlich beschrieben
  • 11 und 12 stellen eine visuelle Veranschaulichung einer Indexzusammenführungsoperation gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung in einem Beispiel-Szenario dar. Hier sind die Indexverläufe 250, die zusammengeführt werden, diejenigen für die Block-IDs 67-70 und 71-72, die Block-IDs 55-60 und 61-66 und die Block-IDs 0-18 und 19-36. 11 stellt die Erstellung der zusammengeführten Indexverläufe 250 dar. 12 stellt die zweite Phase der Zusammenführungsoperation dar, in der die atomaren Zeigeraktualisierungen ausgeführt werden, nachdem die zusammengeführten Indexverläufe 250 erstellt worden sind. Ferner werden die früheren Indexverläufe speicherbereinigt, die jetzt in den neu erstellten Indexverläufen zusammengeführt sind. Wie ersichtlich ist, kann die Zusammenführungsoperation auf jeder der Ebenen ausgeführt werden, und ferner kann ein zusammengeführter Verlauf einer anderen Ebene als den Indexverläufen 250 zugewiesen werden, die zum Erstellen des zusammengeführten Indexverlaufs zusammengeführt wurden.
  • 14 veranschaulicht ein beispielhaftes Szenario zum Weiterentwickeln eines Index gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. Das spezielle veranschaulichte Beispiel zeigt einen Ergebnisindex nach einem Post-Groom der Groom-Blöcke 11 bis 18, wobei der ursprüngliche Index in 4 gezeigt wird. Hier wird ein neuer Indexverlauf 1110 für die Block-IDs 11-18 für die neu erzeugten Post-Groom-Daten erstellt. Ein Verlauf-1 250 für die Block-IDs 11-15 wird von nachfolgenden Abfragen ignoriert, weil seine Einträge von dem neuen Indexverlauf 1110 vollständig abgedeckt werden. Ferner wird er durch den Indexverwaltungs-Thread 610 speicherbereinigt, wenn der Thread 610 das nächste Mal aktiv wird. Ferner ist anzumerken, dass der Indexverlauf-2 250 für die Block-IDs 16-20 immer noch doppelte Einträge in dem neuen Indexverlauf 1110 enthält. Diese Duplikate werden während der Abfrageverarbeitung entfernt.
  • 15 stellt einen Pseudo-Code für die Indexverwaltungsoperationen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung bereit. Wie vorher angemerkt, werden die Indexverwaltungsoperationen von Indexverwaltungs-Threads 610 ausgeführt, wobei jeder Thread einer Liste von Indexverläufen 250 von einer bestimmten Ebene zugewiesen ist. Der Thread 610 nimmt zuerst eine Speicherbereinigung der zugewiesenen Indexverläufe 250 vor, wenn sich einer von ihnen zu einer anderen Zone weiterentwickelt hat. Anschließend, wenn die aktuelle Löschebene gleich der zugewiesenen Ebene ist, löscht oder lädt der Thread Indexverläufe auf Grundlage des aktuellen Cache-Speicherplatzes. Wenn die Anzahl von Verläufen einen vorab definierten Schwellenwert übersteigt, führt der Thread 610 schließlich die zugewiesenen Indexverläufe 250 zusammen.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird ein Aufbauen von neuen Indexverläufen nach der Groom- oder Post-Groom-Operation nicht durch den Indexverwaltungs-Thread 610 bearbeitet. Stattdessen ist das Aufbauen eines neuen Indexverlaufs 250 über Daten in der Groom-Zone 103 Teil der Groom-Operation, die durch den Groomer-Thread bearbeitet wird. Eine Indexerstellung der Daten in der Post-Groom-Zone 104 wird durch einen dedizierten Thread des Indexerstellungsprozesses ausgeführt, der periodisch die jüngste PSN liest, um zu sehen, ob eine neue Post-Groom-Operation ausgeführt worden ist.
  • Wie hierin beschrieben, ist der hybride Index 200 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung ein permanenter Index, der eine effiziente Wiederherstellung des Systems vereinfacht, ohne erneut eine Indexerstellung ausführen zu müssen, wie beispielsweise im Fall eines Systemausfalls. Der Grund dafür ist, dass alle Indexverläufe 250, ausgenommen diejenigen in nicht permanenten Ebenen, sicher in dem gemeinsam genutzten Speicher 160 beibehalten werden. Nachdem jeder Indexverlauf 250 aufgebaut und dem hybriden Index 200 hinzugefügt worden ist, wird die höchste Groom-Block-ID für die Groom-/Post-Groom-Verlaufsliste aktualisiert und beibehalten. Der Indexerstellungsprozess kann jedoch abstürzen, wodurch alle Datenstrukturen in dem lokalen Knoten verloren gehen. Um den hybriden Index 200 daher wiederherzustellen, müssen die Verlaufslisten auf Grundlage der Indexverläufe 250 neu aufgebaut werden, die in dem gemeinsam genutzten Speicher 160 gespeichert sind, und Datenmüll und unvollständige Verläufe beseitigen, sofern vorhanden.
  • 16 stellt einen Pseudo-Code für ein Wiederherstellen einer Verlaufsliste gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. In dem veranschaulichten Beispiel verwendet die Funktion RecoverRunList (Verlaufsliste wiederherstellen) als Eingabe die höchste Groom-Block-ID (maxID) und die Mindest-Groom-Block-ID (minID) für diese Verlaufsliste. Ausgehend von der maxID findet die Funktion den Verlauf in der höchsten Ebene, wobei maxID die Ende-Block-ID ist. Die Funktion führt anschließend eine Rückwärtssuche aus, indem maxID als die Anfangsblock-ID dieses Verlaufs minus eins gesetzt wird. Dieser Prozess wird fortgesetzt, bis maxID kleiner als minID ist.
  • Zum Wiederherstellen der beiden Verlaufslisten wird die Funktion RecoverRunList mit korrekter maxID und minID aufgerufen. Für beide Listen wird maxID als die entsprechende höchste Groom-Block-ID als permanent gesetzt. Jedoch wird minID für die Groom-Verlaufsliste als höchste Groom-Block-ID für die Post-Groom-Verlaufsliste plus eins gesetzt, da sich alle darunter liegenden Indexeinträge bereits zu der Post-Groom-Verlaufsliste weiterentwickelt haben. Während minID für die Post-Groom-Verlaufsliste einfach als 0 gesetzt wird, wird angenommen, dass die Groom-Block-ID bei 0 beginnt. Nachdem die beiden Verlaufslisten wiederhergestellt worden sind, werden alle nicht verwendeten Verlaufsblockdateien einfach gelöscht, da sie weder einem zusammengeführten noch einem unvollständigen Verlauf entsprechen.
  • Nachdem die Verlaufslisten wiederhergestellt worden sind, ist der Index für ein Verarbeiten von Indexabfragen bereit. Wenn die IndexedPSN kleiner als die aktuelle PSN ist, werden die Indexweiterentwicklungsoperationen asynchron ausgeführt, bis die IndexedPSN schließlich aufgeholt hat.
  • Der auf diese Weise erstellte und verwaltete hybride Index 200 vereinfacht ein Verarbeiten von Abfragen im Vergleich mit vorhandenen Technologien auf effiziente Weise und, wie hierin beschrieben, vereinfacht Mehrzonenabfragen. Da der hybride Index 200 ein Mehrversionenindex ist, muss die Abfrage einen Abfragezeitstempel (queryTS) spezifizieren, und nur die jüngste Version für jeden übereinstimmenden Schlüssel wird zurückgegeben, d.h. die Version mit dem größten beginTS 230, sodass beginTS ≤ queryTS.
  • Im Allgemeinen werden zwei Typen von Indexabfragen unterstützt. Erstens eine Bereichs-Scanabfrage, die Werte für alle Gleichheitsspalten 212 (sofern vorhanden) und Grenzwerte für die Sortierspalten 214 spezifiziert und die jüngste Version jedes übereinstimmenden Schlüssels zurückgibt. Zweitens eine Punkt-Lookup-Abfrage, die den gesamten Indexschlüssel spezifiziert (d.h. den primären Schlüssel), und allenfalls ein übereinstimmender Datensatz wird zurückgegeben.
  • Zum Verarbeiten einer Indexabfrage werden anfangs Kandidatenverläufe durch Wiederholen der Verlaufslisten und Prüfen von Verlaufsübersichten gesammelt. Ein Indexverlauf 250 wird nur als Kandidat betrachtet, wenn alle Spaltenwerte, wie in der Abfrage spezifiziert, Spaltenbereiche in der Übersicht erfüllen. Auch ist anzumerken, dass alle Indexverläufe 250 aus dem SSD-Cache 155 gelesen werden. Falls eine Abfrage auf gelöschte Verläufe zugreifen muss, werden die Indexverläufe zuerst auf Block-Grundlage aus dem gemeinsam genutzten Speicher 160 zu dem SSD-Cache 155 übertragen, d.h. der gesamte Verlaufsdatenblock 402 wird gleichzeitig übertragen, um zukünftige Zugriffe zu vereinfachen. Nach Abschluss der Abfrage werden die zwischengespeicherten Datenblöcke freigegeben, die ferner im Fall einer Cache-Ersetzung abgelegt werden.
  • 17 stellt einen Ablaufplan eines beispielhaften Verfahrens zum Ausführen einer Bereichs-Scanabfrage auf einem einzelnen Indexverlauf gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Das Durchsuchen eines einzelnen Verlaufs gibt die jüngste Version für jeden übereinstimmenden Schlüssel in diesem Indexverlauf 250 für eine empfangene Abfrage in Schritt 1402 zurück. Der erste übereinstimmende Schlüssel in dem einzelnen Verlauf wird in Schritt 1408 lokalisiert. Da ein Indexverlauf 250 eine Tabelle mit sortierten Zeilen ist, wird in einer oder mehreren Ausführungsformen der vorliegenden Erfindung eine binäre Suche mit dem verketteten unteren Grenzwert gesucht, d.h. der Hash-Wert, Gleichheitsspaltenwerte und der untere Grenzwert von Sortierspaltenwerten. Wenn die Versatzanordnung verfügbar ist, kann der anfängliche Suchbereich durch Berechnen der höchstwertigen n Bits des Hash-Werts (angegeben als i) und Berücksichtigen des i-ten und i + 1-ten Werts in der Versatzanordnung in Schritt 1404, 1406 eingegrenzt werden.
  • Nach dem Bestimmen des ersten übereinstimmenden Schlüssels werden Indexeinträge wiederholt, bis der verkettete obere Grenzwert erreicht ist, d.h. die Verkettung von Hash-Wert, Gleichheitsspaltenwerten und dem oberen Grenzwert von Sortierspaltenwerten. Während der Wiederholung werden Einträge mit fehlerhaftem Zeitstempelprädikat beginTS ≤ queryTS in Schritt 1410 herausgefiltert. Für die restlichen Einträge wird für jeden Schlüssel der Eintrag mit dem größten beginTS zurückgegeben, da Einträge nach dem Indexschlüssel und in absteigender Reihenfolge von beginTS in Schritt 1412 sortiert werden.
  • Es wird nochmals auf den Beispielverlauf in 5 Bezug genommen, in dem die Einheit die Gleichheitsspalte 212 ist, während msg die Sortierspalte 214 ist. Angenommen wird eine Bereichs-Scanabfrage mit einer Einheit = 4, dem Grenzwert von msg gleich [1, 3] und queryTS = 100. Hier werden die höchstwertigen 3 Bits des Hash(4) = 10010001, d.h. 100 verwendet, um den anfänglichen Suchbereich von der Versatzanordnung 510 zu erhalten, d.h. 2 bis 6. In diesem Beispiel ist der erste übereinstimmende Schlüssel ein Eintrag 2 nach binärer Suche mit dem eingegebenen unteren Grenzwert (1001 0001, 4, 1). Die Indexeinträge werden dann ab Eintrag 2 wiederholt. Der Eintrag 2 wird zurückgegeben, da er die jüngste Version für den Schlüssel (4, 1) ist, während Eintrag 3 herausgefiltert wird, da er eine ältere Version von Eintrag 2 ist. Eintrag 4 wird jedoch herausgefiltert, weil sein beginTS 102 nach dem queryTS liegt. Die Wiederholung wird bei Eintrag 5 gestoppt, der jenseits des eingegebenen oberen Grenzwerts (1001 0001, 4, 3) liegt.
  • Dementsprechend werden die übereinstimmenden Einträge für die Bereichs-Scanabfrage durch Verwenden eines einzelnen Verlaufsindex effizient identifiziert.
  • Im Fall eines Mehrverlaufsindex wird jeder Verlauf unabhängig gescannt, um die übereinstimmenden Einträge wie oben beschrieben zu identifizieren. Ferner werden nach einem unabhängigen Durchsuchen jedes Indexverlaufs die von den mehreren Verläufen zurückgegebenen Ergebnisse abgeglichen, um sicherzustellen, dass nur die jüngste Version für jeden übereinstimmenden Schlüssel zurückgegeben wird. Zum Beispiel können zwei Ansätze für den Abgleich verwendet werden.
  • In einem ersten Ansatz auf Gruppen-Grundlage wird nacheinander ein Durchsuchen von den neuesten Indexverläufen 250 zu den ältesten Verläufen ausgeführt, und eine Gruppe von Schlüsseln wird für die Schlüssel verwaltet, die bereits an die Abfrage zurückgegeben worden sind. Wenn ein Schlüssel vorher noch nicht zurückgegeben wurde, d.h. sich nicht in der Gruppe befindet, wird er der Gruppe hinzugefügt und der entsprechende Eintrag wird an die Abfrage zurückgegeben; andernfalls wird der Eintrag ignoriert, weil eine jüngere Version von neueren Verläufen bereits zurückgegeben worden ist.
  • Alternativ werden in einem Ansatz einer Prioritätswarteschlange mehrere Indexverläufe zusammen durchsucht, und die von jedem Indexverlauf 250 zurückgegebenen Ergebnisse werden in eine Prioritätswarteschlange eingespeist, um eine globale Reihenfolge von Schlüsseln zu erhalten. Sobald die Schlüssel sortiert sind, wird die jüngste Version für jeden Schlüssel ausgewählt, und der Rest wird ohne Speicherung der Zwischenergebnisse verworfen.
  • Die Punkt-Lookup-Abfrage kann als Sonderfall der Bereichs-Scanabfrage betrachtet werden, in der der gesamte primäre Schlüssel spezifiziert ist, sodass allenfalls ein Eintrag zurückgegeben wird. Als spezielle Optimierung wird die Suche nacheinander von den neuesten Verläufen zu den ältesten Verläufen ausgeführt und wird vorzeitig gestoppt, sobald eine Übereinstimmung gefunden wird. Dementsprechend wird das verwendete Verfahren zum Durchsuchen des Einzelverlaufs (17) verwendet, wobei der untere Grenzwert und der obere Grenzwert von Sortierspaltenwerten identisch sind.
  • Für umfangreiche gestapelte Punkt-Lookups, d.h. als ein Zugriffspfad von dem sekundären Index zu dem primären Index, werden statt einer direkten Auswertung jedes Punkt-Lookups die Eingabeschlüssel zuerst durch den Hash-Wert 225, die Gleichheitsspaltenwerte 212 und die Sortierspaltenwerte 214 sortiert. Ferner ist jedem Eingabeschlüssel ein Boolescher Wert zugehörig, der angibt, ob diese Eingabe bisher gefunden worden ist. Die sortierten Eingabeschlüssel werden dann nacheinander in jedem Indexverlauf einzeln von den neuesten zu den ältesten Werten durchsucht, bis alle Booleschen Werte auf „Wahr“ gesetzt sind, sodass auf jeden Verlaufsblock mindestens einmal zugegriffen wird.
  • Dementsprechend vereinfacht bzw. vereinfachen eine oder mehrere Ausführungsformen der vorliegenden Erfindung eine hybride Indexstruktur zum Verbessern der Leistung von HTAP-Systemen. Der hierin beschriebene hybride Index stellt einen leicht wiederherzustellenden/leicht neu zu startenden verteilten protokollstrukturierten Mehrversionen-Index mit mehreren Zonen bereit. Die Teile des Index lassen sich innerhalb der Speicherhierarchie leicht verschieben und vereinfachen trotzdem eine schnelle Wiederherstellung. Gemäß der Struktur des hierin beschriebenen Index werden Informationen nicht nur im Arbeitsspeicher gespeichert; die Index-Ebenen können stattdessen permanent oder nicht permanent sein. Wenn die Ebenen nicht permanent sind, können ihre Inhalte aus der letzten vorherigen permanenten Ebene oder dem festgeschriebenen Protokoll wiederhergestellt werden.
  • Ferner vereinfacht die hierin beschriebene Struktur des hybriden Index ein effizientes Zurückgeben der richtigen Version der Daten aus einem verteilten protokollstrukturierten Index mit mehreren Versionen. Umfangreiche hybride Transaktions-/Analysenverarbeitungssysteme organisieren Daten unterschiedlich über mehrere Zonen, in der Regel mit jüngeren Daten in einer Datenzone, die eine Transaktions-/Einfüge-/Aktualisierungs-/Lösch-freundliche Zone ist, und älteren Daten in einer Analysen-/Scanfreundlichen Zone. Es kann sogar mehrere analysenfreundliche Zonen geben. In dem System entwickeln sich Daten von einer Zone zu anderen, da die Daten altern. Zum Suchen und Zurückgeben der richtigen Version eines Schlüssels/Tupels wird eine Prioritätswarteschlange verwendet, und mehrere Indexverläufe (entweder von derselben Datenzone oder verschiedenen Datenzonen) werden zur selben Zeit durchsucht, um eine globale Schlüsselreihenfolge zu erhalten. Sobald die Schlüssel sortiert sind, wird die jüngste Version für jeden Schlüssel ausgewählt, und der Rest kann verworfen werden, ohne die Zwischenergebnisse speichern zu müssen.
  • Es ist anzumerken, obwohl eine oder mehrere Ausführungsformen der vorliegenden Erfindung mit einem HTAP-System mit zwei Datenzonen beschrieben wurden, dass die hierin beschriebenen Merkmale ebenso zum Unterstützen anderer HTAP-Systeme mit einer Mehrzonen-Datenorganisation verwendet werden können. Um mehrere Zonen statt zwei Zonen, wie hierin dargestellt, zu unterstützen, ist der hybride Index mit mehreren Verlaufslisten strukturiert, von denen jede einer Datenzone entspricht. Wenn sich Daten von einer Zone zu einer anderen weiterentwickeln, entwickeln sich die entsprechenden Indexeinträge ebenfalls von einer Verlaufsliste zu einer anderen durch die Indexweiterentwicklungsoperation.
  • Eine oder mehrere Ausführungsformen der vorliegenden Erfindung vereinfachen dementsprechend einen wiederherstellbaren verteilten Mehrversionen-Index mit mehreren Zonen, der eine wiederherstellbare Indexstruktur durch Verwenden von LSM-Bäumen erlangt, die sowohl für Transaktionsverarbeitung als auch Analyse optimiert werden kann.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisung ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin beschriebenen Ausführungsformen zu ermöglichen.

Claims (25)

  1. Durch einen Computer umgesetztes Verfahren, aufweisend: Erstellen eines hybriden Index für ein Mehrzonen-Datenspeichersystem, das eine Mehrzahl von Zonen aufweist, in denen eine erste Zone Daten aufweist, die für eine Transaktionsverarbeitung organisiert sind, und eine zweite Zone Daten aufweist, die für eine Analysenverarbeitung organisiert sind, wobei jeder Indexeintrag in den hybriden Index mindestens aufweist: einen Indexschlüssel, der eine Gleichheitsspalte aufweist; eine Anfangszeitstempel-Spalte, die einen Zeitstempel für den Zeitpunkt angibt, an dem die dem Indexeintrag entsprechenden Daten eingefügt wurden; eine Tupelsequenznummernspalte, die die Position des Indexeintrags in einem hierarchischen Speicher angibt; und Aufbauen eines Indexverlaufs, der in den hybriden Index aufgenommen werden soll, wobei der Indexverlauf eine Mehrzahl von Indexeinträgen aufweist, wobei das Aufbauen des Indexverlaufs aufweist: Bestimmen von Spalten, um in dem Indexverlauf durch Scannen der Datenblöcke aus der ersten Zone die Datenblöcke zu erstellen, die dem Indexverlauf zugeordnet werden sollen; Berechnen von Tupelsequenznummernwerten für die Indexeinträge, die in den hybriden Index aufgenommen werden sollen, wobei die Tupelsequenznummernwerte in der Tupelsequenznummernspalte gespeichert sind; und Sortieren der Indexeinträge gemäß einer vorbestimmten Reihenfolge durch Verwenden der Spalten, die in den Indexverlauf aufgenommen werden sollen.
  2. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, wobei das Aufbauen des Indexverlaufs ferner aufweist: Erstellen von Kopfdaten für den Indexverlauf, wobei die Kopfdaten einen Zeiger umfassen, der auf einen gegenwärtigen Wert eines Indexverlaufszeigers gesetzt ist; und Einrichten eines Werts für den Indexverlaufszeiger, um auf die Kopfdaten zu zeigen.
  3. Durch einen Computer umgesetztes Verfahren nach Anspruch 2, wobei eine Übersicht von Datenelementen, die in dem Indexverlauf gespeichert sind, in den Kopfdaten gespeichert ist.
  4. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, wobei der Indexeintrag ferner eine Hash-Spalte umfasst, und das Aufbauen des Indexverlaufs ferner aufweist: Berechnen von Hash-Werten der Gleichheitsspalte aus dem Indexeintrag, wobei die Hash-Werte in der Hash-Spalte gespeichert sind.
  5. Durch einen Computer umgesetztes Verfahren nach Anspruch 4, wobei das Aufbauen des Indexverlaufs ferner aufweist: Berechnen einer Versatzanordnung für den Indexverlauf, wobei die Versatzanordnung in den Kopfdaten gespeichert ist, und die Versatzanordnung die höchstwertigen Bits der Hash-Werte einem Versatz des Indexeintrags in dem Indexverlauf zuordnet.
  6. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, wobei der Indexeintrag ferner eine Sortierspalte in dem Indexschlüssel umfasst.
  7. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, wobei dem Indexverlauf eine Ebenennummer zugewiesen wird, wobei die Ebenennummer die Quelle der Daten angibt, die zum Konstruieren des Indexverlaufs verwendet werden.
  8. Durch einen Computer umgesetztes Verfahren nach Anspruch 7, wobei die Ebenennummer ferner eine Zone angibt, in der die dem Indexverlauf zugehörigen Daten gespeichert sind, wobei die Zone eine aus der Mehrzahl von Zonen in dem Mehrzonen-Datenspeichersystem ist.
  9. Durch einen Computer umgesetztes Verfahren nach Anspruch 7, ferner aufweisend ein Zuweisen eines separaten Threads zum Verwalten von einem oder mehreren Indexverläufen aus jeder Ebene.
  10. System, aufweisend: ein Speichersystem, das einen hierarchischen Datenspeicher aufweist; und einen oder mehrere Verarbeitungsknoten, die mit dem Speichersystem verbunden sind, wobei der eine oder die mehreren Verarbeitungsknoten konfiguriert sind, um einen hybriden Index für ein Mehrzonen-Datenspeichersystem zu erstellen und zu verwalten, das eine Mehrzahl von Zonen aufweist, in denen eine erste Zone Daten aufweist, die für eine Transaktionsverarbeitung organisiert sind, und eine zweite Zone Daten aufweist, die für eine Analysenverarbeitung organisiert sind, wobei jeder Indexeintrag in dem hybriden Index mindestens aufweist: einen Indexschlüssel, der eine Gleichheitsspalte aufweist; eine Anfangszeitstempel-Spalte, die einen Zeitstempel für den Zeitpunkt angibt, an dem die dem Indexeintrag entsprechenden Daten eingefügt wurden; eine Tupelsequenznummernspalte, die die Position des Indexeintrags in einem hierarchischen Speicher angibt; und den einen oder die mehreren Verarbeitungsknoten, die konfiguriert sind, um einen Indexverlauf aufzubauen, der in den hybriden Index aufgenommen werden soll, wobei der Indexverlauf eine Mehrzahl von Indexeinträgen aufweist, wobei das Aufbauen des Indexverlaufs aufweist: Bestimmen von Spalten, um in dem Indexverlauf durch Scannen der Datenblöcke aus der ersten Zone die Datenblöcke zu erstellen, die dem Indexverlauf zugeordnet werden sollen; Berechnen von Tupelsequenznummernwerten für die Indexeinträge, die in den hybriden Index aufgenommen werden sollen, wobei die Tupelsequenznummernwerte in der Tupelsequenznummernspalte gespeichert sind; und Sortieren der Indexeinträge gemäß einer vorbestimmten Reihenfolge durch Verwenden der Spalten, die in den Indexverlauf aufgenommen werden sollen.
  11. System nach Anspruch 10, wobei das Aufbauen des Indexverlaufs ferner aufweist: Erstellen von Kopfdaten für den Indexverlauf, wobei die Kopfdaten einen Zeiger umfassen, der auf einen gegenwärtigen Wert eines Indexverlaufszeigers gesetzt ist; und Einrichten eines Werts für den Indexverlaufszeiger, um auf die Kopfdaten zu zeigen.
  12. Durch einen Computer umgesetztes Verfahren nach Anspruch 11, wobei eine Übersicht von Datenelementen, die in dem Indexverlauf gespeichert sind, in den Kopfdaten gespeichert ist.
  13. System nach Anspruch 10, wobei der Indexeintrag ferner eine Hash-Spalte umfasst, und das Aufbauen des Indexverlaufs ferner aufweist: Berechnen von Hash-Werten der Gleichheitsspalte aus dem Indexeintrag, wobei die Hash-Werte in der Hash-Spalte gespeichert sind; und Berechnen einer Versatzanordnung für den Indexverlauf, wobei die Versatzanordnung in den Kopfdaten gespeichert ist, und die Versatzanordnung die höchstwertigen Bits der Hash-Werte einem Versatz des Indexeintrags in dem Indexverlauf zuordnet.
  14. System nach Anspruch 10, wobei dem Indexverlauf eine Ebene zugewiesen ist, wobei eine Ebenennummer die Quelle der Daten angibt, die zum Aufbauen des Indexverlaufs verwendet werden, wobei die Ebenennummer ferner eine Zone angibt, in der die dem Indexverlauf zugehörigen Daten gespeichert sind, wobei die Zone eine aus der Mehrzahl von Zonen in dem Mehrzonen-Datenspeichersystem ist.
  15. Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium mit darauf verkörperten Programmanweisungen aufweist, wobei die Programmanweisungen durch eine Verarbeitungsschaltung ausführbar sind, um ein Verfahren zum Erstellen und Verwalten eines hybriden Index für ein Mehrzonen-Datenspeichersystem durchzuführen: wobei das Mehrzonen-Datenspeichersystem eine Mehrzahl von Zonen aufweist, in denen eine erste Zone Daten aufweist, die für eine Transaktionsverarbeitung organisiert sind, und eine zweite Zone Daten aufweist, die für eine Analysenverarbeitung organisiert sind; wobei jeder Indexeintrag in dem hybriden Index mindestens aufweist: einen Indexschlüssel, der eine Gleichheitsspalte aufweist; eine Anfangszeitstempel-Spalte, die einen Zeitstempel für den Zeitpunkt angibt, an dem die dem Indexeintrag entsprechenden Daten eingefügt wurden; eine Tupelsequenznummernspalte, die die Position des Indexeintrags in einem hierarchischen Speicher angibt; und wobei das Verfahren das Aufbauen eines Indexverlaufs aufweist, der in den hybriden Index aufgenommen werden soll, wobei der Indexverlauf eine Mehrzahl von Indexeinträgen aufweist, wobei das Aufbauen des Indexverlaufs aufweist: Bestimmen von Spalten, um in dem Indexverlauf durch Scannen der Datenblöcke aus der ersten Zone die Datenblöcke zu erstellen, die dem Indexverlauf zugeordnet werden sollen; Berechnen von Tupelsequenznummernwerten für die Indexeinträge, die in den hybriden Index aufgenommen werden sollen, wobei die Tupelsequenznummernwerte in der Tupelsequenznummernspalte gespeichert sind; und Sortieren der Indexeinträge gemäß einer vorbestimmten Reihenfolge durch Verwenden der Spalten, die in den Indexverlauf aufgenommen werden sollen.
  16. Computerprogrammprodukt nach Anspruch 15, wobei das Aufbauen des Indexverlaufs ferner aufweist: Erstellen von Kopfdaten für den Indexverlauf, wobei die Kopfdaten einen Zeiger umfassen, der auf einen gegenwärtigen Wert eines Indexverlaufszeigers gesetzt ist; und Einrichten eines Werts für den Indexverlaufszeiger, um auf die Kopfdaten zu zeigen.
  17. Computerprogrammprodukt nach Anspruch 15, wobei der Indexeintrag ferner eine Hash-Spalte umfasst, und das Aufbauen des Indexverlaufs ferner aufweist: Berechnen von Hash-Werten der Gleichheitsspalte aus dem Indexeintrag, wobei die Hash-Werte in der Hash-Spalte gespeichert sind, wobei das Aufbauen des Indexverlaufs ferner aufweist: Berechnen einer Versatzanordnung für den Indexverlauf, wobei die Versatzanordnung in den Kopfdaten gespeichert ist, und die Versatzanordnung die höchstwertigen n Bits der Hash-Werte einem Versatz des Indexeintrags in dem Indexverlauf zuordnet.
  18. Computerprogrammprodukt nach Anspruch 15, wobei dem Indexverlauf eine Ebene zugewiesen wird, wobei die Ebenennummer die Quelle der Daten angibt, die zum Aufbauen des Indexverlaufs verwendet werden, wobei die Ebenennummer ferner eine Zone angibt, in der die dem Indexverlauf zugehörigen Daten gespeichert werden, und wobei die Zone eine aus der Mehrzahl von Zonen in dem Mehrzonen-Datenspeichersystem ist.
  19. Durch einen Computer umgesetztes Verfahren, aufweisend: in Reaktion auf ein Empfangen einer Anforderung zum Zusammenführen von zwei Indexverläufen, einem ersten Indexverlauf und einem zweiten Indexverlauf, in einer Datenbank, in der Daten durch Verwenden einer hierarchischen Datenspeicherung gespeichert werden: Erstellen eines dritten Indexverlaufs zum Aufnehmen von Spalten aus dem ersten Indexverlauf und aus dem zweiten Indexverlauf; globales Sortieren der Spalten aus dem ersten Indexverlauf und der Spalten aus dem zweiten Indexverlauf durch Verwenden einer Zusammenführungssortierung; auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer nicht permanenten Ebene gehört, Speichern des dritten Indexverlaufs nur in einem Cachespeicher; auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer permanenten Ebene gehört und eine Ebenennummer des dritten Indexverlaufs unter einer Löschebene liegt, Speichern des dritten Indexverlaufs in dem Cachespeicher und einem gemeinsam genutzten Speicher; und auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer permanenten Ebene gehört und die Ebenennummer des dritten Indexverlaufs gleich der Löschebene ist oder darüber liegt, Speichern des dritten Indexverlaufs nur in dem gemeinsam genutzten Speicher.
  20. Durch einen Computer umgesetztes Verfahren nach Anspruch 19, ferner aufweisend: Aktualisieren einer Liste von Indexverläufen in der Datenbank, das umfasst: Ändern eines Zeigers eines vierten Indexverlaufs, der auf eine Adresse des ersten Indexverlaufs zeigt, wobei der Zeiger zu einer Adresse des dritten Indexverlaufs gewechselt hat; und Löschen des ersten Indexverlaufs und des zweiten Indexverlaufs.
  21. Durch einen Computer umgesetztes Verfahren nach Anspruch 20, wobei der erste Indexverlauf und der zweite Indexverlauf gelöscht werden, nachdem der erste Indexverlauf und der zweite Indexverlauf in einen Indexverlauf zusammengeführt worden sind, der zu der permanenten Ebene gehört.
  22. System, aufweisend: ein Speichersystem, das einen hierarchischen Datenspeicher aufweist; und einen oder mehrere Datenverarbeitungsknoten, die mit dem Speichersystem verbunden sind, wobei der eine oder die mehreren Verarbeitungsknoten konfiguriert sind zum: Erstellen und Verwalten eines hybriden Index für ein Mehrzonen-Datenspeichersystem, das eine Mehrzahl von Zonen aufweist, in denen eine erste Zone Daten aufweist, die für eine Transaktionsverarbeitung organisiert sind, und eine zweite Zone Daten aufweist, die für eine Analysenverarbeitung organisiert sind, wobei der hybride Index eine Mehrzahl von Indexverläufen aufweist, und wobei jeder Indexverlauf Indexeinträge aufweist, die gemäß einer vorbestimmten Reihenfolge durch Verwenden von einer oder mehreren Spalten sortiert werden, die in den Indexverlauf aufgenommen werden müssen; und Zusammenführen von zwei Indexverläufen, einem ersten Indexverlauf und einem zweiten Indexverlauf, durch Ausführen eines Verfahrens, das aufweist: Erstellen eines dritten Indexverlaufs zum Aufnehmen von Spalten aus dem ersten Indexverlauf und aus dem zweiten Indexverlauf; globales Sortieren der Spalten aus dem ersten Indexverlauf und der Spalten aus dem zweiten Indexverlauf durch Verwenden einer Zusammenführungssortierung; auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer nicht permanenten Ebene gehört, Speichern des dritten Indexverlaufs nur in einem Cachespeicher; auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer permanenten Ebene gehört und eine Ebenennummer des dritten Indexverlaufs unter einer Löschebene liegt, Speichern des dritten Indexverlaufs in dem Cachespeicher und einem gemeinsam genutzten Speicher; und auf Grundlage einer Bestimmung, dass der dritte Indexverlauf zu einer permanenten Ebene gehört und die Ebenennummer des dritten Indexverlaufs gleich der Löschebene ist oder darüber liegt, Speichern des dritten Indexverlaufs nur in dem gemeinsam genutzten Speicher.
  23. System nach Anspruch 22, wobei das Verfahren ferner aufweist: Aktualisieren einer Liste von Indexverläufen in der Datenbank, das umfasst: Ändern eines Zeigers eines vierten Indexverlaufs, der auf eine Adresse des ersten Indexverlaufs zeigt, wobei der Zeiger zu einer Adresse des dritten Indexverlaufs gewechselt hat; und Löschen des ersten Indexverlaufs und des zweiten Indexverlaufs.
  24. System nach Anspruch 23, wobei der erste Indexverlauf und der zweite Indexverlauf gelöscht werden, nachdem der erste Indexverlauf und der zweite Indexverlauf in einem Indexverlauf zusammengeführt worden sind, der zu der permanenten Ebene gehört.
  25. System nach Anspruch 21, wobei jedem Indexverlauf eine Ebene zugewiesen wird, wobei eine Ebenennummer die Quelle der Daten angibt, die zum Aufbauen des Indexverlaufs verwendet werden, wobei die Ebenennummer ferner eine Zone angibt, in der die dem Indexverlauf zugehörigen Daten gespeichert sind, wobei die Zone eine aus der Mehrzahl von Zonen in dem Mehrzonen-Datenspeichersystem ist.
DE112020000749.9T 2019-05-23 2020-05-15 Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern Pending DE112020000749T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/420,394 US11182356B2 (en) 2019-05-23 2019-05-23 Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems
US16/420,394 2019-05-23
PCT/IB2020/054619 WO2020234719A1 (en) 2019-05-23 2020-05-15 Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems

Publications (1)

Publication Number Publication Date
DE112020000749T5 true DE112020000749T5 (de) 2021-10-28

Family

ID=73456775

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000749.9T Pending DE112020000749T5 (de) 2019-05-23 2020-05-15 Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern

Country Status (6)

Country Link
US (1) US11182356B2 (de)
JP (1) JP7410181B2 (de)
CN (1) CN113874852A (de)
DE (1) DE112020000749T5 (de)
GB (1) GB2599538A (de)
WO (1) WO2020234719A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11514014B2 (en) * 2018-09-14 2022-11-29 Google Llc Staggered merging in log-structured merge forests
US11599583B2 (en) * 2020-04-23 2023-03-07 Paypal, Inc. Deep pagination system
US11366810B2 (en) * 2020-04-27 2022-06-21 Salesforce.Com, Inc. Index contention under high concurrency in a database system
US11860844B2 (en) * 2020-09-07 2024-01-02 Pliops Ltd. Managing a LSM tree of key value pairs that is stored in a non-volatile memory
US20220075877A1 (en) 2020-09-09 2022-03-10 Self Financial, Inc. Interface and system for updating isolated repositories
US11641665B2 (en) 2020-09-09 2023-05-02 Self Financial, Inc. Resource utilization retrieval and modification
US11475010B2 (en) * 2020-09-09 2022-10-18 Self Financial, Inc. Asynchronous database caching
US11782954B2 (en) * 2020-10-20 2023-10-10 Salesforce, Inc. User identifier match and merge process
EP4232917A1 (de) * 2020-10-20 2023-08-30 Redis Ltd. Systeme, verfahren und medien zur implementierung konfliktfreier replizierter datentypen in speicherinternen datenstrukturen
US20220244988A1 (en) * 2021-01-30 2022-08-04 Salesforce.Com, Inc. Data shards for distributed processing
CN112817980B (zh) * 2021-02-05 2024-06-11 腾讯科技(深圳)有限公司 一种数据索引处理方法、装置、设备及存储介质
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
US20230041129A1 (en) * 2021-07-09 2023-02-09 Pawel Terlecki Systems and method for processing timeseries data
US11947490B2 (en) * 2021-08-31 2024-04-02 Bmc Software, Inc. Index generation and use with indeterminate ingestion patterns
US11947822B2 (en) 2022-03-31 2024-04-02 Microsoft Technology Licensing, Llc. Maintaining a record data structure using page metadata of a bookkeeping page
CN114579596B (zh) * 2022-05-06 2022-09-06 达而观数据(成都)有限公司 一种实时更新搜索引擎索引数据的方法及系统
CN117951141A (zh) * 2022-10-21 2024-04-30 华为云计算技术有限公司 数据处理方法及装置
CN117519839B (zh) * 2024-01-05 2024-04-16 恒生电子股份有限公司 数据加载方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102890682B (zh) 2011-07-21 2017-08-01 腾讯科技(深圳)有限公司 构建索引的方法、检索方法、装置及系统
KR20130049117A (ko) 2011-11-03 2013-05-13 한국전자통신연구원 메모리 기반의 서머리 벡터를 구비한 인덱스 구조의 데이터 검색 장치 및 방법
US20140279839A1 (en) 2013-03-14 2014-09-18 Sap Ag Integration of transactional and analytical capabilities of a database management system
US9720576B2 (en) * 2013-09-30 2017-08-01 Sonos, Inc. Controlling and displaying zones in a multi-zone system
KR101642072B1 (ko) * 2014-05-08 2016-07-22 주식회사 알티베이스 하이브리드스토리지장치 및 방법
US9767149B2 (en) 2014-10-10 2017-09-19 International Business Machines Corporation Joining data across a parallel database and a distributed processing system
US9703797B2 (en) * 2015-02-18 2017-07-11 Exagrid Systems, Inc. Multi-level deduplication
US9772911B2 (en) 2015-03-27 2017-09-26 International Business Machines Corporation Pooling work across multiple transactions for reducing contention in operational analytics systems
US10831736B2 (en) 2015-03-27 2020-11-10 International Business Machines Corporation Fast multi-tier indexing supporting dynamic update
US10664462B2 (en) * 2017-03-01 2020-05-26 Sap Se In-memory row storage architecture
JP6897248B2 (ja) 2017-04-06 2021-06-30 富士通株式会社 更新反映プログラム、更新反映方法及び更新反映装置
CN107943927B (zh) 2017-11-21 2018-10-16 清华大学 一种分布式存储系统中多维数据的存储模式转换方法
US10430100B2 (en) * 2018-02-28 2019-10-01 International Business Machines Corporation Transactional operations in multi-master distributed data management systems

Also Published As

Publication number Publication date
GB202117963D0 (en) 2022-01-26
US11182356B2 (en) 2021-11-23
JP7410181B2 (ja) 2024-01-09
JP2022534215A (ja) 2022-07-28
GB2599538A (en) 2022-04-06
US20200372004A1 (en) 2020-11-26
WO2020234719A1 (en) 2020-11-26
CN113874852A (zh) 2021-12-31

Similar Documents

Publication Publication Date Title
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE69615230T2 (de) Relationales Datenbanksystem und Verfahren mit grosser Verfügbarkeit der Daten bei der Umstrukturierung von Tabellendaten
DE60004385T2 (de) Verfahren und systeme um olap hierarchien zusammenfassbar zu machen
DE112015000218B4 (de) Verfahren, System und Computerprogramm zum Abtasten einer Mehrzahl von Speicherbereichen in einem Arbeitsspeicher nach einer spezifizierten Anzahl von Ergebnissen
DE3856055T2 (de) Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen
DE69126066T2 (de) Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
DE202020005681U1 (de) Tabellen mit Journal in Datenbanksystemen
DE602005000819T2 (de) Aufrechterhaltung der konsistenz einer fernkopie unter verwendung von virtualisierung
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE3853460T2 (de) Raumverwaltungsanordnung für das Datenzugriffssystem eines Dateizugriffsprozessors.
DE69112694T2 (de) Verfahren zum Betrieb eines Datenverarbeitungssystems zur Ausführung von Datenbanktransaktionen.
DE69915462T2 (de) Sehr leistungsstarker objektcache
DE3688529T2 (de) Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation.
DE202020005687U1 (de) Gemeinsame Datennutzung bzw. Datenteilung und materilisierte Ansichten in Datenbanken
DE202019005483U1 (de) Datenreplikation und Datenausfallsicherung in Datenbanksystemen
DE202019005716U1 (de) Nachverfolgen von Änderungen bei Datenbankdaten
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE202019005715U1 (de) Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten
DE112018004222T5 (de) Datenbankaufteilung
DE202013012496U1 (de) Systeme für asynchrone Schemaänderungen
DE112019001480T5 (de) Automatisches Optimieren der Ressourcennutzung in einemZieldatenbankverwaltungssystem zum Erhöhen der Arbeitslastleistung
DE102016204710A1 (de) Sichern und Wiederherstellen von Klondaten
DE202015009258U1 (de) Effizientes Anmerkungssystem für verteilte Versionsverwaltungssysteme
DE112019005881T5 (de) Kryptografische überprüfung von datenbanktransaktionen
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence