-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich allgemein auf Computer und insbesondere auf Multiplex-Klassifizierungen zum Komprimieren von Tabellendaten in einer Datenverarbeitungsumgebung.
-
Stand der Technik
-
In der heutigen Gesellschaft sind Computersysteme allgemein üblich. Computersysteme findet man am Arbeitsplatz, zu Hause oder in der Schule. Zu Computersystemen können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten gehören. Datenspeichersysteme oder Plattenspeichersysteme werden zum Verarbeiten und Speichern von Daten verwendet. Ein Speichersystem kann ein oder mehrere Plattenlaufwerke enthalten. Diese Datenverarbeitungssysteme erfordern üblicherweise einen umfangreichen Datenspeicher. Kundendaten oder Daten, die von Benutzern in dem Datenverarbeitungssystem erzeugt werden, belegen einen großen Teil dieses Datenspeichers. Viele dieser Computersysteme enthalten virtuelle Speicherkomponenten.
-
Datenverarbeitungssysteme werden zum Speichern und Verwalten einer Vielfalt von Datentypen wie beispielsweise Tabellendaten verwendet. Tabellendaten sind in der Regel in Zeilen und Spalten gegliedert, um gebräuchliche Tabellen zu bilden, die z. B. in relationalen Tabellen, Textverarbeitungsdokumenten, Arbeitsblättern oder arbeitsblattähnlichen Strukturen oder ähnlichen Datenbankstrukturen verwendet werden. Zum Bilden dieser Tabellen gehört eine Vielfalt von gegliederten Bereichen und Anordnungen für die Zeilen und Spalten. Das eigentliche physische Speichern der Tabellendaten kann jedoch eine Vielfalt von Formen annehmen. Die logische Struktur der Tabellendaten kann zwar mehrdimensional sein, die Tabellendaten können jedoch physisch in linearem Format wie beispielsweise in einem zeilenweisen oder spaltenweisen Format gespeichert werden. Im zeilenweisen Format werden Spaltenwerte einer Zeile aus der tabellenähnlichen Struktur in einem dauerhaften Speicher fortlaufend aneinander grenzend gespeichert. Im spaltenweisen Format dagegen werden für eine gegebene Spalte aus mehreren Zeilen Spaltenwerte der Spalte fortlaufend aneinander grenzend gespeichert.
-
Datenkomprimierung wird häufig dazu verwendet, den Umfang von Daten zu verringern, die erforderlich sind, um eine gegebene Menge von Informationen zu verarbeiten, zu übertragen oder zu speichern. Datenkomprimierung ist die Codierung von Daten zur Verkleinerung ihrer Darstellung. Komprimierung kann zum Beispiel verwendet werden, um die Speicheranforderungen für Dateien zu verringern, um die Datenübertragungsrate in einem Kanal zu vergrößern oder um die Redundanz vor einer Verschlüsselung für eine größere Sicherheit zu verringern. Datenkomprimierung ist für Tabellendatenstrukturen auch von Vorteil, da Datenkomprimierung von Nutzen ist, um die Inanspruchnahme von teuren Ressourcen wie Festplattenspeicherplatz oder Übertragungsbandbreite zu verringern.
-
Kurzdarstellung der Erfindung
-
Technisches Problem
-
Da Speichern von Daten teuer ist, ist es eindeutig wünschenswert, den Umfang des zum Speichern von strukturierten Daten benötigten Speichers zu verringern. Wenn eine Datenfolge darüber hinaus kopiert oder zwischen Speicherplätzen übertragen wird, ist es wünschenswert, den Aufwand bezüglich CPU-Zyklen, Netzwerkverwendung usw. im Datenbankbereich zu verringern, wobei viel Forschungsarbeit in Bezug auf Techniken zum Verwalten von Datenkopien durchgeführt wurde. Bei Tabellendaten würde ein unabhängiges Komprimieren jeder Spalte ein höheres Komprimierungsverhältnis gewährleisten als ein Komprimieren der vollständigen Tabelle mit einem Datenstrom. Der Grund für das erhöhte Komprimierungsverhältnis besteht darin, dass die Daten in jeder Spalte verhältnismäßig homogen sind. Speicher-Steuereinheiten kennen die Tabellenstruktur jedoch nicht, da sie keine Spaltenkomprimierungsalgorithmen anwenden können und aus dem erhöhten Komprimierungsverhältnis keinen Vorteil ziehen können. Effizienz und Produktivität können infolgedessen vermindert sein.
-
Lösung des Problems
-
Dementsprechend und im Hinblick auf das oben Gesagte werden verschiedene beispielhafte Ausführungsformen für Verfahren, Systeme und Computerprogrammprodukte für eine Multiplex-Klassifizierung zum Komprimieren von Tabellendaten bereitgestellt. Bei einer Ausführungsform werden Datensegmente ähnlichen Typs in Klassen klassifiziert, um die Datensegmente in Komprimierungsdatenströmen zu gruppieren, die jeder der Klassen zugehörig sind. Die Komprimierungsdatenströme werden auf der Grundlage einer klassenspezifischen optimierten Codieroperation codiert. Die Komprimierung geht in einen Ausgabepuffer, wobei die Komprimierungsdatenströme extrahiert werden.
-
Zusätzlich zu der vorhergehenden beispielhaften Ausführungsform des Verfahrens werden weitere beispielhafte Ausführungsformen von Systemen und Computerprogrammprodukten bereitgestellt und liefern ähnliche Vorteile. Die vorgehende Darstellung wurde bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, die nachfolgend in der ausführlichen Beschreibung weiter beschrieben werden. Es ist weder vorgesehen, dass diese Darstellung Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands kennzeichnet, noch ist vorgesehen, dass sie als Hilfe beim Festlegen des Umfangs des beanspruchten Gegenstands zu verwenden ist. Der beanspruchte Gegenstand ist nicht auf Ausführungen beschränkt, die einige oder alle der bei dem Hintergrund angegebenen Nachteile beheben.
-
Damit die Vorteile der Erfindung leicht verstanden werden, wird eine genauere Beschreibung der Erfindung, die vorstehend kurz beschrieben wurde, durch Bezugnahme auf spezifische Ausführungsformen gegeben, die in den beigefügten Zeichnungen dargestellt sind. Ausgehend davon, dass diese Zeichnungen Ausführungsformen der Erfindung darstellen und deshalb nicht als Einschränkung ihres Umfangs betrachtet werden dürfen, wird die Erfindung mit größerer Genauigkeit und zusätzlichen Einzelheiten durch die Verwendung der beigefügten Zeichnungen beschrieben und erklärt.
-
Kurzbeschreibung der Zeichnungen
-
1 veranschaulicht eine Computerspeicherumgebung, die eine beispielhafte Speichereinheit aufweist, bei der Aspekte der vorliegenden Erfindung verwirklicht sein können.
-
2 veranschaulicht ein beispielhaftes Blockschaltbild, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem zeigt, bei dem Aspekte der vorliegenden Erfindung verwirklicht sein können.
-
3 ist ein Ablaufplan, der ein beispielhaftes Verfahren für eine Multiplex-Klassifizierung zum Komprimieren von Tabellendaten veranschaulicht.
-
4 veranschaulicht ein beispielhaftes Blockschaubild, das eine Komprimierung auf der Grundlage einer Multiplex-Klassifizierung zeigt.
-
5 veranschaulicht ein beispielhaftes Blockschaubild, das einen Multiplex-Ausgabepuffer zeigt, bei dem Aspekte der vorliegenden Erfindung verwirklicht sein können.
-
6 veranschaulicht ein beispielhaftes Blockschaubild, das eine Multiplex-Klassifizierung für einen Komprimierungspuffer von Tabellendaten zeigt, bei dem Aspekte der vorliegenden Erfindung verwirklicht sein können.
-
7 ist ein Ablaufplan, der ein beispielhaftes Verfahren für ein Codieren einer Multiplex-Klassifizierung zum Komprimieren von Tabellendaten veranschaulicht.
-
8 ist ein Ablaufplan, der ein beispielhaftes Verfahren zum Extrahieren der Multiplex-Klassifizierungsdaten zurück in den ursprünglichen zuvor verarbeiteten Eingabedatenblock veranschaulicht.
-
Beschreibung der Ausführungsformen
-
Wie zuvor erwähnt, ist es aufgrund der Kosten und der für die Datenspeicherung benötigten Ressourcen wünschenswert, die Größe der Kapazität des zum Speichern strukturierter Daten benötigten Speichers zu verringern. Wenn eine Datenfolge darüber hinaus kopiert oder zwischen Speicherplätzen übertragen wird, ist es wünschenswert, die den Aufwand bezüglich CPU-Zyklen, Netzwerkverwendung usw. im Datenbankbereich zu verringern. Bei Tabellendaten würde ein unabhängiges Komprimieren jeder Spalte ein höheres Komprimierungsverhältnis gewährleisten als ein Komprimieren der vollständigen Tabelle mit einem Datenstrom. Der Grund für das erhöhte Komprimierungsverhältnis besteht darin, dass die Daten in jeder Spalte verhältnismäßig homogen sind. Speicher-Steuereinheiten kennen die Tabellenstruktur jedoch nicht, da sie keine Spaltenkomprimierungsalgorithmen anwenden können und aus dem erhöhten Komprimierungsverhältnis keinen Vorteil ziehen können. Effizienz und Produktivität können infolgedessen vermindert sein.
-
Im Gegensatz dazu und um die zuvor beschriebenen Leistungsschwächen und Leistungsprobleme zu beseitigen, stellen die veranschaulichten Ausführungsformen Mechanismen bereit, die eine Multiplex-Klassifizierung zum Komprimieren von Tabellendaten ermöglichen, die ein größeres Komprimierungsverhältnis des Speicherbereichs zum Ergebnis hat, indem für jede Spaltenverarbeitung eine eindeutige Datenstromeinheit ausgewählt wird. Bei einer Ausführungsform stellen die Mechanismen ein Format eines Ausgabepuffercontainers mit einem neuen Block-Array bereit, das Mehrzweckblöcke mit mehreren internen Blockprototypen unterstützt, darunter: Spaltenkomprimierung mit eindeutiger Datenstromeinheit, reguläre Komprimierung, Rohblock und Spaltenkomprimierung mit einer Datenstromeinheit.
-
Bei einer Ausführungsform klassifizieren die Mechanismen der vorliegenden Erfindung lediglich beispielhaft Datensegmente ähnlichen Typs in Klassen, um die Datensegmente in Komprimierungsdatenströmen zu gruppieren, die jeder der Klassen zugehörig sind. Die Komprimierungsdatenströme werden auf der Grundlage einer klassenspezifischen optimierten Codieroperation codiert. Die Komprimierungsdatenströme werden in einem Ausgabepuffer zusammengefasst, und die Komprimierungsdatenströme werden extrahiert.
-
Mit Bezug nunmehr auf 1 ist eine beispielhafte Architektur 10 von Datenspeichersystemen (z. B. virtuellen Bandsystemen) in einer Datenverarbeitungsumgebung dargestellt. Das Computersystem 10 enthält eine Zentraleinheit (CPU) 12, die mit einer oder mehreren Massenspeichereinheiten 14 und einer Speichereinheit 16 verbunden ist. Zu Massenspeichereinheiten können Festplattenlaufwerkeinheiten (HDD-Einheiten), Halbleitereinheiten (SSD-Einheiten) usw. gehören, die in einer redundanten Anordnung unabhängiger Festplatten (redundant array of independent disks, RAID) konfiguriert sein können. Die weiter unten beschriebenen Sicherungsoperationen können an einer oder mehreren Einheiten 14 in dem System 10 oder an anderer Stelle ausgeführt werden. Die Speichereinheit 16 kann einen Speicher wie beispielsweise einen elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM) oder einen Host aus betreffenden Einheiten enthalten. Die Speichereinheit 16 und die Massenspeichereinheit 14 sind über ein signaltragendes Medium mit der CPU 12 verbunden. Die CPU 12 ist ferner über einen Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, das eine angeschlossene Vielzahl von weiteren Computersystemen 22 und 24 aufweist.
-
2 ist ein beispielhaftes Blockschaltbild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Mit Bezug auf 2 sind die Host-Computer 210, 220, 225 dargestellt, die jeweils als Zentraleinheit fungieren, um als Teil eines Datenspeichersystems 200 Datenverarbeitung durchzuführen. Bei den Hosts (physische oder virtuelle Einheiten) 210, 220 und 225 kann es sich um eine oder mehrere neue physische Einheiten oder logische Einheiten handeln, um die Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 umzusetzen. Bei einer Ausführungsform kann das Datenspeichersystem 200 lediglich beispielhaft als System Storage TMDS8000TM von IBM (eingetragenes Warenzeichen) ausgeführt sein. Bei einer Netzwerkverbindung 260 kann es sich um eine Fibre-Channel-Struktur, eine Fibre-Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-over-Ethernet-Struktur oder -Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, jeden anderen E/A-Schnittstellentyp, ein drahtloses Netzwerk, ein drahtgebundenes Netzwerk, ein LAN, ein WAN, eine heterogene, homogene, öffentliche (z. B. das Internet), private Verbindung oder eine Kombination davon handeln. Die Hosts 210, 220 und 225 können lokal sein oder über eine oder mehrere Stellen verteilt sein und mit jeder Art von Struktur (oder Strukturkanal) (nicht in 2 dargestellt) oder Netzwerkadapter 260 zu der Speicher-Steuereinheit 240 wie beispielsweise Fibre Channel, FICON, ESCON, Ethernet, Lichtwellenleiter, drahtloser oder Koaxial-Adapter ausgestattet sein. Das Datenspeichersystem 200 ist dementsprechend für den Datenaustausch mit einem geeigneten Strukturadapter (nicht in 2 dargestellt) oder Netzwerkadapter ausgestattet. Das Datenspeichersystem 200 ist in 1 mit einer Speicher-Steuereinheit 240 und einem Speicher 230 dargestellt.
-
Um ein besseres Verständnis der hier beschriebenen Verfahren zu erleichtern, ist die Speicher-Steuereinheit 240 in 2 als eine einzelne Verarbeitungseinheit dargestellt, die einen Mikroprozessor 242, einen Systemspeicher 243 und einen nichtflüchtigen Speicher (nonvolative storage, ”NVS”) 216 enthält und nachstehend genauer beschrieben wird. Es sei darauf hingewiesen, dass die Speicher-Steuereinheit 240 bei einigen Ausführungsformen aus mehreren Verarbeitungseinheiten besteht, wobei jede ihren eigenen Prozessorkomplex und Systemspeicher aufweist und durch ein spezielles Netzwerk in dem Datenspeichersystem 200 verbunden ist. Der Speicher 230 kann aus einer oder mehreren Speichereinheiten bestehen wie beispielsweise Speicher-Arrays, die durch ein Speichernetzwerk mit der Speicher-Steuereinheit 240 verbunden sind.
-
Bei einigen Ausführungsformen können die im Speicher 230 enthaltenen Einheiten in einer Schleifenarchitektur verbunden sein. Die Speicher-Steuereinheit 240 verwaltet den Speicher 230 und ermöglicht die Verarbeitung von Schreib- und Leseanforderungen, die für den Speicher 230 vorgesehen sind. Der Systemspeicher 243 der Speicher-Steuereinheit 240 speichert Programmbefehle und Daten, auf die der Prozessor 242 zum Ausführen von Funktions- und Verfahrensschritten zugreifen kann, die mit dem Verwalten des Speichers 230 und dem Ausführen der Schritte und Verfahren der vorliegenden Erfindung zum Multiplexer-Spaltenkomprimieren von Tabellendaten in einer Datenverarbeitungsumgebung verbunden sind. Bei einer Ausführungsform enthält der Systemspeicher 243 die Betriebssoftware 250 zum Multiplexer-Spaltenkomprimieren von Tabellendaten in einer Computerspeicherumgebung, die die hier beschriebenen Verfahren und Operationen enthält, gehört zu dieser oder tauscht mit ihr Daten aus. Wie in 2 dargestellt, kann der Systemspeicher 243 außerdem einen Zwischenspeicher 245 für den Speicher 230 enthalten oder mit diesem Daten austauschen, der auch als ”Cachespeicher” bezeichnet wird und zum Puffern von ”Schreibdaten” bzw. ”Lesedaten” dient, die Schreib-/Leseanforderungen und ihre zugehörigen Daten betreffen. Bei einer Ausführungsform ist der Cachespeicher 245 in einer Einheit zugewiesen, die sich außerhalb des Systemspeichers 243 befindet, auf die der Mikroprozessor 242 jedoch zugreifen kann und die dazu dienen kann, neben dem Ausführen der hier beschriebenen Operationen zusätzliche Sicherheit gegenüber Datenverlust zu gewährleisten.
-
Bei einigen Ausführungsformen ist der Cachespeicher 245 mit einem flüchtigen Speicher und einem nichtflüchtigen Speicher ausgeführt und über einen lokalen Bus (nicht in 2 dargestellt) für eine bessere Leistungsfähigkeit des Datenspeichersystems 200 mit dem Mikroprozessor 242 verbunden. Auf den NVS 216, der in der Datenspeicher-Steuereinheit enthalten ist, kann der Mikroprozessor 242 zugreifen, und er dient zum Bereitstellen einer zusätzlichen Unterstützung für Operationen und die Ausführung der vorliegenden Erfindung, wie in anderen Figuren beschrieben. Der NVS 216 kann auch als ”dauerhafter” Zwischenspeicher oder ”Cachespeicher” bezeichnet werden und ist mit einem nichtflüchtigen Speicher ausgeführt, der möglicherweise eine externe Spannungsversorgung nutzt, um darin gespeicherte Daten zu sichern. Der NVS kann in und mit dem Cachespeicher 245 für beliebige Zwecke vorgesehen sein, die geeignet sind, die Zielsetzungen der vorliegenden Erfindung umzusetzen. Bei einigen Ausführungsformen versorgt eine Sicherungs-Spannungsquelle (nicht in 2 dargestellt) wie beispielsweise eine Batterie den NVS 216 mit einer ausreichenden Spannung, damit die darin gespeicherten Daten im Fall eines Spannungsausfalls im Datenspeichersystem 200 erhalten bleiben. Bei bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner als oder gleich groß wie die Gesamtkapazität des Cachespeichers 245.
-
Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten bestehen wie beispielsweise aus Speicher-Arrays. Ein Speicher-Array ist eine logische Gruppierung von einzelnen Speichereinheiten wie beispielsweise eine Festplatte. Bei bestimmten Ausführungsformen besteht der Speicher 230 aus einem JBOD-Bereich (Just a Bunch of Disks) oder einem RAID-Bereich (Redundant Array of Independent Disks). Eine Ansammlung von physischen Speicher-Arrays kann ferner so kombiniert sein, dass eine Rangebene (rank) gebildet wird, die die physische Speicherung von der logischen Konfiguration trennt. Der Speicherraum in einer Rangebene kann logischen Speicherbereichen (logical volumes) zugeordnet sein, die den in einer Schreib-/Leseanforderung spezifizierten Speicherort definieren.
-
Bei einer Ausführungsform kann das Speichersystem wie in 2 gezeigt lediglich beispielhaft einen logischen Speicherbereich oder einfach ”Speicherbereich” enthalten, der verschiedene Arten von Zuordnungen aufweisen kann. Die Speicher 230a, 230b und 230n sind als Rangebenen in dem Datenspeichersystem 200 dargestellt und werden hierin als Rangebene 230a, 230b und 230n bezeichnet. Rangebenen können für das Datenspeichersystem 200 lokal sein oder an einer physisch entfernten Stelle angeordnet sein. Mit anderen Worten, eine lokale Speicher-Steuereinheit kann mit einer entfernt angeordneten Speicher-Steuereinheit verbunden sein und einen Speicher an der entfernt angeordneten Stelle verwalten. Die Rangebene 230a ist so dargestellt, dass sie mit zwei vollständigen Speicherbereichen 234 und 236 sowie einem Teilspeicherbereich 232a konfiguriert ist. Die Rangebene 230b ist mit einem weiteren Teilspeicherbereich 232b dargestellt. Somit ist der Speicherbereich 232 über die Rangebenen 230a und 230b zugeordnet. Die Rangebene 230n ist so dargestellt, dass sie dem Speicherbereich 238 vollständig zugeordnet ist, das heißt, die Rangebene 230n bezieht sich auf den vollständigen physischen Speicher für den Speicherbereich 238. Aus den oben genannten Beispielen wird klar, dass eine Rangebene so konfiguriert sein kann, dass sie ein oder mehrere Teilspeicherbereiche und/oder vollständige Speicherbereiche enthält. Speicherbereich und Rangebenen können weiterhin in sogenannte ”Spuren” (tracks) unterteilt sein, die einen festen Block des Speichers darstellen. Eine Spur ist deswegen einem gegebenen Speicherbereich zugeordnet und kann für eine gegebene Rangebene festgelegt sein.
-
Die Speicher-Steuereinheit 240 kann ein Klassifizierungsmodul 255, ein klassenspezifisches Codiermodul 257, ein Spaltenkomprimierungsmodul 259 und ein Decodiermodul 260 enthalten, um eine Multiplexer-Spaltenkomprimierung von Tabellendaten in einer Datenverarbeitungsumgebung zu unterstützen. Das Klassifizierungsmodul 255, das klassenspezifische Codiermodul 257, das Spaltenkomprimierungsmodul 259 und das Decodiermodul 260 können mit jeder einzelnen Komponente der Speicher-Steuereinheit 240, der Hosts 210, 220, 225 und der Speichereinheiten 230 zusammenwirken. Sowohl das Klassifizierungsmodul 255, das klassenspezifische Codiermodul 257, das Spaltenkomprimierungsmodul 259 als auch das Decodiermodul 260 können strukturell ein vollständiges Modul sein und gemeinsam und in Verbindung für eine Multiplexer-Spaltenkomprimierung von Tabellendaten in einer Datenverarbeitungsumgebung miteinander arbeiten oder einzelne Module darstellen. Das Klassifizierungsmodul 255, das klassenspezifische Codiermodul 257, das Spaltenkomprimierungsmodul 259 und das Decodiermodul 260 können außerdem in dem Cachespeicher 245 oder anderen Komponenten der Speicher-Steuereinheit 240 angeordnet sein, um die Zwecke der vorliegenden Erfindung zu erreichen.
-
Die Speicher-Steuereinheit 240 kann aufgebaut sein mit einem Steuerungs-Switch 241 zum Steuern des Fibre-Channel-Protokolls zu den Host-Computern 210, 220, 225, einem Mikroprozessor 242 zum Steuern der gesamten Speicher-Steuereinheit 240, einem nichtflüchtigen Steuerungsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs der Speicher-Steuereinheit 240, von Daten zur Steuerung und jeder Tabelle, die später beschrieben werden, einem Cachespeicher 245 zum vorübergehenden Speichern (Puffern) von Daten und Puffern 244 zum Unterstützen des Cachespeichers 245 zum Lesen und Schreiben von Daten, einem Steuerungs-Switch 241 zum Steuern eines Protokolls zum Steuern der Datenübermittlung zu oder von den Speichereinheiten 230, dem Klassifizierungsmodul 255, dem klassenspezifischen Codiermodul 257, dem Spaltenkomprimierungsmodul 259 und dem Decodiermodul 260, auf denen Informationen eingerichtet werden können. Mehrere Puffer 244 können bei der vorliegenden Erfindung ausgeführt sein, um die Multiplexer-Spaltenkomprimierung von Tabellendaten in einer Computerspeicherumgebung zu unterstützen.
-
Bei einer Ausführungsform sind lediglich beispielhaft die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und die Speicher-Steuereinheit 240 durch einen Netzwerkadapter 260 (der ein Fibre Channel sein könnte) als Schnittstelle, d. h. über einen Switch, der als ”Struktur” (fabric) bezeichnet wird, verbunden. Bei einer Ausführungsform wird lediglich beispielhaft der Betrieb des in 2 gezeigten Systems beschrieben. Der Mikroprozessor 242 kann den Speicher 243 so steuern, dass er Befehlsinformationen von der (physischen oder virtuellen) Host-Einheit 210 und Informationen zum Kennzeichnen der (physischen oder virtuellen) Host-Einheit 210 speichert. Der Steuerungs-Switch 241, die Puffer 244, der Cachespeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Speicher 243, der NVS 216, das Klassifizierungsmodul 255, das klassenspezifische Codiermodul 257, das Spaltenkomprimierungsmodul 259 und das Decodiermodul 260 tauschen untereinander Daten aus und können separate Komponenten oder eine einzige Komponente sein. Außerdem können mehrere, wenn nicht sogar alle Komponenten wie beispielsweise die Betriebssoftware 245 in dem Speicher 243 für eine Multiplexer-Spaltenkomprimierung von Tabellendaten in einer Datenspeicherumgebung enthalten sein. Alle Komponenten in der Speichereinheit können miteinander verbunden sein und für Zwecke, die für die vorliegende Erfindung geeignet sind, untereinander Daten austauschen.
-
Wie nachstehend beschrieben wird, sollen die Mechanismen der veranschaulichten Ausführungsformen bei einer Ausführungsform die Fähigkeit bereitstellen, Tabellendaten in Echtzeit zu komprimieren. Bei einer Ausführungsform erkennen die Mechanismen die Tabellenstruktur der Daten in einer Speicher-Steuereinheit. Die Mechanismen erkennen die Tabellenstruktur durch Verwenden einer Kombination von Spaltenkomprimierung, um ein höheres Komprimierungsverhältnis in der Speicher-Steuereinheit zu ermöglichen. Die Mechanismen verwenden Komprimierungsrückmeldung, gewöhnliche Begrenzer und/oder gewöhnliche Zellenauffüllmuster (cell padding patterns) und/oder eine Kombination aus gewöhnlichen Begrenzern und/oder gewöhnlichen Zellenauffüllmuster zum Erkennen der eingehenden Tabellendatenstruktur.
-
3 ist ein Ablaufplan, der ein beispielhaftes Verfahren 300 für eine Multiplex-Klassifizierung zum Komprimieren von Tabellendaten veranschaulicht. Das Verfahren 300 beginnt (Schritt 302) durch Klassifizieren von Datensegmenten ähnlichen Typs in Klassen, um die Datensegmente in Komprimierungsdatenströmen zu gruppieren, die jeder der Klassen zugehörig sind (Schritt 304). Die Komprimierungsdatenströme werden auf der Grundlage einer klassenspezifischen optimierten Codieroperation codiert (Schritt 306). Die Komprimierungsdatenströme werden in einem Ausgabepuffer zusammengefasst (Schritt 308). Die Komprimierungsdatenströme werden extrahiert (Schritt 310). Das Verfahren 300 endet (Schritt 312).
-
4 veranschaulicht ein beispielhaftes Blockschaubild 400, das eine Komprimierung auf der Grundlage einer Multiplex-Klassifizierung zeigt. Wie in 4 veranschaulicht, werden eingehende Daten 402 (z. B. eine E/A-Operation wie etwa eine Schreiboperation) an einen Klassifizierer 404 gesendet. Der Klassifizierer 404 gruppiert Daten ähnlichen Typs im gleichen Komprimierungsdatenstrom, indem er die Daten klassifiziert. Wie in 4 veranschaulicht, können die Klassifizierungen 406 danach klassifiziert und eingeordnet werden, ob es sich bei den Daten um Text 406A, Zahlen 406B, 406C, Binärdaten 406D und/oder weitere Klassen 406N handelt, die dann dementsprechend in diese Klassen 406 eingeordnet werden. Die Multiplexer-Klassifizierung für Spaltenkomprimierungsoperationen ermöglicht das Gruppieren von Daten ähnlichen Typs im selben Komprimierungsdatenstrom und klassifiziert die Daten darüber hinaus auf eine Weise, bei der ein geringerer Platzbedarf in Bezug auf das Alphabet gewährleistet wird. Jede Klassifizierung behält ein wesentlich größeres Komprimierungsfenster, das eine Identifizierung von Wiederholungen ermöglicht, die sich in größerem Abstand zueinander befinden (z. B. indem ein Wörterbuch verwendet wird). Das Klassifizieren kann in einem einzigen Durchgang durchgeführt werden und ist nicht auf ein starres Format beschränkt. Die auf Klassifizierung beruhende Komprimierung unterstützt sowohl feste als auch variable Datenlängen (z. B. JASON, XML usw.) und komprimiert Daten über die Spalten. Da reguläre Komprimierungsoperationen kurze Token nicht wirksam komprimieren, verwendet die Klassifizierung kleine Wörterbücher zur Unterstützung bei der Komprimierung von kurzen Token. Für jede Klasse 406 wenden die Mechanismen eine klassenspezifische optimierte Codieroperation an und fassen dann alle komprimierten klassenspezifischen Codierverfahren in einem Ausgabepuffer für eine Echtzeit-Komprimierung 408 zusammen. Das Zusammenpacken aller Klassen in einen Ausgabepuffer ist auch erforderlich, um Leseoperationen mit wahlfreiem Zugriff aus dem Speicher bereitzustellen. Es ist anzumerken, dass eine Vielfalt von Spaltenkomprimierungsoperationen auf jeden der Komprimierungsdatenströme angewendet werden kann, um ein höheres Komprimierungsverhältnis zu erhalten. Die Daten können dann extrahiert und in einer Vielfalt von Speicherkomponenten 410 gespeichert werden.
-
5 veranschaulicht ein beispielhaftes Blockschaubild, das einen Multiplex-Ausgabepuffer zeigt, bei dem Aspekte der vorliegenden Erfindung verwirklicht sein können. Bei einer Ausführungsform kann ein Multiplex-Ausgabepuffer 3 Typen von codierten Datenströmen enthalten. 1) Einen komprimierten Puffer mit Spaltenkomprimierung, der für eine spezifische Spalte verwendet wird (z. B. Spaltenkomprimierung|Nummer der Datenstromeinheit wird verwendet und kann eine eindeutige Datenstromeinheit der Spaltenkomprimierung aufweisen). 2) Eine reguläre Komprimierung mit Spaltenkomprimierung, die eine verkettete Spaltenzeichenfolge enthalten kann, die mit einer Komprimierungsdatenstromeinheit (z. B. eine ZLIB-Komprimierungsdatenstromeinheit) für alle Spaltenzeichenfolgen (z. B. reguläre Spaltenkomprimierung mit einer Komprimierungsdatenstromeinheit) komprimiert wird. 3) Ein regulärer komprimierter Puffer, der verwendet wird, wenn kein Spaltenkomprimierungsverfahren verwendet wird. Ein Spaltenkomprimierungsdatenstrom kann bei einer Ausführungsform vorgesehen sein, um sich auf einen Spaltenkomprimierungsdatenstrom zu beziehen, bei dem es sich um eine eindeutige Spaltenkomprimierungsdatenstromeinheit für eine spezifische Spalte handelt. Ein regulärer Komprimierungsdatenstrom mit Spaltenkomprimierung (z. B. ”reguläre Spaltenkomprimierung”) kann bei einer Ausführungsform vorgesehen sein, um sich auf eine reguläre Spaltenkomprimierung mit einer verketteten Spaltenzeichenfolge zu beziehen, die mit einer Komprimierungsdatenstromeinheit komprimiert wird (z. B. eine reguläre Spaltenkomprimierung mit einer Datenstromeinheit). Ein regulärer komprimierter Datenstrom kann bei einer Ausführungsform vorgesehen sein, um sich auf einen regulären komprimierten Puffer/Datenstrom zu beziehen, wenn kein Spaltenkomprimierungsverfahren/keine Spaltenkomprimierungstechnik verwendet wird (zum Beispiel ein regulärer ZLIB-komprimierter Puffer).
-
Wie in 5 veranschaulicht, sind ein Füll-Header (padding header) 502 (''PH), eine Spaltenkomprimierung mit Datenstromeinheit 1 504 (''CC1), eine reguläre Spaltenkomprimierung 506 (''RC1), eine reguläre Spaltenkomprimierung 508 (dieselbe Datenstromeinheit wie bei RC1) (RC2), eine Spaltenkomprimierung mit Datenstromeinheit 2, die als 510 (''CC2) bezeichnet wird, und ein regulärer komprimierter Puffer 512 (RZ1) in dem Ausgabepuffer dargestellt.
-
6 veranschaulicht ein beispielhaftes Blockschaubild, das eine Multiplex-Klassifizierung für einen Komprimierungspuffer von Tabellendaten zeigt, bei dem Aspekte der vorliegenden Erfindung verwirklicht sein können. In 6 ist ein Multi-Zlib-Rückverweis-Wörterbuch mit 32 Kilobyte (KB) × N Spalte 602 dargestellt. In den Eingabedatenströmen 604 sind Spalten 606 von Daten (in 6 als 606A bis 606N veranschaulicht) klassifiziert, wobei jede Spalte auf 1 KB komprimiert ist. Jede der klassifizierten Spalten 606 wird in den Ausgabeblock 620 gesetzt, der mit 32 KB veranschaulicht ist. In dem Ausgabeblock kann folgende Blockreihenfolge auftreten. Bei den ersten 20 Bits in dem Ausgabepuffer handelt es sich um den Füll-Header 608. Das nächste 1 Byte 610 gibt 0 für Komprimierung (z. B. Zlib-Komprimierung) oder 1 für Spaltenkomprimierung an. 7 Bits stellen die Gesamtspaltenzahl 610 dar. Als Nächstes gibt das nächste 1 Byte 612 an, ob die Gesamtzahl der komprimierten Spalten insgesamt kleiner als und/oder gleich groß wie die Gesamtspaltenzahl 612 ist. Der komprimierte Puffer 614 von Spalte 1 zeigt, dass jede komprimierte Spalte mit 3 Bytes extrahierter Länge und 1 Byte für die Spaltenposition in der Tabelle dargestellt wird, dies wiederholt sich bis zu dem komprimierten Puffer von Spalte N 612. Wenn N kleiner als die Gesamtspalten 616 ist, werden die übrigen Daten (spaltenweise verkettet) komprimiert. Dieser verkettete Puffer weist dasselbe Format der Spaltendarstellung auf. 1 Byte bezieht sich auf die Position der Spalte, und 4 Bytes auf die Spaltenpufferlänge. Zum Schluss wird dieselbe Struktur für den nächsten Datenblock 618 wiederholt (entweder mit derselben Spaltentrennung oder mit einer neuen Spaltentrennungsdefinition).
-
7 ist ein Ablaufplan, der ein beispielhaftes Verfahren 700 für ein Codieren einer Multiplex-Klassifizierung zum Komprimieren von Tabellendaten veranschaulicht. Verfahren 700 ordnet einen Füll-Header zu (Schritt 702). Verfahren 700 ermittelt den Komprimierungstyp der Komprimierungsdatenströme (Schritt 704). Wenn es sich bei dem erkannten Komprimierungstyp um eine reguläre Komprimierung handelt, kann das Verfahren 700 einen regulären Komprimierungstyp festlegen (Schritt 706), eine nichtkomprimierte Menge festlegen (Schritt 708) und komprimierte Daten schreiben (Schritt 710). Wenn es sich bei dem erkannten Komprimierungstyp jedoch um eine Spaltenkomprimierung handelt, schreibt das Verfahren 700 eine Nummer der Datenstromeinheit, die für die Spaltenkomprimierung verwendet wird (Schritt 712). Die Nummer der Datenstromeinheit wird für die vorangehende Datenverarbeitung benötigt. Das Verfahren 700 kann daraufhin eine verarbeitete Spaltennummer schreiben (Schritt 714), eine nichtkomprimierte Datenmenge schreiben (Schritt 716) und komprimierte Spaltendaten schreiben (Schritt 718).
-
Wenn es sich bei dem erkannten Komprimierungstyp um eine reguläre Spaltenkomprimierung handelt, kann das Verfahren 700 eine Nummer einer Datenstromeinheit schreiben, die für die reguläre Spaltenkomprimierung verwendet wird, und die verarbeitete Spaltennummer schreiben (Schritt 720). Die Nummer der Datenstromeinheit wird für die vorangehende Datenverarbeitung benötigt. Das Verfahren 700 kann die komprimierten Spaltendetenmenge schreiben (Schritt 722) und die komprimierten Spaltendaten schreiben (Schritt 724). Das Verfahren 700 wiederholt die Schritte 720, 722 und 724, z. B. Schreiben der Nummer der Datenstromeinheit, der Spaltennummer und der komprimierten Spaltendaten, bis alle regulären Spaltenkomprimierungsdatenströme verarbeitet sind.
-
8 ist ein Ablaufplan, der ein beispielhaftes Verfahren 800 zum Extrahieren der Multiplex-Klassifizierungsdaten zurück in den ursprünglichen vorverarbeiteten Eingabedatenblock veranschaulicht. Das Verfahren 800 liest den Füll-Header und extrahiert die komprimierte Gesamtmenge (Schritt 802). Das Verfahren 800 ermittelt den Extrahierungskomprimierungstyp der Komprimierungsdatenströme (Schritt 804). Wenn es sich bei dem erkannten Komprimierungstyp um eine reguläre Komprimierung handelt, kann das Verfahren 800 einen regulären Komprimierungstyp extrahieren (Schritt 806), eine nichtkomprimierte Menge extrahieren (Schritt 808) und komprimierte Daten extrahieren (Schritt 810). Wenn es sich bei dem erkannten Komprimierungstyp jedoch um eine Spaltenkomprimierung handelt, extrahiert das Verfahren 800 eine Nummer einer Datenstromeinheit, die für die Spaltenkomprimierung verwendet wird (Schritt 812). Die Nummer der Datenstromeinheit wird für die vorangehende Datenverarbeitung benötigt. Das Verfahren 800 kann daraufhin eine verarbeitete Spaltennummer extrahieren (Schritt 814), eine nichtkomprimierte Datenmenge extrahieren (Schritt 816) und komprimierte Spaltendaten extrahieren (Schritt 818). Es ist anzumerken, dass die reguläre Komprimierung eine reguläre Zlib-Komprimierung beinhalten kann.
-
Wenn es sich bei dem erkannten Komprimierungstyp um eine reguläre Spaltenkomprimierung handelt, kann das Verfahren 800 eine Nummer einer Datenstromeinheit extrahieren, die für die reguläre Spaltenkomprimierung verwendet wird, und die verarbeitete Spaltennummer extrahieren (Schritt 820). Die Nummer der Datenstromeinheit wird für die vorangehende Datenverarbeitung benötigt. Das Verfahren 800 kann die nichtkomprimierte Datenmenge extrahieren (Schritt 822) und die komprimierten Spaltendaten extrahieren (Schritt 824). Das Verfahren 800 wiederholt die Schritte 820, 822 und 824, z. B. Extrahieren der Nummer der Datenstromeinheit, der Spaltennummer und der komprimierten Spaltendaten, bis alle regulären Spaltenkomprimierungsdatenströme extrahiert sind.
-
Für den Fachmann ist ersichtlich, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Aspekte der vorliegenden Erfindung können daher die Form einer kompletten Hardware-Ausführung, einer kompletten Software-Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform haben, bei der Hardware- und Software-Aspekte kombiniert sind, die allgemein hierin als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Aspekte der vorliegenden Erfindung können des Weiteren die Form eines Computerprogrammprodukts haben, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, die über einen darin enthaltenen computerlesbaren Programmcode verfügen.
-
Es können beliebige Kombinationen von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder eine geeignete Kombination davon handeln, ohne darauf beschränkt zu sein. Zu genauen Beispielen (einer nicht vollständigen Liste) für das computerlesbare Speichermedium gehören wie folgt: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computer-Diskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Nur-Lese-Speicher, (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination davon. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges physisches Medium handeln, das ein Programm enthalten oder speichern kann, welches von oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen verwendet wird.
-
In einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines geeigneten Mediums übermittelt werden, das drahtlos, drahtgebunden, ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination davon sein kann, ohne darauf beschränkt zu sein. Computerprogrammcode zum Ausführen von Operationen in Verbindung mit Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, zu denen eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache ”C” oder ähnliche Programmiersprachen gehören. Der Programmcode kann ganz 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 ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden.
-
Im letztgenannten Szenario kann der entfernt angeordnete Computer über ein beliebiges Netzwerk mit dem Computer des Benutzers verbunden sein, zum Beispiel über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder es kann die Verbindung zu einem externen Computer hergestellt werden (beispielsweise über das Internet durch einen Internetdienstanbieter).
-
Aspekte der vorliegenden Erfindung werden unter Bezugnahme auf Ablaufplandarstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplandarstellungen und/oder der Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder in den Blockschaltbildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalrechners, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten steuern kann, um auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich der Anweisungen erzeugen, die die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegte Funktion/Maßnahme umsetzen. Die Computerprogrammanweisungen können ferner in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von Funktionsschritten auszulösen, die auf dem Computer, in der anderen programmierbaren Vorrichtung oder den anderen Einheiten durchgeführt werden, um einen auf einem Computer implementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer oder in der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse bereitstellen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
-
Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaltbildern ein Modul, Segment oder einen Teil eines Codes darstellen, das/der eine oder mehrere ausführbare Anweisungen zur Umsetzung der festgelegten Logikfunktion(en) aufweist. Es ist ferner darauf hinzuweisen, dass die im Block angegebenen Funktionen bei einigen alternativen Ausführungen in einer anderen Reihenfolge als in den Figuren dargestellt ablaufen können. Zwei aufeinanderfolgend dargestellte Blöcke können zum Beispiel tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach entsprechender Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Des Weiteren ist darauf hinzuweisen, dass jeder Block der Blockschaltbilder und/oder der Ablaufplandarstellung sowie Kombinationen von Blöcken in den Blockschaltbildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die angegebenen Funktionen oder Maßnahmen durchführen, oder durch Kombinationen von spezieller Hardware und Computeranweisungen.
-
Zwar wurden eine oder mehrere Ausführungsformen der vorliegenden Erfindung genau beschrieben, dem Fachmann wird jedoch klar sein, dass Änderungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen, der in den folgenden Ansprüchen dargelegt ist.