DE112018005692T5 - Speichern unstrukturierter daten in einem strukturierten rahmen - Google Patents

Speichern unstrukturierter daten in einem strukturierten rahmen Download PDF

Info

Publication number
DE112018005692T5
DE112018005692T5 DE112018005692.9T DE112018005692T DE112018005692T5 DE 112018005692 T5 DE112018005692 T5 DE 112018005692T5 DE 112018005692 T DE112018005692 T DE 112018005692T DE 112018005692 T5 DE112018005692 T5 DE 112018005692T5
Authority
DE
Germany
Prior art keywords
record
unstructured
key
value
unstructured data
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
DE112018005692.9T
Other languages
English (en)
Inventor
Neal Everett Bohling
Brian Lee
Terri Menendez
Tony Xu
Gary Pizl
Elaine Lai
Lawrence Loong-Tak Law
Debra Benjamin-Deckert
Roity Prieto Perez
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 DE112018005692T5 publication Critical patent/DE112018005692T5/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/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures

Landscapes

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

Abstract

In einer Ausführungsform umfasst ein Verfahren Empfangen eines unstrukturierten Datensatzes und Parsen des unstrukturierten Datensatzes, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. Die Charakterisierung umfasst Ermitteln von: einer Anzahl von Feldern, einer Länge für die Felder und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind. Das Verfahren umfasst ferner Erhalten eines ersten Schlüsselpaares, das einen Primärschlüsselnamen enthält, der einem ersten Schlüsselwert zugehörig ist, und Hashen mindestens des ersten Schlüsselwerts, um einen Hash-Wert zu erhalten. Darüber hinaus umfasst das Verfahren Aktualisieren des unstrukturierten Datensatzes, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen. Das Verfahren umfasst weiterhin Speichern des geänderten Datensatzes in einer strukturierten Datenbank. Darüber hinaus umfasst das Verfahren Aktualisieren eines Index der strukturierten Datenbank, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Speichern unstrukturierter Daten und insbesondere auf Speichern unstrukturierter, dokumentgestützter, nichtrelationaler Daten in einer Architektur, die einen strukturierten Rahmen (framework) verwendet.
  • Riesige Datenmengen werden von vielen Tausenden von Einheiten und Systemen erzeugt, die in zunehmendem Maße zu Netzwerken, größeren Systemen, Gruppen und bestehenden Datenübertragungskanälen über festverdrahtete und drahtlose Verbindungstechnologien hinzugefügt werden. Die zunehmende Beliebtheit von „intelligenten“ Einheiten und Einheiten des Internets der Dinge (Internet of Things, loT) hat zu einer Zunahme der Datenmenge geführt, die analysiert, gespeichert und verwaltet werden kann. Es gibt heute viele verschiedene Arten von Einheiten, die eine Fülle von Informationen erzeugen, wie z.B. Smartwatches, intelligente Kühlschränke und andere Geräte, Autos, Mobiltelefone, Tablets und Notebooks, Bio-Tracker (wie Fitnessbänder, Herzfrequenzmessgeräte, Laufuhren usw.), medizinische Einheiten, medizinische Diagnoseeinheiten usw. In der Regel handelt es sich bei einem großen Teil der von diesen Einheiten erzeugten Daten um unstrukturierte Daten.
  • Dokumentgestützte, nichtrelationale Datenbanken wie die gängigen Datenbanken MongoDB® und CouchDB® speichern und verarbeiten unstrukturierte Daten wie z.B. Datenbanken mit nichtstrukturierter Abfragesprache (non-structured query language, NoSQL). Diese Datenbanken gehen davon aus, dass Dokumente Daten in einem von mehreren Standardformaten wie z.B. Java™Script Object Notation (JSON) oder Binary JSON (BSON) einkapseln und codieren. In einer dokumentgestützten Datenbank wird ein „Datensatz“ allgemein als „Dokument“ bezeichnet, und beide werden in den folgenden Beschreibungen austauschbar verwendet. Diese Datenbanken verwenden moderne Paradigmen für die Datenspeicherung und ermöglichen einen schnellen Einsatz solcher Datenbanken. Diese Attribute sind möglich, weil kein Datenbankschema erforderlich ist und jedes Objekt innerhalb der nichtrelationalen Datenbank mit einem beliebigen Satz von Parametern definiert werden kann. Um jedoch derzeit eine Menge an unstrukturierten Daten zu speichern, werden die Daten normalerweise in einem kontinuierlichen Byte-Strom gespeichert. Um alle Daten für ein bestimmtes Dokument nach einem bestimmten Aspekt des Dokuments zu durchsuchen, müssen große Datenmengen sequenziell aus der Datenbank gelesen werden, was zeit- und ressourcenintensiv ist. Darüber hinaus ermöglicht es diese Art des Speicherns von Daten in nichtrelationalen Datenbanken nicht, das volle Potenzial moderner Zugriffsverfahren zum Speichern und Abrufen von Daten auszuschöpfen und Datenverwaltungstechniken zu verwenden, die in strukturierten Datenbanken zur Verfügung stehen. Java und alle auf Java beruhende Marken und Logos sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochterunternehmen.
  • Darüber hinaus erlauben Versuche, unstrukturierte Daten in einer strukturierten Datenbank zu speichern, die sich darauf stützen, die unstrukturierten Daten als kontinuierlichen Datenstrom oder Datei zu speichern, kein Indizieren der Daten, sobald sie in der strukturierten Datenbank gespeichert sind. Versuche, unstrukturierte Daten in einer strukturierten Datenbank zu speichern, die sich auf Erstellen weiterer Indizes zusätzlich zum Primärindex der strukturierten Datenbank oder getrennt davon stützen, erfordern einen zusätzlichen Mehraufwand beim Speichern der Daten und führen zu einer unnötigen Verzögerung beim Versuch, nach bestimmten Dokumenten innerhalb der Datenbank zu suchen.
  • KURZDARSTELLUNG
  • In einer Ausführungsform umfasst ein Verfahren Empfangen eines unstrukturierten Datensatzes und Parsen des unstrukturierten Datensatzes, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. Die Charakterisierung umfasst Bestimmen von: einer Gesamtlänge des unstrukturierten Datensatzes, einer Anzahl von Feldern, einer Länge für die Felder und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind. Das Verfahren umfasst auch Erhalten eines ersten Schlüsselpaares, das einen Primärschlüsselnamen enthält, der einem ersten Schlüsselwert zugehörig ist, und Hashen mindestens des ersten Schlüsselwerts, um einen Hash-Wert zu erhalten. Darüber hinaus umfasst das Verfahren Aktualisieren des unstrukturierten Datensatzes, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen. Das Verfahren umfasst ferner Speichern des geänderten Datensatzes in einer strukturierten Datenbank. Darüber hinaus umfasst das Verfahren Aktualisieren eines Index der strukturierten Datenbank, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • Gemäß einer weiteren Ausführungsform enthält ein Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen. Bei dem durch einen Computer lesbaren Speichermedium handelt es sich nicht um ein flüchtiges Signal an sich, und die enthaltenen Programmanweisungen sind von einer Verarbeitungsschaltung ausführbar, um die Verarbeitungsschaltung zu veranlassen, einen unstrukturierten Datensatz durch die Verarbeitungsschaltung zu empfangen und den unstrukturierten Datensatz durch die Verarbeitungsschaltung zu parsen, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. Die Charakterisierung umfasst Bestimmen von: einer Gesamtlänge des unstrukturierten Datensatzes, einer Anzahl von Feldern, einer Länge für die Felder und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind. Die enthaltenen Programmanweisungen veranlassen die Verarbeitungsschaltung ferner, ein erstes Schlüsselpaar durch die Verarbeitungsschaltung zu erhalten, das einen Primärschlüsselnamen enthält, der einem ersten Schlüsselwert zugehörig ist. Darüber hinaus veranlassen die enthaltenen Programmanweisungen die Verarbeitungsschaltung, mindestens den ersten Schlüsselwert durch die Verarbeitungsschaltung zu hashen, um einen Hash-Wert zu erhalten, und den unstrukturierten Datensatz durch die Verarbeitungsschaltung zu aktualisieren, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen. Zusätzlich veranlassen die enthaltenen Programmanweisungen die Verarbeitungsschaltung, den geänderten Datensatz durch die Verarbeitungsschaltung in einer strukturierten Datenbank zu speichern. Darüber hinaus veranlassen die enthaltenen Programmanweisungen die Verarbeitungsschaltung, einen Index der strukturierten Datenbank durch die Verarbeitungsschaltung zu aktualisieren, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • In noch einer weiteren Ausführungsform umfasst ein System eine Verarbeitungsschaltung, einen Speicher und eine im Speicher gespeicherte Logik, die, wenn sie von der Verarbeitungsschaltung ausgeführt wird, die Verarbeitungsschaltung veranlasst, einen unstrukturierten Datensatz zu empfangen. Die Logik veranlasst die Verarbeitungsschaltung ferner, den unstrukturierten Datensatz zu parsen, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. Die Charakterisierung umfasst Bestimmen von: einer Gesamtlänge des unstrukturierten Datensatzes, einer Anzahl von Feldern, einer Länge für die Felder und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind. Außerdem veranlasst die Logik die Verarbeitungsschaltung, ein erstes Schlüsselpaar zu erhalten, das einen Primärschlüsselnamen enthält, der einem ersten Schlüsselwert zugehörig ist, und mindestens den ersten Schlüsselwert zu hashen, um einen Hash-Wert zu erhalten. Darüber hinaus veranlasst die Logik die Verarbeitungsschaltung, den unstrukturierten Datensatz zu aktualisieren, um den Hash-Wert aufzunehmen und so einen geänderten Datensatz zu erzeugen. Zusätzlich veranlasst die Logik die Verarbeitungsschaltung, den geänderten Datensatz in einer strukturierten Datenbank zu speichern. Darüber hinaus veranlasst die Logik die Verarbeitungsschaltung, einen Index der strukturierten Datenbank zu aktualisieren, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • Gemäß einer anderen Ausführungsform umfasst ein Verfahren Empfangen eines unstrukturierten Datensatzes, der auf der JavaScript Object Notation (JSON) oder der Binary JavaScript Object Notation (BSON) beruht. Das Verfahren umfasst ferner Parsen des Datensatzes, um eine Gesamtlänge des unstrukturierten Datensatzes, eine Anzahl von Feldern, eine Länge für die Felder und eine Reihenfolge der Felder, wie sie im Datensatz gespeichert sind, zu ermitteln. Das Verfahren umfasst darüber hinaus Empfangen oder Erzeugen eines Primärschlüsselnamens und Zuordnen des Primärschlüsselnamens zu einer Menge von Datensätzen, die den Datensatz enthält. Das Verfahren umfasst auch Erzeugen eines Primärschlüsselwerts, der dem Datensatz zugehörig ist, indem ein ganzzahliger Wert um eins erhöht und ein resultierender Wert ausgewählt wird, sowie Hashen des Primärschlüsselwerts, um einen Hash-Wert zu erhalten. Darüber hinaus umfasst das Verfahren Aktualisieren des Datensatzes, um einen geänderten Datensatz zu erzeugen, indem das Primärschlüsselname:Schlüsselwert-Paar und der Hash-Wert als Indizierungsschlüssel hinzugefügt werden. Das Verfahren umfasst ferner Speichern des geänderten Datensatzes in einer Virtual-Storage-Access-Method-Datenbank (VSAM, Verfahren für Zugriff auf virtuellen Speicher). Darüber hinaus umfasst das Verfahren Aktualisieren eines Index einer Datei in Schlüsselfolge (Key-Sequenced Data Set, KSDS) einer VSAM-Datenbank, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • Gemäß einer noch weiteren Ausführungsform umfasst ein Verfahren Empfangen einer unstrukturierten Datenbank, die eine Mehrzahl darin enthaltener unstrukturierter Datensätze enthält. Das Verfahren umfasst ferner Parsen mindestens eines Datensatzes der Mehrzahl der unstrukturierten Datensätze, um eine Anzahl von Feldern in dem mindestens einen Datensatz, eine Gesamtlänge des mindestens einen Datensatzes, eine Länge für die Felder des mindestens einen Datensatzes und eine Reihenfolge der Felder, wie sie in dem mindestens einen Datensatz gespeichert sind, zu ermitteln. Das Verfahren umfasst zusätzlich Empfangen oder Erzeugen eines Primärschlüsselnamens und Zuordnen des Primärschlüsselnamens zu der Mehrzahl von unstrukturierten Datensätzen. Das Verfahren umfasst darüber hinaus Erzeugen einer Mehrzahl von Schlüsselwerten, wobei jeder Schlüsselwert einem Datensatz der Mehrzahl unstrukturierter Datensätze zugehörig ist, indem ein eindeutiger ganzzahliger Wert einzeln als Schlüsselwert für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen ausgewählt wird. Darüber hinaus umfasst das Verfahren Hashen eines Primärschlüsselwerts für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen, um eine Mehrzahl von Hash-Werten zu erhalten. Zusätzlich umfasst das Verfahren Aktualisieren jedes Datensatzes der Mehrzahl von unstrukturierten Datensätzen, indem das Primärschlüsselname:Schlüsselwert-Paar und ein für jeden geänderten Datensatz spezifischer Hash-Wert einzeln hinzugefügt werden, um eine Mehrzahl von geänderten Datensätzen zu erzeugen. Das Verfahren umfasst auch Speichern der Mehrzahl von geänderten Datensätzen in einer strukturierten oder halbstrukturierten Datenbank. Darüber hinaus umfasst das Verfahren Aktualisieren eines Primärindex der strukturierten oder halbstrukturierten Datenbank, um Einträge für alle geänderten Datensätze aufzunehmen, wobei jeder Eintrag einen Hash-Wert von der Mehrzahl von Hash-Werten enthält.
  • Zu den Vorteilen dieser Ausführungsformen gehören eine schnellere Zugriffsgeschwindigkeit auf die unstrukturierten Daten, nachdem diese im strukturierten Rahmen gespeichert wurden, und eine verbesserte Suchbarkeit über den Primärindex (und alle anderen Indizes, die auf Grundlage der unstrukturierten Daten erstellt wurden). Darüber hinaus wird eine vollständige Datei (data set) (die eine Mehrzahl von Datensätzen umfassen kann) nicht neu geschrieben, wenn ein oder mehrere darin enthaltene Datensätze aktualisiert werden, im Gegensatz zu unstrukturierten Daten, die in Dateien als Byte-Strom gespeichert sind, für den es erforderlich ist, dass die gesamte Datei neu geschrieben wird, um jeden der darin enthaltenen Datensätze zu aktualisieren. Unstrukturierte Daten, die gemäß der vorliegenden Ausführungsform in dem strukturierten Rahmen gespeichert werden, können auf Dokument- oder Datensatzebene aktualisiert werden, wodurch die Gesamtmenge an E/A, die im Aktualisierungsprozess verwendet wird, verringert und die Leistung der strukturierten Datenbank in Verbindung mit dem Verarbeiten der darin gespeicherten unstrukturierten Datensätze erhöht wird.
  • Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung ergeben sich aus der folgenden ausführlichen Beschreibung, die in Verbindung mit den Zeichnungen die Grundgedanken der Erfindung beispielhaft veranschaulicht.
  • Figurenliste
  • Bevorzugte Ausführungsformen der vorliegenden Erfindung werden im Folgenden nur beispielhaft und unter Bezugnahme auf die folgenden Zeichnungen beschrieben:
    • 1 stellt einen Datenverarbeitungsknoten gemäß einer Ausführungsform der Erfindung dar.
    • 2 veranschaulicht eine Netzwerkarchitektur gemäß einer Ausführungsform.
    • 3 veranschaulicht ein Datenspeichersystem mit mehreren Ebenen gemäß einer Ausführungsform.
    • 4 zeigt ein System zum Speichern unstrukturierter Daten in einem strukturierten Rahmen gemäß einer Ausführungsform.
    • 5 zeigt ein System, das die Möglichkeit bereitstellt, Sekundärindizes für eine strukturierte Datenbank zu erstellen.
    • 6 zeigt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform.
    • 7 zeigt einen Ablaufplan eines Verfahrens gemäß einer weiteren Ausführungsform.
    • 8 zeigt einen Ablaufplan eines Verfahrens gemäß einer noch weiteren Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung dient der Veranschaulichung der allgemeinen Grundgedanken der vorliegenden Erfindung und soll die hier beanspruchten Aspekte der Erfindung nicht einschränken. Darüber hinaus können hier beschriebene besondere Merkmale in Verbindung mit anderen beschriebenen Merkmalen in jeder der verschiedenen möglichen Kombinationen und Umsetzungen verwendet werden.
  • Sofern hier nicht ausdrücklich anders definiert, sind alle Begriffe so weit wie möglich auszulegen, einschließlich der aus der Beschreibung implizierten Bedeutungen sowie der Bedeutungen, die von Fachleuten verstanden werden und/oder die in Wörterbüchern, Abhandlungen usw. definiert sind.
  • Sofern nicht anders angegeben, ist ferner darauf hinzuweisen, dass die Singularformen „ein/eine/einer/eines“ und „der/die/das“, wie sie in der Beschreibung und den beigefügten Ansprüchen verwendet werden, auch die Pluralform enthalten. Es versteht sich ferner, dass die Begriffe „aufweisen“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, die Anwesenheit von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht die Anwesenheit oder Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen. Der Begriff „etwa“, wie er hierin verwendet wird, bezieht sich auf den Wert, der dem Begriff „etwa“ folgt, sowie auf weitere Werte, die dem Wert, der dem Begriff „etwa“ folgt, ungefähr nahekommen, wie es ein Fachmann verstehen würde. Wenn nicht anders angegeben, bezeichnet der vorangestellte Begriff „etwa“ ±10 % des Wertes. Beispielsweise gibt „etwa 10“ alle Werte von 9,0 bis 11,0 an.
  • Die folgende Beschreibung offenbart einige bevorzugte Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten zum Speichern unstrukturierter Daten in einer Architektur, die einen strukturierten Rahmen verwendet.
  • In einer allgemeinen Ausführungsform umfasst ein Verfahren Empfangen eines unstrukturierten Datensatzes und Parsen des unstrukturierten Datensatzes, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. Die Charakterisierung umfasst Bestimmen von: einer Gesamtlänge des unstrukturierten Datensatzes, einer Anzahl von Feldern, einer Länge für die Felder und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind. Das Verfahren umfasst auch Erhalten eines ersten Schlüsselpaares, das einen Primärschlüsselnamen enthält, der einem ersten Schlüsselwert zugehörig ist, und Hashen mindestens des ersten Schlüsselwerts, um einen Hash-Wert zu erhalten. Darüber hinaus umfasst das Verfahren Aktualisieren des unstrukturierten Datensatzes, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen. Das Verfahren umfasst ferner Speichern des geänderten Datensatzes in einer strukturierten Datenbank. Darüber hinaus umfasst das Verfahren Aktualisieren eines Index der strukturierten Datenbank, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • In einer anderen allgemeinen Ausführungsform enthält ein Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen. Bei dem durch einen Computer lesbaren Speichermedium handelt es sich nicht um ein flüchtiges Signal an sich, und die enthaltenen Programmanweisungen sind von einer Verarbeitungsschaltung ausführbar, um die Verarbeitungsschaltung zu veranlassen, einen unstrukturierten Datensatz durch die Verarbeitungsschaltung zu empfangen und den unstrukturierten Datensatz durch die Verarbeitungsschaltung zu parsen, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. Die Charakterisierung umfasst Bestimmen von: einer Gesamtlänge des unstrukturierten Datensatzes, einer Anzahl von Feldern, einer Länge für die Felder und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind. Die enthaltenen Programmanweisungen veranlassen die Verarbeitungsschaltung ferner, ein erstes Schlüsselpaar durch die Verarbeitungsschaltung zu erhalten, das einen Primärschlüsselnamen enthält, der einem ersten Schlüsselwert zugehörig ist. Darüber hinaus veranlassen die enthaltenen Programmanweisungen die Verarbeitungsschaltung, mindestens den ersten Schlüsselwert durch die Verarbeitungsschaltung zu hashen, um einen Hash-Wert zu erhalten, und den unstrukturierten Datensatz durch die Verarbeitungsschaltung zu aktualisieren, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen. Zusätzlich veranlassen die enthaltenen Programmanweisungen die Verarbeitungsschaltung, den geänderten Datensatz durch die Verarbeitungsschaltung in einer strukturierten Datenbank zu speichern. Darüber hinaus veranlassen die enthaltenen Programmanweisungen die Verarbeitungsschaltung, einen Index der strukturierten Datenbank durch die Verarbeitungsschaltung zu aktualisieren, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • In noch einer weiteren Ausführungsform umfasst ein System eine Verarbeitungsschaltung, einen Speicher und eine im Speicher gespeicherte Logik, die, wenn sie von der Verarbeitungsschaltung ausgeführt wird, die Verarbeitungsschaltung veranlasst, einen unstrukturierten Datensatz zu empfangen. Die Logik veranlasst die Verarbeitungsschaltung ferner, den unstrukturierten Datensatz zu parsen, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. Die Charakterisierung umfasst Bestimmen von: einer Gesamtlänge des unstrukturierten Datensatzes, einer Anzahl von Feldern, einer Länge für die Felder und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind. Außerdem veranlasst die Logik die Verarbeitungsschaltung, ein erstes Schlüsselpaar zu erhalten, das einen Primärschlüsselnamen enthält, der einem ersten Schlüsselwert zugehörig ist, und mindestens den ersten Schlüsselwert zu hashen, um einen Hash-Wert zu erhalten. Darüber hinaus veranlasst die Logik die Verarbeitungsschaltung, den unstrukturierten Datensatz zu aktualisieren, um den Hash-Wert aufzunehmen und so einen geänderten Datensatz zu erzeugen. Zusätzlich veranlasst die Logik die Verarbeitungsschaltung, den geänderten Datensatz in einer strukturierten Datenbank zu speichern. Darüber hinaus veranlasst die Logik die Verarbeitungsschaltung, einen Index der strukturierten Datenbank zu aktualisieren, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • Gemäß einer anderen allgemeinen Ausführungsform umfasst ein Verfahren Empfangen eines unstrukturierten Datensatzes, der auf der JavaScript Object Notation (JSON) oder der Binary JavaScript Object Notation (BSON) beruht. Das Verfahren umfasst ferner Parsen des Datensatzes, um eine Gesamtlänge des unstrukturierten Datensatzes, eine Anzahl von Feldern, eine Länge für die Felder und eine Reihenfolge der Felder, wie sie im Datensatz gespeichert sind, zu ermitteln. Das Verfahren umfasst darüber hinaus Empfangen oder Erzeugen eines Primärschlüsselnamens und Zuordnen des Primärschlüsselnamens zu einer Menge von Datensätzen, die den Datensatz enthält. Das Verfahren umfasst auch Erzeugen eines Primärschlüsselwerts, der dem Datensatz zugehörig ist, indem ein ganzzahliger Wert um eins erhöht und ein resultierender Wert ausgewählt wird, sowie Hashen des Primärschlüsselwerts, um einen Hash-Wert zu erhalten. Darüber hinaus umfasst das Verfahren Aktualisieren des Datensatzes, um einen geänderten Datensatz zu erzeugen, indem das Primärschlüsselname:Schlüsselwert-Paar und der Hash-Wert als Indizierungsschlüssel hinzugefügt werden. Das Verfahren umfasst ferner Speichern des geänderten Datensatzes in einer Virtual-Storage-Access-Method-Datenbank (VSAM). Darüber hinaus umfasst das Verfahren Aktualisieren eines Index einer Datei in Schlüsselfolge (Key-Sequenced Data Set, KSDS) einer VSAM-Datenbank, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  • Gemäß einer noch weiteren allgemeinen Ausführungsform umfasst ein Verfahren Empfangen einer unstrukturierten Datenbank, die eine Mehrzahl von unstrukturierten Datensätzen enthält. Das Verfahren umfasst ferner Parsen mindestens eines Datensatzes der Mehrzahl von unstrukturierten Datensätzen, um eine Anzahl von Feldern in dem mindestens einen Datensatz, eine Gesamtlänge des mindestens einen Datensatzes, eine Länge für die Felder des mindestens einen Datensatzes und eine Reihenfolge der Felder, wie sie in dem mindestens einen Datensatz gespeichert sind, zu ermitteln. Das Verfahren umfasst zusätzlich Erzeugen eines Primärschlüsselnamens und Zuordnen des Primärschlüsselnamens zu der Mehrzahl von unstrukturierten Datensätzen. Das Verfahren umfasst auch Empfangen oder Erzeugen einer Mehrzahl von Schlüsselwerten, wobei jeder Schlüsselwert einem Datensatz der Mehrzahl von unstrukturierten Datensätzen zugehörig ist, indem ein eindeutiger ganzzahliger Wert einzeln als Schlüsselwert für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen ausgewählt wird. Darüber hinaus umfasst das Verfahren Hashen eines Primärschlüsselwerts für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen, um eine Mehrzahl von Hash-Werten zu erhalten. Zusätzlich umfasst das Verfahren Aktualisieren jedes Datensatzes der Mehrzahl von unstrukturierten Datensätzen, indem das Primärschlüsselname:Schlüsselwert-Paar und ein für jeden geänderten Datensatz spezifischer Hash-Wert einzeln hinzugefügt werden, um eine Mehrzahl von geänderten Datensätzen zu erzeugen. Das Verfahren umfasst auch Speichern der Mehrzahl von geänderten Datensätzen in einer strukturierten oder halbstrukturierten Datenbank. Darüber hinaus umfasst das Verfahren Aktualisieren eines Primärindex der strukturierten oder halbstrukturierten Datenbank, um Einträge für alle geänderten Datensätze aufzunehmen, wobei jeder Eintrag einen Hash-Wert von der Mehrzahl von Hash-Werten enthält.
  • Mit Bezug auf 1 wird eine schematische Darstellung eines Beispiels eines Datenverarbeitungsknotens 10 gemäß einer Ausführungsform gezeigt. Der Datenverarbeitungsknoten 10 ist nur ein Beispiel eines geeigneten Datenverarbeitungsknotens und soll keine Beschränkung des Umfangs der Nutzung oder Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung nahelegen. Ungeachtet dessen kann der Datenverarbeitungsknoten 10 implementiert werden und/oder eine beliebige der hierin dargelegten Funktionalitäten durchführen. Darüber hinaus kann der Datenverarbeitungsknoten 10 in jede Art von System, Netzwerk, Cloud, Cluster und/oder Datenspeicherumgebung eingebunden werden, die hierin beschrieben wird und/oder dem Fachmann bekannt ist.
  • In dem Datenverarbeitungsknoten 10 befindet sich ein Computersystem/Server 12, das/der mit zahlreichen anderen universellen oder speziellen Datenverarbeitungssystem-Umgebungen oder Konfigurationen funktionsfähig ist. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für die Nutzung mit dem Computersystem/Server 12 geeignet sein können, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computer-Systeme, schlanke Clients, leistungsintensive Clients, Handheld-Einheiten, Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf Grundlage von Mikroprozessoren, Beistellgeräte, programmierbare Unterhaltungselektronik, Netzwerk-Personal-Computer (PCs), Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die jedes beliebige der oben genannten Systeme oder Einheiten und Ähnliches enthalten.
  • Das Computersystem/der Server 12 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, wo die Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokalen als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, darunter Speichereinheiten mit Arbeitsspeichern.
  • Wie in 1 gezeigt, wird das Computersystem/der Server 12 in dem Datenverarbeitungsknoten 10 in Form einer universellen Datenverarbeitungseinheit dargestellt. Zu den Komponenten des Computersystems/Servers 12 können - ohne auf diese beschränkt zu sein - ein oder mehrere Prozessoren, Verarbeitungsschaltungen und/oder Verarbeitungseinheiten (zusammen Prozessor 16), ein Systemspeicher 28 und ein Bus 18 gehören, der verschiedene Systemkomponenten, darunter den Systemspeicher 28, mit dem Prozessor 16 verbindet.
  • Der Bus 18 stellt eine oder mehrere von beliebigen mehreren Arten von Busstrukturen dar, darunter einen Speicherbus, eine Speichersteuereinheit, einen Peripheriebus, eine AGP-Schnittstelle (Accelerated Graphics Port), einen Prozessor und einen lokalen Bus, der eine beliebige aus einer Vielfalt von Busarchitekturen nutzt. Beispielsweise und nichteinschränkend enthalten solche Architekturen einen Industry-Standard-Architecture-(ISA)-Bus, einen Micro-Channel-Architecture-(MCA)-Bus, einen Enhanced-ISA-(EISA)-Bus, einen lokalen Video-Electronics-Standards-Association-(VESA)-Bus und einen Peripheral-Component-Interconnects-(PCI)-Bus.
  • Das Computersystem/der Server 12 enthält üblicherweise eine Vielfalt von durch einen Computer lesbaren Medien. Bei diesen Medien kann es sich um beliebige verfügbare Medien handeln, auf die das Computersystem/der Server 12 zugreifen kann, darunter flüchtige und nichtflüchtige Medien, wechselbare und nichtwechselbare Medien usw.
  • Der Systemspeicher 28 kann durch einen Computer lesbare Medien in Form von flüchtigen Speichern, z.B. den Direktzugriffsspeicher (RAM) 30 und/oder den Zwischenspeicher 32, enthalten. Das Computersystem/der Server 12 kann ferner weitere wechselbare/nichtwechselbare, flüchtige/nichtflüchtige, durch einen Computer lesbare Speichermedien enthalten. Nur beispielhaft kann das Speichersystem 34 bereitgestellt werden, um ein nichtwechselbares, nichtflüchtiges magnetisches Medium auszulesen und zu beschreiben (nicht dargestellt und üblicherweise als „Festplatte“ oder „Halbleiterplatte“ bezeichnet). Obwohl nicht dargestellt, können ein Laufwerk für magnetische Speicherplatten zum Auslesen und Beschreiben einer wechselbaren, nichtflüchtigen magnetischen Speicherplatte (z.B. „Diskette“) und ein Laufwerk für optische Speicherplatten zum Auslesen oder Beschreiben einer wechselbaren, nichtflüchtigen optischen Speicherplatte wie einem CD-ROM, DVD-ROM und andere optische Medien bereitgestellt werden. In solchen Fällen kann jedes über eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 18 verbunden sein. Wie unten weiter dargestellt und beschrieben, kann der Speicher 28 mindestens ein Programmprodukt mit einem (z.B. mindestens einem) Satz von Programmmodulen enthalten, die so konfiguriert sind, dass sie die in den Ausführungsformen der Erfindung beschriebenen Funktionen ausführen.
  • Das Programm/Dienstprogramm 40 mit (mindestens) einem Satz von Programmmodulen 42 kann beispielsweise und nichteinschränkend im Speicher 28 gespeichert sein, ebenso ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Implementierung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der hierin beschriebenen Erfindung aus.
  • Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14, z.B. einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw., Daten austauschen; sowie mit einer oder mehreren Einheiten, die einen Benutzer in die Lage versetzen, mit dem Computersystem/dem Server 12 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die das Computersystem/den Server 12 in die Lage versetzen, mit einer oder mehreren Datenverarbeitungseinheiten Daten auszutauschen. Eine solche Datenübertragung kann über die Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 22 erfolgen. Überdies kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken, z.B. einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. das Internet), über den Netzwerkadapter 20 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 20 über den Bus 18 mit den anderen Komponenten des Computersystems/Servers 12 Daten aus. Es versteht sich, dass sonstige Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden können, auch wenn sie nicht dargestellt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, Anordnungen externer Festplattenlaufwerke, RAID-Systeme (redundant array of independent disks), Bandlaufwerke, Speichersysteme für die Datenarchivierung usw.
  • Auf dem Computersystem/Server 12 kann ein Betriebssystem wie das Microsoft® Windows®-Betriebssystem, Apple®-Betriebssystem, UNIX®-Betriebssystem, IBM® z/OS® usw. installiert sein. Es ist offensichtlich, dass eine bevorzugte Ausführungsform auch auf anderen Plattformen und Betriebssystemen als den genannten implementiert werden kann. Eine bevorzugte Ausführungsform kann mit PL/I, XML, C und/oder C++ oder anderen Programmiersprachen zusammen mit einer objektorientierten Programmiermethodik geschrieben werden. Objektorientierte Programmierung (OOP), die zunehmend zum Entwickeln komplexer Anwendungen eingesetzt wird, kann verwendet werden. Microsoft, Windows, Windows NT und das Logo von Windows sind in den Vereinigten Staaten, in anderen Ländern oder beides eingetragene Marken der Microsoft Corporation. UNIX ist eine in den Vereinigten Staaten und anderen Ländern eingetragene Marke von The Open Group. IBM & z/OS sind eingetragene Marken der International Business Machines Corporation in den Vereinigten Staaten und/oder anderen Ländern.
  • 2 veranschaulicht eine Architektur 100 gemäß einer Ausführungsform. Der in 1 dargestellte Datenverarbeitungsknoten 10 kann in der Architektur 100 wie in 2 dargestellt verwendet werden. Darüber hinaus kann die Architektur 100 eine Mehrzahl von entfernt angeordneten Netzwerken 102 umfassen, darunter ein erstes entfernt angeordnetes Netzwerk 104 und ein zweites entfernt angeordnetes Netzwerk 106. Ein Gateway 101 kann mit dem entfernt angeordneten Netzwerk 102 und einem nahen Netzwerk 108 verbunden sein. Im Rahmen der vorliegenden Architektur 100 können die Netzwerke 104, 106 jeweils die Form eines LAN oder eines WAN wie das Internet, eines öffentlichen Telefonnetzes (PSTN), eines internen Telefonnetzes usw. haben, ohne darauf beschränkt zu sein.
  • In Verwendung dient das Gateway 101 als Zugangspunkt von den entfernt angeordneten Netzwerken 102 zum nahen Netzwerk 108. Als solches kann das Gateway 101 als Router fungieren, der in der Lage ist, ein bestimmtes Datenpaket, das am Gateway 101 ankommt, weiterzuleiten, sowie als Vermittlungseinheit (switch), die den tatsächlichen Pfad in das und aus dem Gateway 101 für ein bestimmtes Paket bereitstellt.
  • Weiterhin ist mindestens ein Datenserver 114 enthalten, der mit dem nahen Netzwerk 108 verbunden ist und auf den über das Gateway 101 von den entfernt angeordneten Netzwerken 102 zugegriffen werden kann. Es ist zu beachten, dass der/die Datenserver 114 jede Art von Datenverarbeitungseinheit/Groupware enthalten kann/können. Mit jedem Datenserver 114 ist eine Mehrzahl von Benutzereinheiten 116 verbunden. Die Benutzereinheiten 116 können auch direkt über eines der Netzwerke 104, 106, 108 verbunden werden. Diese Benutzereinheiten 116 können Desktop-Computer, Laptop-Computer, Handheld-Computer, Drucker und/oder jede andere Art von Logik enthalten. Es ist zu beachten, dass in einer Ausführungsform eine Benutzereinheit 111 auch direkt mit jedem der Netzwerke verbunden sein kann.
  • Eine Peripherieeinheit 120 oder eine Reihe von Peripherieeinheiten 120, z.B. Faxgeräte, Drucker, vernetzte und/oder lokale Speichereinheiten oder -systeme usw., kann mit einem oder mehreren der Netzwerke 104, 106, 108 verbunden werden. Es ist zu beachten, dass Datenbanken und/oder zusätzliche Komponenten mit jeder Art von Netzwerkelement, das mit den Netzwerken 104, 106, 108 verbunden ist, verwendet oder in dieses integriert werden können. Im Zusammenhang mit der vorliegenden Beschreibung kann sich ein Netzwerkelement auf eine beliebige Komponente eines Netzwerkes beziehen.
  • Gemäß einigen Ansätzen können die hierin beschriebenen Verfahren und Systeme mit und/oder auf virtuellen Systemen und/oder Systemen implementiert werden, die ein oder mehrere andere Systeme emulieren, wie z.B. ein UNIX-System, das eine IBM z/OS-Umgebung emuliert, ein UNIX-System, das eine MICROSOFT WINDOWS-Umgebung virtuell hostet, ein MICROSOFT WINDOWS-System, das eine IBM z/OS-Umgebung emuliert, usw. Diese Virtualisierung und/oder Emulation kann mithilfe von VMWARE-Software oder einer anderen bekannten Virtualisierungsschicht in einigen Ausführungsformen verbessert werden.
  • Bei weiteren Ansätzen können ein oder mehrere Netzwerke 104, 106, 108 eine Gruppe von Systemen darstellen, die allgemein als „Cloud“ bezeichnet wird. Beim Cloud-Computing werden gemeinsam genutzte Ressourcen wie Rechenleistung, Peripherieeinheiten, Software, Daten, Server usw. jedem System in der Cloud in einer bedarfsorientierten Beziehung bereitgestellt und ermöglichen so den Zugriff auf und die Verteilung von Diensten über viele Datenverarbeitungssysteme hinweg. Beim Cloud-Computing handelt es sich in der Regel um eine Internetverbindung zwischen den in der Cloud arbeitenden Systemen, es können jedoch auch andere Verfahren zum Verbinden der Systeme verwendet werden.
  • Mit Bezug nunmehr auf 3 wird ein Speichersystem 300 mit mehreren Ebenen gemäß einer Ausführungsform gezeigt. Es ist zu beachten, dass einige der in 3 gezeigten Elemente gemäß verschiedenen Ausführungsformen als Hardware und/oder Software implementiert sein können. Das Speichersystem 300 kann einen Speichersystemmanager 312 für den Datenaustausch mit einer Mehrzahl von Medien auf mindestens einer höheren Speicherebene 302 und mindestens einer niedrigeren Speicherebene 306 enthalten. Der Speichersystemmanager kann auch einen Auftragssteuerungsmanager zum Verwalten von Auftragsanfragen enthalten, wie hier gemäß verschiedenen Ausführungsformen näher beschrieben wird. Die höhere(n) Speicherebene(n) 302 kann/können vorzugsweise ein oder mehrere Medien mit wahlfreiem Zugriff und/oder Direktzugriff 304 umfassen, wie z.B. nichtflüchtige Speicher (nonvolatile memory, NVM), Halbleiterspeicher in Halbleiterplatten (solid state drives, SSDs), Flash-Speicher, SSD-Anordnungen, Flash-Speicher-Anordnungen, Festplatten in Festplattenlaufwerken (hard disk drives, HDDs) usw. und/oder andere hierin aufgeführte oder nach dem Stand der Technik bekannte Medien. Die niedrigere(n) Speicherebene(n) 306 kann/können vorzugsweise ein oder mehrere Speichermedien 308 mit geringerer Leistung umfassen, z.B. langsamer zugreifende HDDs, Medien mit sequenziellem Zugriff wie Magnetbänder in Bandlaufwerken und/oder optische Medien usw. und/oder andere hierin aufgeführte oder nach dem Stand der Technik bekannte Medien. Eine oder mehrere zusätzliche Speicherebenen 316 können eine beliebige Kombination von Speichermedien enthalten, die von einem Entwickler des Systems 300 gewünscht wird. Außerdem kann jede der höheren Speicherebenen 302 und/oder der niedrigeren Speicherebenen 306 eine Kombination von Speichereinheiten und/oder Speichermedien enthalten.
  • Der Speichersystemmanager 312 kann mit den Speichermedien 304, 308 auf der/den höheren Speicherebene(n) 302 und der/den niedrigeren Speicherebene(n) 306 über ein Netzwerk 310, z.B. ein Speichernetzwerk (storage area network, SAN), wie in 2 dargestellt, oder über ein anderes geeignetes Netzwerk Daten austauschen. Der Speichersystemmanager 312 kann auch mit einem oder mehreren Host-Systemen (nicht dargestellt) über eine Host-Schnittstelle 314 Daten austauschen, die Teil des Speichersystemmanagers 312 sein kann. Der Speichersystemmanager 312 und/oder andere Komponenten des Speichersystems 300 kann/können in Hardware und/oder Software implementiert werden und einen (nicht dargestellten) Prozessor eines nach dem Stand der Technik bekannten Typs, wie z.B. eine Zentraleinheit (CPU), eine vor Ort programmierbare Gatter-Anordnung (field programmable gate array, FPGA), eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit, ASIC) usw., zum Ausführen von Befehlen verwenden. Natürlich kann jede beliebige Anordnung eines Speichersystems verwendet werden, wie es für den Fachmann beim Lesen der vorliegenden Beschreibung offensichtlich ist.
  • In mehreren Ausführungsformen kann das Speichersystem 300 eine beliebige Anzahl von Datenspeicherebenen umfassen und innerhalb jeder Speicherebene die gleichen oder unterschiedliche Speichermedien enthalten. Beispielsweise kann jede Datenspeicherebene den gleichen Typ von Speichermedien, z.B. HDDs, SSDs, Medien mit sequenziellem Zugriff (Band in Bandlaufwerken, optische Platte in optischen Plattenlaufwerken usw.), Medien mit direktem Zugriff (CD-ROM, DVD-ROM usw.) oder eine beliebige Kombination von Medienspeichertypen umfassen. In einer solchen Konfiguration kann eine höhere Speicherebene 302 eine Mehrheit von SSD-Speichermedien (bis zu einschließlich allen SSD-Speichermedien) zum Speichern von Daten in einer leistungsfähigeren Speicherumgebung umfassen, und die übrigen Speicherebenen, darunter die niedrigere Speicherebene 306 und zusätzliche Speicherebenen 316, können jede beliebige Kombination von SSDs, HDDs, Bandlaufwerken usw. zum Speichern von Daten in einer weniger leistungsfähigen Speicherumgebung umfassen. Auf diese Weise können Daten, auf die häufiger zugegriffen wird, Daten mit höherer Priorität, Daten, auf die schneller zugegriffen werden muss, usw. in der höheren Speicherebene 302 gespeichert werden, während Daten, die keines dieser Attribute aufweisen, in den zusätzlichen Speicherebenen 316, darunter die niedrigere Speicherebene 306, gespeichert werden können. Natürlich kann ein Fachmann, wenn er die vorliegenden Beschreibungen liest, viele andere Kombinationen von Speichermedientypen entwickeln, die er in verschiedene Speicherschemata gemäß den hierin vorgestellten Ausführungsformen implementieren kann.
  • In einer bestimmten Ausführungsform kann das Speichersystem 300 eine Kombination aus SSDs und HDDs umfassen, wobei die höhere Speicherebene 302 SSDs (und möglicherweise in geringem Umfang Pufferspeicher) und die niedrigere Speicherebene 306 HDDs (und möglicherweise in geringem Umfang Pufferspeicher) enthalten. Gemäß einer weiteren Ausführungsform kann das Speichersystem 300 eine Kombination aus SSDs und Magnetband mit Magnetbandlaufwerken umfassen, wobei die höhere Speicherebene 302 SSDs (und möglicherweise in geringem Umfang Pufferspeicher) und die niedrigere Speicherebene 306 Magnetband (und möglicherweise in geringem Umfang Pufferspeicher) und Magnetbandlaufwerke zum Zugreifen auf Daten von den Magnetbändern enthalten. In noch einer weiteren Ausführungsform kann das Speichersystem 300 eine Kombination aus HDDs und Magnetband enthalten, wobei die höhere Speicherebene 302 HDDs (und möglicherweise in geringem Umfang Pufferspeicher) und die niedrigere Speicherebene 306 Magnetband (und möglicherweise in geringem Umfang Pufferspeicher) enthalten.
  • Mit Bezug auf 4 wird ein System 400 gemäß einer Ausführungsform gezeigt. Das System 400 umfasst eine Verarbeitungsschaltung 412, eine Logik, die die Verarbeitungsschaltung veranlasst, bestimmte Datenverwaltungsfunktionalitäten durchzuführen, die hier in verschiedenen Ausführungsformen beschrieben werden, und ein oder mehrere durch einen Computer lesbare Speichermedien 404. Mit diesem System 400 können unstrukturierte Daten 402 in einem strukturierten Rahmen 406 auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien 404 gespeichert werden. Mit unstrukturierten Daten 402 ist gemeint, dass jeder Datensatz Informationen enthält, die kein vordefiniertes Datenmodell haben, nicht in einer vordefinierten Art und Weise organisiert sind, nicht gemäß einem vordefinierten Datenformat gespeichert sind usw. Die unstrukturierten Daten 402 können in jedem bekannten unstrukturierten Format oder halbstrukturierten Format gespeichert werden, bevor sie auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien 404 des strukturierten Rahmens 406 gespeichert werden. Zu einigen beispielhaften unstrukturierten oder halbstrukturierten Formaten gehören das JavaScript-Object-Notation-Datenformat (JSON-Datenformat), das Binary-JSON-Datenformat (BSON-Datenformat), MessagePack™, YAML, Extensible Mark-up Language (XML) oder ein anderes geeignetes unstrukturiertes oder halbstrukturiertes Datenformat. Darüber hinaus können diese unstrukturierten Daten 402 bei einigen Ansätzen vor dem Speichern in dem strukturierten Rahmen 406 in einer nichtrelationalen NoSQL-Datenbank wie MongoDB®, ArangoDB™ usw. gespeichert werden. Diese Art von Daten ist schwierig zu bearbeiten, da nicht bekannt ist, welche Felder in den Daten vorhanden sind, wie lang die Felder sind, in welcher Reihenfolge sie angeordnet sind usw.; diese Informationen sind jedoch nützlich, um festzustellen, was in jedem der unstrukturierten Datensätze der unstrukturierten Daten 402 enthalten ist.
  • Strukturierte Daten wie hierin verwendet beziehen sich auf Informationen mit einem hohen Organisationsgrad, die ein schnelles und nahtloses Einfügen in eine relationale (oder strukturierte) Datenbank ermöglichen und durch einfache, unkomplizierte Suchmaschinen-Algorithmen oder andere Suchvorgänge leicht durchsuchbar sind. Ein strukturierter Rahmen 406 wie hierin verwendet bezeichnet einen Rahmen oder eine Architektur, der bzw. die so konfiguriert ist, dass er bzw. sie Daten auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien 404 auf relationale Weise oder in relationalem Aufbau speichert. Ein strukturierter Rahmen 406 kann vollständig strukturiert sein, d.h., jeder Datensatz hat ein vordefiniertes Format, wie z.B. IBM® DB2®, Microsoft® SQL Server, Oracle® Database usw., oder halbstrukturiert, d.h., die Datensätze können angepasst oder von einem vorgegebenen Format aus nach bestimmten Richtlinien geändert werden, wie z.B. IBM® Virtual Storage Access Method (VSAM), die den Zugriff auf Datensätze über Record Level Sharing (RLS) ermöglichen können.
  • In einem strukturierten Rahmen 406 kann auf die gespeicherten Daten 408 (strukturierte Daten und, wenn sie gemäß den hierin beschriebenen Ausführungsformen gespeichert sind, geänderte Versionen der unstrukturierten Daten 402) auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien 404 über einen Primärindex 410, z.B. eine Datei in Schlüsselfolge (Key-Sequenced Data Set, KSDS) einer VSAM-gestützten Datenbank oder andere nach dem Stand der Technik bekannte Indizierungsmechanismen strukturierter oder halbstrukturierter Architekturen, schnell zugegriffen werden. Auf diese Weise können die Vorteile strukturierter Daten und eines strukturierten Rahmens 406, darunter schnellere Zugriffsgeschwindigkeit und verbesserte Durchsuchbarkeit, auch für unstrukturierte Daten 402, die darin gespeichert sind, bereitgestellt werden.
  • Ein weiterer Vorteil des Speicherns unstrukturierter Daten 402 gemäß dieser Ausführungsform besteht darin, dass eine vollständige Datei, wie sie in dem strukturierten Rahmen 406 gespeichert ist, als Reaktion auf Aktualisierungen der angeforderten und verarbeiteten gespeicherten Daten 408 nicht neu geschrieben wird, wie bei herkömmlichen Byte-Strom-Dateien. Bei einer als strukturierte Daten gespeicherten Datei können die gespeicherten Daten 408 auf Dokumentenebene aktualisiert werden, wodurch die Gesamtmenge von E/A verringert und die Leistung in Verbindung mit dem Verwenden der Daten innerhalb des strukturierten Rahmens 406 erhöht wird.
  • Dies stellt eine Verbesserung gegenüber anderen Verfahren zum Speichern unstrukturierter Daten in einem strukturierten Rahmen dar, der einen kontinuierlichen Datenstrom oder eine Datei zum Speichern der unstrukturierten Daten verwendet, oder gegenüber Verfahren, bei denen weitere Indizes zusätzlich zur strukturierten Datenbank und deren Indizes oder getrennt davon erstellt werden, da diese Verfahren zusätzlichen Aufwand und/oder Verzögerungen bei der Suche nach bestimmten Dokumenten innerhalb der Datenbank verursachen.
  • In einer Ausführungsform werden die unstrukturierten Daten 402 in einem strukturierten Rahmen 406 gespeichert, z.B. einer strukturierten oder halbstrukturierten Datenbank, indem die unstrukturierten Daten 402 oder das Dokument herangezogen werden, die unstrukturierten Daten 402 oder das Dokument mit einem Parser 414 geparst werden, um eine Charakterisierung der Daten festzulegen, ein Primärschlüssel zum Indizieren der Daten erzeugt wird, in einigen Implementierungen möglicherweise Metadaten zu dem Primärschlüssel hinzugefügt werden, die unstrukturierten Daten 402 oder das Dokument geändert werden, um den Primärschlüssel (und in einigen Implementierungen Metadaten) aufzunehmen, die geänderten Daten oder das Dokument in dem strukturierten Rahmen 406 gespeichert werden und eine oder mehrere Anwendungsprogrammierschnittstellen (APIs) 416 bereitgestellt werden, die auf Grundlage einer Suche nach dem „Schlüsselname:Schlüsselwert“-Paar im Primärindex 410 den Zugriff auf bestimmte grundlegende Datenbankverwaltungsbefehle wie GET (ABRUFEN), PUT (EINREIHEN) und ERASE (LÖSCHEN) ermöglichen. In dieser Ausführungsform wird ein konsistenter Primärschlüsselname für die unstrukturierten Daten 402 oder das Dokument verwendet, der für jede Menge von unstrukturierten Daten (z.B. ein Dokument, ein Datensatz usw.) empfangen, gefunden oder erzeugt wird.
  • Gemäß dieser Ausführungsform wird der Primärschlüsselwert in einem Primärschlüsselname/Schlüsselwert-Paar („Schlüsselname:Schlüsselwert“) mithilfe eines Hash-Algorithmus aus einer Mehrzahl von bekannten Hash-Algorithmen gehasht, die einem Fachmann weithin zur Verfügung stehen, und der resultierende Hash-Wert wird als Schlüssel zum Indizieren in dem für das jeweils verwendete Datenbankverwaltungsprotokoll geeigneten Primärindex 410 verwendet, z.B. eine innerhalb des VSAM verwendete KSDS oder ein anderes geeignetes Index- und Verwaltungsprotokoll. Dieser Primärschlüssel stellt einen schnellen Zugriff auf jedes Dokument über das Schlüsselpaar bereit, das den dem Schlüsselwert zugehörigen Primärschlüsselnamen enthält, z.B. ein „Primärschlüsselname:Schlüsselwert“-Paar.
  • Darüber hinaus können in einer Ausführungsform zusätzlich zum Primärindex 410 Sekundär- oder Alternativindizes erstellt werden, die weitere Möglichkeiten zum Referenzieren der unstrukturierten Daten 402 oder des Dokuments innerhalb des strukturierten Rahmens 406 bieten.
  • Zu den Vorteilen dieser Techniken zum Speichern unstrukturierter Daten in einem strukturierten Rahmen gehören eine schnellere Suchgeschwindigkeit beim Referenzieren eines bestimmten Dokuments mithilfe des Primärschlüsselname:Schlüsselwert-Paares, ohne darauf beschränkt zu sein. Die schnellere Suchgeschwindigkeit ist möglich im Vergleich zu einfachen Implementierungen einer unstrukturierten Datenbank, die jeden Datensatz in der unstrukturierten Datenbank neu lesen würde, um den Datensatz bzw. die Datensätze zu finden, der bzw. die mit einem gegebenen Schlüsselname:Schlüsselwert-Paar übereinstimmt bzw. übereinstimmen. Mit einem strukturierten oder halbstrukturierten Indizierungsschema wie z.B. VSAM lässt sich ein gewünschter Datensatz in der Datenbank deutlich schneller finden.
  • Zu den Vorteilen gehört außerdem eine erweiterte Serialisierung, die die Möglichkeit des Sperrens auf Datensatz- oder Dokumentebene umfasst, was einen höheren Durchsatz im Vergleich zum Sperren des gesamten Datensatzes ermöglicht. Zu den Vorteilen gehört ferner, dass nur die zuletzt referenzierten Dokumente oder Datensätze gepuffert und nur einzelne Dokumente oder Datensätze aktualisiert werden, ohne dass große Teile des Datensatzes neu geschrieben oder abgerufen werden müssen. Dadurch wird der bei Datenbankaktivitäten genutzte Puffer verringert und ein höherer Durchsatz beim Aktualisieren von Dokumenten oder Datensätzen bereitgestellt.
  • Mit Bezug nunmehr auf 5 wird ein System 500 dargestellt, das die Möglichkeit bereitstellt, bestimmte Schlüssel 516 innerhalb eines oder mehrerer Datensätze zu spezifizieren (z.B. durch einen Benutzer, Administrator oder eine andere geeignete Person oder einen Prozess), mit denen automatisch die Sekundärindizes 514 erstellt werden. Diese Sekundär- oder Alternativindizes (AIX) 514 enthalten einen Datensatz der möglichen Werte für einen Schlüsselnamen:Schlüsselwert und einen zugehörigen gehashten Schlüssel 518, der auch dazu verwendet werden kann, die gespeicherten Daten 508 oder das Dokument in dem strukturierten Rahmen 506 zu lokalisieren, die als unstrukturierte Daten 502 oder Dokument entstanden sind. Das System 500 umfasst eine Verarbeitungsschaltung 512, eine Logik, die die Verarbeitungsschaltung 512 veranlasst, bestimmte Datenverwaltungsfunktionalitäten durchzuführen, die hier in verschiedenen Ausführungsformen beschrieben werden, und ein oder mehrere durch einen Computer lesbare Speichermedien 504.
  • Gemäß einer Ausführungsform umfasst ein Format, das für die Einträge innerhalb des AIX 514 verwendet werden kann: <Metadaten><Anz. Basiszeiger><AIX-Version><AIX-Merker><AIX-Schlüssellänge><AIX-Schlüsselwert><Basisschlüssel 1><Basisschlüssel 2><Basisschlüssel 3> ...
  • In dieser Ausführungsform handelt es sich bei dem „AIX-Schlüssel“ um einen internen Wert des Alternativindex, der in der Lage ist, einen bestimmten AIX-Eintrag 518 von anderen AIX-Einträgen 518 zu unterscheiden. Die „Metadaten“ enthalten Informationen über die unstrukturierten Daten 502 oder das Dokument wie z.B. Versionsnummer, Dokumentlänge, Erstellungs- oder Änderungsdatum, usw. Die „Schlüssellänge“ gibt eine bestimmte Satzlänge des alternativen Schlüsselwerts an, und der „AIX-Schlüsselwert“ ist der Wert vom Schlüsselname:Schlüsselwert-Paar. Jeder „Basisschlüssel“ in einem AIX-Datensatz ist ein gehashter Schlüsselwert, der für eine bestimmte unstrukturierte Datenmenge 502 oder ein Dokument spezifisch ist und kann verwendet werden, um über den Primärindex 510 die gespeicherten Basisdaten 508 oder das Dokument zu referenzieren. Jedes Basisdokument, das diesen Basisschlüsselwert hat, enthält einen Eintrag in der Basisschlüsselliste des Alternativindex 514.
  • Als Reaktion auf eine empfangene Anfrage, einen bestimmten Schlüsselwert zu suchen, der einem bestimmten Schlüsselnamen zugehörig ist, für den ein AIX 514 erstellt wurde, wird der AIX 514 durchsucht, um einen Eintrag zu finden, der diesen bestimmten Schlüsselwert beschreibt. Die im Eintrag aufgeführten Basisschlüssel werden dann dazu verwendet, über den Primärindex 510 eine Suche durchzuführen und so den Zugriff auf das gewünschte Dokument bereitzustellen.
  • Angenommen, es befinden sich beispielsweise drei Dokumente in einer JSONgestützten Datenbank:
    • { „id“:“0003", „name“:“Patty“, „last“:“Johnson“ }
    • { „id“:„0002", „name“:“Jane“, „last“:“Smith“ }
    • { „id“:“0001", „name“:„John“, „last“:„Smith“ }
  • Der Primärindex in diesem Beispiel kann aus dem Primärschlüsselnamen „id“ gebildet und so aufgebaut werden, dass jedes Dokument in der VSAM-KSDS mit einem VSAM-Schlüssel gespeichert wird, der aus dem Hash-Wert gebildet wird. In diesem Beispiel kann eine vereinfachte Darstellung des Primärindex ausschließlich zu Erklärungszwecken wie folgt aussehen:
    • 8820 { „id“:“0003", „name“:„Patty“, „last“:„Johnson“ }
    • 9G56 { „id“:„0002", „name“:„Jane“, „last“:„Smith“ }
    • A001 { „id“:„0001", „name“:„John“, „last“:„Smith“ }
  • In diesem Beispiel eines Primärindex sind 9G56, A001 und 8820 die aus den „id“-Werten 0001, 0002, 0003 abgeleiteten Hash-Primärwerte. Diese gehashten Werte werden durch die VSAM-Schlüssel innerhalb der Datenbank nach ihrer Reihenfolge sortiert, wodurch die Reihenfolge im Vergleich zu den drei Originaldokumenten neu angeordnet wird. Mit dieser Struktur würde ein Alternativindex auf der Grundlage des Schlüsselnamens „last“ wie folgt aussehen (wiederum vereinfacht):
    • Metadata 0001 01 00 07 Johnson 8820
    • Metadata 0002 01 00 05 Smith 9G56 A001
  • In diesem Beispiel eines AIX sind 0001 und 0002 die Anzahl der Basisschlüssel in jeder Liste, 01 gibt die Versionsnummer an, 00 gibt einen oder mehrere Merker (flags) an (die anpassbar und nicht in allen Ausführungsformen vorhanden sind) und 07 und 05 sind die Längen des Schlüsselwerts „Johnson“ bzw. „Smith“.
  • In diesem Beispiel für den AIX ist Johnson mit dem Basisschlüssel 8820 verbunden, was Patty Johnson aus dem Primärindex ergibt. Außerdem hat Smith zwei Einträge, 9G56 und A001, von denen jeder auf ein Dokument mit dem Schlüsselnamen „last“ mit dem Wert „Smith“ verweist, jedoch handelt es sich um unterschiedliche Dokumente.
  • In einer bestimmten Implementierung kann der Schlüsselwert an einer Verkürzungsschwelle verkürzt werden, z.B. 252 Bytes in einem Beispiel, oder mehr oder weniger in anderen Ausführungsformen, z.B. 128 Bytes, 514 Bytes usw. Wenn die Länge des Schlüsselwerts die voreingestellte Verkürzungsschwelle überschreitet, in diesem Beispiel um mehr als 252 Bytes in der Länge, werden nur die ersten Bytes bis zur voreingestellten Verkürzungsschwelle gespeichert und für das Suchen verwendet, in diesem Beispiel die ersten 252 Bytes des Schlüsselwerts. Zusätzlich können die gehashten VSAM-Primärschlüssel auch in ihrer Länge begrenzt sein, in einem Beispiel 128 Bytes, oder mehr oder weniger in anderen Ausführungsformen, wie z.B. 64 Bytes, 256 Bytes usw.
  • Die Alternativindizes können spontan und/oder bei Bedarf über einen vom Benutzer gestarteten Prozess oder automatisch erstellt werden, wobei alle Dokumente oder Datensätze der Datenbank gescannt und relevante Informationen extrahiert werden, mit denen der Index aufgebaut werden kann.
  • Darüber hinaus können die Alternativindizes bei einem Ansatz während standardmäßigen Datenbankverwaltungsoperationen, wie z.B. während der Aktivität INSERT (EINFÜGEN), UPDATE (AKTUALISIEREN) und ERASE (LÖSCHEN), aktualisiert werden, indem das neue Dokument gescannt und die betroffenen Alternativindizes gemäß den neuen oder geänderten Informationen im neuen Dokument aktualisiert werden.
  • Mit Bezug nunmehr auf 6 wird ein Verfahren 600 gemäß einer Ausführungsform gezeigt. Das Verfahren 600 kann gemäß der vorliegenden Erfindung unter anderem in jeder der in den 1 bis 5 abgebildeten Umgebungen in verschiedenen Ausführungsformen ausgeführt werden. Natürlich können mehr oder weniger Arbeitsschritte als die speziell in 6 beschriebenen im Verfahren 600 enthalten sein, wie es für den Fachmann beim Lesen dieser Beschreibungen offensichtlich ist.
  • Jeder der Schritte des Verfahrens 600 kann von geeigneten Komponenten der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 600 in verschiedenen Ausführungsformen teilweise oder vollständig von einem Mikroprozessor, einem Server, einem Großrechner, einer Verarbeitungsschaltung mit einem oder mehreren Prozessoren oder einer anderen Einheit mit einem oder mehreren Prozessoren durchgeführt werden. Die Verarbeitungsschaltung, z.B. Prozessor(en), Chip(s) und/oder Modul(e), die in Hardware und/oder Software implementiert sind und vorzugsweise mindestens eine Hardwarekomponente aufweisen, können in einer beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 600 durchzuführen. Zu Beispielen für solche Prozessoren gehören eine MPU, eine CPU, eine ASIC, eine FPGA usw., Kombinationen davon oder jede andere geeignete, nach dem Stand der Technik bekannte Datenverarbeitungseinheit, ohne darauf beschränkt zu sein.
  • In einer Ausführungsform kann die Betriebsumgebung ein Datensystem umfassen, das zu einer Gruppe von zusätzlichen Systemen innerhalb der Umgebung gehören kann. In einer anderen Ausführungsform kann das Datensystem einen Server, einen Personal Computer, eine mobile Einheit oder jede andere Einheit umfassen, das/die in der Lage ist, Programmanweisungen auszuführen. In noch einer weiteren Ausführungsform kann das Datensystem in eine virtuelle Speicherumgebung eingebunden sein. Das Datensystem kann zum Beispiel Teil einer VSAM-Umgebung sein.
  • Wie in 6 gezeigt, kann das Verfahren 600 mit dem Arbeitsschritt 602 beginnen, bei dem ein unstrukturierter Datensatz empfangen wird. Dieser unstrukturierte Datensatz kann in jedem bekannten Format gespeichert und als Teil einer größeren Sammlung oder Menge unstrukturierter Datensätze empfangen werden, z.B. in einer Datenbank, einem Datenstrom usw.
  • In Arbeitsschritt 604 wird der unstrukturierte Datensatz geparst, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen. In einer Ausführungsform kann ein bekannter und verfügbarer Parser verwendet werden, um den unstrukturierten Datensatz zu parsen. In einer anderen Ausführungsform kann ein proprietärer und/oder angepasster Parser zum Parsen des unstrukturierten Datensatzes verwendet werden, der von einem Benutzer, Administrator oder einer anderen Person oder Entität bereitgestellt werden kann, der/die Kenntnis über das Format hat, in dem der unstrukturierte Datensatz gespeichert ist.
  • In einem anderen Indexsatz gibt die Charakterisierung des unstrukturierten Datensatzes das Format an, in dem die Informationen im Datensatz gespeichert sind. In einer Ausführungsform umfasst die Charakterisierung des unstrukturierten Datensatzes Bestimmen mindestens der folgenden Informationen: einer Gesamtlänge des Datensatzes, einer Anzahl von Feldern in dem unstrukturierten Datensatz (die bei allen unstrukturierten Datensätzen in der Sammlung unterschiedlich oder gleich sein kann), einer Länge für die verschiedenen Felder in dem unstrukturierten Datensatz (diese Werte sind in der Regel für jeden unstrukturierten Datensatz in der Sammlung eindeutig) und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind (bei zwei beliebigen unstrukturierten Datensätzen, die dieselben Felder enthalten, ist die Reihenfolge der Felder in der Regel gleich; jedoch kann sich die Reihenfolge der Felder bei unstrukturierten Datensätzen, die andere Felder enthalten, ändern).
  • In Arbeitsschritt 606 wird ein erstes Schlüsselpaar erhalten, das einen Primärschlüsselnamen aufweist, der einem Primärschlüsselwert zugehörig ist. In einer Ausführungsform kann das erste Schlüsselpaar durch Suchen nach dem angegebenen Primärschlüsselnamen in dem unstrukturierten Datensatz erhalten werden. Der Primärschlüsselname wird für alle Datensätze verwendet, die in einer Datei in einer strukturierten Datenbank gespeichert sind, während der erste Schlüsselwert für jeden einzelnen Datensatz darin eindeutig ist.
  • In einer anderen Ausführungsform kann das erste Schlüsselpaar erhalten werden, indem als Reaktion darauf, dass kein Primärschlüsselname in dem unstrukturierten Datensatz enthalten ist, derjenige Primärschlüsselname erzeugt wird, der der Sammlung oder Menge von unstrukturierten Datensätzen zugehörig ist oder zugehörig sein wird, die den unstrukturierten Datensatz enthalten, wobei alle in der strukturierten Datenbank gespeichert werden. Der Primärschlüsselname wird für alle unstrukturierten Datensätze in der Menge von unstrukturierten Datensätzen verwendet, sodass ein konsistenter Schlüsselname allen Dokumenten innerhalb der Sammlung zugehörig ist, die in der strukturierten Datenbank gespeichert werden. Als Reaktion darauf, dass kein Schlüsselwert in dem unstrukturierten Datensatz vorhanden ist, wird darüber hinaus der erste Schlüsselwert erzeugt, der dem unstrukturierten Datensatz über das Einbeziehen eines ganzzahligen Wertes zugehörig ist, der für den jeweiligen unstrukturierten Datensatz eindeutig ist.
  • In einer Ausführungsform wird der ganzzahlige Wert durch Erhöhen um eins eines ganzzahligen Wertes von einem zuletzt verwendeten Wert und Auswählen einer daraus resultierenden erhöhten Ganzzahl als erstem Schlüsselwert erzeugt, z.B. 0000 + 1 = 0001, 0001 + 1 = 0002, ...
  • Gemäß einer anderen Ausführungsform erhält man das erste Schlüsselpaar durch Identifizieren des Primärschlüsselnamens in der Sammlung oder Menge von unstrukturierten Datensätzen aus einem oder mehreren der unstrukturierten Datensätze in der Menge. In dieser Ausführungsform enthält jeder unstrukturierte Datensatz in der Menge von unstrukturierten Datensätzen den Primärschlüsselnamen irgendwo im Datensatz selbst. Darüber hinaus ist dieser Primärschlüsselname eindeutig gegenüber anderen Primärschlüsselnamen, die in anderen, in der strukturierten Datenbank gespeicherten Dateien verwendet werden. Auf diese Weise wird ein Primärschlüsselname bereitgestellt, der spezifisch für die Menge von unstrukturierten Datensätzen ist und diese Datensätze, nachdem sie als Datei in der strukturierten Datenbank gespeichert wurden, von anderen darin gespeicherten Dateien unterscheidet.
  • In einer weiteren Ausführungsform wird der erste Schlüsselwert, der dem unstrukturierten Datensatz zugehörig ist, durch Auswählen eines ganzzahligen Wertes erzeugt, der in keinem anderen unstrukturierten Datensatz der Sammlung oder Menge von unstrukturierten Datensätzen als Schlüsselwert verwendet wird. Auf diese Weise kann der unstrukturierte Datensatz von allen anderen Datensätzen in der Sammlung oder Menge von unstrukturierten Datensätzen durch die darin enthaltenen Schlüsselwerte unterschieden werden.
  • In Arbeitsschritt 608 wird der Primärschlüsselwert gehasht, um einen Hash-Wert zu erhalten. Jeder bekannte Hash-Algorithmus kann verwendet werden, um den Hash-Wert zu erzeugen. Bei bevorzugten Ansätzen stellt der Hash-Algorithmus eine minimale Anzahl von Kollisionen auf Grundlage einer beliebigen erwarteten Eingabe bereit, z.B. der unstrukturierten Datensätze.
  • In einer Ausführungsform kann der Hash-Algorithmus auf das gesamte erste Schlüsselpaar statt nur auf den ersten Schlüsselwert angewendet werden. In einer weiteren Ausführungsform kann das Verfahren 600 Identifizieren von Metadaten in dem unstrukturierten Datensatz umfassen. In dieser Ausführungsform kann der Hash-Algorithmus zusätzlich zu den Metadaten auf das gesamte erste Schlüsselpaar statt nur auf den ersten Schlüsselwert angewendet werden. Gemäß diesem Ansatz wird der unstrukturierte Datensatz beim Erstellen des geänderten Datensatzes mit dem Hash-Wert auf Grundlage des ersten Schlüsselpaares und der Metadaten aktualisiert.
  • In Arbeitsschritt 610 wird der unstrukturierte Datensatz aktualisiert, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen, der in einem strukturierten Rahmen mithilfe eines Index des strukturierten Rahmens gesucht werden kann, der den Indizierungsschlüssel für den geänderten Datensatz enthält.
  • In Arbeitsschritt 612 wird der geänderte Datensatz in der strukturierten Datenbank gespeichert. Darüber hinaus können bei einigen Ansätzen alle verbleibenden unstrukturierten Datensätze aus der Sammlung oder Menge von unstrukturierten Datensätzen, die mit dem geänderten Datensatz verbunden sind, nach Ändern gemäß Verfahren 600 ebenfalls in der strukturierten Datenbank gespeichert werden.
  • In Arbeitsschritt 614 wird der Index der strukturierten Datenbank aktualisiert, um einen Eintrag für den geänderten Datensatz aufzunehmen. Der Eintrag, der in den Index aufgenommen wird, enthält mindestens den Hash-Wert, der umgekehrt gehasht werden kann, um mindestens den ersten Schlüsselwert zu erhalten, der dem unstrukturierten Datensatz zugehörig ist. Darüber hinaus kann nach dem Aktualisieren des Index der unstrukturierte Datensatz mithilfe des Index gesucht werden, sodass er schnell lokalisiert werden kann, was eine Verbesserung gegenüber herkömmlichen Techniken darstellt, die sich auf langsamere und/oder umständlichere Techniken zum Lokalisieren unstrukturierter Datensätze in einem strukturierten oder unstrukturierten Rahmen stützen.
  • Bei einigen Ansätzen kann der Index der strukturierten Datenbank aktualisiert werden, um Einträge für alle verbleibenden unstrukturierten Datensätze aus der Sammlung oder Menge von unstrukturierten Datensätzen gemäß Verfahren 600 aufzunehmen.
  • Gemäß einer Ausführungsform kann das Verfahren 600 weiterhin Empfangen einer Anforderung zum Zugreifen auf den unstrukturierten Datensatz umfassen. Diese Anforderung kann den für den gewünschten Datensatz spezifischen Hash-Wert oder das Primärschlüsselname:Schlüsselwert-Paar oder nur den für den gewünschten Datensatz spezifischen Primärschlüsselwert enthalten. Das Verfahren 600 kann ferner Abfragen des Index der strukturierten Datenbank (mithilfe des Hash-Wertes) umfassen, um eine Position des geänderten Datensatzes zu ermitteln. Nachdem der geänderte Datensatz (der vor dem Speichern in der strukturierten Datenbank ein unstrukturierter Datensatz war) lokalisiert wurde, kann der ursprüngliche, nicht geänderte Datensatzteil des geänderten Datensatzes als Reaktion auf Empfangen der Anforderung zum Zugreifen auf den unstrukturierten Datensatz ausgegeben werden (z.B. gedruckt, auf einem Monitor oder Bildschirm angezeigt, übertragen oder anderweitig an einen entfernt angeordneten Computer gesendet werden usw.).
  • Gemäß einer anderen Ausführungsform kann das Verfahren 600 Erstellen eines Sekundärindex für die strukturierte Datenbank umfassen. In dieser Ausführungsform ist jeder Eintrag in dem Sekundärindex mit einem Datensatz der strukturierten Datenbank verbunden. Jeder Eintrag enthält mindestens die folgenden Informationen: Metadaten eines bestimmten Datensatzes, eine Anzahl von Basiszeigern für den bestimmten Datensatz, einen Versionsanzeiger für den Sekundärindex, eine Länge für einen Sekundärindexschlüssel, einen Wert für den Sekundärindexschlüssel und einen oder mehrere Basisschlüssel. Jedes dieser Felder wird später ausführlicher beschrieben. Bei dem einen oder den mehreren Basisschlüsseln handelt es sich um Hash-Werte, von denen jeder einzelne (z.B. auf einer Eins-zu-Eins-Basis, wo für jeden der Hash-Werte ein anderer Basisschlüssel übereinstimmt) mit einem Hash-Wert eines einzelnen Primärschlüsselwerts eines bestimmten unstrukturierten Datensatzes übereinstimmt, der als geänderter Datensatz in der strukturierten Datenbank gespeichert ist. Die strukturierte Datenbank lässt sich mit dem einem oder den mehreren Basisschlüsseln durchsuchen, sodass nach Abfragen des Sekundärindex mit einem der Basiszeiger für den jeweiligen Datensatz ein oder mehrere Einträge im Primärindex mit einem oder mehreren der Basisschlüssel ermittelt werden können, wodurch der oder die gewünschten Datensätze innerhalb der strukturierten Datenbank lokalisiert werden können.
  • Das Verfahren 600 kann mit einem Datensystem durchgeführt werden, das ein VSAM verwendet, z.B. in einer IBM® z/OS®-Umgebung, oder mit jedem anderen System in verschiedenen Ansätzen, das ein VSAM verwendet, wie es nach dem Stand der Technik bekannt ist.
  • Das Verfahren 600 kann in einem System und/oder einem Computerprogrammprodukt implementiert werden. Beispielsweise kann ein System eine Verarbeitungsschaltung und eine mit der Verarbeitungsschaltung integrierte, von der Verarbeitungsschaltung ausführbare oder mit der Verarbeitungsschaltung integrierte und von der Verarbeitungsschaltung ausführbare Logik enthalten. Mit integriert ist gemeint, dass es sich bei der Verarbeitungsschaltung um einen Hardwareprozessor handelt, in dem eine fest codierte Logik enthalten ist, wie z.B. eine ASIC, eine FPGA usw. Mit ausführbar durch ist gemeint, dass die Verarbeitungsschaltung so konfiguriert ist, dass sie Softwarelogik ausführt, um eine von der Softwarelogik verlangte Funktionalität zu erreichen, wobei der Prozessor möglicherweise eine MPU, eine CPU, ein Mikroprozessor usw. ist. Die Logik ist so konfiguriert, dass sie die Verarbeitungsschaltung veranlasst, das Verfahren 600 durchzuführen, und ist auf einem durch einen Computer lesbaren Speichermedium gespeichert, auf das die Verarbeitungsschaltung zugreifen kann.
  • In einem anderen Beispiel kann ein Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen enthalten. Bei dem durch einen Computer lesbaren Speichermedium kann es sich um jede geeignete, nach dem Stand der Technik bekannte Speichereinheit handeln, die so konfiguriert ist, dass sie Informationen speichert und den Computerzugriff auf die darin gespeicherten Informationen ermöglicht. In dieser Ausführungsform sind die enthaltenen Programmanweisungen durch eine Verarbeitungsschaltung ausführbar und veranlassen die Verarbeitungsschaltung, das Verfahren 600 durchzuführen.
  • Einige Vorteile der in 6 beschriebenen Ausführungsform umfassen eine höhere Zugriffsgeschwindigkeit auf die unstrukturierten Daten, nachdem diese in dem strukturierten Rahmen gespeichert wurden, und eine bessere Suchbarkeit über den Primärindex (und Alternativindizes, die auf Grundlage der unstrukturierten Daten erstellt wurden). Darüber hinaus wird eine vollständige Datei (die eine Mehrzahl von Datensätzen enthalten kann) nicht neu geschrieben, wenn ein oder mehrere darin enthaltene Datensätze aktualisiert werden, im Gegensatz zu unstrukturierten Daten, die in Dateien als Byte-Strom gespeichert sind, für den es erforderlich ist, dass die gesamte Datei neu geschrieben wird, um jeden der darin enthaltenen Datensätze zu aktualisieren. Unstrukturierte Daten, die gemäß der vorliegenden Ausführungsform in dem strukturierten Rahmen gespeichert werden, können auf Dokument- oder Datensatzebene aktualisiert werden, wodurch die Gesamtmenge an E/A, die im Aktualisierungsprozess verwendet wird, verringert und die Leistung der strukturierten Datenbank in Verbindung mit dem Verarbeiten der darin gespeicherten unstrukturierten Datensätze erhöht wird.
  • Ein unstrukturierter Datensatz kann jedes beliebige Format haben und kann in einem unstrukturierten Rahmen jedes bekannten Typs gespeichert werden. Angenommen, es handelt sich in diesem Beispiel bei den unstrukturierten Datensätzen um BSON- und/oder JSON-Dokumente und die unstrukturierte Datenbank ist eine NoSQL-Datenbank. Jedes BSON- und/oder JSON-Dokument, das in einer NoSQL-Datenbank gespeichert wird, enthält eine Menge von Schlüsselname-Schlüsselwert-Paaren, die als eine Zeichenfolge gespeichert werden. Eine Gruppe dieser Dokumente wird als Sammlung oder Datenbank bezeichnet. Bei einer VSAM-Datenbank handelt es sich ebenfalls um eine Sammlung von Datensätzen, jeder Datensatz hat jedoch einen konsistenten Primärschlüssel, der durch Offset und Länge festgelegt ist, die in jedem Datensatz gespeichert sind, der spezifisch für eine bestimmte, in der VSAM-Datenbank gespeicherte Datei ist. Ein wesentlicher Unterschied zwischen einer NoSQL-Datenbank und einer VSAM-Datenbank besteht darin, dass jeder VSAM-Schlüssel aus Daten aus dem Datensatz über einen festen Offset gebildet wird, während NoSQL-Dokumente Schlüssel/Wert-Paare enthalten, die in den Daten gespeichert sind, aber keinen festen Offset für jedes Paar haben.
  • Angenommen, in diesem Beispiel enthält ein im JSON-Format gespeichertes Dokument diese Zeichenfolge:
    • {„firstname“:„Tom“,„lastname“:„Jones“,„zipcode“:11111 }
  • In dieser Zeichenfolge gibt es drei Schlüsselname-Schlüsselwert-Paare. Der erste Schlüsselname ist „firstname“ (Vorname) und hat einen Schlüsselwert „Tom“. Der Offset dieses speziellen Feldes ist 1, da das erste Zeichen des Schlüsselnamens in der Schlüsselname:Schlüsselwert-Zeichenfolge an Position 1 beginnt (durch Verwenden einer 0-gestützten Indizierung). Aufgrund der variablen Länge des Feldes ist der Offset des zweiten Feldes jedoch ohne Überprüfen des Dokuments nicht sicher bekannt und kann sich im Laufe der Lebensdauer des Dokuments ändern oder verändert werden. Jedes Feld wird nur durch den Namen vor dem Doppelpunkt referenziert, und der Datenwert folgt dem Doppelpunkt vor dem nächsten Komma oder der schließenden Klammer.
  • Umgekehrt verwenden VSAM-Datensätze ein Format, bei dem ein Offset für jeden Datenwert fest vorgegeben ist und sich nicht ändert. Außerdem speichert das VSAM im Gegensatz zu einem unstrukturierten Dokument wie JSON oder BSON nicht den Schlüsselnamen in den Daten. Angenommen, dass in einem Datensatz die gleichen Informationen wie im vorhergehenden Beispiel gespeichert werden, kann ein VSAM-Datensatz beispielsweise das folgende Format aufweisen:
    • [Tom..... Jones... 1111]
  • Der VSAM-Schlüssel für diesen Datensatz wird auf Grundlage eines Offsets und einer Länge gebildet. Zum Beispiel würde ein Schlüssel mit einem Offset von 0 und einer Länge von 8, z.B. KEY(0 8), zu einem Schlüssel führen, der die Daten auf Grundlage des Vornamens organisiert (Offset 0, Länge 8).
  • Gemäß einer Ausführungsform kann ein unstrukturiertes Dokument im Rahmen einer VSAM-Datenbank so gespeichert werden, dass VSAM-Anforderungen das schnelle Auffinden unstrukturierter Dokumente innerhalb einer VSAM-Datenbank auf Grundlage eines Schlüsselname:Schlüsselwert-Paares ermöglichen. Dadurch wird sowohl die Flexibilität unstrukturierter Daten als auch die Geschwindigkeit der VSAM-Indizierung genutzt.
  • In dieser Ausführungsform wird jedem unstrukturierten Dokument entweder ein konsistenter Schlüsselname zugewiesen, oder es wird ein konsistenter Schlüsselname innerhalb jedes unstrukturierten Datensatzes gefunden. Dieser Schlüsselname wird mit den zugehörigen Schlüsselwerten verwendet, um den VSAM-Primärschlüssel zu bilden. Der VSAM-Primärschlüssel wird zum Erstellen des VSAM-Index verwendet, um das Dokument in einer VSAM-Datenbank zu lokalisieren, auf der der VSAM-Index aufgebaut ist. In einer bestimmten Ausführungsform kann ein Standardschlüssel für alle unstrukturierten Datensätze verwendet werden, z.B. „_id“ oder eine andere geeignete standardmäßige Schlüsselzeichenfolge, die wahrscheinlich nicht bereits im Dokument vorkommt. In einer zweiten Ausführungsform wird als Reaktion darauf, dass ein Benutzer kein Dokument bereitgestellt hat, das das zum Indizieren verwendete Schlüsselname:Schlüsselwert-Paar enthält, der Schlüsselname automatisch in das unstrukturierte Dokument eingefügt und ein Wert für den entsprechenden Schlüsselwert erzeugt. In einer weiteren Implementierung kann es sich bei diesem Schlüsselwert um einen ganzzahligen Wert handeln, der für jeden zusätzlichen Datensatz ansteigt und bei 1 mit einer vorgegebenen Länge beginnt, die mit der Schlüsselwertlänge übereinstimmt, z.B. „00000001“, „00000002“ usw. Dieser Standardschlüsselname wird gemäß einem Ansatz bei der Dateidefinition festgelegt.
  • Als Reaktion auf eine PUT- oder UPDATE-Anforderung, dass dem VSAM ein bestimmtes Dokument bereitgestellt wird, kann ein weitergeleitetes Dokument (die Anforderung, die an das VSAM weitergeleitet wird) in einer Ausführungsform nach dem in der Anforderung angegebenen Schlüsselname:Schlüsselwert-Paar gescannt werden. Der Schlüsselwert von diesem Paar wird dann in ein Hash-Wertfeld fester Länge gehasht (z.B. 64 Bytes, 128 Bytes, 256 Bytes oder ein anderer geeigneter vorbestimmter Wert). Als Reaktion darauf, dass der Schlüsselname in dem weitergeleiteten Dokument nicht gefunden wird, wird der angeforderte Schlüsselname automatisch hinzugefügt, und ein Schlüsselwert wird erzeugt, der auf einem inkrementellen Zähler oder einem anderen systematischen Verfahren zum Erzeugen eindeutiger Schlüsselwerte, die innerhalb der Datenbank nicht dupliziert werden, beruhen kann. Dieser Wert wird dann mit internen Metadaten verknüpft, die dem Dokument entnommen werden, und dem Originaldokument hinzugefügt.
  • Wenn beispielsweise eine Datenbankanforderung nach PUT in dem folgenden Dokument { „_id“:0001,„firstname“:„John“,„lastname“:„Snow“ } ausgegeben wird, sucht das Verfahren nach dem _id-Schlüsselnamenfeld und verwendet den Schlüsselwert von 0001, der dann auf einen vorgegebenen Wert fester Länge gehasht wird. Dieses Hashen kann mit jedem beliebigen Hash-Algorithmus durchgeführt werden, solange es für jede mögliche Eingabe ein Mindestmaß an Kollisionen erzeugt. Dieser Wert wird mit dem Originaldokument und möglicherweise einigen Metadaten verknüpft, um eine Hash-ID zu erzeugen. In einem Beispiel kann die Hash-ID lauten: <gehashtes _id-Feld für feste Anzahl von Bytes + reservierter Bereich><Metadaten>{ „_id“:0001,„firstname“:„John“, „lastname“:„Snow“ }. Dieser neue Datensatz wird an die zugrunde liegende VSAM-Struktur zum Speichern innerhalb einer VSAM-Datei weitergeleitet und auf Grundlage des neu erstellten eindeutigen Schlüssels indiziert. Das Ergebnis ist eine VSAM-Datei, wobei jeder VSAM-Datensatz ein Dokument enthält. In diesem Beispiel indiziert das VSAM den Datensatz auf Grundlage einer ersten Schwellenwertanzahl von Bytes des Datensatzes, z.B. die ersten 66 Bytes, die ersten 132 Bytes, die ersten 264 Bytes usw., indem ein VSAM-Index-Offset von 0 und eine Länge entsprechend der Schwellenwertanzahl von Bytes verwendet werden.
  • In einer anderen Ausführungsform kann für eine GET DIRECT-Anforderung ein Wert an die VSAM-Struktur weitergeleitet werden, z.B. von einem Benutzer, Administrator oder einer anderen Routine. In einem Beispiel kann ein Wert weitergeleitet werden, der „GET 0001“ angibt. In dieser Ausführungsform wird dieser Wert (0001) mithilfe desselben Hash-Algorithmus wie oben beschriebenen gehasht, um einen VSAM-Schlüssel zu erzeugen. Dieser erzeugte VSAM-Schlüssel wird an die zugrunde liegende VSAM-Struktur weitergeleitet, z.B. über eine GET DIR-Anforderung. Im Beispiel von GET 0001 wird der Wert 0001 auf eine vorgegebene Länge, z.B. 128 Bytes, gehasht, um einen Hash-Wert zu erzeugen. Der reservierte Bereich wird verknüpft, und dieser Hash-Wert wird als VSAM-Schlüssel an die VSAM-Struktur weitergeleitet, z.B. über eine RPL-Anforderung.
  • In einer anderen Ausführungsform ähnelt die ERASE-Funktionalität der GET DIRECT-Anforderung, bei der der weitergeleitete Wert gehasht und der VSAM-Schlüssel anhand des Hash-Werts aufgebaut wird. Anschließend wird die ERASE-Anforderung an die zugrunde liegende VSAM-Struktur weitergeleitet.
  • In einem Beispiel kann ein typisches BSON-Objekt in einem VSAM-Datensatz wie unten dargestellt gespeichert werden.
  • BSON in UTF-8 (einfacher Fall, nur „_id:00001“) HEX: 13000000 02 5F6964 00 05000000 3030303031 00 Felder: Gesamtlänge, Typ, „_id“, Endeanzeiger, Länge, „0 0 0 0 0 1“, Endeanzeiger Oder um es pro Feld aufzuschlüsseln: Gesamtlänge:x'13000000' (Little-Endian) Typ: x'02' Schlüssel „_id“: x'5F6964' Endeanzeiger: x'00' Wertlänge: x'05000000' (Little-Endian) Wert „00001“: x'3030303031' Endeanzeiger: x'00'
  • In diesem Beispiel können die Daten, die in einem VSAM-Datensatz gespeichert sind, die folgenden Informationen enthalten:
    Figure DE112018005692T5_0001
  • In diesem Beispiel mit hexadezimaler Nummerierung befindet sich der SCHLÜSSEL vom Offset x'00' bis x'83'. Die Metadaten für den Schlüssel befinden sich vom Offset x'84' bis x'A9', und das eigentliche BSON-Dokument befindet sich vor der Schlüsselerzeugung und dem Hashen vom Offset x'AB' bis x'BE'. Darüber hinaus kann in einem weiteren Beispiel die GET FRD-Schnittstelle verwendet werden, um das erste Dokument in der Sammlung zurückzusenden. Wenn auf diese GET FRD eine GET SEQ folgt, wird jeder Datensatz sequenziell in der Reihenfolge des Hash-Schlüssels zurückgesendet, beginnend mit dem ersten Dokument, das mit dem Hash-Schlüssel übereinstimmt, über die gesamte VSAM-Datei, bis das letzte Dokument zurückgesendet ist.
  • Gemäß einer Ausführungsform kann eine Anwendungsschicht, die auf einer Ebene über den hier beschriebenen Verfahren arbeitet, die zurückgesendeten Dokumente scannen, um nach einem bestimmten Wert unter den Schlüsselname:Schlüsselwert-Paaren zu suchen. Darüber hinaus können, wie zuvor beschrieben, Alternativschlüssel erzeugt werden, die wie ein Primärschlüssel auf einem Schlüsselname:Schlüsselwert-Paar beruhen. Es kann ein Alternativindex (AIX) erstellt werden, der alle Dokumente in der Datei scannt, nach dem Schlüsselnamen (aus dem Schlüsselname:Schlüsselwert-Paar) sucht und dann einen VSAM-Datensatz zurücksendet, der den Alternativschlüssel mit dem Primärschlüssel verbindet. Diese Daten können zum Suchen nach Dokumenten auf Grundlage des Schlüsselname:Schlüsselwert-Alternativpaares verwendet werden.
  • Gemäß einer Ausführungsform senden nachfolgende GET-Anforderungen für Alternativschlüssel, die nicht eindeutig sind, jedes Dokument in der Reihenfolge zurück, in der es im Alternativindex gespeichert ist. Wenn ein Benutzer eine Suche nach einem Wert und einem bestimmten Schlüsselname:Schlüsselwert-Paar mit diesem neuen Alternativindex startet, weist der Benutzer die Schnittstelle an, einen bestimmten Alternativindex (PATH OPEN) zu verwenden, und gibt dann eine GET-Anforderung mit dem angeforderten Wert aus. Als Reaktion auf eine solche Anforderung wird der Alternativindex nach dem Primärschlüssel durchsucht, der dem Alternativschlüssel entspricht. Sobald diese Informationen vorliegen, wird der Primärindex nach dem Primärschlüssel durchsucht, der direkt auf das angeforderte Dokument verweist, das dann an den Benutzer zurückgesendet werden kann.
  • Mit Bezug nunmehr auf 7 wird ein Verfahren 700 gemäß einer Ausführungsform gezeigt. Das Verfahren 700 kann gemäß der vorliegenden Erfindung unter anderem in jeder der in den 1 bis 5 abgebildeten Umgebungen in verschiedenen Ausführungsformen ausgeführt werden. Natürlich können mehr oder weniger Arbeitsschritte als die speziell in 7 beschriebenen im Verfahren 700 enthalten sein, wie es für den Fachmann beim Lesen dieser Beschreibungen offensichtlich ist.
  • Jeder der Schritte des Verfahrens 700 kann von geeigneten Komponenten der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 700 in verschiedenen Ausführungsformen teilweise oder vollständig von einem Mikroprozessor, einem Server, einem Großrechner, einer Verarbeitungsschaltung mit einem oder mehreren Prozessoren oder einer anderen Einheit mit einem oder mehreren Prozessoren durchgeführt werden. Die Verarbeitungsschaltung, z.B. Prozessor(en), Chip(s) und/oder Modul(e), die in Hardware und/oder Software implementiert sind und vorzugsweise mindestens eine Hardwarekomponente aufweisen, können in einer beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 700 durchzuführen. Zu Beispielen für solche Prozessoren gehören eine MPU, eine CPU, eine ASIC, eine FPGA usw., Kombinationen davon oder jede andere geeignete, nach dem Stand der Technik bekannte Datenverarbeitungseinheit, ohne darauf beschränkt zu sein.
  • In einer Ausführungsform kann die Betriebsumgebung ein Datensystem umfassen, das zu einer Gruppe von zusätzlichen Systemen innerhalb der Umgebung gehören kann. In einer anderen Ausführungsform kann das Datensystem einen Server, einen Personal Computer, eine mobile Einheit oder jede andere Einheit umfassen, der/die in der Lage ist, Programmanweisungen auszuführen. In noch einer weiteren Ausführungsform kann das Datensystem in eine virtuelle Speicherumgebung eingebunden sein. Das Datensystem kann zum Beispiel Teil einer VSAM-Umgebung sein.
  • Wie in 7 gezeigt, kann das Verfahren 700 mit dem Arbeitsschritt 702 beginnen, bei dem ein unstrukturierter Datensatz empfangen wird, der auf der JavaScript Object Notation (JSON) oder der Binary JavaScript Object Notation (BSON) beruht, z.B. an einer Datenbankverwaltungsschnittstelle oder einem anderen logischen Aufbau oder einer anderen physischen Einheit, die so konfiguriert sind, dass sie eine strukturierte Datenbank verwalten.
  • In Arbeitsschritt 704 wird der Datensatz mithilfe eines proprietären oder vom Benutzer bereitgestellten Parsers geparst, um mindestens die folgenden Informationen zu ermitteln: eine Gesamtlänge des unstrukturierten Datensatzes, eine Anzahl von Feldern im unstrukturierten Datensatz, eine Länge für die Felder im unstrukturierten Datensatz und eine Reihenfolge der Felder, wie sie im unstrukturierten Datensatz gespeichert sind.
  • In Arbeitsschritt 706 wird ein Primärschlüsselname erhalten, und der Primärschlüsselname ist einer Menge von Datensätzen zugehörig, die den unstrukturierten Datensatz enthält. Diese anderen Datensätze in der Menge der Datensätze können dem unstrukturierten Datensatz zugehörig sein, nachdem sie bei einem Ansatz in der strukturierten Datenbank gespeichert wurden.
  • In Arbeitsschritt 708 wird ein Primärschlüsselwert erzeugt, der dem unstrukturierten Datensatz zugehörig ist. Bei einem Ansatz kann der Primärschlüsselwert durch Erhöhen eines ganzzahligen Wertes um eins und Auswählen eines resultierenden Wertes als Primärschlüsselwert erzeugt werden. Bei einem anderen Ansatz kann eine Zufallszahl ausgewählt werden, solange sie nicht für andere Datensätze innerhalb einer Datei verwendet wurde, die in der strukturierten Datenbank gespeichert ist, die den unstrukturierten Datensatz enthält.
  • In Arbeitsschritt 710 wird der Primärschlüsselwert in einem Primärschlüsselname:Schlüsselwert-Paar mithilfe eines beliebigen bekannten Hash-Algorithmus gehasht, um einen Hash-Wert zu erhalten. Der Hash-Algorithmus sollte Kollisionen für alle Datensätze innerhalb der Datei vermeiden, die den unstrukturierten Datensatz enthält.
  • In Arbeitsschritt 712 wird der unstrukturierte Datensatz mit den darin enthaltenen Originaldaten durch Hinzufügen oder Einbinden des Primärschlüsselname:Schlüsselwert-Paares und des Hash-Wertes als Indizierungsschlüssel aktualisiert oder neu geschrieben, um einen geänderten Datensatz zu erzeugen.
  • In Arbeitsschritt 714 wird der geänderte Datensatz in einer VSAM-Datenbank gespeichert, die über einen Primärindex, z.B. KSDS, durchsuchbar ist.
  • In Arbeitsschritt 716 wird der Index (KSDS) der VSAM-Datenbank aktualisiert, um einen Eintrag für den geänderten Datensatz aufzunehmen. Dieser Eintrag enthält mindestens den aus dem Primärschlüsselwert des unstrukturierten Datensatzes erzeugten Hash-Wert.
  • In einer Ausführungsform kann das Verfahren 700 Identifizieren von Metadaten im Datensatz und Aktualisieren des Datensatzes mit den Metadaten in Verbindung mit dem Primärschlüsselname:Schlüsselwert-Paar und dem Hash-Wert beim Erzeugen des geänderten Datensatzes umfassen.
  • In einer anderen Ausführungsform kann das Verfahren 700 Empfangen einer Anforderung zum Zugreifen auf den Datensatz enthalten. In dieser Ausführungsform kann die Anforderung das Primärschlüsselname:Schlüsselwert-Paar, den für den Datensatz spezifischen Hash-Wert oder den für den Datensatz spezifischen Primärschlüsselwert enthalten. Nach Empfangen der Anforderung kann der Primärschlüsselwert des Primärschlüsselname:Schlüsselwert-Paares gehasht werden, um den Hash-Wert zu erhalten, wobei ein umgekehrter Hash-Algorithmus zum Hash-Algorithmus verwendet wird, der beim Speichern der Datensätze in der Datenbank verwendet wird. Danach kann der KSDS-Index der VSAM-Datenbank abgefragt werden, um eine Position des geänderten Datensatzes innerhalb der Datenbank zu ermitteln, und der Teil des geänderten Datensatzes, der den Datensatz aufweist, kann als Reaktion auf Empfangen der Anforderung zum Zugreifen auf den Datensatz ausgegeben werden.
  • Gemäß einer anderen Ausführungsform kann das Verfahren 700 Erstellen eines Sekundärindex für die VSAM-Datenbank enthalten. In dieser Ausführungsform ist jeder Eintrag in dem Sekundärindex mit einem Datensatz der VSAM-Datenbank verbunden. Darüber hinaus enthält jeder Eintrag in dem Sekundärindex mindestens die folgenden Informationen: Metadaten eines bestimmten Datensatzes, eine Anzahl von Basiszeigern für den bestimmten Datensatz, einen Versionsanzeiger für den Sekundärindex, eine Länge für einen Sekundärindexschlüssel, einen Wert für den Sekundärindexschlüssel und einen oder mehrere Basisschlüssel. Bei dem einen oder den mehreren Basisschlüsseln handelt es sich um Hash-Werte, von denen jeder mit einem Hash-Wert eines einzelnen Primärschlüsselwerts eines bestimmten Datensatzes übereinstimmt, der als geänderter Datensatz in der VSAM-Datenbank gespeichert ist. Darüber hinaus ist die VSAM-Datenbank mit einem oder mehreren Basisschlüsseln durchsuchbar.
  • Das Verfahren 700 kann mit einem Datensystem durchgeführt werden, das ein VSAM verwendet, z.B. in einer IBM® z/OS®-Umgebung, oder mit jedem anderen System bei verschiedenen Ansätzen, das ein VSAM verwendet, wie es nach dem Stand der Technik bekannt ist.
  • Das Verfahren 700 kann in einem System und/oder einem Computerprogrammprodukt implementiert werden. Beispielsweise kann ein System eine Verarbeitungsschaltung und eine mit der Verarbeitungsschaltung integrierte, von der Verarbeitungsschaltung ausführbare oder mit der Verarbeitungsschaltung integrierte und von der Verarbeitungsschaltung ausführbare Logik enthalten. Mit integriert ist gemeint, dass es sich bei der Verarbeitungsschaltung um einen Hardwareprozessor handelt, in dem eine fest codierte Logik enthalten ist, wie z.B. eine ASIC, eine FPGA usw. Mit ausführbar durch ist gemeint, dass die Verarbeitungsschaltung so konfiguriert ist, dass sie Softwarelogik ausführt, um eine von der Softwarelogik verlangte Funktionalität zu erreichen, wobei der Prozessor möglicherweise eine MPU, eine CPU, ein Mikroprozessor usw. ist. Die Logik ist so konfiguriert, dass sie die Verarbeitungsschaltung veranlasst, das Verfahren 700 durchzuführen, und ist auf einem durch einen Computer lesbaren Speichermedium gespeichert, auf das die Verarbeitungsschaltung zugreifen kann.
  • In einem anderen Beispiel kann ein Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen enthalten. Bei dem durch einen Computer lesbaren Speichermedium kann es sich um jede geeignete, nach dem Stand der Technik bekannte Speichereinheit handeln, die so konfiguriert ist, dass sie Informationen speichert und den Computerzugriff auf die darin gespeicherten Informationen ermöglicht. In dieser Ausführungsform sind die enthaltenen Programmanweisungen durch eine Verarbeitungsschaltung ausführbar und veranlassen die Verarbeitungsschaltung, das Verfahren 700 durchzuführen.
  • Zu einigen Vorteilen der in 7 beschriebenen Ausführungsform zählen eine höhere Zugriffsgeschwindigkeit auf die unstrukturierten Daten, nachdem diese in dem strukturierten Rahmen gespeichert wurden, und eine bessere Suchbarkeit über den Primärindex (und Alternativindizes, die auf Grundlage der unstrukturierten Daten erstellt wurden). Darüber hinaus wird eine vollständige Datei (die eine Mehrzahl von Datensätzen enthalten kann) nicht neu geschrieben, wenn ein oder mehrere darin enthaltene Datensätze aktualisiert werden, im Gegensatz zu unstrukturierten Daten, die in Dateien als Byte-Strom gespeichert sind, für den es erforderlich ist, dass die gesamte Datei neu geschrieben wird, um jeden der darin enthaltenen Datensätze zu aktualisieren. Unstrukturierte Daten, die gemäß der vorliegenden Ausführungsform in dem strukturierten Rahmen gespeichert werden, können auf Dokument- oder Datensatzebene aktualisiert werden, wodurch die Gesamtmenge an E/A, die im Aktualisierungsprozess verwendet wird, verringert und die Leistung der strukturierten Datenbank in Verbindung mit dem Verarbeiten der darin gespeicherten unstrukturierten Datensätze erhöht wird.
  • Mit Bezug nunmehr auf 8 wird ein Verfahren 800 gemäß einer Ausführungsform gezeigt. Das Verfahren 800 kann gemäß der vorliegenden Erfindung unter anderem in jeder der in den 1 bis 5 abgebildeten Umgebungen in verschiedenen Ausführungsformen ausgeführt werden. Natürlich können mehr oder weniger Arbeitsschritte als die speziell in 8 beschriebenen im Verfahren 800 enthalten sein, wie es für den Fachmann beim Lesen dieser Beschreibungen offensichtlich ist.
  • Jeder der Schritte des Verfahrens 800 kann von geeigneten Komponenten der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 800 in verschiedenen Ausführungsformen teilweise oder vollständig von einem Mikroprozessor, einem Server, einem Großrechner, einer Verarbeitungsschaltung mit einem oder mehreren Prozessoren oder einer anderen Einheit mit einem oder mehreren Prozessoren durchgeführt werden. Die Verarbeitungsschaltung, z.B. Prozessor(en), Chip(s) und/oder Modul(e), die in Hardware und/oder Software implementiert sind und vorzugsweise mindestens eine Hardwarekomponente aufweisen, können in einer beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 800 durchzuführen. Zu Beispielen für solche Prozessoren gehören eine MPU, eine CPU, eine ASIC, eine FPGA usw., Kombinationen davon oder jede andere geeignete, nach dem Stand der Technik bekannte Datenverarbeitungseinheit, ohne darauf beschränkt zu sein.
  • In einer Ausführungsform kann die Betriebsumgebung ein Datensystem umfassen, das zu einer Gruppe von zusätzlichen Systemen innerhalb der Umgebung gehören kann. In einer anderen Ausführungsform kann das Datensystem einen Server, einen Personal Computer, eine mobile Einheit oder jede andere Einheit umfassen, der/die in der Lage ist, Programmanweisungen auszuführen. In noch einer weiteren Ausführungsform kann das Datensystem in eine virtuelle Speicherumgebung eingebunden sein. Das Datensystem kann zum Beispiel Teil einer VSAM-Umgebung sein.
  • Wie in 8 gezeigt, kann das Verfahren 800 mit dem Arbeitsschritt 802 beginnen, bei dem eine unstrukturierte Datenbank empfangen wird. Die unstrukturierte Datenbank, die auch als nichtrelationale Datenbank bezeichnet werden kann, enthält eine Mehrzahl unstrukturierter Datensätze. Die unstrukturierten Datensätze können in jedem bekannten Format gespeichert werden.
  • In Arbeitsschritt 804 wird mindestens ein Datensatz der Mehrzahl von unstrukturierten Datensätzen geparst, z.B. durch einen proprietären oder vom Benutzer bereitgestellten Parser, der spezifisch für das Format ist, in dem die unstrukturierten Datensätze gespeichert sind, um mindestens die folgenden Informationen zu ermitteln: eine Gesamtlänge des unstrukturierten Datensatzes, eine Anzahl von Feldern in dem mindestens einen Datensatz, eine Länge für die Felder des mindestens einen Datensatzes und eine Reihenfolge der Felder, wie sie in dem mindestens einen Datensatz gespeichert sind. Jede dieser Informationen trägt dazu bei, zu definieren und zu erklären, wie Informationen in den Datensätzen gespeichert werden, was es ermöglicht, diese Informationen beim Verwalten der Datensätze in einer strukturierten Datenbank zu identifizieren und zu sortieren, auch ohne die unstrukturierten Datensätze in einem strukturierten Format neu zu schreiben.
  • In Arbeitsschritt 806 wird ein Primärschlüsselname erhalten, und der Primärschlüsselname ist der Mehrzahl von unstrukturierten Datensätzen zugehörig. In einer Ausführungsform umfasst Zuordnen des Primärschlüsselnamens Speichern des Primärschlüsselnamens in jedem der unstrukturierten Datensätze.
  • Gemäß einer Ausführungsform kann der Primärschlüsselname durch Zuweisen einer Standardkennung wie „_id“, „ | name |“, „%key“ usw. oder einer anderen geeigneten Markierung oder Kennzeichnung, die normalerweise nicht in den Datensätzen vorkommen würde, zu jedem der unstrukturierten Datensätze, die innerhalb derselben Datei gespeichert sind, erzeugt werden.
  • In Arbeitsschritt 808 wird eine Mehrzahl von Schlüsselwerten erzeugt, einer für jeden unstrukturierten Datensatz der Mehrzahl von unstrukturierten Datensätzen. Gemäß einer Ausführungsform kann die Mehrzahl von Schlüsselwerten dadurch erzeugt werden, dass für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen ein eindeutiger ganzzahliger Wert einzeln ausgewählt und diese Werte den unstrukturierten Datensätzen einzeln zugewiesen werden.
  • In Arbeitsschritt 810 wird ein Primärschlüsselwert für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen durch Verwenden eines bekannten Hash-Algorithmus gehasht, um eine Mehrzahl von Hash-Werten auf einer Eins-zu-Eins-Basis mit der Mehrzahl von unstrukturierten Datensätzen zu erhalten, z.B. für jeden einzelnen Datensatz einen Hash-Wert.
  • In Arbeitsschritt 812 wird jeder Datensatz der Mehrzahl von unstrukturierten Datensätzen aktualisiert und/oder geändert, indem das Primärschlüsselname:Schlüsselwert-Paar und der für jeden Datensatz spezifische Hash-Wert einzeln hinzugefügt werden. Dadurch wird eine Mehrzahl geänderter Datensätze erzeugt, wobei jeder geänderte Datensatz ein entsprechendes Primärschlüsselname:Schlüsselwert-Paar und einen Hash-Wert enthält.
  • In einer anderen Ausführungsform kann der Schlüsselwert im Primärschlüsselname:Schlüsselwert-Paar vor dem Speichern des Wertes in dem geänderten Datensatz gehasht werden.
  • In Arbeitsschritt 814 wird die Mehrzahl von geänderten Datensätzen in einer strukturierten oder halbstrukturierten Datenbank, z.B. einer VSAM-Datenbank, gespeichert.
  • In Arbeitsschritt 816 wird ein Primärindex der strukturierten oder halbstrukturierten Datenbank aktualisiert, um Einträge für alle geänderten Datensätze aufzunehmen. In einer Ausführungsform kann es sich bei dem Primärindex um einen KSDS-Index einer VSAM-Datenbank handeln. Jeder Eintrag enthält einen der Mehrzahl von Hash-Werten, sodass alle unstrukturierten Datensätze über den Primärindex indiziert werden können.
  • In einer Ausführungsform kann das Verfahren 800 Identifizieren von Metadaten in jedem der Datensätze der Mehrzahl von unstrukturierten Datensätzen umfassen. In dieser Ausführungsform wird jeder Hash-Wert der Mehrzahl von Hash-Werten durch Hashen des Primärschlüsselwerts für jeden Datensatz zusammen mit den identifizierten Metadaten erzeugt, die für einen entsprechenden Datensatz spezifisch sind, um die Hash-Werte bereitzustellen. Die „Metadaten“ umfassen jeweils ausgewählte Informationen aus und/oder über jeden der unstrukturierten Datensätze, z.B. Versionsnummer, Änderungs- oder Erstellungsdatum oder einige andere bekannte Informationen, die in den Datensätzen enthalten sind und sich wahrscheinlich mindestens in einigen der Datensätze unterscheiden. Zu den zusätzlichen Metadaten gehören Namen, Adressen, Zeiten, Werte, Parameter usw., ohne darauf beschränkt zu sein.
  • Gemäß einer anderen Ausführungsform kann das Verfahren 800 Erstellen eines oder mehrerer Sekundärindizes für die strukturierte oder halbstrukturierte Datenbank umfassen. Jeder Eintrag in einem Sekundärindex ist mit einem Datensatz verbunden, der in der strukturierten oder halbstrukturierten Datenbank gespeichert ist, und kann mindestens die folgenden Informationen enthalten: Metadaten eines bestimmten Datensatzes, eine Anzahl von Basiszeigern für den bestimmten Datensatz, einen Versionsanzeiger für den Sekundärindex, eine Länge für einen Sekundärindexschlüssel, einen Wert für den Sekundärindexschlüssel und einen oder mehrere Basisschlüssel. Jeder der Basisschlüssel ist ein Hash-Wert, der mit dem gehashten Schlüsselwert eines bestimmten Datensatzes übereinstimmt, der in der strukturierten oder halbstrukturierten Basisdatenbank gespeichert ist. Die strukturierte oder halbstrukturierte Datenbank ist mithilfe des einen oder der mehreren Basisschlüssel durchsuchbar, und daher kann/können der Sekundärindex/die Sekundärindizes verwendet werden, um Informationen zu erhalten, die zum Suchen im Primärindex und zum Lokalisieren eines bestimmten Datensatzes verwendet werden können.
  • Das Verfahren 800 kann mit einem Datensystem durchgeführt werden, das ein VSAM verwendet, z.B. in einer IBM® z/OS®-Umgebung, oder mit jedem anderen System bei verschiedenen Ansätzen, das ein VSAM verwendet, wie es nach dem Stand der Technik bekannt ist.
  • Das Verfahren 800 kann in einem System und/oder einem Computerprogrammprodukt implementiert werden. Beispielsweise kann ein System eine Verarbeitungsschaltung und eine mit der Verarbeitungsschaltung integrierte, von der Verarbeitungsschaltung ausführbare oder mit der Verarbeitungsschaltung integrierte und von der Verarbeitungsschaltung ausführbare Logik enthalten. Mit integriert ist gemeint, dass es sich bei der Verarbeitungsschaltung um einen Hardwareprozessor handelt, in dem eine fest codierte Logik enthalten ist, wie z.B. eine ASIC, eine FPGA usw. Mit ausführbar durch ist gemeint, dass die Verarbeitungsschaltung so konfiguriert ist, dass sie Softwarelogik ausführt, um eine von der Softwarelogik verlangte Funktionalität zu erreichen, wobei der Prozessor möglicherweise eine MPU, eine CPU, ein Mikroprozessor usw. ist. Die Logik ist so konfiguriert, dass sie die Verarbeitungsschaltung veranlasst, das Verfahren 800 durchzuführen, und ist auf einem durch einen Computer lesbaren Speichermedium gespeichert, auf das die Verarbeitungsschaltung zugreifen kann.
  • In einem anderen Beispiel kann ein Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen enthalten. Bei dem durch einen Computer lesbaren Speichermedium kann es sich um jede geeignete, nach dem Stand der Technik bekannte Speichereinheit handeln, die so konfiguriert ist, dass sie Informationen speichert und den Computerzugriff auf die darin gespeicherten Informationen ermöglicht. In dieser Ausführungsform sind die enthaltenen Programmanweisungen durch eine Verarbeitungsschaltung ausführbar und veranlassen die Verarbeitungsschaltung, das Verfahren 800 durchzuführen.
  • Zu einigen Vorteilen der in 8 beschriebenen Ausführungsform zählen eine höhere Zugriffsgeschwindigkeit auf die unstrukturierten Daten, nachdem diese in dem strukturierten Rahmen gespeichert wurden, und eine bessere Suchbarkeit über den Primärindex (und Alternativindizes, die auf Grundlage der unstrukturierten Daten erstellt wurden). Darüber hinaus wird eine vollständige Datei (die eine Mehrzahl von Datensätzen enthalten kann) nicht neu geschrieben, wenn ein oder mehrere darin enthaltene Datensätze aktualisiert werden, im Gegensatz zu unstrukturierten Daten, die in Dateien als Byte-Strom gespeichert sind, für den es erforderlich ist, dass die gesamte Datei neu geschrieben wird, um jeden der darin enthaltenen Datensätze zu aktualisieren. Unstrukturierte Daten, die gemäß der vorliegenden Ausführungsform in dem strukturierten Rahmen gespeichert werden, können auf Dokument- oder Datensatzebene aktualisiert werden, wodurch die Gesamtmenge an E/A, die im Aktualisierungsprozess verwendet wird, verringert und die Leistung der strukturierten Datenbank in Verbindung mit dem Verarbeiten der darin gespeicherten unstrukturierten Datensätze erhöht wird.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/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 zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele 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 Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin 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 ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende 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/Verarbeitungs-Einheiten 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, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit 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/Verarbeitungs-Einheit 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 oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche 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 letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit 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, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt 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. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten 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, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder 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 Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten 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 Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder 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 Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine in den Prozessor integrierte und/oder von ihm ausführbare Logik enthalten, wobei die Logik so konfiguriert ist, dass sie einen oder mehrere der hier beschriebenen Prozessschritte ausführt. Mit „integriert mit“ ist gemeint, dass der Prozessor eine eingebettete Logik als Hardwarelogik hat, wie z.B. eine ASIC, eine FPGA usw. Mit ausführbar durch den Prozessor ist gemeint, dass die Logik Hardwarelogik ist; Softwarelogik wie z.B. Firmware, Teil eines Betriebssystems, Teil eines Anwendungsprogramms usw.; oder eine Kombination aus Hardware- und Softwarelogik, auf die der Prozessor zugreifen kann und die so konfiguriert ist, dass der Prozessor veranlasst wird, beim Ausführen durch den Prozessor eine bestimmte Funktionalität auszuführen. Softwarelogik kann auf einem lokalen und/oder entfernt angeordneten Speicher eines beliebigen Speichertyps gespeichert werden, wie er nach dem Stand der Technik bekannt ist. Jeder nach dem Stand der Technik bekannte Prozessor kann verwendet werden, z.B. ein Software-Prozessormodul und/oder ein Hardwareprozessor wie eine ASIC, eine FPGA, eine CPU, eine integrierte Schaltung (IC), eine Grafikverarbeitungseinheit (GPU) usw.
  • Es ist offensichtlich, dass die verschiedenen Merkmale der oben genannten Systeme und/oder Methodiken in beliebiger Weise kombiniert werden können, sodass sich aus den obigen Beschreibungen eine Mehrzahl an Kombinationen ergibt.
  • Verschiedene Ausführungsformen wurden zwar oben beschrieben, es versteht sich jedoch, dass diese nur beispielhaft und nicht beschränkend sind. Daher sind Umfang und Anwendungsbereich einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen beschränkt, sondern werden nur gemäß den folgenden Ansprüchen und ihren Äquivalenten definiert.

Claims (25)

  1. Verfahren, das aufweist: Empfangen eines unstrukturierten Datensatzes; Parsen des unstrukturierten Datensatzes, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen, wobei die Charakterisierung Bestimmen umfasst von: einer Gesamtlänge des unstrukturierten Datensatzes; einer Anzahl von Feldern; einer Länge für die Felder; und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind; Erhalten eines ersten Schlüsselpaares, das einen Primärschlüsselnamen aufweist, der einem ersten Schlüsselwert zugehörig ist; Hashen des mindestens ersten Schlüsselwerts, um einen Hash-Wert zu erhalten; Aktualisieren des unstrukturierten Datensatzes, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen; Speichern des geänderten Datensatzes in einer strukturierten Datenbank; und Aktualisieren eines Index der strukturierten Datenbank, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  2. Verfahren nach Anspruch 1, bei dem der Hash-Wert durch Hashen des ersten Schlüsselpaares erzeugt wird, wobei das Verfahren weiterhin aufweist: Identifizieren von Metadaten in dem unstrukturierten Datensatz; und Aktualisieren des unstrukturierten Datensatzes mit den Metadaten, die dem ersten Schlüsselpaar zugehörig sind, und dem Hash-Wert beim Erzeugen des geänderten Datensatzes.
  3. Verfahren nach Anspruch 1, wobei das Erhalten des ersten Schlüsselpaares weiterhin aufweist: Erzeugen des Primärschlüsselnamens, der einer Menge von unstrukturierten Datensätzen zugehörig ist, die den unstrukturierten Datensatz enthält, wobei der Primärschlüsselname für alle unstrukturierten Datensätze in der Menge von unstrukturierten Datensätzen verwendet wird; und Erzeugen des ersten Schlüsselwerts, der dem unstrukturierten Datensatz zugehörig ist, indem ein ganzzahliger Wert um eins erhöht und eine resultierende erhöhte Ganzzahl als erster Schlüsselwert ausgewählt wird.
  4. Verfahren nach Anspruch 1, wobei das Erhalten des ersten Schlüsselpaares weiterhin aufweist: Identifizieren des Primärschlüsselnamens in einer Menge von unstrukturierten Datensätzen, wobei jeder unstrukturierte Datensatz in der Menge von unstrukturierten Datensätzen den Primärschlüsselnamen enthält; und Erzeugen des ersten Schlüsselwerts, der dem unstrukturierten Datensatz zugehörig ist, indem ein ganzzahliger Wert ausgewählt wird, der nicht als Schlüsselwert in anderen unstrukturierten Datensätzen der Menge von unstrukturierten Datensätzen verwendet wird.
  5. Verfahren nach Anspruch 1, das weiterhin aufweist: Empfangen einer Anforderung zum Zugreifen auf den unstrukturierten Datensatz; Abfragen des Index der strukturierten Datenbank, um eine Position des geänderten Datensatzes zu ermitteln; und Ausgeben eines Teils des geänderten Datensatzes, der den unstrukturierten Datensatz aufweist, als Reaktion auf Empfangen der Anforderung zum Zugreifen auf den unstrukturierten Datensatz.
  6. Verfahren nach Anspruch 1, das ferner Erstellen eines Sekundärindex für die strukturierte Datenbank aufweist, wobei jeder Eintrag in dem Sekundärindex mit einem Datensatz der strukturierten Datenbank verbunden ist, wobei jeder Eintrag in dem Sekundärindex enthält: Metadaten eines bestimmten Datensatzes; eine Anzahl von Basiszeigern für den bestimmten Datensatz; einen Versionsanzeiger für den Sekundärindex; eine Länge für einen Sekundärindexschlüssel; einen Wert für den Sekundärindexschlüssel; und einen oder mehrere Basisschlüssel, wobei es sich bei dem einen oder den mehreren Basisschlüsseln um Hash-Werte handelt, von denen jeder einzelne mit einem Hash-Wert eines einzelnen Primärschlüsselwerts eines bestimmten unstrukturierten Datensatzes übereinstimmt, der als geänderter Datensatz in der strukturierten Datenbank gespeichert ist, wobei die strukturierte Datenbank mithilfe des einen oder der mehreren Basisschlüssel durchsuchbar ist.
  7. Computerprogrammprodukt, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darin enthaltenen Programmanweisungen aufweist, wobei das durch einen Computer lesbare Speichermedium kein flüchtiges Signal an sich ist, wobei die enthaltenen Programmanweisungen durch eine Verarbeitungsschaltung ausführbar sind, um die Verarbeitungsschaltung zu veranlassen: einen unstrukturierten Datensatz durch die Verarbeitungsschaltung zu empfangen; den unstrukturierten Datensatz durch die Verarbeitungsschaltung zu parsen, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen, wobei die Charakterisierung Bestimmen umfasst von: einer Gesamtlänge des unstrukturierten Datensatzes; einer Anzahl von Feldern; einer Länge für die Felder; und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind; ein erstes Schlüsselpaar durch die Verarbeitungsschaltung zu erhalten, das einen Primärschlüsselnamen aufweist, der einem ersten Schlüsselwert zugehörig ist; den mindestens ersten Schlüsselwert durch die Verarbeitungsschaltung zu hashen, um einen Hash-Wert zu erhalten; den unstrukturierten Datensatz durch die Verarbeitungsschaltung zu aktualisieren, um den Hash-Wert als Indizierungsschlüssel aufzunehmen und so einen geänderten Datensatz zu erzeugen; den geänderten Datensatz durch die Verarbeitungsschaltung in einer strukturierten Datenbank zu speichern; und einen Index der strukturierten Datenbank durch die Verarbeitungsschaltung zu aktualisieren, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  8. Computerprogrammprodukt nach Anspruch 7, bei dem der Hash-Wert durch Hashen des ersten Schlüsselpaares erzeugt wird und bei dem die enthaltenen Programmanweisungen durch die Verarbeitungsschaltung weiter ausführbar sind, um die Verarbeitungsschaltung zu veranlassen: Metadaten im unstrukturierten Datensatz durch die Verarbeitungsschaltung zu identifizieren; und den unstrukturierten Datensatz mit den Metadaten, die dem ersten Schlüsselpaar zugehörig sind, und dem Hash-Wert beim Erzeugen des geänderten Datensatzes durch die Verarbeitungsschaltung zu aktualisieren.
  9. Computerprogrammprodukt nach Anspruch 7, wobei die enthaltenen Programmanweisungen, die die Verarbeitungsschaltung veranlassen, das erste Schlüsselpaar zu erhalten, die Verarbeitungsschaltung veranlassen: den Primärschlüsselnamen durch die Verarbeitungsschaltung zu erzeugen, der einer Menge von unstrukturierten Datensätzen zugehörig ist, die den unstrukturierten Datensatz enthält, wobei der Primärschlüsselname für alle unstrukturierten Datensätze in der Menge von unstrukturierten Datensätzen verwendet wird; und den ersten Schlüsselwert durch die Verarbeitungsschaltung zu erzeugen, der dem unstrukturierten Datensatz zugehörig ist, indem ein ganzzahliger Wert um eins erhöht und eine resultierende erhöhte Ganzzahl als erster Schlüsselwert ausgewählt wird.
  10. Computerprogrammprodukt nach Anspruch 7, wobei die enthaltenen Programmanweisungen, die die Verarbeitungsschaltung veranlassen, das erste Schlüsselpaar zu erhalten, die Verarbeitungsschaltung veranlassen: den Primärschlüsselnamen in einer Menge von unstrukturierten Datensätzen durch die Verarbeitungsschaltung zu identifizieren, wobei jeder unstrukturierte Datensatz in der Menge von unstrukturierten Datensätzen den Primärschlüsselnamen enthält; und den ersten Schlüsselwert durch die Verarbeitungsschaltung zu erzeugen, der dem unstrukturierten Datensatz zugehörig ist, indem ein ganzzahliger Wert ausgewählt wird, der nicht als Schlüsselwert in anderen unstrukturierten Datensätzen der Menge von unstrukturierten Datensätzen verwendet wird.
  11. Computerprogrammprodukt nach Anspruch 7, wobei die enthaltenen Programmanweisungen durch die Verarbeitungsschaltung weiterhin ausführbar sind, um die Verarbeitungsschaltung zu veranlassen: eine Anforderung zum Zugreifen auf den unstrukturierten Datensatz durch die Verarbeitungsschaltung zu empfangen; den Index der strukturierten Datenbank durch die Verarbeitungsschaltung abzufragen, um eine Position des geänderten Datensatzes zu ermitteln; und einen Teil des geänderten Datensatzes durch die Verarbeitungsschaltung auszugeben, der den unstrukturierten Datensatz aufweist, als Reaktion auf Empfangen der Anforderung zum Zugreifen auf den unstrukturierten Datensatz.
  12. Computerprogrammprodukt nach Anspruch 7, wobei die enthaltenen Programmanweisungen von der Verarbeitungsschaltung weiterhin ausführbar sind, um die Verarbeitungsschaltung zu veranlassen, einen Sekundärindex für die strukturierte Datenbank durch die Verarbeitungsschaltung zu erstellen, wobei jeder Eintrag in dem Sekundärindex mit einem Datensatz der strukturierten Datenbank verbunden ist, wobei jeder Eintrag in dem Sekundärindex enthält: Metadaten eines bestimmten Datensatzes; eine Anzahl von Basiszeigern für den bestimmten Datensatz; einen Versionsanzeiger für den Sekundärindex; eine Länge für einen Sekundärindexschlüssel; einen Wert für den Sekundärindexschlüssel; und einen oder mehrere Basisschlüssel, wobei es sich bei dem einen oder den mehreren Basisschlüsseln um Hash-Werte handelt, von denen jeder einzelne mit einem Hash-Wert eines einzelnen Primärschlüsselwerts eines bestimmten unstrukturierten Datensatzes übereinstimmt, der als geänderter Datensatz in der strukturierten Datenbank gespeichert ist, wobei die strukturierte Datenbank mithilfe des einen oder der mehreren Basisschlüssel durchsuchbar ist.
  13. System, das aufweist: eine Verarbeitungsschaltung; einen Speicher; und eine im Speicher gespeicherte Logik, die, wenn sie von der Verarbeitungsschaltung ausgeführt wird, die Verarbeitungsschaltung veranlasst: einen unstrukturierten Datensatz zu empfangen; den unstrukturierten Datensatz zu parsen, um eine Charakterisierung des unstrukturierten Datensatzes festzulegen, wobei die Charakterisierung Bestimmen umfasst von: einer Anzahl von Feldern; einer Länge für die Felder; und einer Reihenfolge der Felder, wie sie in dem unstrukturierten Datensatz gespeichert sind; ein erstes Schlüsselpaar zu erhalten, das einen Primärschlüsselnamen aufweist, der einem ersten Schlüsselwert zugehörig ist; mindestens den ersten Schlüsselwert zu hashen, um einen Hash-Wert zu erhalten; den unstrukturierten Datensatz zu aktualisieren, um den Hash-Wert aufzunehmen und so einen geänderten Datensatz zu erzeugen; den geänderten Datensatz in einer strukturierten Datenbank zu speichern; und einen Index der strukturierten Datenbank zu aktualisieren, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  14. System nach Anspruch 13, wobei der Hash-Wert durch Hashen des ersten Schlüsselpaares erzeugt wird und wobei die Logik die Verarbeitungsschaltung weiterhin veranlasst: Metadaten in dem unstrukturierten Datensatz zu identifizieren; und den unstrukturierten Datensatz mit den Metadaten, die dem ersten Schlüsselpaar zugehörig sind, und dem Hash-Wert beim Erzeugen des geänderten Datensatzes zu aktualisieren.
  15. System nach Anspruch 13, wobei die Logik, die die Verarbeitungsschaltung veranlasst, das erste Schlüsselpaar zu erhalten, die Verarbeitungsschaltung weiterhin veranlasst: den Primärschlüsselnamen zu erzeugen, der einer Menge von unstrukturierten Datensätzen zugehörig ist, die den unstrukturierten Datensatz enthält, wobei der Primärschlüsselname für alle unstrukturierten Datensätze in der Menge von unstrukturierten Datensätzen verwendet wird; und den ersten Schlüsselwert zu erzeugen, der dem unstrukturierten Datensatz zugehörig ist, indem ein ganzzahliger Wert um eins erhöht und eine resultierende erhöhte Ganzzahl als erster Schlüsselwert ausgewählt wird.
  16. System nach Anspruch 13, wobei die Logik, die die Verarbeitungsschaltung veranlasst, das erste Schlüsselpaar zu erhalten, die Verarbeitungsschaltung weiterhin veranlasst: den Primärschlüsselnamen in einer Menge von unstrukturierten Datensätzen zu identifizieren, wobei jeder unstrukturierte Datensatz in der Menge von unstrukturierten Datensätzen den Primärschlüsselnamen enthält; und den ersten Schlüsselwert zu erzeugen, der dem unstrukturierten Datensatz zugehörig ist, indem ein ganzzahliger Wert ausgewählt wird, der nicht als Schlüsselwert in anderen unstrukturierten Datensätzen der Menge von unstrukturierten Datensätzen verwendet wird.
  17. System nach Anspruch 13, wobei die Logik die Verarbeitungsschaltung weiterhin veranlasst: eine Anforderung zum Zugreifen auf den unstrukturierten Datensatz zu empfangen; den Index der strukturierten Datenbank abzufragen, um eine Position des geänderten Datensatzes zu ermitteln; und einen Teil des geänderten Datensatzes auszugeben, der den unstrukturierten Datensatz aufweist, als Reaktion auf Empfangen der Anforderung zum Zugreifen auf den unstrukturierten Datensatz.
  18. System nach Anspruch 13, wobei die Logik die Verarbeitungsschaltung weiterhin veranlasst, einen Sekundärindex für die strukturierte Datenbank zu erzeugen, wobei jeder Eintrag in dem Sekundärindex mit einem Datensatz der strukturierten Datenbank verbunden ist, wobei jeder Eintrag in dem Sekundärindex enthält: Metadaten eines bestimmten Datensatzes; eine Anzahl von Basiszeigern für den bestimmten Datensatz; einen Versionsanzeiger für den Sekundärindex; eine Länge für einen Sekundärindexschlüssel; einen Wert für den Sekundärindexschlüssel; und einen oder mehrere Basisschlüssel, wobei es sich bei dem einen oder den mehreren Basisschlüsseln um Hash-Werte handelt, von denen jeder einzelne mit einem Hash-Wert eines einzelnen Primärschlüsselwerts eines bestimmten unstrukturierten Datensatzes übereinstimmt, der als geänderter Datensatz in der strukturierten Datenbank gespeichert ist, wobei die strukturierte Datenbank mithilfe des einen oder der mehreren Basisschlüssel durchsuchbar ist.
  19. Verfahren, das aufweist: Empfangen eines unstrukturierten Datensatzes, der auf der JavaScript Object Notation (JSON) oder der Binary JavaScript Object Notation (BSON) beruht; Parsen des Datensatzes, um zu ermitteln: eine Gesamtlänge des unstrukturierten Datensatzes; eine Anzahl von Feldern; eine Länge für die Felder; und eine Reihenfolge der Felder, wie sie in dem Datensatz gespeichert sind; Erzeugen eines Primärschlüsselnamens und Zuordnen des Primärschlüsselnamens zu einer Menge von Datensätzen, die den Datensatz enthält; Erzeugen des ersten Schlüsselwerts, der dem Datensatz zugehörig ist, indem ein ganzzahliger Wert um eins erhöht und ein resultierender Wert ausgewählt wird; Hashen des Primärschlüsselwerts, um einen Hash-Wert zu erhalten; Aktualisieren des Datensatzes, um einen geänderten Datensatz zu erzeugen, indem das Primärschlüsselname:Schlüsselwert-Paar und der Hash-Wert als Indizierungsschlüssel hinzugefügt werden; Speichern des geänderten Datensatzes in einer Virtual-Storage-Access-Method-(VSAM)-Datenbank; und Aktualisieren eines Index einer Datei in Schlüsselfolge (KSDS) einer VSAM-Datenbank, um einen Eintrag für den geänderten Datensatz aufzunehmen, wobei der Eintrag den Hash-Wert enthält.
  20. Verfahren nach Anspruch 19, das weiterhin aufweist: Identifizieren von Metadaten in dem Datensatz; und Aktualisieren des Datensatzes mit den Metadaten in Verbindung mit dem ersten Primärschlüsselname:Schlüsselwert-Paar und dem Hash-Wert beim Erzeugen des geänderten Datensatzes.
  21. Verfahren nach Anspruch 19, das weiterhin aufweist: Empfangen einer Anforderung zum Zugreifen auf den Datensatz, wobei die Anforderung das Primärschlüsselname:Schlüsselwert-Paar enthält; Hashen des Primärschlüsselwerts, um den Hash-Wert zu erhalten; Abfragen des KSDS-Index einer VSAM-Datenbank, um eine Position des geänderten Datensatzes auf Grundlage des Hash-Wertes zu ermitteln; und Ausgeben eines Teils des geänderten Datensatzes, der den Datensatz aufweist, als Reaktion auf Empfangen der Anforderung zum Zugreifen auf den Datensatz.
  22. Verfahren nach Anspruch 19, das ferner Erstellen eines Sekundärindex für die VSAM-Datenbank aufweist, wobei jeder Eintrag in dem Sekundärindex mit einem Datensatz der VSAM-Datenbank verbunden ist, wobei jeder Eintrag in dem Sekundärindex enthält: Metadaten eines bestimmten Datensatzes; eine Anzahl von Basiszeigern für den bestimmten Datensatz; einen Versionsanzeiger für den Sekundärindex; eine Länge für einen Sekundärindexschlüssel; einen Wert für den Sekundärindexschlüssel; und einen oder mehrere Basisschlüssel, wobei es sich bei dem einen oder den mehreren Basisschlüsseln um Hash-Werte handelt, von denen jeder einzelne mit einem Hash-Wert eines einzelnen Primärschlüsselwerts eines bestimmten Datensatzes übereinstimmt, der als geänderter Datensatz in der VSAM-Datenbank gespeichert ist, wobei die VSAM-Datenbank mithilfe des einen oder der mehreren Basisschlüssel durchsuchbar ist.
  23. Verfahren, das aufweist: Empfangen einer unstrukturierten Datenbank, die eine Mehrzahl von darin enthaltenen unterstrukturierten Datensätzen aufweist; Parsen mindestens eines Datensatzes der Mehrzahl von unstrukturierten Datensätzen, um zu ermitteln: eine Gesamtlänge des mindestens einen Datensatzes; eine Anzahl von Feldern in dem mindestens einen Datensatz; eine Länge für die Felder des mindestens einen Datensatzes; und eine Reihenfolge der Felder, wie sie in dem mindestens einen Datensatz gespeichert sind; Erzeugen eines Primärschlüsselnamens und Zuordnen des Primärschlüsselnamens zu der Mehrzahl von unstrukturierten Datensätzen; Erzeugen einer Mehrzahl von Schlüsselwerten, wobei jeder Schlüsselwert einem Datensatz der Mehrzahl von unstrukturierten Datensätzen zugehörig ist, indem ein eindeutiger ganzzahliger Wert einzeln als Schlüsselwert für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen ausgewählt wird; Hashen eines Primärschlüsselwerts für jeden Datensatz der Mehrzahl von unstrukturierten Datensätzen, um eine Mehrzahl von Hash-Werten zu erhalten; Aktualisieren jedes Datensatzes der Mehrzahl von unstrukturierten Datensätzen, indem das Primärschlüsselname:Schlüsselwert-Paar und ein für jeden geänderten Datensatz spezifischer Hash-Wert einzeln hinzugefügt werden, um eine Mehrzahl von geänderten Datensätzen zu erzeugen; Speichern der Mehrzahl von geänderten Datensätzen in einer strukturierten oder halbstrukturierten Datenbank; und Aktualisieren eines Primärindex der strukturierten oder halbstrukturierten Datenbank, um Einträge für alle geänderten Datensätze aufzunehmen, wobei jeder Eintrag einen Hash-Wert der Mehrzahl von Hash-Werten enthält.
  24. Verfahren nach Anspruch 23, das weiterhin Identifizieren von Metadaten in jedem der Datensätze der Mehrzahl von unterstrukturierten Datensätzen aufweist, wobei jeder Hash-Wert der Mehrzahl von Hash-Werten durch Hashen des Primärschlüsselname:Schlüsselwert-Paares für jeden Datensatz zusammen mit den identifizierten Metadaten erzeugt wird, die spezifisch für einen entsprechenden Datensatz sind.
  25. Verfahren nach Anspruch 23, das ferner Erstellen eines Sekundärindex für die strukturierte oder halbstrukturierte Datenbank aufweist, wobei jeder Eintrag in dem Sekundärindex mit einem Datensatz verbunden ist, der in der strukturierten oder halbstrukturierten Datenbank gespeichert ist, wobei jeder Eintrag in dem Sekundärindex enthält: Metadaten eines bestimmten Datensatzes; eine Anzahl von Basiszeigern für den bestimmten Datensatz; einen Versionsanzeiger für den Sekundärindex; eine Länge für einen Sekundärindexschlüssel; einen Wert für den Sekundärindexschlüssel; und einen oder mehrere Basisschlüssel, wobei es sich bei dem einen oder den mehreren Basisschlüsseln um Hash-Werte handelt, von denen jeder einzelne mit einem Hash-Wert eines einzelnen Primärschlüsselwerts eines bestimmten geänderten Datensatzes übereinstimmt, der in der strukturierten oder halbstrukturierten Datenbank gespeichert ist, wobei die strukturierte oder halbstrukturierte Datenbank mithilfe des einen oder der mehreren Basisschlüssel durchsuchbar ist.
DE112018005692.9T 2017-12-12 2018-12-05 Speichern unstrukturierter daten in einem strukturierten rahmen Pending DE112018005692T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/839,644 2017-12-12
US15/839,644 US20190179948A1 (en) 2017-12-12 2017-12-12 Storing unstructured data in a structured framework
PCT/IB2018/059651 WO2019116167A1 (en) 2017-12-12 2018-12-05 Storing unstructured data in a structured framework

Publications (1)

Publication Number Publication Date
DE112018005692T5 true DE112018005692T5 (de) 2020-07-16

Family

ID=66696858

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018005692.9T Pending DE112018005692T5 (de) 2017-12-12 2018-12-05 Speichern unstrukturierter daten in einem strukturierten rahmen

Country Status (6)

Country Link
US (1) US20190179948A1 (de)
JP (1) JP7146919B2 (de)
CN (1) CN111373390B (de)
DE (1) DE112018005692T5 (de)
GB (1) GB2582234A (de)
WO (1) WO2019116167A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372571B2 (en) 2018-05-07 2022-06-28 Sap Se System and methods for providing a memory slice data structure for use with diverse memory and storage media
US20200050785A1 (en) * 2018-08-10 2020-02-13 Ca, Inc. Database record access through use of a multi-value alternate primary key
US10951395B2 (en) * 2018-08-20 2021-03-16 Fujitsu Limited Data fetching in data exchange networks
US10963353B2 (en) * 2018-10-23 2021-03-30 Capital One Services, Llc Systems and methods for cross-regional back up of distributed databases on a cloud service
CN110175176A (zh) * 2019-05-31 2019-08-27 杭州复杂美科技有限公司 一种kv数据库配置方法、查询方法、设备和存储介质
CN111007986B (zh) * 2019-11-04 2022-09-30 厦门天锐科技股份有限公司 一种基于内存的文本分段传递的方法及装置
US11327962B1 (en) * 2020-01-23 2022-05-10 Rockset, Inc. Real-time analytical database system for querying data of transactional systems
US11113191B1 (en) * 2020-06-21 2021-09-07 Tyson York Winarski Direct and indirect addressing pointers for big data
CN112817980A (zh) * 2021-02-05 2021-05-18 腾讯科技(深圳)有限公司 一种数据索引处理方法、装置、设备及存储介质
US11693852B1 (en) 2021-04-12 2023-07-04 Amdocs Development Limited System, method, and computer program for normalizing a JSON structure
US20220368533A1 (en) * 2021-05-16 2022-11-17 CodeNotary Inc. System and method to cryptographically validate rich query results
CN113253685B (zh) * 2021-05-31 2021-09-24 航天中认软件测评科技(北京)有限责任公司 一种工业数据采集方法、装置、设备及介质
JP7429374B2 (ja) 2021-10-31 2024-02-08 株式会社Datafluct 情報処理システム、情報処理方法及び情報処理プログラム
CN114357054B (zh) * 2022-03-10 2022-06-03 广州宸祺出行科技有限公司 一种基于ClickHouse的非结构化数据的处理方法和装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092061A (en) * 1997-08-15 2000-07-18 International Business Machines Corporation Data partitioning by co-locating referenced and referencing records
JP2000250927A (ja) 1999-02-26 2000-09-14 Nec Commun Syst Ltd データベースの更新・検索方法
US7313657B1 (en) * 2005-03-24 2007-12-25 Sprint Communications Company L.P. Conflict avoidance in data store replication
US20090144220A1 (en) * 2007-11-30 2009-06-04 Yahoo! Inc. System for storing distributed hashtables
US7983421B2 (en) 2008-02-01 2011-07-19 Oracle International Corporation Methods to defend against tampering of audit records
US20090287986A1 (en) 2008-05-14 2009-11-19 Ab Initio Software Corporation Managing storage of individually accessible data units
WO2011057259A1 (en) * 2009-11-09 2011-05-12 Arcsight, Inc. Enabling faster full-text searching using a structured data store
US20130232157A1 (en) * 2012-03-05 2013-09-05 Tammer Eric Kamel Systems and methods for processing unstructured numerical data
US9471711B2 (en) 2013-09-23 2016-10-18 Teradata Us, Inc. Schema-less access to stored data
CN104750809B (zh) * 2015-03-26 2018-05-18 中国科学院软件研究所 一种支持关系模型和键-值结构的混合数据存储方法
CN105677826A (zh) * 2016-01-04 2016-06-15 博康智能网络科技股份有限公司 一种针对海量非结构化数据的资源管理方法
CN105608224A (zh) * 2016-01-13 2016-05-25 广西师范大学 一种提高海量数据查询性能的正交多哈希映射索引方法
US11256746B2 (en) * 2016-04-25 2022-02-22 Oracle International Corporation Hash-based efficient secondary indexing for graph data stored in non-relational data stores
CN106776783B (zh) * 2016-11-24 2019-10-01 福建亿榕信息技术有限公司 非结构化数据存储管理方法和系统

Also Published As

Publication number Publication date
GB202010394D0 (en) 2020-08-19
US20190179948A1 (en) 2019-06-13
CN111373390B (zh) 2024-03-15
WO2019116167A1 (en) 2019-06-20
GB2582234A (en) 2020-09-16
JP2021506030A (ja) 2021-02-18
CN111373390A (zh) 2020-07-03
JP7146919B2 (ja) 2022-10-04

Similar Documents

Publication Publication Date Title
DE112018005692T5 (de) Speichern unstrukturierter daten in einem strukturierten rahmen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112010004652B4 (de) Zuverlässige Replikation mit hohem Durchsatz von umgewandelten Daten in Datensystemen
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE60310255T2 (de) Skalierbarer datenzugang in einem beliebig grossen dokument
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE112018004222T5 (de) Datenbankaufteilung
DE112019000321T5 (de) Transaktionsoperationen in verteilten Multi-Master-Datenverwaltungssystemen
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102013211071A1 (de) Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung
DE102013215661A1 (de) Kontextbezogene Suche nach einer gespeicherten Datei, die einem Graphenknoten zugehörig ist
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE102007037646B4 (de) Computerspeichersystem und Verfahren zum Indizieren, Durchsuchen und zur Datenwiedergewinnung von Datenbanken
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
DE102013208930A1 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE102013200355A1 (de) Zusammenfügen von Dokumenten aud der Grundlage der Kenntnis eines Dokumentenschemas
DE112013003205T5 (de) Verfahren und Vorrichtung zum Verarbeiten von Datenbankdaten in einem verteilten Datenbanksystem
DE112013001751T5 (de) Hybride Adressumsetzung
DE112012000280T5 (de) Organisation von Tabellen mit reduzierten Indizes
DE112011101200T5 (de) Spaltenorientierte Speicher-Darstellungen von Datensätzen
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten
DE102013200030B4 (de) Hash-basiertes verwalten von speicher-ids
DE112010004914B4 (de) Indexieren von Dokumenten

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0017000000

Ipc: G06F0016840000

R084 Declaration of willingness to licence