DE102016105472B4 - Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen - Google Patents

Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen Download PDF

Info

Publication number
DE102016105472B4
DE102016105472B4 DE102016105472.0A DE102016105472A DE102016105472B4 DE 102016105472 B4 DE102016105472 B4 DE 102016105472B4 DE 102016105472 A DE102016105472 A DE 102016105472A DE 102016105472 B4 DE102016105472 B4 DE 102016105472B4
Authority
DE
Germany
Prior art keywords
file
block
blocks
storage
columns
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.)
Active
Application number
DE102016105472.0A
Other languages
English (en)
Other versions
DE102016105472A1 (de
Inventor
Rini Kaushik
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 DE102016105472A1 publication Critical patent/DE102016105472A1/de
Application granted granted Critical
Publication of DE102016105472B4 publication Critical patent/DE102016105472B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

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

Abstract

Verfahren, aufweisend:Erhalten einer Datei in einem Dateisystem (1210);Zerlegen der Datei in eine Mehrzahl von Blöcken (1220) auf Grundlage einer horizontalen Aufteilung der Spalten in mehrere Zeilengruppen;Zerlegen jedes Blocks der Mehrzahl von Blöcken (1230) in mindestens zwei zusammengehörige Teilblöcke, wobei ein Teilblock eine Teilmenge häufiger Projektionsspalten und ein anderer Teilblock die übrigen Spalten enthält; undErmitteln einer dateiinternen blockweise organisierten Speicherablage auf unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke in einem Dateisystem-Metadatenlayout (1240), wobei die dateiinterne blockweise organisierte Speicherablage auf einem vorausschauenden Spaltendatenblock-Ablagemodell basiert, das eine Vielzahl von Faktoren von Spaltendatenblöcken berücksichtigt.

Description

  • HINTERGRUND
  • Ausführungsformen der Erfindung betreffen die Organisation der blockinternen Speicherung und insbesondere die Organisation der blockinternen Speicherebenenverteilung und der parallelen Anordnung bei Dateien.
  • Der Begriff „Big Data“ (Massendaten) ist ein Begriff, der pauschal für beliebige Sammlungen von Datensätzen verwendet wird, die so groß und so komplex sind, dass es schwierig wird, diese unter Verwendung verfügbarer Datenverwaltungshilfsmittel oder herkömmlicher Datenverarbeitungsanwendungen zu verarbeiten. Zu den Problemen gehören die Erfassung, Pflege, Speicherung, Suche, gemeinsame Nutzung, Übertragung, Analyse und Visualisierung. Der Trend zu größeren Datensätzen hängt mit den, im Vergleich zu getrennten kleineren Sätzen mit derselben Gesamtmenge von Daten, zusätzlichen Informationen zusammen, die aus der Analyse eines einzelnen großen Datensatzes zusammengehöriger Daten ableitbar sind, die das Auffinden von Zusammenhängen ermöglichen, um Konjunkturtendenzen zu erkennen, die Qualität der Forschungstätigkeit zu ermitteln, Krankheiten zu verhindern, auf juristische Zitate zu verweisen, Verbrechen zu bekämpfen und Verkehrssituationen in Echtzeit zu ermitteln.
  • Der Umgang mit Big Data ist unter Verwendung der meisten relationalen Datenbankverwaltungssysteme und Desktop-Programme für Statistik und Visualisierung schwierig und erfordert stattdessen das massive parallele Ausführen von Software auf mehreren zehn, hunderten oder gar tausenden von Servern. Was unter „Big Data“ verstanden wird, hängt von den Fähigkeiten der Organisation ab, die den Satz verwaltet, und von den Fähigkeiten der Anwendungen, die bisher zur Verarbeitung und Analyse des Datensatzes in seinem Einsatzgebiet verwendet werden. Big Data enthalten normalerweise Datensätze mit Größen, die jenseits der Fähigkeit von üblicherweise verwendeten Softwarehilfsmitteln zur Verwaltung und Verarbeitung der Daten innerhalb einer akzeptablen Ausführungszeit liegen.
  • Im hierin verwendeten Sinne ist eine große Datenbank eine spaltenförmige oder hybrid spaltenförmige Datenbank, in der Datentabellen nicht als Zeilen von Daten, sondern als Abschnitte von Spalten von Daten gespeichert sind, die mindestens ein Petabyte Daten enthalten. Derartige große Datenbanken werden gegenwärtig bei einer Vielfalt von Anwendungen eingesetzt, bei denen sehr große Mengen von Daten gespeichert, abgefragt, kumuliert, analysiert und durchsucht werden, beispielsweise bei Anwendungen zur Analyse von Unternehmensdaten. Moderne Anwendungen zur Analyse von Unternehmensdaten berechnen Gesamtsummen über große Mengen von Daten, um Informationen entlang einer zunehmenden Anzahl von Dimensionen wie beispielsweise geographische Regionen, Demographie, Benutzer, Produkte usw. zusammenzufassen. Bisher führten Online-Datenbanken zur Unternehmensanalyse derartige Abfragen aus, indem sie aufeinanderfolgende Suchläufe über einen wesentlichen Teil der Datenbank durchführen. Als Folge der zunehmenden Größen und steigenden Anzahl von Dimensionen sowie der wachsenden Bedeutung von Antwortzeiten auf interaktive Abfragen bei heutigen großen Analysedatenbanken ist ein Abfragen der Datenbank mithilfe des Durchsuchens der gesamten großen Datenbank nicht praktikabel. Zusätzlich zur Größe großer Datenbanken erschweren andere Faktoren das Abfragen großer Datenbanken mithilfe bekannter Techniken bei kurzen Wartezeiten (Latenzen). Zum Beispiel ist bei Online-Analysedatenbanken der Prozentsatz von Datenbankabfragen mit Einzelfallcharakter (Ad-hoc-Datenbankabfragen) hoch, was die Erzeugung eines Index für die große Datenbank erschwert. Die große Anzahl von Dimensionen führt dazu, dass Techniken wie zum Beispiel im Voraus berechnete Würfel sehr viel Platz benötigen und rechentechnisch enorm aufwendig sind.
  • Im Stand der Technik offenbart KAUSHIK, Rini T.: FlashQueryFile: Flash-Optimized Layout and Algorithms for Interactive Ad Hoc SQL on Big Data. In: 6th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage '14), 2014, USENIX Association, USA, Berkeley, S. 1-5 ein Flash-optimiertes Layout sowie Algorithmen für interaktive Ad-hoc-SQL auf großen Daten.
  • HE, Yongqiang [et al.]: RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems. In: 2011 IEEE 27th International Conference on Data Engineering, Hannover, 2011, IEEE Computer Society, Washington D.C., USA, S. 1199-1208. DOI: 10.1109/ICDE.2011.5767933 offenbart eine schnelle und platzsparende Datenplatzierungsstruktur in MapReduce-basierten Lagersystemen.
  • Gegenwärtig werden diese großen Analysedatenbanken auf herkömmlichen Datenspeichereinheiten wie beispielsweise Festplattenlaufwerken und dergleichen gespeichert. Vor Kurzem wurden bei einem Versuch zur Verbesserung der Leistung der großen spaltenförmigen Datenbanken einige große Datenbanken auf Hochleistungsspeichereinheiten wie beispielsweise Halbleitereinheiten bzw. Flash-Speicher und dergleichen gespeichert. Obwohl das Speichern großer Datenbanken auf Hochleistungsspeichereinheiten bei den großen Datenbanken die Geschwindigkeit einiger Abfragen erhöht, ist die erhöhte Leistung mit hohen Kosten verbunden, da Hochleistungsspeichereinheiten viel teurer als herkömmliche Datenspeichereinheiten sind.
  • Es ist eine Aufgabe der Erfindung, ein verbessertes Verfahren und ein verbessertes Computerprogrammprodukt zur Organisation der blockinternen Speicherebenenverteilung und der parallelen Anordnung bei Dateien bereitzustellen. Die der Erfindung zugrunde liegenden Aufgaben werden durch die Merkmale der unabhängigen Ansprüche gelöst.
  • KURZDARSTELLUNG
  • Ausführungsformen der Erfindung betreffen die Organisation der dateiinternen Speicherung von Blöcken. Eine Ausführungsform enthält ein Verfahren, das ein Erhalten einer Datei in einem Dateisystem aufweist. Die Datei wird in eine Mehrzahl von Blöcken zerlegt. Die Mehrzahl von Blöcken wird in mindestens zwei zusammengehörige Teilblöcke zerlegt. Die dateiinterne blockweise organisierte Speicherablage auf unterschiedlichen Speichereinheiten wird für die mindestens zwei Teilblöcke in einem Dateisystem-Metadatenlayout ermittelt.
  • Eine weitere Ausführungsform enthält ein Computerprogrammprodukt zur blockinternen Speicherverwaltung. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium mit darauf verkörpertem computerlesbaren Programmcode auf. Der Programmcode ist durch einen Prozessor ausführbar, um durch den Prozessor eine Datei in einem Dateisystem zu erhalten. Der Prozessor zerlegt die Datei in eine Mehrzahl von Blöcken. Der Prozessor zerlegt jeden Block der Mehrzahl von Blöcken in mindestens zwei zusammengehörige Teilblöcke. Die dateiinterne blockweise organisierte Speicherablage auf unterschiedlichen Speichereinheiten wird durch den Prozessor für die mindestens zwei zusammengehörigen Teilblöcke in einem Dateisystem-Metadatenlayout ermittelt.
  • Eine Ausführungsform enthält ein Verfahren, das ein Erhalten eines Blocks einer Datei in einem Dateisystem aufweist. Der Block wird in mindestens zwei Teilblöcke zerlegt. Die dateiinterne Speicherebenenverteilung und die Speicherablage in paralleler Anordnung von Blöcken auf unterschiedlichen Speichereinheiten werden für die mindestens zwei Teilblöcke in einem Dateisystem-Metadatenlayout ermittelt.
  • Diese und andere Merkmale, Aspekte und Vorteile der vorliegenden Erfindung werden unter Bezugnahme auf die folgende Beschreibung, beigefügten Ansprüche und beiliegenden Figuren verständlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
    • 1 veranschaulicht einen Cloud-Computing-Knoten gemäß einer Ausführungsform.
    • 2 veranschaulicht eine Cloud-Computing-Umgebung gemäß einer Ausführungsform.
    • 3 veranschaulicht eine Gruppe von Schichten eines Abstraktionsmodells gemäß einer Ausführungsform.
    • 4 veranschaulicht weitere Einzelheiten von Merkmalen in einem Computersystem/Server gemäß einer Ausführungsform.
    • 5 veranschaulicht, wie eine Tabelle über die Computersysteme/Server in dem Knoten/Cluster hinweg als eine einzige FlashQueryFile-Datei bzw. ein einziges FlashQueryFile-Layout in Blöcken eines verteilten Dateisystems (Distributed File System, DFS) logisch dargestellt ist.
    • 6 veranschaulicht die ursprüngliche Beziehung von Spalten und Zeilen mit Datenwerten in einer Tabelle.
    • 7 veranschaulicht ein auswahloptimiertes Layout für die Auswahlspalte.
    • 8 veranschaulicht ein Flussdiagramm der Offline- und Laufzeiterzeugung eines Vorhersagemodells zur Lenkung der Ablage von spaltenförmigen Daten.
    • 9 veranschaulicht das Aufteilen von Blöcken in Teilblöcke gemäß einer Ausführungsform.
    • 10 veranschaulicht die Ablage von Teilblöcken aus der Tabelle von 6 auf Flash und HDD (HDD = Hard Disk Drive, Festplattenlaufwerk) gemäß einer Ausführungsform.
    • 11 veranschaulicht eine dateiinterne Speicherebenenverteilung und parallele Anordnung von Teilblöcken gemäß einer Ausführungsform.
    • 12 veranschaulicht ein Blockschema eines Prozesses zur dateiinternen blockweise organisierten Speicherablage gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Nachfolgend sind Aspekte der vorliegenden Erfindung unter Bezugnahme auf Flussdiagramme und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderer programmierbarer Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen schaffen.
  • Eine Mehrheit der bekannten Techniken der Speicherebenenverteilung bei der Datenbankspeicherung ist darauf gerichtet, häufig benötigte Daten, auf die häufig zugegriffen wird, auf der Hochleistungsebene wie zum Beispiel einer „Flash-Speicherebene“ abzulegen, die per Direktzugriff zugänglich ist. Die Häufigkeit von Daten wird in einer reaktiven Weise ermittelt, wodurch ein Modul die Zugriffsmuster der Arbeitslast aufzeichnet, und wenn viele Zugriffe auf einen Datensatz stattzufinden beginnen, wird er als häufig benötigt angesehen und auf eine Hochleistungsebene verschoben. Derartige reaktive Techniken leiden jedoch unter einer Reaktionszeit zur Ermittlung der Zugriffsmuster und können keine Voraus-Leistungsgarantien bereitstellen. Des Weiteren befindet sich eine Mehrheit dieser Techniken auf einer viel niedrigeren Blockebene und hat keine semantische Kenntnis von den Daten auf der Spaltenebene.
  • Eine Ausführungsform stellt ein Verfahren bereit, das ein Erhalten einer Datei in einem Dateisystem enthält. Die Datei wird in eine Mehrzahl von Blöcken zerlegt. Jeder Block der Mehrzahl von Blöcken wird in mindestens zwei zusammengehörige Teilblöcke zerlegt. Die dateiinterne blockweise organisierte Speicherablage auf unterschiedlichen Speichereinheiten wird für die mindestens zwei zusammengehörigen Teilblöcke in einem Dateisystem-Metadatenlayout ermittelt. Es sollte beachtet werden, dass die Dateisystem-Metadaten eine Dateisystem-Metadatenstruktur haben, die auch als „Dateisystem-Metadatenlayout“ bezeichnet wird. Die Dateisystem-Metadatenstruktur bzw. das Dateisystem-Metadatenlayout bezeichnet das Layout bzw. Format, das durch ein Dateisystem zum Speichern der Dateisystem-Metadaten verwendet wird. Die Dateisystem-Metadaten gehören zum Dateisystem-Metadatenlayout. Wenn das Speichermedium (z.B. ein Systemspeicher 34 (1)) mit einer oder mehreren Platten realisiert ist, wird das Dateisystem-Metadatenlayout als „Dateisystem-Plattenlayout“ bezeichnet. Das Dateisystem-Metadatenlayout kann sich ändern, um neue Funktionen zu unterstützen, die zum Dateisystem hinzugefügt wurden, oder andere (z.B. größere) Dateigrößen zu unterstützen. Die Dateisystem-Metadaten enthalten Informationsfelder, die verschiedene Eigenschaften von Benutzerdaten beschreiben.
  • Bei einer Ausführungsform beruht die dateiinterne blockweise organisierte Speicherablage auf der dateiinternen Speicherebenenverteilung und parallelen Anordnung von Blöcken auf unterschiedlichen Speichereinheiten (z.B. auf einem Halbleiterlaufwerk (Solid State Drive, SSD) und einem Festplattenlaufwerk (HDD)). Bei einer Ausführungsform ist ein Mechanismus realisiert, um durch eine Anwendung dem Dateisystem eine Empfehlung zu erteilen, eingehende Datenblöcke auf einer bestimmten Speicherebene/einem bestimmten Speicherpool abzulegen. Bei einer Ausführungsform gibt ein Mechanismus eine Einschränkung in Bezug auf die parallele Anordnung der Dateiblöcke an. Eine I-Knotenstruktur wird abgeändert, um die dateiinterne Speicherebenenverteilung zu unterstützen, und in der I-Knotenstruktur wird eine Beziehung zwischen zwei Blöcken angegeben. Es sollte beachtet werden, dass ein I-Knoten in bzw. auf einem Dateisystem vorliegt und Metadaten über eine Datei darstellt. Ein I-Knoten enthält Informationen wie zum Beispiel Eigentümerschaft (Benutzer, Gruppe) Zugriffsmodus (Lese-, Schreib-, Ausführungsberechtigungen) und Dateityp.
  • Cloud-Computing ist ein Modell zur Bereitstellung von Diensten, um einen praktischen und bei Bedarf verfügbaren Netzwerkzugriff auf ein gemeinsam genutztes Reservoir konfigurierbarer Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen (VMs) und Dienste) zu ermöglichen, die bei minimalem Verwaltungsaufwand oder minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle enthalten.
  • Die Eigenschaften sind folgende:
    • On-demand Self Service (Selbstzuweisung bei Bedarf): Ein Cloud-Kunde kann sich einseitig Datenverarbeitungsfunktionen wie zum Beispiel Serverzeit und Netzwerkspeicher dem Bedarf entsprechend automatisch bereitstellen, ohne dass eine Interaktion von Menschen mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access (umfassender Netzwerkzugriff): Es stehen Funktionen über ein Netzwerk zur Verfügung, auf die der Zugriff über Standardmechanismen erfolgt, die die Verwendung heterogener Thin- oder Thick-Quellplattformen (z.B. Mobiltelefone, Notebook-Computer und PDAs) unterstützen.
  • Resource Pooling (Ressourcenbündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehrere Kunden unter Verwendung eines Mehrfachnutzermodells mit unterschiedlichen physischen und virtuellen Ressourcen zu bedienen, die entsprechend dem Bedarf dynamisch zugewiesen und neu zugewiesen werden. Es besteht eine Art Ortsunabhängigkeit in der Weise, dass der Kunde im Allgemeinen keine Kontrolle oder Kenntnis über den exakten Ort der bereitgestellten Ressourcen hat, aber möglicherweise in der Lage ist, den Ort auf einer höheren Abstraktionsebene (z.B. Land, Bundesstaat oder Datenverarbeitungszentrum) anzugeben.
  • Rapid Elasticity (rasche Elastizität): Funktionen können rasch und elastisch bereitgestellt werden, in einigen Fällen automatisch, um den Funktionsumfang schnell nach oben anzupassen, und schnell freigegeben werden, um den Funktionsumfang schnell nach unten anzupassen. Für den Kunden entsteht oftmals der Eindruck, dass die zur Bereitstellung verfügbaren Funktionen unbegrenzt sind und jederzeit in jeder beliebigen Menge gekauft werden können.
  • Measured Service (bemessener Dienst): Cloud-Systeme steuern und optimieren automatisch die Ressourcenverwendung durch Nutzung einer Bemessungsfunktion auf einer bestimmten Abstraktionsebene, die für die Art des Dienstes geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite und aktive Kundenkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, sodass Transparenz sowohl für den Anbieter als auch den Kunden des genutzten Dienstes besteht.
  • Die Dienstmodelle sind folgende:
    • Software as a Service (SaaS) (Software als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Die Anwendungen sind von verschiedenen Client-Einheiten aus über eine Thin-Client-Schnittstelle wie zum Beispiel über einen Web-Browser (z.B. auf dem Web beruhende eMail) zugänglich. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfunktionen nicht, abgesehen von der möglichen Ausnahme eingeschränkter kundenspezifischer Konfigurationseinstellungen von Anwendungen.
  • Platform as a Service (PaaS) (Plattform als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Kunden erzeugte oder erworbene Anwendungen bereitzustellen, die unter Verwendung von Programmiersprachen und Programmierwerkzeugen erzeugt wurden, die durch den Anbieter unterstützt werden. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfunktionen nicht, hat aber die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendungen.
  • Infrastructure as a Service (IaaS) (Infrastruktur als Dienst): Die dem Kunden bereitgestellte Funktion besteht in der Fähigkeit, Verarbeitung, Speicherplatz, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Kunde beliebige Software bereitstellen und ausführen kann, zu der Betriebssysteme und Anwendungen gehören können. Der Kunde verwaltet oder steuert die unterlagerte Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicherplatz sowie bereitgestellte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Vernetzungskomponenten (z.B. über Host-Firewalls).
  • Die Bereitstellungsmodelle sind folgende:
    • Private cloud (Private Cloud): Die Cloud-Infrastruktur wird ausschließlich für ein Unternehmen betrieben. Sie kann durch das Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.
  • Community Cloud (Community-Cloud): Die Cloud-Infrastruktur wird von mehreren Unternehmen genutzt und unterstützt eine bestimmte Benutzergemeinschaft, die gemeinsame Interessen hat (z.B. Gesichtspunkte im Zusammenhang mit einer Aufgabe, mit Sicherheitsanforderungen, Richtlinien und mit der Einhaltung von Gesetzen und Vorschriften). Sie kann durch die Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.
  • Public cloud (Public-Cloud): Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Gruppe in einem Industriezweig zur Verfügung gestellt und ist Eigentum eines Unternehmens, das Cloud-Dienste verkauft.
  • Hybrid cloud (Hybrid-Cloud): Die Cloud-Infrastruktur ist eine Mischung aus zwei oder mehreren Clouds (Private Cloud, Community Cloud oder Public Cloud), die eigenständige Einheiten bleiben, aber über eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die die Portierbarkeit von Daten und Anwendungen ermöglicht (z.B. Cloud-Zielgruppenverteilung (Cloud Bursting) zum Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus untereinander verbundenen Knoten aufweist.
  • Unter Bezugnahme auf 1 ist dort ein Schema eines Beispiels eines Cloud-Computing-Knotens/-Clusters gemäß der Ausführungsform der vorliegenden Erfindung dargestellt. Der Cloud-Computing-Knoten 10 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens/-Clusters, der beim Speichern/Verarbeiten von Big Data verwendet werden kann, und nicht dazu gedacht, eine beliebige Einschränkung hinsichtlich des Schutzbereiches oder der Funktionalität von hierin beschriebenen Ausführungsformen nahezulegen. Ungeachtet dessen kann der Cloud-Computing-Knoten/-Cluster 10 realisiert werden und/oder eine beliebige der hierin dargelegten Funktionalitäten durchführen.
  • In dem Cloud-Computing-Knoten/-Cluster 10 liegen mehrere Computersysteme/Server 12 vor, die in Verbindung mit zahlreichen anderen Mehrzweck- oder Spezial-Datenverarbeitungssystemumgebungen oder derartigen Konfigurationen betriebsfähig sind. Die mehreren Computersysteme/Server 12 sind über Verbindungen 82 (beispielsweise Lichtwellenleiter usw.) verbunden. Obwohl bestimmte Einzelheiten eines Computersystems/Servers 12 in 1 dargestellt sind, gelten die Einzelheiten auch für die anderen Computersysteme/Server 12 in dem Computerknoten/Cluster 10. Zu Beispielen wohlbekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung in Verbindung mit dem Computersystem/Server 12 geeignet sind, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, Hand- oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der oben erwähnten Systeme oder Einheiten gehören, und dergleichen.
  • Das Computersystem/der Server 12 kann im allgemeinen Kontext von auf einem Computersystem ausführbaren Anweisungen beschrieben werden, wie zum Beispiel von Programmmodulen, die durch ein Computersystem ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logik und Datenstrukturen usw. aufweisen, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen praktisch umgesetzt werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, zu denen Hauptspeichereinheiten gehören.
  • Wie in 2 gezeigt, ist das Computersystem/der Server 12 im Cloud-Computing-Knoten/-Cluster 10 in Form einer Mehrzweck-Datenverarbeitungseinheit dargestellt. Zu den Komponenten des Computersystems/des Servers 12 können, ohne auf diese beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 16, ein Systemspeicher 28 und ein Bus 18 gehören, der verschiedene Systemkomponenten einschließlich des Systemspeichers 28 mit dem Prozessor 16 verbindet. Die Prozessoreinheiten 16 enthalten Verarbeitungsschaltungen (Prozessorschaltungen) zum Lesen, Verarbeiten und Ausführen von computerausführbaren Anweisungen, wie dem Fachmann klar ist.
  • Der Bus 18 stellt eine oder mehrere beliebiger verschiedener Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gedacht gehören zu derartigen Architekturen der ISA-Bus (ISA = Industry Standard Architecture), der MCA-Bus (MCA = Micro Channel Architecture), der EISA-Bus (EISA = Enhanced ISA), der lokale VESA-Bus (VESA = Video Electronics Standards Association) und der PCI-Bus (PCI = Peripheral Component Interconnect).
  • Das Computersystem/der Server 12 weist normalerweise eine Vielfalt von Medien auf, die von Computersystemen gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 12 zugreifen kann, und zu diesen Medien gehören sowohl flüchtige als auch nichtflüchtige Medien, Wechselmedien und nicht auswechselbare Medien. Zum Systemspeicher 28 können für Computersysteme lesbare Medien in Form von flüchtigem Speicher wie zum Beispiel Direktzugriffsspeicher (Random Access Memory, RAM) 30 und/oder Cache-Speicher 32 gehören. Das Computersystem/der Server 12 kann ferner andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien aufweisen. Lediglich als Beispiel kann der Systemspeicher 34 zum Lesen von einem und Schreiben auf ein nicht auswechselbares, nichtflüchtiges magnetisches Medium (nicht dargestellt und normalerweise als „Plattenlaufwerk“, „Festplatte“ und/oder „Festplattenlaufwerk“ bezeichnet) bereitgestellt sein. Obwohl nicht dargestellt, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine auswechselbare nichtflüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine auswechselbare nichtflüchtige optische Platte wie zum Beispiel ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt sein. In solchen Fällen kann jede dieser Einheiten durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 18 verbunden sein. Wie ferner abgebildet und nachfolgend beschrieben, kann der Speicher 28 mindestens ein Programmprodukt aufweisen, das eine Menge (z.B. mindestens eines) von Programmmodulen aufweist, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Der Speicher 28 kann zum Beispiel und nicht als Einschränkung ein Betriebssystem, ein oder mehrere Anwendungsprogramme oder andere Programmmodule und Programmdaten enthalten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten (oder eine bestimmte Kombination davon) kann bzw. können eine Realisierungsform einer Vernetzungsumgebung enthalten.
  • Darüber hinaus enthält das Computersystem/der Server 12 einen Flash-Speicher 75 (der auch als „Flash“ bezeichnet wird). Der Flash-Speicher 75 speichert Big Data zusammen mit dem Festplattenlaufwerk 34, wie hierin gemäß Ausführungsformen erläutert ist. Der Flash-Speicher 75 enthält die FlashQueryFile 80. Die FlashQueryFile 80 kann in anderen Abschnitten des Speichers 28 gespeichert sein. Die FlashQueryFile 80 enthält Programmmodule 42 (bei denen es sich um eine oder mehrere Softwareanwendungen handeln kann), die die Funktionen und/oder Methodiken von Ausführungsformen ausführen, wie hierin beschrieben ist. Die FlashQueryFile 80 kann Algorithmen realisieren, die hierin nachstehend erörtert werden. Obwohl Merkmale der FlashQueryFile 80 in einem einzelnen Computersystem/Server 12 hervorgehoben sind, kann die FlashQueryFile 80 (und ihre Funktionalität) über andere Computersysteme/Server 12 in dem Datenverarbeitungsknoten/Cluster 10 hinweg verteilt sein. Die FlashQueryFile 80 ist mit allen Softwareelementen konfiguriert, die nötig sind, um hierin erörterte Ausführungsformen zu realisieren.
  • Das Computersystem/der Server 12 kann außerdem mit einer oder mehreren externen Einheiten 14 Daten austauschen, zum Beispiel mit einer Tastatur, einer Zeigeeinheit, einer Anzeigeeinheit 24 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 12 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 22 stattfinden. Darüber hinaus kann das Computersystem/der Server 12 über einen Netzwerkadapter 20 mit einem oder mehreren Netzwerken Daten austauschen, zum Beispiel mit einem lokalen Netzwerk (Local Area Network, LAN), mit einem allgemeinen Weitverkehrsnetzwerk (Wide Area Network, WAN) und oder mit einem öffentlichen Netzwerk (z.B. dem Internet). Wie abgebildet tauscht der Netzwerkadapter 20 über den Bus 18 Daten mit den anderen Komponenten des Computersystems/Servers 12 aus. Es sollte klar sein, dass, obwohl nicht abgebildet, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplatten-Anordnungen, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
  • Unter Bezugnahme auf 2 ist dort eine veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie dargestellt weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen lokale Datenverarbeitungseinheiten wie zum Beispiel ein Personal Digital Assistant (PDA) oder Mobiltelefon 54A, ein Desktop-Computer 54B, ein Notebook-Computer 54C und/oder ein Automobil-Computersystem 54N Daten austauschen können, die von Cloud-Nutzern verwendet werden. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie zum Beispiel in einer hierin oben beschriebenen Private Cloud, Community Cloud, Public Cloud oder Hybrid Cloud oder in einer Kombinationen davon gruppiert sein (nicht dargestellt). Dies ermöglicht der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste zu bieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit zu verwalten braucht. Es versteht sich, dass die Arten von Datenverarbeitungseinheiten 54A bis N, die in 2 dargestellt sind, als veranschaulichend gedacht sind, und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art von Netzwerkverbindung und/oder netzwerkadressierbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 3 ist dort eine Menge von Funktionsabstraktionsschichten dargestellt, die von der Cloud-Computing-Umgebung 50 (2) bereitgestellt werden. Im Vorhinein sollte klar sein, dass die in 3 gezeigten Komponenten, Schichten und Funktionen nur zur Veranschaulichung gedacht und Ausführungsformen der Erfindung nicht auf diese beschränkt sind. Wie abgebildet werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
    • Die Hardware- und Softwareschicht 60 enthält Hardware- und Softwarekomponenten. Zu Beispielen von Hardwarekomponenten gehören: Großrechner 61; Server 62, die auf der RISC-Architektur beruhen (RISC = Reduced Instruction Set Computer); Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und Vernetzungskomponenten 66. Bei einigen Ausführungsformen enthalten Softwarekomponenten Netzwerkanwendungsserver-Software 67 und Datenbanksoftware 68.
  • Eine Virtualisierungsschicht 70 stellt eine Absorptionsschicht bereit, von der die folgenden Beispiele von virtuellen Einheiten bereitgestellt sein können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73 einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • Bei einem Beispiel kann eine Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen und von anderen Ressourcen bereit, die genutzt werden, um Aufgaben innerhalb der Cloud-Computing-Umgebung durchzuführen. Gebührenerfassung und Preisberechnung 82 stellen eine Kostenüberwachung bereit, während Ressourcen innerhalb der Cloud-Computing-Umgebung genutzt werden, sowie Abrechnung und Fakturierung des Verbrauchs dieser Ressourcen. Bei einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen aufweisen. Die Sicherheit stellt eine Identitätsüberprüfung bei Cloud-Nutzern und Aufgaben sowie den Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 bietet Nutzern und Systemadministratoren einen Zugang zur Cloud-Computing-Umgebung. Eine Dienstgüteverwaltung (Service Level Management) 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die jeweils erforderliche Dienstgüte erreicht wird. Eine Planung und Erfüllung von Dienstgütevereinbarungen 85 (Service Level Agreement (SLA), Servicevertrag) stellt die Vorausplanung für und die Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA zukünftige Anforderungen erwartet werden.
  • Eine Betriebslastschicht 90 stellt Beispiele von Funktionalitäten bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Betriebslasten und Funktionen, die von dieser Ebene aus bereitgestellt werden können, gehören: Zuordnung und Navigation 91; Softwarebereitstellung und Verwaltung 92 während des Lebenszyklus; Bereitstellung 93 von Schulungen in virtuellen Schulungsräumen; Verarbeitung 94 von Datenanalysen; Transaktionsverarbeitung 95; und Verarbeitung 96 der Speicherebenenverteilung und parallelen Zuordnung auf Blockebene. Wie oben erwähnt sind alle in Bezug auf 3 beschriebenen vorhergehenden Beispiele lediglich zur Veranschaulichung gedacht, und die Erfindung ist nicht auf diese Beispiele beschränkt.
  • Es versteht sich, dass alle Funktionen einer oder mehrerer hierin beschriebener Ausführungsformen normalerweise durch das in 4 dargestellte System durchgeführt werden, das als Module des Programmcode 42 des Programms/Dienstprogramms 40 (1) materiell verkörpert sein kann. Dies muss jedoch nicht der Fall sein. Vielmehr könnte die hierin vorgestellte Funktionalität durch eine beliebige der Schichten 60, 70, 80 und 90 ausgeführt/realisiert und/oder ermöglicht werden, die in 3 dargestellt sind.
  • Es soll erneut darauf hingewiesen werden, dass, obwohl diese Offenbarung eine ausführliche Beschreibung des Cloud-Computing enthält, die Realisierung der hierin vorgestellten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr sind die Ausführungsformen der vorliegenden Erfindung dazu gedacht, mit einer beliebigen Art von Cluster-Datenverarbeitungsumgebung realisiert zu werden, die gegenwärtig bekannt ist oder in Zukunft entwickelt wird.
  • Bei der SQL-Analyse von Big Data werden Datenbanktabellen als Dateien in speziellen Dateiformaten gespeichert (z.B. Parquet, ORCFile usw.). Zu jedem Dateiformat gehört ein entsprechender E/A-Serialisierer und -Deserialisierer (SerDe), der aus der Datei liest und in diese schreibt. Bei Big Data kann die Speicherleistung zum Verarbeiten von Abfragen erhöht werden durch: Verringern der Daten, die pro Abfrage gescannt werden müssen, indem E/A-effiziente Serialisierer/Deserialisierer (SerDes) und spaltenförmige Layouts verwendet, eine Parallelität der horizontalen Skalierung zur Erhöhung des E/A-Durchsatzes genutzt und/oder schnellere Medien wie zum Beispiel Hauptspeicher oder Flash eingesetzt werden, um den Datenzugriff zu beschleunigen.
  • Dateiformate und zugehörige Serialisierer und Deserialisierer zur SQL-Analyse von Big Data sind für HDDs konzipiert, bei denen alle architektonischen Entscheidungen, Datenstrukturen, Projektionsalgorithmen, Auswahlalgorithmen und Join-Algorithmen (Verknüpfungsalgorithmen) zusammen mit Parametern auf den grundlegenden Leistungseigenschaften von HDDs beruhen. Direkte E/A-Operationen werden angesichts der für HDDs typischen langen Suchzeiten vermieden, und sequenzielle Zugriffe werden vorrangig verwendet, da sie um Größenordnungen schneller als direkte Zugriffe auf HDDs sind. Eine Möglichkeit zur Nutzung schneller Speichermedien, auf die ein direkter Zugriff möglich ist, zum Beispiel Flash in der Speicherhierarchie, erfolgt über die reaktive Speicherebenenverteilung (reactive tiering). Bei der reaktiven Speicherebenenverteilung überwacht das Speichermodul die Zugriffsmuster auf die Daten und verschiebt Daten, auf die häufig zugegriffen wird, auf die Flash-Hochleistungsebene (d.h. Flash-Speicher). Diese Verschiebung geschieht transparent, ohne dass die Anwendung hiervon Kenntnis hat. Infolgedessen greift die Anwendung mit denselben Algorithmen, Vorab-Abrufmechanismen und Anwendungsprogrammierschnittstellen (Application Program Interfaces, APIs) zu, die sich nun auf Flash befinden. Daher ist die erreichte Leistung nur ein Bruchteil der Leistung, die mit Algorithmen und Code erreicht werden kann, die für Flash-Speicher optimiert sind. Dem Stand der Technik entsprechend führt die einfache Datenablage eines der bestehenden SQL-Dateiformate (SQL = Structured English Query Language) im Flash bei Verwendung HDD-optimierter Algorithmen und Annahmen zu einem sehr kleinen Leistungsgewinn und zum feinkörnigen Überspringen von Daten, die anderenfalls mit diesen direktzugriffsfähigen Medien erreichbar sind. Zur Ermittlung der optimalen Leistung/US-Dollar, um die höheren Kosten für Flash zu begründen, verlangt der Übergang von HDDs mit sequenziellem Zugriff auf direktzugriffsfähige Speichermedien wie zum Beispiel Flash eine erneute Überprüfung grundlegender Entwurfsentscheidungen, von Datenlayouts, sowie von Auswahl- und Projektionsoperatoren der SerDes.
  • 4 zeigt den Speicher 28 mit einer Verarbeitung 410 auf Blockebene gemäß einer Ausführungsform. Eine Optimierungstechnik beinhaltet eine Flash-optimierte SerDes, die als FlashQueryFile 80 bezeichnet ist, für SQL über Big Data, die in den Computerknoten/Cluster 10 gespeichert sind. Ein Auswahlalgorithmus 104, Projektionsalgorithmus 106 und Aufnahmealgorithmus 102 der FlashQueryFile, von einer FlashRCFile-Datei (Layout) 304 bereitgestellte Datenlayouts und Metadaten sind für direktzugriffsfähigen Speicher wie zum Beispiel Flash (Flash-Speicher 75) optimiert, um eine höhere Leistung/US-Dollar zu erzielen. Die FlashQueryFile 80 hat Kenntnis von der Speicherebenenverteilung und stellt einen Mechanismus zur vorausschauenden Ablage (über einen Ablagealgorithmus 108) einer Teilmenge von Flash-geeigneten Spalten, auf die häufig zugegriffen wird, in der Flash-Speicherebene (Flash-Speicher 75) in einer anwendungsorientierten Weise bereit. Dies ermöglicht der FlashQueryFile 80, Voraus-Leistungsgarantien für Ad-hoc-Analyseabfragen bereitzustellen. Die FlashQueryFile 80 senkt die Abfrageverarbeitungslatenz, indem nur Daten gelesen werden, die für die Abfrage bei Auswahlen und Projektionen absolut notwendig sind, indem Datenstrukturen und Metadaten grundlegend neu gestaltet werden, um ein feinkörniges Überspringen von Daten zu ermöglichen, und durch die Nutzung der Speicherung von Prädikaten in Stapelspeichern sowie durch eine späte Speicherung. Die FlashQueryFile 80 nutzt in ihrem Auswahlalgorithmus außerdem die Parallelität des Datenzugriffs, die durch eine durch den Flash interne E/A-Parallelität ermöglicht wird. Die FlashQueryFile 80 im Scan-Algorithmus berücksichtigt beim Ausgleich zwischen sequenziellen Zugriffen und Direktzugriffen sorgfältig Eigenschaften des Flash 75, was sehr wichtig ist, da mit jedem Direktzugriff auch ein zugehöriger API-Aufwand verbunden ist. Ein einfaches Durchführen einer Anzahl kleiner Direktzugriffe anstelle eines langen sequenziellen Zugriffs kann die Leistung tatsächlich beeinträchtigen, wenn der API-Aufrufaufwand überhand nimmt. Die FlashQueryFile 80 kann die Bedeutung der Verwendung von Hochleistungs-E/A-APIs, Objektserialisierung und -deserialisierung und Datenstrukturen zeigen, um die Leistungsvorteile von Flash ableiten zu können. Die Verwendung von APIs, die eigens für Festplatten entwickelt wurden, zum Beispiel APIs, die aggressiv puffern und vorab abrufen, können tatsächlich die Leistungsvorteile von Flash 75 zunichte machen. Wie nachstehend weiter beschrieben wird, kann die FlashQueryFile 80 verbessert werden, indem die Verarbeitung 410 auf Blockebene bei der dateiinternen Speicherebenenverteilung von Blöcken und/oder die dateiinterne parallele Anordnung von Blöcken gemäß einer oder mehreren Ausführungsformen verwendet wird.
  • Bisher hat sich die Forschung hauptsächlich auf die Einbeziehung von Flash aktualisierungsintensiven OLTP-Arbeitslasten (OLTP = Online Transactional Processing, Online-Transaktionsverarbeitung) konzentriert. Einige Arbeiten wurden durchgeführt, um Flash bei OLAP-Arbeitslasten (OLAP = Online Analytical Processing, analytische Online-Verarbeitung) zu nutzen. Die FlashQueryFile 80 stellt eine Flash-optimierte SerDe zur analytischen Abfrageverarbeitung von Big Data bereit und wird durch die Verarbeitung 410 der dateiinternen Ablage und parallelen Anordnung von Blöcken gemäß einer oder mehreren Ausführungsformen erweitert.
  • Flash ist weniger teuer als mit Kapazitätseinschränkungen behafteter RAM und eignet sich im Vergleich zur Hinzufügung von zusätzlichem RAM auch besser zur Verwendung als Second-Level-Cache. Eine große Anzahl kürzlich durchgeführter Arbeiten zur Beschleunigung von Hadoop bei Abfragen und interaktiver Datenverarbeitung hängt stark von sehr großen RAM-Größen ab. Flash kann eine viel höhere Leistung/US-Dollar als RAM erreichen, da er viel höhere Kapazitäten als RAM zu viel niedrigeren Kosten ermöglicht. Flash ist außerdem viel energieeffizienter und energieproportional als Festplatten; dadurch wird er ferner zu einer attraktiven Wahl für die Speicherung in Big-Data-Clustern, bei denen eine Senkung der Energiekosten erhebliche Auswirkungen auf die Gesamtbetriebskosten hat. Des Weiteren ist Flash sehr wünschenswert zum Speichern der Map-Ausgabe von MapReduce-Jobs und erhöht die Leistung von Sortierungen und anderen Vergleichswerten (Benchmarks) um das Dreifache, die zu einer beträchtlichen Menge von Zwischendaten führen. Insgesamt machen hohe Leistung, kleine Grundfläche, geringer Stromverbrauch, sinkende Preise und Nichtflüchtigkeit von Flash es zu einer sehr wünschenswerten Speicherart als Speicherebene/Cache in Big-Data-Clustern.
  • 5 veranschaulicht, wie eine Tabelle als eine einzige FlashQueryFile-Datei bzw. ein einziges FlashQueryFile-Layout 304 logisch dargestellt sein kann, die bzw. das (durch die FlashQueryFile 80) in mehrere Blöcke eines verteilten Dateisystems (DFS) aufgeteilt (gespeichert) wurde, die gemäß einer Ausführungsform über die Computersysteme/Server 12 in dem Knoten/Cluster 10 hinweg verteilt sind. Obwohl 5 einen Dateiblock 301 zeigt, der im Speicher 28 gespeichert ist, stellt der Dateiblock 301 zahlreiche Dateiblöcke 301 dar, die über mehrere Computersysteme/Server 12 in dem Knoten/Cluster 10 hinweg verteilt sind. 5 hebt zudem Metadaten-Kopfdaten (Header) hervor, die im Flash-Speicher 75 gespeichert sind, wie nachstehend erläutert wird.
  • Dementsprechend ist eine Spalte in der FlashQueryFile-Datei/in dem FlashQueryFile-Layout 304 horizontal in mehrere Zeilengruppen unterteilt, die jeweils eine konfigurierbare Anzahl von Zeilen enthalten. Ein Dateiblock 301 enthält mehrere Zeilengruppen. Die FlashQueryFile 80 verwaltet Metadaten-Header auf drei unterschiedlichen Ebenen: 1) Blockebenen-Header, die als „RCHeader“ bezeichnet werden, 2) Zeilengruppenebenen-Header, die als „RGHeader“ bezeichnet werden, und 3) Spaltenebenen-Header, die als „ColHeader“ bezeichnet werden. Die Header (d.h. RCHeader 310, RGHeader 315 und ColHeader 320) verwalten Datenstrukturen, um schnelle Direktzugriffe auf die notwendigen Daten zu erleichtern und ein feinkörniges Überspringen von Daten zu ermöglichen. Die Metadaten-Header RCHeader 310, RGHeader 315 und ColHeader 320 enthalten jeweils Metadaten, die durch die FlashQueryFile 80 gelesen werden können, um zu ermitteln, wann ein ganzer Dateiblock zu überspringen (und anschließend zum nächsten Dateiblock überzugehen) ist, eine Zeilengruppe zu überspringen (und anschließend zur nächsten Zeilengruppe überzugehen) ist und/oder eine Spalte zu überspringen (und anschließend zur nächsten Spalte überzugehen) ist, während eine Abfrage ausgeführt wird (z.B. die Auswahlphase/der Auswahlteil der Abfrage). Als Beispiel sind eine Auswahlspalte 325, eine Projektionsspalte 330 mit niedriger Rangfolge (Kardinalität) und eine Projektionsspalte 335 mit sehr hoher Kardinalität dargestellt.
  • Der (Dateiblock-)RCHeader 310 enthält die Anzahl von Zeilengruppen (n_rgs) in dem Dateiblock und die Versionsnummer, die es der Software der FlashQueryFile 80 ermöglicht, während der Lebensdauer der Installation eine Abwärts- und Aufwärtskompatibilität über verschiedene Versionen der Dateiblockstruktur hinweg aufrechtzuerhalten. Der Header RGHeader 315 enthält den Offset des Anfangs der Zeilengruppe in dem Dateiblock (rg_offset) und die Größe der Zeilengruppe in dem Dateiblock (rg_size). Der RGHeader 315 enthält außerdem die Anzahl von Zeilen und Spalten, die in der Zeilengruppe vorliegen. Wenn zum Beispiel die Zeilengruppengröße so konfiguriert ist, dass sie 10 Millionen für einen Dateiblock beträgt, würde das Feld rg_rows als Wert 10 Millionen enthalten.
  • Der ColHeader 320 verwaltet Datei-Offsetzeiger für verschiedene mögliche spaltenförmige Layouts in dem Dateiblock. Der Datei-Offset und die Größe des Wörterbuches einer Spalte werden in u_offset bzw. u_size verwaltet. Die Felder u_offset und u_size sind für FlashQueryFile-Layouts belegt, die zur schnellen Projektion und Auswahl das Wörterbuch (z. B. das Auswahlwörterbuch und/oder das Projektionswörterbuch) nutzen. Die Felder I_offset und I_size enthalten den Datei-Offset der Suchstruktur, die in dem projektionsoptimierten Layout verwendet wird. Die Felder d_offset und d_size enthalten den Datei-Offset von Daten von Spalten, die in ihrem jeweiligen Zustand gespeichert sind (da z. B. Spalten mit der Kardinalität = 1 in ihrem jeweiligen Zustand ohne Wörterbuch gespeichert werden). Wie durch die FlashQueryFile 80 ausgeführt, veranschaulichen die Pfeile 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354 Beziehungen und Verwendungen der Metadaten-Kopfdaten. Die Pfeile 341 bis 354 veranschaulichen die Beziehung zwischen einem Offset-Feld und der Datenstruktur, auf die der abgelegte Offset in dem Dateiblock 301 zeigt.
  • Dateitypen in allen Strukturen wurden unter dem Blickwinkel der Platzeffizienz sorgfältig ausgewählt. Die FlashQueryFile 80 verwaltet zwei Datenlayouts in der FlashQueryFile-Datei 304 (durch einen Aufnahmealgorithmus 102 entschieden): eines, das für die Auswahlphase/den Auswahlteil einer Abfrage optimiert ist und das andere, das für die Projektionsphase/den Projektionsteil der Abfrage optimiert ist. Obwohl sich die Prädikatwerte und die Reihenfolge und Anzahl der Spalten über Ad-hoc-Abfragen hinweg ändern, neigen einige Spalten dazu, häufig als entweder Projektions- oder Auswahlspalten benötigt zu werden. Beispielsweise sind im Datensatz TPCH zwei Spalten, L_EXTENDEDPRICE (nicht dargestellt) und L_DISCOUNT die am Projektionsspalten, auf die am häufigsten zugegriffen wird. Ihre Häufigkeit ist intuitiv, da TPCH als finanzieller Benchmark gestaltet ist; diese numerischen Spalten betreffen Geld, und Summierungen können nur bei numerischen Werten auftreten. Spalten mit einem Datentyp wie zum Beispiel L_SHIPDATE (in 2B) werden als Auswahlspalte sehr häufig benötigt, da das Datum normalerweise eine wichtige Größe bei analytischen Abfragen ist. Ebenso sind Primärschlüssel und Fremdschlüssel Auswahlspalten, auf die häufig zugegriffen wird. Die FlashQueryFile 80 bietet drei Datenformate für spaltenförmige Daten: ein Format, das für eine schnelle Auswahl nach Auswahlspalten optimiert ist, auf die häufig zugegriffen wird, das andere Format, das für die schnelle Projektion auf die Projektionsspalten optimiert ist, auf die häufig zugegriffen wird, und ein drittes Format, bei dem es sich um ein Hybrid-Layout handelt, das für Spalten verwendet wird, die als Projektions- und Auswahlspalten verwendet werden (unterschiedliche Zeiten in einer Abfrage). Das Standardlayout ist das Hybridformat, bei dem das Administrator- und/oder ein Vorhersagemodul (in der FlashQueryFile 80) ein Nur-Auswahl- oder ein Nur-Projektion-Layout zur besseren Platzeffizienz als das Hybridlayout wählen kann. Bei einer früheren Untersuchung von vergleichbaren Aktivitäten im Industriezweig wurde zudem festgestellt, dass die Menge von Auswahlspalten selbst bei analytischen Ad-hoc-Abfragen sehr vorhersagbar bleibt. Von diesen Beobachtungen geleitet ermöglicht die FlashQueryFile 80 (über den Aufnahmealgorithmus 102) es wahlweise Benutzern und/oder Abfragemodulen, einige Spalten in der Tabelle als Spalten zu markieren, die nur projektierte Spalten, nur ausgewählte Spalten und/oder eine Kombination aus projektierten Spalten und ausgewählten Spalten sind. Dementsprechend nutzt die FlashQueryFile 80 (über den Aufnahmealgorithmus 102) in ihrer Datenlayoutentscheidung zur Platzeffizienz (in der FlashQueryFile-Datei 304) Faktoren für diese Informationen (d.h. die Spalten, die in der Tabelle als Spalten markiert sind, bei denen es sich um nur projektierte Spalten, nur ausgewählte Spalten und/oder eine Kombination handelt). Der Aufnahmezeitalgorithmus 102 ist in der folgenden Tabelle 1 beschrieben. Zu beachten ist, dass ein Primärschlüssel eine Spalte oder Gruppe von Spalten ist, die eine Zeile eindeutig kennzeichnen. Jede Tabelle sollte einen Primärschlüssel haben, und eine Tabelle kann nicht mehr als einen Primärschlüssel haben. Die Primärschlüsseleigenschaften können als Teil einer Spaltendefinition angegeben werden, zum Beispiel in der ersten Spalte einer Tabelle, oder sie können als separate Klausel der Anweisung CREATE TABLE angegeben werden. Ein Fremdschlüssel ist eine Spalte oder eine Menge von Spalten in einer Tabelle, deren Werte übereinstimmende Werte im Primärschlüssel einer anderen (oder derselben) Tabelle haben müssen. Ein Fremdschlüssel bezieht sich auf seinen Primärschlüssel. Fremdschlüssel sind ein Mechanismus zur Aufrechterhaltung der Datenintegrität.
    Figure DE102016105472B4_0001
    Figure DE102016105472B4_0002
    Figure DE102016105472B4_0003
    Figure DE102016105472B4_0004
    Figure DE102016105472B4_0005
  • 6 veranschaulicht die ursprüngliche Beziehung 401 (Datenbanktabelle „Zeilenelement“) von Spalten und Reihen mit Datenwerten einer Tabelle. Die Tabelle wird durch die FlashQueryFile 80 in die Computersysteme/Server 10 aufgenommen, um für Flash-Speicher optimiert zu werden. Die Tabelle wird nicht in der ursprünglichen Beziehung gespeichert. Die Blöcke der Tabelle werden als Datei-Zeilenelement 601 gespeichert. Ein Serialisierer baut die Blöcke auf, während die Zeilen in die Computersysteme/Server 10 aufgenommen werden, und das Dateisystem verteilt die Blöcke über ein oder mehrere Systeme/Server 10 auf die Cluster.
  • 7 veranschaulicht ein (einfaches) auswahloptimiertes Layout einer Projektionsspalte, auf die häufig zugegriffen wird, mit variabler Größe. Aus der ursprünglichen Beziehung 401 der Tabelle in 6 wurde (durch die FlashQueryFile 80 zur Speicherung) ein auswahloptimiertes Datenlayout 402 entwickelt, in 7 dargestellt, um einen schnellen Prädikatsabgleich zu erleichtern und Datenlesevorgänge während der Auswahlklausel/des Auswahlteils (z.B. dort, wo die Klausel das Prädikat enthält) zu verringern. Für jede potenzielle Auswahlspalte entnimmt die FlashQueryFile 80 eindeutige Werte, die in jeder Zeilengruppe der Spalte vorkommen, und speichert die eindeutigen Werte zusammenhängend im Auswahlwörterbuch 403. Der Spalten-Header verwaltet einen Offset (Abseits) zum Anfang der eindeutigen Werte. Als Nächstes speichert die FlashQueryFile 80 Offsets 450 (als „Off“ und/oder „O“ abgekürzt) und Länge (d.h. Größe) der Menge von Zeilenpositionen, bei denen jeder eindeutige Wert in der Spalte vorkommt (in 47 nicht dargestellt, aber in 5). Schließlich speichert die FlashQueryFile 80 die Mengen von Zeilenpositionen für jeden eindeutigen Wert in einer Zeilenpositionsbezeichnung 405. Die Offsets 450 entsprechen der Position jeder Erfassung/Gruppierung von Zeilenpositionen für einen einzelnen eindeutigen Wert. Im Metadaten-Header verfolgt die FlashQueryFile 80 außerdem (gespeicherte) Werte für Maximum, Minimum, mittleren Wert, Durchschnitt und Zählwert von Einträgen in der Spalte-pro-Zeile-Gruppe. „Maximum“ bezeichnet den größten Wert, „Minimum“ bezeichnet den kleinsten Wert, „mittlerer Wert“ bezeichnet den mittleren Wert und „Durchschnitt“ bezeichnet den Durchschnittswert, der in jeder Zeilengruppe einer Spalte vorkommt. „Zählwert“ bezeichnet die Anzahl von Zeilen in der Zeilengruppe der Spalte. Im Vergleich zur Tabelle 401 mit der ursprünglichen Beziehung in 6 ist das auswahloptimierte Datenlayout 402 eine andere Möglichkeit zur Speicherung der Spalte C1, ohne die Speicherung derselben Datenwerte wiederholen zu müssen.
  • Ein Big-Data-Dateisystem-Cluster enthält normalerweise mehrere Server, die als Datenknoten fungieren, und Dateien werden zur Aufnahmezeit in Blöcke aufgeteilt und über den Cluster verteilt. Jeder Block enthält eine konfigurierbare Anzahl von Zeilen in der Datenmenge. Bei einer Ausführungsform teilt die FlashQueryFile 80 den Block in zwei Teilblöcke auf, wobei ein Teilblock eine Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, die als Flash-geeignet ermittelt wurden, und der zweite Teilblock die übrigen Spalten enthält.
  • Direktzugriffsfähige Hochleistungsspeichereinheiten wie beispielsweise Flash sind viel teurer und haben kleinere Speicherkapazitäten als HDDs. Zudem bietet Flash 10-mal bis 1000-mal mehr Direktzugriff-E/A-Prozessoren (Direktzugriff-IOPs) (IOPs = I/O processors, E/A-Prozessoren) als HDDs, obwohl die sequenzielle Bandbreite nur 3-mal bis 7-mal höher als bei HDDs ist. Daher steht das Ablegen von Daten, auf die auf dem Flash nur sequenziell zugegriffen werden wird, für das Erreichen einer niedrigeren Leistung pro US-Dollar als das Ablegen von Daten, auf die meistens direkt zugegriffen werden wird. Nicht alle Daten, auf die häufig zugegriffen wird, führen zu einer höheren Leistung pro US-Dollar, indem sie auf einer direktzugriffsfähigen Speicherebene abgelegt werden. Ausführungsformen beinhalten einen Ablage-Entscheidungsfindemechanismus, der die Blöcke von spaltenförmigen Daten auswählt, die auf der am besten geeignet erscheinenden Speicherebene abgelegt werden sollen, um eine optimale Leistung pro US-Dollar zur erreichen, wobei Blöcke bei einer Indexknoten-Datenstruktur (I-Knoten-Datenstruktur) für unterschiedliche Speicherarten (d.h. HDD und SDD/Flash) benachbart sein können.
  • Historische Abfrageinformationen und Laufzeit-Abfrageinformationen für die große Datenbank können außerdem verwendet werden, um die Speichereinheit auszuwählen, auf der jeder Block einer Spalte gespeichert wird. Zu den historischen Abfrageinformationen gehören die Art der Verwendung für jeden Block einer Spalte in der Abfrage (z.B. Select-Klausel (d.h. Projektion), Where-Klausel (d.h. Auswahl), Join usw.), die Selektivität der Abfrage usw. Die historischen Abfrageinformationen werden verwendet, um einen abfrageübergreifenden und abfrageinternen Graphen der Spalte-Block-Beziehung zu erzeugen, wobei die Kanten die Auswahl-/Projektions-/Join-Beziehung zwischen beliebigen zwei Spalten in einer Abfrage definieren. Jede Beziehungskante hat eine zu dieser gehörige Gewichtung, die durch Verwendung eines Optimierungsalgorithmus ermittelt wird, der unter Berücksichtigung von Kapazitätseinschränkungen versucht, die Leistung der Abfragen pro US-Dollar zu maximieren. Bei Ausführungsformen, bei denen historische Abfrageprotokolle nicht vorliegen, wird der Spaltenbeziehungsgraph (auf Grundlage von Spaltenblöcken) während der Laufzeit anhand der eingehenden Abfragen ermittelt. Zum Aufnahmezeitpunkt wird der Spaltenbeziehungsgraph eingestuft, und jedem Spaltenblock wird eine Punktzahl zugewiesen. Spaltenblöcke mit höheren Punktzahlen werden auf leistungsfähigeren Speichereinheiten abgelegt.
  • Ein Mehrebenen-Unternehmensspeichersystem zum Speichern einer großen Datenbank kann ein Computersystem (z.B. das Computersystem/den Server 12, 1) enthalten, das bzw. der sich im Datenaustausch mit einer ersten Speichereinheit und einer zweiten Speichereinheit befindet. Die erste Speichereinheit kann eine oder mehrere direktzugrifffähige Hochleistungsspeichereinheiten wie zum Beispiel Flash enthalten, und die zweite Speichereinheit kann eine oder mehrere Speichereinheiten mit niedriger Leistung wie zum Beispiel HDDs enthalten. Das Computersystem ist konfiguriert, um eine Arbeitslast zu empfangen, die zum Beispiel eine große Datenbank enthält, und es ist außerdem konfiguriert, um Blöcke mindestens einer Spalte der großen Datenbank auf jeder der ersten Speichereinheit und der zweiten Speichereinheit zu speichern. Bei einer Ausführungsform können die Blöcke auf einem I-Knoten 1110 (11) (des Zeilenelements 601) und in mehreren Speicherebenen auf der ersten Speichereinheit (z.B. einem SDD-Datenblock 1121) und der zweiten Speichereinheit (z.B. einem HDD-Datenblock 1120) parallel angeordnet sein. Bei beispielhaften Ausführungsformen beruht die Ermittlung, welche der ersten Speichereinheit und der zweiten Speichereinheit, auf der jeder Block einer Spalte gespeichert werden sollte, auf den Attributen der Speicherblöcke und auf beliebigen verfügbaren historischen Abfrageinformationen und Laufzeit-Abfrageinformationen.
  • Bei beispielhaften Ausführungsformen werden Datenblöcke für Spalten einer großen Datenbank, auf die mit größerer Wahrscheinlichkeit direkt zugegriffen werden soll, in der ersten Speichereinheit gespeichert, und Datenblöcke von Spalten, auf die mit größerer Wahrscheinlichkeit sequenziell zugegriffen werden soll, werden in der zweiten Speichereinheit gespeichert. Wenn zum Beispiel ein oder mehrere Datenblöcke einer Spalte (d.h. der Spalte in der Auswahlklausel der Abfrage) eine niedrige Kardinalität haben, profitieren die Spalten am meisten von einem sequenziellen Zugriff, da unter Umständen eine große Anzahl von Zeilenpositionen dem Prädikat entspricht und daher in der zweiten Speichereinheit gespeichert sein sollte. Andererseits stimmen unter Umständen ein oder mehrere Datenblöcke einer Spalte mit hoher Kardinalität mit nur einigen wenigen Zeilen überein und haben mehr Chancen, dass direkt auf sie zugegriffen wird und sie auf der ersten Speichereinheit gespeichert werden. Bei einer oder mehreren Ausführungsformen können die durch die erste Speichereinheit realisierten Leistungsgewinne pro US-Dollar maximiert werden, indem nur Datenblöcke von Spalten der großen Datenbank gespeichert werden, auf die mit einer größeren Wahrscheinlichkeit in der ersten Speichereinheit direkt zugegriffen werden soll.
  • Bei beispielhaften Ausführungsformen kann die Ermittlung, welche Blöcke von Spalten der großen Datenbank auf der ersten Speichereinheit zu speichern sind, außerdem auf den Eigenschaften der ersten Speichereinheit und der zweiten Speichereinheit beruhen. Zu den Eigenschaften der ersten Speichereinheit und der zweiten Speichereinheit können gehören, ohne auf diese beschränkt zu sein, Zeit für den sequenziellen Zugriff, Zeit für den Direktzugriff, Kapazität, Latenz und dergleichen. Bei einer Ausführungsform können, wenn auf Datenblöcke einer Spalte der großen Datenbank wahrscheinlich direkt zugegriffen wird, diese unter Umständen nicht auf der ersten Speichereinheit gespeichert werden, wenn festgestellt wird, dass die Datenblöcke einen Schwellenwertprozentsatz der Kapazität der ersten Speichereinheit überschreiten. Bei einer oder mehreren Ausführungsformen sind die Leistungseigenschaften der ersten Speichereinheit und der zweiten Speichereinheit sehr unterschiedlich, und die Auswahl, auf welcher Einheit jeder Datenblock einer Spalte gespeichert werden soll, ist so ausgelegt, dass sie diese Unterschiede ausnutzt.
  • Bei einer oder mehreren Ausführungsformen kann durch das Computersystem jedem der Datenblöcke von Spalten der großen Datenbank eine Punktzahl vergeben werden, die auf der Einstufung der gewichteten abfrageübergreifenden und abfrageinternen Spaltenbeziehungsgraphen beruht. Bei einer oder mehreren Ausführungsformen gibt die Punktzahl den wahrscheinlichen Leistungsgewinn pro US-Dollar wieder, der realisiert wird, indem die Datenblöcke einer Spalte auf der ersten Speichereinheit und nicht auf der zweiten Speichereinheit gespeichert werden. Die auf der ersten Speichereinheit zu speichernden Datenblöcke von Spalten werden anschließend auf Grundlage der Punktzahl für jeden Datenblock einer Spalte, der Größe jedes Spaltendatenblocks und der Kapazität der ersten Speichereinheit ausgewählt. Ein üblicher Weg zur Nutzung von Hochleistungsspeichereinheiten besteht darin, auf derartigen Einheiten häufig benötigte Datenblöcke abzulegen, auf die häufig zugegriffen wird. Eine derartige naive Technik führt jedoch nicht zu einer optimalen Leistung pro US-Dollar. Daher werden bei einer oder mehreren Ausführungsformen nicht alle Spaltendatenblöcke, auf die häufig zugegriffen wird, in der ersten Speichereinheit abgelegt. Zum Beispiel haben Datenblöcke einer Spalte, auf die häufig, aber nicht in sequenzieller Weise zugegriffen wird, unter Umständen eine nicht ausreichend hohe Punktzahl, um zum Speichern in der ersten Speichereinheit ausgewählt zu werden, wenn es sich bei der ersten Speichereinheit um Flash handelt. Den Spaltendatenblöcken, die normalerweise projiziert werden, wird eine höhere Gewichtung als den Spaltendatenblöcken zugewiesen, die sich normalerweise auf der Auswahlseite der Abfrage befinden. Ein Teil der Informationen (wie zum Beispiel ein Wörterbuch der eindeutigen Werte) der Spaltendatenblöcke, die normalerweise in der Auswahlklausel vorkommen, wird standardmäßig auf der ersten Speichereinheit behalten. Die Einstufung ermittelt die Ablage nur des restlichen Teils der spaltenförmigen Datenblöcke, die Zeilenpositionen für jeden eindeutigen Wert enthalten.
  • 8 veranschaulicht ein Flussdiagramm eines Prozesses 800 zur Erzeugung eines Vorhersagemodells, das zur Lenkung der Laufzeitentscheidung über die Ablage von spaltenförmigen Blockdaten gemäß einer Ausführungsform verwendet werden kann. Bei einer oder mehreren Ausführungsformen kann die Ermittlung, auf welcher Speichereinheit des Mehrebenen-Unternehmensspeichersystems jeder Speicherblock einer Spalte gespeichert werden sollte, auf historischen Abfrageinformationen und Laufzeit-Abfrageinformationen für die große Datenbank beruhen. Wie bei Block 802 dargestellt, beginnt der Prozess 800 durch Empfangen einer Arbeitslast einschließlich einer großen Datenbank, die in einem Mehrebenen-Unternehmensspeichersystem gespeichert werden sollen. Als Nächstes enthält der Prozess 800, wie bei Entscheidungsblock 804 dargestellt, ein Ermitteln, ob historische Abfrageprotokolle für die Arbeitslast vorliegen. Wenn historische Abfrageprotokolle vorliegen, geht der Prozess 800 zu Block 806 über und analysiert ein Abfrageprotokoll historischer Abfragen für die große Datenbank. Als Nächstes enthält der Prozess 800, wie bei Block 808 dargestellt, ein Erzeugen eines gewichteten abfrageübergreifenden und abfrageinternen Spaltenbeziehungsgraphen auf Grundlage der Analyse. Bei einer oder mehreren Ausführungsformen ist jede Spalte in einer Abfrage mit anderen Spalten in derselben Abfrage auf Grundlage ihres Vorkommens in der Auswahl-, Projektions- oder Join-Klausel verbunden. Zum Beispiel werden zwei Spalten, die beide in der Projektionsklausel vorkommen, durch eine Select-Select-Beziehung verbunden. Wenn eine Spalte in der Auswahlklausel und eine andere in der Projektionsklausel vorkommen, werden sie durch eine Select-Where-Beziehung verbunden. Wie bei Block 810 dargestellt, enthält der Prozess 800 auch ein Zuweisen von Gewichtungen zu dem Spaltenbeziehungsgraphen auf Grundlage von Optimierungsalgorithmen, die eine Maximierung der Leistung pro US-Dollar für die Abfragen im Trainingsfenster zum Ziel haben.
  • Wenn keine historischen Abfrageprotokolle vorliegen, geht der Prozess 800 zu Block 812 über, und das Vorhersagemodell in Form des Spaltenbeziehungsgraphen wird während der Laufzeit durch Analysieren der eingehenden Anfragen erzeugt. Bei einer oder mehreren Ausführungsformen wird für Select-Klauseln (d.h. den Spalten, die projiziert werden) die Verteilung der Zeilen ausgewertet, die durch die historischen Abfragen und Laufzeitabfragen untersucht/projiziert wurden, die die Spalte in der Select-Klausel enthalten. Wenn der Prozentsatz von Zeilen niedrig ist, die durch die Select-Klausel untersucht wurden, zeigt dies an, dass die Spalte einen Leistungsgewinn nahelegen kann, indem nur an erwünschten Zeilenpositionen direkt darauf zugegriffen wird. Wenn jedoch der Prozentsatz von Zeilen, die durch die Select-Klausel untersucht wurden, höher als ein Selektivitätsschwellenwert ist, zeigt dies an, dass besser sequenziell auf die Spalte zugegriffen werden sollte. Wie bei Block 814 dargestellt, enthält der Prozess 800 auch ein Aktualisieren des Spaltenbeziehungsgraphen mit neuen eingehenden Abfrageinformationen.
  • Dementsprechend wird bei einer oder mehreren Ausführungsformen den Projektionsspalten, die einen Leistungsgewinn nahelegen, indem direkt darauf zugegriffen wird, eine höhere Gewichtung zugewiesen, sodass sie eine höhere Chance haben, dass ihre Datenblöcke in der ersten Speichereinheit gespeichert werden. Andererseits wird den Spalten, auf die besser sequenziell zugegriffen würde, eine niedrigere Gewichtung zugewiesen, sodass ihre Datenblöcke eine geringere Chance haben, in der zweiten Speichereinheit gespeichert zu werden.
  • Bei einer oder mehreren Ausführungsformen enthält das Analysieren des Abfrageprotokolls ein Aufbauen eines abfrageinternen Beziehungsgraphen zwischen Spalten der großen Datenbank und ein Zuweisen einer Gewichtung zu jeder Beziehung oder Kante zwischen verbundenen Spalten auf Grundlage des Beitrags der Beziehung zur Leistung. Sobald die Gewichtungen zugewiesen sind, werden die Spalten auf Grundlage einer Punktzahl eingestuft, bei der es sich um die Summe der Gewichtungen der eingehenden Kanten handelt. Bei einer oder mehreren Ausführungsformen werden die Werte der Gewichtungen ermittelt, indem die Leistung modelliert wird, die jede Spalte in jeder Anfrage des historischen Protokolls erfahren hat, und indem die Leistung unter Berücksichtigung von Einschränkungen wie beispielsweise der Größe der ersten Speichereinheit maximiert wird.
  • Bei einer Ausführungsform führt, wenn eine Spalte als Projektionsspalte als häufig benötigt angesehen wird und das Abfrageprotokoll anzeigt, dass ein niedriger Prozentsatz von Zeilen normalerweise in den Abfragen unter Einbeziehung der Spalte untersucht wird, die Ablage der Datenblöcke der Spalte in der ersten Speichereinheit im Vergleich zur Ablage der Datenblöcke der Spalte in der zweiten Speichereinheit zu einer Verbesserung der Leistung. Darüber hinaus führt, wenn die erste Speichereinheit eine hohe E/A-Parallelität ermöglicht, die Ablage der Datenblöcke einer Spalte in der ersten Speichereinheit im Vergleich zur Ablage der Datenblöcke der Spalte in der zweiten Speichereinheit zu einer noch weiteren Verbesserung der Leistung. Bei einer weiteren Ausführungsform führt, wenn eine Spalte als Projektionsspalte als häufig benötigt angesehen wird und das Abfrageprotokoll anzeigt, dass ein hoher Prozentsatz von Zeilen normalerweise in den Abfragen unter Einbeziehung der Spalte untersucht wird, die Ablage der Datenblöcke der Spalte in der ersten Speichereinheit gegenüber der Ablage der Datenblöcke der Spalte in der zweiten Speichereinheit zu einer geringeren Zunahme (d.h. des Faktors des Unterschieds zwischen der sequenziellen Bandbreite von Flash als erster Speichereinheit im Vergleich zur HDD als zweiter Speichereinheit) der Leistung. Eine derartige Heuristik lenkt die Gewichtungszuordnungen in dem abfrageinternen Spaltengraphen, der durch den Ablagealgorithmus verwendet wird.
  • Bei einer Ausführungsform enthält ein Prozess zum vorausschauenden Ablegen von Datenblöcken von Spalten einer großen Datenbank in einem Mehrebenen-Unternehmensspeichersystem während der Erzeugung der großen Datenbank ein Empfangen einer Arbeitslast einschließlich einer großen Datenbank, die in einem Mehrebenen-Unternehmensspeichersystem gespeichert werden sollen. Der Prozess enthält ein Auswerten eines oder mehrerer Attribute der Spalten der großen Datenbank. Der gewichtete Spaltenbeziehungsgraph wird eingestuft, und die zugehörige Einstufung einer Spalte wird verwendet, um die Ablage ihrer Datenblöcke in der Speicherhierarchie zu lenken. Der Prozess enthält ferner ein Ermitteln auf Grundlage eines oder mehrerer Attribute, ob jeder der Datenblöcke von Spalten der großen Datenbank auf einer ersten oder einer zweiten Speichereinheit des Mehrebenen-Unternehmensspeichersystems gespeichert werden sollte. Bei einer oder mehreren Ausführungsformen kann die Ermittlung, auf welcher Speichereinheit des Mehrebenen-Unternehmensspeichersystems jeder Speicherblock einer Spalte gespeichert werden sollte, auch auf einer oder mehreren Eigenschaften der Speichereinheiten des Mehrebenen-Unternehmensspeichersystems beruhen.
  • Bei einer oder mehreren Ausführungsformen überwacht das Computersystem, nachdem die große Datenbank in das Mehrebenen-Unternehmensspeichersystem geladen wurde, die Verwendung der großen Datenbank und verschiebt in regelmäßigen Abständen Datenblöcke der Spalten der großen Datenbank zwischen der ersten Speichereinheit und der zweiten Speichereinheit. Dementsprechend reagiert das Computersystem auf Grundlage eingehender Analyseabfragen auf Änderungen bei der Häufigkeit der Spaltendatenblöcke und bei den Beziehungen zwischen Spalten während der Laufzeit. Der spalteninterne Beziehungsgraph und die Spalteneinstufung ändern sich als Reaktion auf die Muster, die die Laufzeitabfragen zeigen. Die zukünftigen Datenblock-Ablageentscheidungen ändern sich ebenfalls dementsprechend.
  • Flash mit vorausschauender Spaltenablage ist teurer und hat weniger Platz als HDDs. Wichtig ist, die richtige Teilmenge von Datenblöcken von Spalten im Flash abzulegen, die zur höchsten Leistung/US-Dollar führen, um die höheren Kosten für Flash zu rechtfertigen. Alle Spaltendatenblöcke sind ungleich und führen durch die Ablage im Flash nicht zur selben Leistung/US-Dollar. Flash führt zur höchsten Leistung/US-Dollar, wenn direkt auf Daten zugegriffen wird, da Flash bei Direkt-IOPs 40-mal bis 1000-mal schneller als HDDs und bei sequenziellen Zugriffen nur 2-mal bis 7-mal schneller ist. Durch Ablegen von Datenblöcken einer Spalte, auf die wahrscheinlich direkt zugegriffen wird, erhält man gegenüber Datenblöcken einer Spalte, auf die nur sequenziell zugegriffen wird, bei Flash mehr Gegenwert fürs Geld.
  • Eine einfache Möglichkeit des Aufteilens der Spaltendatenblöcke auf eine Flash-Speicherebene und eine HDD-Speicherebene besteht darin, die Spaltendatenblöcke, auf die häufig zugegriffen wird, in der Flash-Speicherebene abzulegen. Selbst bei Arbeitslasten mit einem hohen Prozentsatz von Ad-hoc-Abfragen werden einige Spaltendatenblöcke abfrageübergreifend von sich aus entweder als Auswahl- oder als Projektions-Spaltendatenblöcke häufiger benötigt. Obwohl sich die Prädikatwerte und die Reihenfolge und Anzahl der Spalten abfrageübergreifend ändern, neigen einige Spalten dazu, als entweder Projektions- oder Auswahlspalten häufiger als andere benötigt zu werden.
  • Bei einer oder mehreren Ausführungsformen verwenden die hierin beschriebenen Prozesse ein vorausschauendes Spaltendatenblock-Ablagemodell in einem Mehrebenen-Speichersystem, das außer der Häufigkeit von Spaltendatenblöcken mehrere weitere Faktoren berücksichtigt, um spaltenübergreifend eine optimale Leistung/US-Dollar zu erreichen. Bei seiner Entscheidung über die Speicherebenenverteilung von Spaltendatenblöcken werden verschiedene Attribute der Spaltendatenblöcke wie zum Beispiel ihre Kardinalität, Sortierreihenfolge, Seltenheit und Größe in Betracht gezogen. Darüber hinaus wird ein Training des Ablagemodells durchgeführt, indem historische Abfrageprotokolle (sofern verfügbar) und Laufzeit-Abfrageprotokolle analysiert werden. Falls keine historischen Abfrageprotokolle vorliegen, trainieren die Prozesse die Modelllaufzeit unter Verwendung eines konfigurierbaren Fensters von Laufzeitabfragen. Unter Verwendung des Abfrageprotokolls wird ein gewichteter abfrageübergreifender und abfrageinterner Spaltenbeziehungsgraph erzeugt, und unter Verwendung eines Optimierungsalgorithmus, der die Spaltendatenblock-Eigenschaften und ihre Auswirkungen auf ein Verbessern der Leistung/US-Dollar durch Ablegen auf Flash berücksichtigt, werden Gewichtungen zugewiesen.
  • Eine konfigurierbare Anzahl von Abfragen entweder in den historischen Abfrageprotokollen oder Laufzeit-Abfrageprotokollen kann zum Trainieren des vorausschauenden Spaltendatenblock-Ablagemodells verwendet werden. Für alle Abfragen im Abfragefenster wird ein abfrageübergreifender und abfrageinterner Spaltenbeziehungsgraph erzeugt. Bei den Beziehungen zwischen den Spalten kann es sich entweder um Auswahl-Auswahl, Projektion-Auswahl oder Projektion-Projektion handeln. Eine höhere Gewichtung wird der Beziehung Projektion-Projektion zugewiesen, da der Auswahlalgorithmus den höchsten Gewinn aus der Ablage im Flash nahelegt, und falls eine Projektionsspalte nicht auf Flash abgelegt wird, stuft er die Abfrage herab. Spalten in Auswahl-Auswahl erhalten die niedrigste Gewichtung, da die Leistung durch eine anteilige Ablage einiger Spaltendatenblöcke im Flash nicht beeinträchtigt wird. Die Einstufung jeder Spalte ist charakterisiert als: r a n k ( c i ) = α * c a r d i n a l i t y + β * s i z e + γ * s o r t _ o r d e r + δ * c o l u m n _ t y p e + θ * ( S S ( i , j ) ) + π * ( S P ( i , j ) ) + φ * ( P P ( i , j ) )
    Figure DE102016105472B4_0006
    wobei „cardinality“ (Kardinalität) der Prozentsatz eindeutiger Werte in der Spalte ist, „sort_order“ (Sortierreihenfolge) 1 beträgt, wenn die Spalte sortiert ist, und anderenfalls 0 beträgt, „Häufigkeit“ die Anzahl ist, wie oft die Spalte in den Abfragen im Berücksichtigungsfenster vorkommt, „column_type“ (Spaltenart) die Art angibt, in der eine Spalte in der Abfrage verwendet wird und 0 bei Auswahlspalten, 1 bei Projektionsspalten und 2 beträgt, wenn eine Spalte auf beide Arten verwendet wird. Bei den Summierungen gehört j zu der Liste von Nachbarn, die sich in einer entsprechenden Beziehung (SS bei Auswahl-Auswahl, SP bei Auswahl-Projektion und PP bei Projektion-Projektion) mit i befinden. Die Gewichtungen der Beziehungen hängen von der Selektivität der Abfragen in den Trainingsdaten ab.
  • Bei einer oder mehreren Ausführungsformen führt der Projektionsalgorithmus bei niedriger Selektivität der Abfrage (d.h. sehr wenige Zeilenpositionen stimmen mit dem Prädikat überein) einen Punktzugriff auf den Datei-Offset der Zeilenposition durch, um den Wert der Projektionsspalte zu lesen. Dies führt zu einer Umsetzung in Direktzugriffe, und die Ablage der Projektions-Spaltendatenblöcke im Flash führt zu einem hohen Leistungsgewinn pro US-Dollar. Andererseits kehrt der Projektionsalgorithmus bei hoher Selektivität der Abfrage und der Übereinstimmung einer großen Anzahl von Zeilenpositionen mit dem Prädikat zu einem sequenziellen Modus zurück, bei dem er die Zeilenpositionen zu Clustern zusammenfügt und aus den Projektionsspalten in großen Datenblöcken (Chunks) liest. Die Ablage von Projektions-Spaltendatenblöcken im Flash wird nicht zu einem hohen Leistungsgewinn pro US-Dollar wie beim vorigen Szenario führen. Daher hat die Selektivität der Abfrage eine Auswirkung auf die Leistung eines Spaltendatenblocks im Flash.
  • Für jede Abfrage wird als unabhängige Variable eine Matrix aller möglichen Kombinationen der Spaltenablage verwendet. Wenn zum Beispiel eine Abfrage 7 Spalten hat, sind 128 Ablagekombinationen von Spaltendaten möglich, wobei noch mehr Kombinationen von Spaltendatenblöcken möglich sind. Eine Spalte ist in Binärform dargestellt, wobei eine 1 die Ablage auf Flash und eine 0 die Ablage auf einer Platte bedeutet. Die bei der Abfragelatenz beobachtete Beschleunigung (d.h. grundlegende Abfragelatenz/Abfragelatenz bei Ablage in mehreren Speicherebenen) und die Kosten der Ablage bilden die abhängigen Variablen. Die Kosten einer Spaltenablagekombination ist einfach ein Faktor ihrer Größe * Kosten des Flash-Speichers/GB für die Spaltenablage in Flash und Größe * Kosten der Platte/GB für die Spalten, die auf der Platte vermutet werden. Der Einfluss jeder Spaltenkombination auf die Anfrageleistung (d.h. Beschleunigung) wird für jede Abfrage im Abfragefenster modelliert. Die Leistungseigenschaften der Festplatte und von Flash (z.B. Bandbreite) werden bei der Modellierung zusätzlich zu den Eigenschaften der Spalte und der Selektivität der Abfragen berücksichtigt.
  • Zur Vereinfachung wird angenommen, dass die Abfragelatenz die Summe aus der erwarteten Zeit ist, die zum Zugreifen jeder einzelnen Spalte in der Abfrage erforderlich ist. Angenommen, C = c1, c2,..., ck sind die in einer Abfrage vorkommenden Spalten. E [ Q ] = i = 1 k E [ c i ]
    Figure DE102016105472B4_0007
  • Angenommen, yi ist die Markierung, die angibt, ob die Spalte ci auf Flash oder HDD abgelegt ist. y [ i ] = { 1 if  c i  is on flash 0 if  c i  is on HDD
    Figure DE102016105472B4_0008
  • Die Leistungsmodellierung beruht auf den zuvor erörterten Auswahl- und Projektionsalgorithmen. Die Abfragelatenz wird wie folgt berechnet, wenn sich ci auf Flash befindet und eine Auswahlspalte ist: E [ c i ] = ( c a r d i n a l i t y i * R G s i z e + s e l e c t i v i t y ( q ) * 4 / B W f l a s h
    Figure DE102016105472B4_0009
  • Dem Auswahlalgorithmus folgend wird jede Zeilengruppe parallel verarbeitet, und aus jeder Zeilengruppe werden zuerst die eindeutigen Werte gelesen, die cardinalityi*RG size (RG-Größe) entsprechen, und anschließend werden übereinstimmende Zeilenpositionen gelesen, die selectivity(q)*4 entsprechen, wobei selectivity(q) die Selektivität der momentan modellierten Abfrage und 4 die Größe jeder Zeilenposition ist. Die grundlegende Abfrageleistung wird ermittelt, indem nacheinander jede Spalte der Abfrage unter Verwendung der Bandbreitenwerte der Platte gelesen wird.
  • Wenn sich „$c_{i}$“ auf Flash befindet und eine Projektionsspalte ist, wird die Abfragelatenz wie folgt berechnet: E [ c i ] = s e l e c t i v i t y ( q ) * f i e l d s i z e i / B W f l a s h
    Figure DE102016105472B4_0010
    wobei selectivity(q) die Selektivität der Abfrage und „fieldsizei“ die Feldgröße der Spalte ci ist. Dies ist eine Näherung des Projektionsalgorithmus.
  • Wenn sich i auf einer Platte befindet, wird sie in ihrer Gesamtheit gelesen, wie dies bei Algorithmen nach dem Stand der Technik der Fall ist. E[ci] = size/BWhdd, wobei sizei die Gesamtgröße der Spalte in der Datei ist. Die entstehende Matrix wird optimiert, um eine sortierte Menge von Spalten zu erzielen, die die maximale Beschleunigung bei allen Abfragen und gleichzeitig die Kosten minimiert, wenn sie auf Flash abgelegt wird. Die entstehende Menge von Spalten wird anschließend verwendet, um unter Verwendung der Regressionsanalyse die Werte von Koeffizienten „$\alpha$“ usw. zu ermitteln. Die Einstufungsgleichung wird verwendet, um die Einstufung jeder neuen Spalte zu ermitteln, die in dem Datensatz vorkommt, um ihre Ablage der Speicherhierarchie zu ermitteln. Spalten werden eingestuft, und die Spalteneinstufung wird beim Ermitteln der Ablage der Spalte im Flash verwendet; Spalten mit der höchsten Einstufung werden im Flash abgelegt. Bei jeder Trainingsrunde wird der Abfragegraph unter Verwendung der Abfragen im Fenster neu erzeugt, und die Koeffizienten werden erneut ermittelt, um die Aktualität des Vorhersagemodells zu gewährleisten.
  • Zum Zeitpunkt der ersten Erzeugung der Datenbank und bei Fehlen von historischen Abfrageprotokollen für ähnliche Datenbanken entscheidet ein Urlade-Ablagealgorithmus die erste Ablage der Spalten auf Grundlage beobachteter Spalteneigenschaften und Heuristiken. In einem ersten Schritt wird eine konfigurierbare Anzahl von Zeilen, die momentan aufgenommen werden, im Speicher gepuffert. Die Eigenschaften (z.B. Kardinalität, Sortierreihenfolge usw.) werden aus den gepufferten Zeilen in Erfahrung gebracht.
  • Bei einer oder mehreren Ausführungsformen muss der Urlade-Ablagealgorithmus außerdem die mögliche Verwendung der Spalten als Auswahl- oder Projektionsspalten kennen. Außerdem versucht er, eine mögliche Häufigkeit der Spalten herauszufinden. Die mögliche Häufigkeit von Spalten kann auf mehreren Wegen angegeben bzw. ermittelt werden: 1) durch von dem Anwender bereitgestellte Hinweise, 2) Einblicke, die aus dem Datensatz gesammelt wurden, Feldtypen, Namen, Ratschläge, die aus einer Anwendung übernommen wurden usw. Beispielsweise neigen in einer Tabelle der Primär- und der Fremdschlüssel dazu, in einer großen Anzahl von Abfragen vorzukommen, und sind daher von Natur aus häufige Auswahlspalten. Bei einem Finanzdatensatz neigen Spalten mit Währungsattributen (z.B. Steuer, Rabatt, Preis, Lohn usw.) dazu, häufige Projektionsspalten für Summierungsabfragen zu sein. Zum Beispiel sind bei dem Datensatz TPCH, der anhand von Finanzdatensätzen modelliert wurde, „l_discount“ und „l_xtendedprice“ in der Zeilenelementtabelle die häufigsten Projektionsspalten.
  • Anschließend werden Heuristiken verwendet, um auf Grundlage der zuvor ermittelten Eigenschaften die Ablage der Spalten zu ermitteln. Die Heuristiken werden durch die Projektions- und Auswahlalgorithmen informiert. Zum Verständnis der Intuition hinter den Heuristiken wird die Ablageentscheidung von Auswahlspalten beschrieben, die durch den Auswahlalgorithmus mitgeteilt wird. Der erste Teil im Algorithmus beinhaltet einen sequenziellen Lesevorgang der eindeutigen Werte zum Durchführen eines Prädikatsabgleichs. Der zweite Teil enthält Potenzial für viel mehr Direktzugriffe, da er ein Lesen von Zeilenpositions-BLOBs für jeden Wert beinhaltet, der mit dem Prädikat übereinstimmt. Wenn die Zeilenpositions-BLOBs klein sind und eine große Anzahl von eindeutigen Werten mit dem Prädikat übereinstimmt, führt der zweite Teil des Algorithmus zu einer großen Zahl von Direktzugriffen. Ein derartiges Szenario tritt ein, wenn die Kardinalität der Spalte hoch ist und ein Ablegen von Spaltendatenblöcken im Flash zu einer höheren Leistung des Auswahlalgorithmus pro US-Dollar führt. Wenn andererseits die Zeilenpositions-BLOBs sehr groß sind, führt ein Abrufen der Zeilenpositions-BLOBs nach dem Prädikatsabgleich zu einer geringen Anzahl großer sequenzieller Zugriffe; ein Szenario, das für eine Spalte mit niedriger Kardinalität typisch ist. Das Ablegen derartiger Spaltendatenblöcke im Flash ermöglicht eine niedrigere Leistung des Auswahlalgorithmus pro US-Dollar. Die Größe der Spalte spielt ebenfalls eine ähnliche Rolle bei der Erzielung der Leistung pro US-Dollar. Die Ablageheuristik stuft Spalten mit hoher Kardinalität höher ein.
  • 9 veranschaulicht ein Beispiel des Aufteilens von Blöcken 910 in Teilblöcke 920, 922 gemäß einer Ausführungsform. Bei einer Ausführungsform werden die Blöcke 910 und die zugehörigen Teilblöcke 920 und 922 unter Verwendung des Datei-Zeilenelements 601 aufgeteilt. Die zugehörigen Teilblöcke 920 und 922 werden anschließend parallel auf einem Server 12 in einer SDD- oder Flash-Speicherebene 930 und HDD-Speicherebene 940 angeordnet. Bei einer Ausführungsform baut ein FlashQueryFile-Serialisierer der FlashQueryFile 80 Dateisystemblöcke 910 auf, während weiterhin Zeilen in die Datenbanktabelle 401 aufgenommen werden. Der FlashQueryFile-Serialisierer teilt jeden Dateisystemblock 910 in zwei Teilblöcke 920 und 922 auf: ein Teilblock (Teilblock 920) enthält eine Teilmenge von Flashoptimierten Spalten, auf die häufig zugegriffen wird, und eine konfigurierbare Anzahl von Zeilen, und der andere Teilblock (Teilblock 922) enthält übrige Spalten in der Datenbanktabelle 401 und dieselbe Anzahl von Zeilen wie der andere Teilblock.
  • 10 veranschaulicht die Ablage von Teilblöcken auf den Servern (S1 und S2) 12 in den SDD- oder Flash-Block des Flash 75 und den HDD-Block der HDD 34 aus der Tabelle von 6, die als Zeilenelement-Datei 601 gespeichert sind, gemäß einer Ausführungsform. Bei einer Ausführungsform nutzt der FlashQueryFile-Serialisierer eine API der Blockebenenverarbeitung 410 (4), die durch das unterlagerte Dateisystem eines Servers/Systems 12 bereitgestellt wird, die es dem FlashQueryFile-Serialisierer ermöglicht, zwei Teilblöcke (z.B. die Teilblöcke 920 und 922, 9) und ihre Speicherebenenempfehlung an das Dateisystem zu übergeben. Darüber hinaus stellt die API der Blockebenenverarbeitung 410 dem Dateisystem für die beiden Teilblöcke eine Empfehlung zur parallelen Anordnung bereit - die Empfehlung zur parallelen Anordnung empfiehlt dem Dateisystem, die beiden Teilblöcke auf demselben Server 12 abzulegen; allerdings in unterschiedlichen Ebenen von Speicherblöcken (Flash-Speicherebene 930/Flash-Block und HDD-Speicherebene 940/HDD-Block).
  • Bei einer Ausführungsform empfängt das Dateisystem einen Aufruf „Write(sub-block1, tier = flash, sub-block2, tier = HDD, collocate = true)“. Das Dateisystem macht anschließend einen Server 12 ausfindig, auf dem genügend Platz für den sub-block1 (z.B. Teilblock 920) auf der Flash-Speicherebene 930/dem Flash-Block und den sub-block2 (z.B. Teilblock 922) auf der HDD-Speicherebene 940/dem HDD-Block vorhanden ist. Sobald ein Server 12 gefunden wurde, legt das Dateisystem den sub-block1 auf der Flash-Speicherebene 930/dem Flash-Block und den sub-block2 auf der HDD-Speicherebene 940/dem HDD-Block ab.
  • Die Spalten, auf die in der OLAP-Datenbank häufig zugegriffen wird (schreibgeschützt, und Daten werden an Tabellen nur angehängt), werden auf Grundlage des oben definierten Algorithmus ermittelt. Der Algorithmus berücksichtigt mehrere Faktoren wie zum Beispiel Größe, Kardinalität, Datenverteilung usw., bevor Spalten ermittelt werden, die durch Ablegen im SSD die Leistung optimieren (je nachdem, ob auf die Spalte sequenziell oder häufiger per Direktzugriff zugegriffen werden wird). Zusätzlich zum OLAP-Anwendungsfall über Petabyte von Daten gibt es mehrere andere motivierende Anwendungsfälle zum Durchführen einer Speicherebenenverteilung auf Blockebene sowohl in einer GPFS- als auch in einer GPFS-FPO-Umgebung (GPFS = General Parallel File System) (FPO = File Placement Optimizer) gemäß einer Ausführungsform. Die parallele Anordnung von Blöcken kann bei allen Anwendungsfällen notwendig sein. Das folgende Beispiel stellt einen Anwendungsfall bereit, bei dem eine parallele Anordnung von Blöcken wichtig sein kann: In der Hadoop-Umgebung ist bei üblichen Datenbankdateiformaten wie zum Beispiel RCFile die Tabelle als einzelne Datei dargestellt und auf mehrere Datenknoten verteilt. Jeder Dateisystemblock enthält eine feste Anzahl von Zeilen. Bei einer oder mehreren Ausführungsformen ist der Block in einen Block unterteilt, der Spalten, auf die häufig zugegriffen wird, in SSDgeeigneter Form enthält, und in einen anderen Block, der übrige Spalten enthält. Bei einer Ausführungsform ist eine parallele Anordnung dieser beiden Teilknoten auf demselben Datenknoten aus mehreren Gründen wichtig. Falls eine Abfrage beide Arten von Spalten beinhaltet, sollte der Zugriff auf die Spalten auf der HDD-Schicht keine zusätzliche Netzwerklatenz nach sich ziehen (die auftritt, wenn der Block auf einem anderen Knoten abgelegt ist). Beide Blöcke können von derselben Zuordnungsaufgabe verarbeitet werden, da sie sich auf demselben Datenknoten befinden. Dies wäre wichtig für die Leistung. Wenn die Zeilen, deren Teilstücke (Shards) gegenwärtig auf den SSDs abgelegt sind, nicht mehr wichtig sind, muss GPFS unter Umständen eine Migration der Blöcke durchführen. Es wäre wichtig, die Informationen über die parallele Anordnung zwischen den Blöcken aufrechtzuerhalten, da unter Umständen wieder häufig auf die Zeilen zugegriffen wird und möglicherweise eine Aufwärtsverlagerung zurück auf die SSD-Speicherebene durchgeführt werden muss. Bei einer Ausführungsform tragen Informationen über die parallele Anordnung zum ordnungsgemäßen Ablegen der Datenblöcke auf den richtigen Speicherebenen auf demselben Datenknoten bei. Bei einer Ausführungsform müssen die Teilblöcke im Zusammenhang mit einem Restripe-Ereignis (einheitenübergreifendes Lesen und Schreiben von Daten) verschoben werden.
  • In der Hadoop-Umgebung ist eine OLAP-Tabelle in mehreren Dateiformaten gespeichert, z. B. RCFile (hybride Zeile/Spalte), ORCFile (optimierte Zeile/Spalte), CIF (Spalte) usw. Die Datei ist in Blöcke unterteilt, die über den Cluster verteilt sind. Jeder Block enthält n Zeilengruppen. Das Abfragemodul nutzt den Algorithmus, um einen RCFile-Block in zwei Blöcke zu unterteilen - einen mit Metadaten und Daten von Spalten, auf die häufig zugegriffen wird, und einen anderen mit Metadaten von Spalten, auf die selten zugegriffen wird. Bei einer Ausführungsform verbindet sich das Abfragemodul während des Erzeugens und Ladens einer RCFile mit dem unterlagerten Dateisystem durch: Bereitstellen eines Hinweises zur Ablage eines Blocks einer Spalte, auf die häufig zugegriffen wird, auf einem SSD-Pool und Ablage eines Blocks einer Spalte, auf die selten zugegriffen wird, auf dem HDD-Pool; und Angeben einer Einschränkung, dass die Blöcke von Spalten, auf die häufig/selten zugegriffen wird, für eine Zeilengruppe auf demselben Datenknoten abgelegt werden sollen. Bei einer Ausführungsform ist die parallele Anordnung auf demselben Knoten für die Leistung sehr wichtig, da Daten von Spalten, auf die selten zugegriffen wird, von einer HDD auf demselben Knoten abgerufen werden können, ohne dass dies einen Netzwerkaufwand nach sich zieht. Bei einer oder mehreren Ausführungsformen gehören zu den Anforderungen an das FS (FS = File System, Dateisystem): Unterstützung der speicherpoolübergreifenden Speicherebenenverteilung einer Datei auf Blockebene; Unterstützung eines Mechanismus für eine Anwendung, um Empfehlungen und Einschränkungen über die Datenablage bereitzustellen; und Unterstützung zur Aufrechterhaltung einer Beziehung zwischen Blöcken, auf die häufig und selten zugegriffen wird, und deren paralleler Anordnung während Aufnahme, Restripe, Migration und Aufwärtsverlagerung innerhalb der Speicherebenenhierarchie.
  • Herkömmliche Systeme sind gekennzeichnet durch ein Speicherniveau: mit sehr wenigen semantischen Informationen; mit einer Sicht nur auf Blöcke; mit einer grob strukturierten Entscheidungsfindung; ohne Aufnahmezeitentscheidung im Voraus, optimale Ablage eingehende Daten auf der richtigen Speicherebene, da sie von Natur aus meistens reaktiv funktionieren; mit HSM (Hierarchical Storage Management, hierarchische Speicherverwaltung): außerhalb des Dateisystems; mit Nutzung von Stubs (z.B. Analysepunkte, EAs) zur Erfassung von Datenverschiebungen auf eine andere Speicherebene; mit systemeigener (nativer) Speicherebenenverteilung auf Dateisystemebene: Dateisysteme unterstützen Speicherpools (HDD, SSD usw.) und verschieben Dateien poolübergreifend auf Grundlage von Richtlinien; mit Durchführung der Dateisystem-Speicherebenenverteilung auf der Ebene ganzer Dateien bei allen bestehenden Dateisystemen (z.B. GPFS, OneFS bei EMC, StorNext usw.), wobei unterschiedliche Blöcke derselben Datei nicht auf unterschiedlichen Pools abgelegt werden können. Eine Mehrheit der bestehenden Ansätze (z.B. Easy Tier) werden nach der Aufnahmezeit durchgeführt und sind von Natur aus reaktiv, wodurch, sobald das System erkennt, dass häufig auf einige der Datenblöcke zugegriffen wird, diese Blöcke in die SSD-Speicherebene verschoben werden. Infolgedessen sind herkömmliche Systeme nicht in der Lage, Leistungsgarantien im Voraus bereitzustellen. Diese Systeme sind außerdem auf viel niedrigeren Ebenen im System-Stack angesiedelt, und es fehlt ihnen die semantische Kenntnis, die den Anwendungen oder höheren Schichten wie zum Beispiel dem Dateisystem zur Verfügung steht. Andere Systeme (z.B. Vertica FlexStore) beruhen darauf, dass der Anwender Hinweise über Spalten bereitstellt, auf die häufig zugegriffen wird, und legen diese Spalten auf der SSD-Speicherebene ab. Bei einem derartigen System bestehen mehrere Probleme: 1) Der Anwender erkennt unter Umständen nicht alle Spalten, auf die häufig zugegriffen wird, und daher sind derartige Hinweise nicht umfassend, 2) wenn sich die Maßstäbe für die Häufigkeit im Laufe der Zeit ändern, können derartige statische Schemata die Änderungen nicht erkennen, und 3) ein einfaches Ablegen aller Spalten, auf die häufig zugegriffen wird, in der SSD ist unter Umständen wegen der begrenzten Kapazität der SSDs nicht durchführbar, und es ist daher wichtig, die Ablage von Spalten, auf die häufig zugegriffen wird, unter Berücksichtigung von Spaltengröße, erwarteter Selektivität und Vorliegen der Spalte in der Selektivitäts- oder Projektionsklausel zu optimieren. Andere Lösungen zur Speicherebenenverteilung beruhen auf einer angenäherten Abfrageverarbeitung zur Senkung der Abfragelatenz. Die Cache-Abtastungen der Tupel unterlagerter Tabellen werden speicherintern verwaltet.
  • Eine oder mehrere Ausführungsformen nutzen die Tatsache aus, dass Anwendungen die meiste semantische Kenntnis über ihre Daten haben und die Datenblöcke mit den für SSD am besten geeigneten Daten in Verbindung mit den nötigen Suchinformationen zuordnen und zusammenpacken können. Bei einer Ausführungsform wird ein Mechanismus verwendet, um dem Dateisystem eine Empfehlung zu erteilen, eingehende Datenblöcke auf einer bestimmten Speicherebene/einem bestimmten Speicherpool abzulegen; wird eine Einschränkung im Bezug auf die parallele Anordnung der Datenblöcke angegeben; wird die I-Knotenstruktur abgeändert, um die dateiinterne Speicherebenenverteilung zu unterstützen; wird eine Beziehung zwischen zwei Blöcken unter Verwendung der abgeänderten I-Knotenstruktur angegeben.
  • Eine oder mehrere Ausführungsformen ermöglichen Anwendungen eine Kontrolle über die Ablage von Datenblöcken auf der erwünschten Speicherebene zum Zeitpunkt der Dateiaufnahme selbst, wodurch Voraus-Leistungsgarantien bereitgestellt werden. Einige oder mehrere Ausführungsformen ermöglichen dem Dateisystem: einige Datenblöcke auf höhere Speicherebenen zu verschieben, wenn sie eine höhere Zugriffshäufigkeit als andere Blöcke zeigen, und einige Blöcke vorausschauend zu replizieren, entweder unter Verwendung der Empfehlung der Anwendung oder reaktiv als Reaktion auf Änderungen von Zugriffshäufigkeiten von Blöcken.
  • Bei einer Ausführungsform stellt eine Anwendung Empfehlungen und Einschränkungen zur Speicherebenenverteilung von Blöcken bereit, und das Dateisystem wählt einen Dateiknoten aus, auf dem für beide Blöcke Platz auf ihren jeweiligen Speicherebenen zur Verfügung steht. Das Dateisystem erzeugt Einträge für die Blöcke im I-Knoten und kennzeichnet die Beziehung zwischen den Blöcken in dem I-Knoten. Bei einer Ausführungsform wird die gültige dateiinterne Speicherebenenverteilung von einer während des speicherebenenübergreifenden Übergangs stattfindenden Migration einer Datei oder einer fehlgeschlagenen Migration unterschieden. Eine oder mehrere Ausführungsformen verwalten die parallele Anordnung über Dateimigration, Restripe usw. hinweg, um zu gewährleisten, dass Anwendungseinschränkungen eingehalten werden.
  • 11 veranschaulicht ein Beispiel 1100 einer dateiinternen Speicherebenenverteilung und parallelen Anordnung von Blöcken gemäß einer Ausführungsform. Bei einer Ausführungsform hat der I-Knoten 1110 der Zeilenelement-Datei 601 (6) eine Struktur zum Unterstützen der Speicherebenenverteilung von Blöcken auf dateiinterner Ebene und der Beziehung zwischen parallel angeordneten Teilblöcken. Bei einer Ausführungsform wird der I-Knoten 1110 der Zeilenelement-Datei 601 aktualisiert, indem die Informationen des Teilblocks 920 in der SDD- oder Flash-Blockliste 1120 von Blöcken und Informationen des Teilblocks 922 in der HDD-Blockliste 1130 von Blöcken im I-Knoten 1110 hinzugefügt werden. Bei einer Ausführungsform wird eine Beziehung 1140 zwischen den beiden Teilblöcken 920 und 922 registriert, um zu veranschaulichen, dass die beiden Teilblöcke 920 und 922 komplementäre Informationen enthalten. Bei einer Ausführungsform wird diese Beziehung zu einem späteren Zeitpunkt während der Migration, des Restripe usw. verwendet.
  • Eine oder mehrere Ausführungsformen ordnen Dateiblöcke aus derselben Datei auf dem I-Knoten 1110 parallel an (d.h. dateiinterne parallele Anordnung von Blöcken), indem die Speicherebenenverteilung für zwei Teilblöcke auf HDD und SDD (d.h. dateiinterne Speicherebenenverteilung von Blöcken) verwendet wird, um eine dateiinterne blockweise organisierte Speicherablage bereitzustellen. Bei einem Beispiel wird ein erster Teilblock 920 aus einer Datei in mehreren Speicherebenen als erster HDD-Datenteilblock verteilt, und der zweite Teilblock 922 aus der Datei wird in mehreren Speicherebenen als Flash- oder SDD-Datenteilblock zur dateiinternen Speicherebenenverteilung von Blöcken verteilt. Die Spalten in der OLAP-Datenbank, auf die häufig zugegriffen wird (schreibgeschützt, und Daten werden an Tabellen nur angehängt) können auf Grundlage des oben beschriebenen Algorithmus ermittelt werden, der mehrere Faktoren wie zum Beispiel Größe, Kardinalität, Datenverteilung usw. berücksichtigt, bevor Spalten ermittelt werden, die durch Ablegen in der SSD- oder Flash-Speicherebene die Leistung optimieren (je nachdem, ob auf die Spalte sequenziell oder häufiger per Direktzugriff zugegriffen werden wird). Bei einer Ausführungsform ist der Algorithmus abgeändert, um eine Speicherebenenverteilung von Spaltenteilblöcken zu ermitteln, und die Teilblöcke aus derselben Datei sind für den I-Knoten 1110 parallel angeordnet, um eine dateiinterne parallele Anordnung von Blöcken bereitzustellen.
  • Zusätzlich zum OLAP-Anwendungsfall über Petabytes von Daten gibt es mehrere andere motivierende Anwendungsfälle zum Durchführen einer Speicherebenenverteilung auf Blockebene (dateiinterne Speicherebenenverteilung von Blöcken) sowohl in einer GPFS- als auch in einer GPFS-FPO-Umgebung. Die parallele Anordnung von Teilblöcken kann anwendungsfallübergreifend notwendig sein. Das folgende Beispiel stellt einen Anwendungsfall bereit, bei dem eine dateiinterne parallele Anordnung von Teilblöcken wichtig sein kann. In einer Hadoop-Umgebung ist bei üblichen Datenbankdateiformaten wie zum Beispiel RCFile die Tabelle als einzelne Datei dargestellt und auf mehrere Datenknoten verteilt. Jeder Dateisystemblock enthält eine feste Anzahl von Zeilen. Bei einer Ausführungsform ist der Block in einen Teilblock aufgeteilt/unterteilt, der Spalten, auf die häufig zugegriffen wird, in SSD- oder Flash-geeigneter Form enthält, und in einen anderen Teilblock, der übrige Spalten enthält. Bei dieser beispielhaften Ausführungsform ist eine dateiinterne parallele Blockanordnung dieser beiden Teilknoten auf demselben Datenknoten aus mehreren Gründen wichtig: 1) Falls eine Abfrage beide Arten von Spalten beinhaltet, sollte der Zugriff auf die Spalten auf der HDD-Schicht keine zusätzliche Netzwerklatenz nach sich ziehen (die auftritt, wenn der Block auf einem anderen Knoten abgelegt ist). Beide Blöcke können von derselben Zuordnungsaufgabe verarbeitet werden, da sie sich auf demselben Datenknoten befinden, was für die Leistung wichtig ist; 2) wenn die Zeilen, deren Shards gegenwärtig auf den SSDs abgelegt sind, nicht mehr wichtig sind, muss GPFS unter Umständen eine Migration der Blöcke durchführen. Es wäre wichtig, die Informationen über die parallele Anordnung zwischen den Blöcken aufrechtzuerhalten, da unter Umständen wieder häufig auf die Zeilen zugegriffen wird und möglicherweise eine Aufwärtsverlagerung zurück auf die SSD-Speicherebene durchgeführt werden würde. Die Informationen über die parallele Anordnung tragen zum ordnungsgemäßen Ablegen der Datenblöcke auf den richtigen Speicherebenen auf demselben Datenknoten bei; 3) die Teilblöcke müssen im Zusammenhang mit einem Restripe-Ereignis verschoben werden.
  • Alle Blöcke in einer Datei sind ungleich, und eine oder mehrere Ausführungsformen gleichen die Leistung der Speicherebene (z.B. SDD- oder Flash- und HDD-Speicherebene) mit der Bedeutung der Daten ab, die in den Dateiblöcken gespeichert sind. Ein Abfragemodul enthält viel mehr semantische Informationen über die relative Bedeutung der verschiedenen Spalten in einer Tabelle und kann Blöcke in einer Weise erzeugen, dass die Informationen/Tupel und Indizes von Blöcken, auf die häufig zugegriffen wird, in eine Datei zusammengeführt werden. Ein derartiger Block würde hervorragend zu der Flash-/SSD-Speicherebene oder einer ähnlichen schnellen Speicherebene passen. Zur Sicherstellung der Leistung ist es außerdem wichtig, die Teilblöcke mit den restlichen Spalten für die übereinstimmenden Zeilengruppen im selben Knoten parallel zuzuordnen. Eine Mehrheit der Lösungen zur Speicherebenenverteilung wie zum Beispiel Easy Tier sind auf viel niedrigeren Ebenen im System-Stack angesiedelt, und es fehlt ihnen die semantische Kenntnis, die den Anwendungen oder höheren Schichten wie zum Beispiel dem Dateisystem zur Verfügung steht. GPFS stellt gegenwärtig eine speicherpoolübergreifende Speicherebenenverteilung bereit; die Speicherebenenverteilung findet jedoch nur auf der Dateiebene und nicht wie bei einer oder mehreren Ausführungsformen auf der Ebene der dateiinternen Speicherebenenverteilung von Blöcken statt.
  • 12 ist ein Blockschema eines Prozesses 1200 zur dateiinternen blockweise organisierten Speicherablage in einem Dateisystem gemäß einer Ausführungsform. Bei einer Ausführungsform wird im Block 1210 eine Datei in einem Dateisystem erhalten. Bei einer Ausführungsform wird im Block 1220 die Datei in eine Mehrzahl (z.B. 2 oder mehr) von Blöcken zerlegt. Im Block 1230 wird jeder Block der Mehrzahl von Blöcken in mindestens zwei zusammengehörige Teilblöcke zerlegt. Im Block 1240 wird die dateiinterne blockweise organisierte Speicherablage auf unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke in einem Dateisystem-Metadatenlayout ermittelt. Bei einer Ausführungsform kann der Prozess 1200 ein Ermitteln einer dateiinternen Speicherebenenverteilung von Blöcken auf den unterschiedlichen Speichereinheiten für mindestens zwei zusammengehörige Teilblöcke bereitstellen. Bei einer Ausführungsform kann der Prozess 1200 ein Ermitteln einer dateiinternen parallelen Anordnung von Blöcken auf den unterschiedlichen Speichereinheiten für mindestens zwei zusammengehörige Teilblöcke beinhalten. Bei einer weiteren Ausführungsform kann der Prozess 1200 ein Ermitteln einer dateiinternen Speicherebenenverteilung und parallelen Anordnung von Blöcken auf den unterschiedlichen Speichereinheiten für mindestens zwei zusammengehörige Teilblöcke vorsehen.
  • Bei einer Ausführungsform kann der Prozess 1200 ferner eine Anwendungsempfehlung in dem Dateisystem zum Ermitteln einer Blockspeicherablage auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke für jeden der Mehrzahl von Blöcken ermitteln. Bei einer Ausführungsform unterstützt eine abgeänderte I-Knotenstruktur eine dateiinterne Speicherebenenverteilung von Blöcken und enthält einen Eintrag, der Informationen enthält, die eine Beziehung der parallelen Anordnung zwischen auf mehreren Speicherebenen verteilten Teilblöcken anzeigt, die sich auf demselben Datenknotenserver in dem Dateisystem befinden. Bei einer Ausführungsform kann der Prozess 1200 eine anwendungsgesteuerte Blockablage auf einer erwünschten Speicherebene zum Zeitpunkt der Dateiaufnahme bereitstellen, um im Voraus Leistungsgarantien bereitzustellen.
  • Bei einer Ausführungsform kann der Prozess 1200 ferner enthalten: ein Ermitteln eines ersten Teilblocks der mindestens zwei zusammengehörigen Teilblöcke für die Datei, die für eine erste Speicherebene vorgesehen ist, Ermitteln eines zweiten Teilblocks der mindestens zwei zusammengehörigen Teilblöcke für die Datei, die für eine zweite Speicherebene vorgesehen ist, und Auswählen eines Datenknotenservers, auf dem Platz für sowohl den ersten Teilblock auf der ersten Speicherebene als auch den zweiten Teilblock auf der zweiten Speicherebene zur Verfügung steht. Bei einer Ausführungsform kann der Prozess 1200 ein Unterscheiden einer gültigen dateiinternen Speicherebenenverteilung von einer während des speicherebenenübergreifenden Übergangs stattfindenden Migration der Datei oder einer fehlgeschlagenen Migration bereitstellen. Bei einer Ausführungsform kann der Prozess 1200 enthalten: Aufrechterhalten einer Beziehung zwischen den mindestens zwei zusammengehörigen Teilblöcken, wobei ein Teilblock eine Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, und ein zweiter Teilblock übrige Spalten enthält, und paralleles Ablegen der Blöcke, auf die häufig zugegriffen wird, und der Blöcke, auf die selten zugegriffen wird, während der Dateiaufnahme, des Speicher-Restripe-Vorgangs (Restriping), der Dateimigration und der Aufwärtsverlagerung von Dateiblöcken innerhalb der Speicherebenenhierarchie.
  • Bei einer Ausführungsform kann der Prozess 1200 ferner enthalten ein Bereitstellen einer Empfehlung durch eine Anwendung zum Ablegen eines Teilblocks, der eine Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, auf einem SSD-Pool, und eines Teilblocks, der übrige Spalten enthält, auf einem HDD-Pool, und Angeben einer Einschränkung, dass der Teilblock, der die Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, und der Teilblock, der die übrigen Spalten enthält, für eine angegebene Zahl von Zeilen auf anderen Speicherpools auf demselben Datenknotenserver in dem Dateisystem abgelegt werden soll.
  • Dem Fachmann wird klar sein, dass Aspekte der vorliegenden Erfindung in Form eines Systems, Verfahrens oder Computerprogrammprodukts verkörpert sein können. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die im hierin allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise, ohne auf diese beschränkt zu sein, ein elektronisches, ein magnetisches, ein optisches, ein elektromagnetisches System bzw. ein Infrarot- oder ein Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder eine beliebige geeignete Kombination des Vorstehenden gehören. Zu konkreteren Beispielen (unvollständige Liste) des computerlesbaren Speichermediums zählen unter anderem folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, 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 Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle verbreitetes Datensignal mit darin verkörpertem computerlesbarem Programmcode aufweisen. Ein derartiges verbreitetes Signal kann eine beliebige Vielfalt von Formen annehmen, einschließlich und ohne auf diese beschränkt zu sein, einer elektromagnetischen oder optischen Form oder einer beliebigen geeigneten Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, verbreiten oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, einschließlich, ohne auf diese beschränkt zu sein, drahtloser, drahtgebundener Medien, von Lichtwellenleitern, HF usw. oder unter Verwendung einer beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen bei Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie „C“ oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, 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. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (Local Area Network, LAN) oder über ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Nachfolgend sind Aspekte der vorliegenden Erfindung unter Bezugnahme auf Flussdiagramme und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis schaffen, das die Anweisungen aufweist, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
  • Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen bereitstellen.
  • Die Flussdiagramme und die Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß den verschiedenen Ausführungsformen der vorliegenden Erfindung. Dementsprechend kann jeder Block in den Flussdiagrammen bzw. in den Blockschemata ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Bei einigen alternativen Realisierungsformen können die im Block angegebenen Funktionen in einer anderen als in der Reihenfolge ausgeführt werden, die in den Figuren angegeben ist. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der damit verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der dargestellten Blockschemata und/oder der dargestellten Flussdiagramme sowie Kombinationen von Blöcken in den dargestellten Blockschemata und/oder in dargestellten Flussdiagrammen mithilfe von bestimmten Zwecken dienenden hardwaregestützten Systemen zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus bestimmten Zwecken dienender Hardware und Computeranweisungen ausgeführt werden kann bzw. können.
  • Bezugnahmen in den Ansprüchen auf ein Element in der Einzelform sollen nicht „ein und nur ein“ bzw. „eine und nur eine“ bedeuten, sofern nicht ausdrücklich so aufgeführt, sondern vielmehr „ein/eine oder mehrere“. Alle strukturellen und funktionalen Äquivalente der Elemente der oben beschriebenen beispielhaften Ausführungsform, die dem Fachmann gegenwärtig bekannt sind oder später bekannt werden, gelten als in die vorliegenden Ansprüche eingeschlossen. Kein Anspruchselement hierin ist als unter die Vorschriften des US-Patentgesetzes (35 U.S.C), Paragraf 112, sechster Absatz, fallend auszulegen, sofern das Element nicht ausdrücklich unter Verwendung des Ausdrucks „Mittel für“ oder „Schritt für“ aufgeführt ist.
  • Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung der Erfindung gedacht. In dem hier verwendeten Sinne schließen die Einzahlformen „ein/eine“ und „der/die/das“ auch die Pluralformen ein, sofern im Kontext nicht ausdrücklich etwas anderes angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ bzw. „aufweisen/aufweisend“ bei Verwendung in dieser Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, jedoch das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (Step plus Function Elements) in den folgenden Ansprüchen sollen alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ist jedoch nicht als erschöpfend gedacht oder auf die Erfindung in der offenbarten Form beschränkt. Für den Fachmann sind viele Modifikationen und Variationen denkbar, ohne dass diese eine Abweichung vom Schutzbereich und Grundgedanken der Erfindung darstellen würden. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken und die praktische Anwendung der Erfindung auf bestmögliche Weise zu erklären und anderen Fachleuten ein Verständnis dafür zu ermöglichen, dass verschiedene Ausführungsformen der Erfindung mit verschiedenen Modifikationen denkbar sind, die sich für die jeweils beabsichtigte Verwendung eignen.

Claims (20)

  1. Verfahren, aufweisend: Erhalten einer Datei in einem Dateisystem (1210); Zerlegen der Datei in eine Mehrzahl von Blöcken (1220) auf Grundlage einer horizontalen Aufteilung der Spalten in mehrere Zeilengruppen; Zerlegen jedes Blocks der Mehrzahl von Blöcken (1230) in mindestens zwei zusammengehörige Teilblöcke, wobei ein Teilblock eine Teilmenge häufiger Projektionsspalten und ein anderer Teilblock die übrigen Spalten enthält; und Ermitteln einer dateiinternen blockweise organisierten Speicherablage auf unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke in einem Dateisystem-Metadatenlayout (1240), wobei die dateiinterne blockweise organisierte Speicherablage auf einem vorausschauenden Spaltendatenblock-Ablagemodell basiert, das eine Vielzahl von Faktoren von Spaltendatenblöcken berücksichtigt.
  2. Verfahren nach Anspruch 1, wobei das Ermitteln der dateiinternen blockweise organisierten Speicherablage ein Ermitteln einer dateiinternen Speicherebenenverteilung von Blöcken auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke aufweist; die Dateisystem-Metadaten umfassen einen Metadaten-Header auf Blockebene (310), einen Metadaten-Header auf Zeilengruppenebene (315) und einen Metadaten-Header auf Spaltenebene (320); und die Vielzahl von Faktoren von Spaltendatenblöcken Kardinalität, Sortierreihenfolge, Seltenheit und Größe umfasst.
  3. Verfahren nach Anspruch 1, wobei das Ermitteln der dateiinternen blockweise organisierten Speicherablage ein Ermitteln einer dateiinternen parallelen Anordnung von Blöcken auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke aufweist; der Metadaten-Header auf Blockebene (310) umfasst eine Anzahl von Zeilengruppen in dem Dateiblock und eine Versionsnummer, die es ermöglicht, eine Abwärts- und Aufwärtskompatibilität über verschiedene Versionen der Dateiblockstruktur hinweg aufrechtzuerhalten; der Metadaten-Header auf Zeilengruppenebene (315) enthält die Anzahl von Zeilen und Spalten, die in der Zeilengruppe vorliegen; und der Metadaten-Header auf Spaltenebene (320) verwaltet Datei-Offsetzeiger für verschiedene mögliche spaltenförmige Layouts in dem Dateiblock.
  4. Verfahren nach Anspruch 3, ferner aufweisend: Aufrechterhalten einer Beziehung zwischen den mindestens zwei zusammengehörigen Blöcken, wobei ein Teilblock eine Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, und ein zweiter Teilblock die übrigen Spalten enthält; und paralleles Ablegen der Blöcke, auf die häufig zugegriffen wird, und der Blöcke, auf die selten zugegriffen wird, während der Dateiaufnahme, des Speicher-Restripe-Vorgangs, Restriping, der Dateimigration und der Aufwärtsverlagerung von Dateiblöcken innerhalb der Speicherebenenhierarchie.
  5. Verfahren nach Anspruch 4, ferner aufweisend: Bereitstellen einer Empfehlung durch eine Anwendung zum Ablegen eines Teilblocks, der eine Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, auf einem Halbleiterlaufwerkspool, SSD-Pool, SSD = Solid State Drive, Halbleiterlaufwerk, und eines Teilblocks, der übrige Spalten enthält, auf einem Festplattenlaufwerkspool, HDD-Pool, HDD = Festplattenlaufwerk; und Angeben einer Einschränkung, dass der Teilblock, der die Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, und der Teilblock, der die übrigen Spalten enthält, für eine angegebene Zahl von Zeilen auf anderen Speicherpools auf demselben Datenknotenserver in dem Dateisystem abgelegt werden soll.
  6. Verfahren nach Anspruch 2, wobei eine abgeänderte I-Knotenstruktur eine dateiinterne Speicherebenenverteilung von Blöcken unterstützt und einen Eintrag enthält, der Informationen enthält, die eine Beziehung der parallelen Anordnung zwischen auf mehreren Speicherebenen verteilten Teilblöcken anzeigt, die sich auf demselben Datenknotenserver in dem Dateisystem befinden.
  7. Verfahren nach Anspruch 2, ferner aufweisend: Ermitteln eines ersten Teilblocks der mindestens zwei zusammengehörigen Teilblöcke für die Datei, die für eine erste Speicherebene vorgesehen ist; Ermitteln eines zweiten Teilblocks der mindestens zwei zusammengehörigen Teilblöcke für die Datei, die für eine zweite Speicherebene vorgesehen ist; und Auswählen eines Datenknotenservers, auf dem Platz für sowohl den ersten Teilblock auf der ersten Speicherebene als auch den zweiten Teilblock auf der zweiten Speicherebene zur Verfügung steht.
  8. Verfahren nach Anspruch 2, wobei eine gültige dateiinterne Speicherebenenverteilung von Blöcken von einer während des speicherebenenübergreifenden Übergangs stattfindenden Migration einer Datei oder einer fehlgeschlagenen Migration unterschieden wird.
  9. Verfahren nach Anspruch 1, wobei das Ermitteln der dateiinternen blockweise organisierten Speicherablage ein Ermitteln einer dateiinternen Speicherebenenverteilung und parallelen Anordnung von Blöcken auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke aufweist, und spaltenförmige Daten in einem ersten Format, das für eine schnelle Auswahl nach Auswahlspalten optimiert ist, auf die häufig zugegriffen wird, einem zweiten Format, das für die schnelle Projektion auf die Projektionsspalten optimiert ist, auf die häufig zugegriffen wird, und einem dritten Format, umfassend ein Hybrid-Layout, das für Spalten verwendet wird, die als Projektionspalten, Auswahlspalten oder Projektions- und Auswahlspalten verwendet werden, formatiert sind.
  10. Verfahren nach Anspruch 1, ferner aufweisend eine Anwendungsempfehlung in dem Dateisystem zum Ermitteln einer Blockspeicherablage auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke.
  11. Verfahren nach Anspruch 10, wobei eine Anwendung eine Teilblockablage für die mindestens zwei zusammengehörigen Teilblöcke auf einer erwünschten Speicherebene zum Zeitpunkt der Dateiaufnahme steuert, um im Voraus Leistungsgarantien bereitzustellen.
  12. Computerprogrammprodukt zur dateiinternen Speicherverwaltung von Blöcken, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darauf verkörpertem Programmcode aufweist, wobei der Programmcode durch einen Prozessor ausführbar ist, um: durch den Prozessor eine Datei in einem Dateisystem zu erhalten; durch den Prozessor die Datei in eine Mehrzahl von Blöcken auf Grundlage einer horizontalen Aufteilung der Spalten in mehrere Zeilengruppen zu zerlegen; durch den Prozessor jeden Block der Mehrzahl von Blöcken in mindestens zwei zusammengehörige Teilblöcke zu zerlegen, wobei ein Teilblock eine Teilmenge häufiger Projektionsspalten und ein anderer Teilblock die übrigen Spalten enthält; und durch den Prozessor eine dateiinterne blockweise organisierte Speicherablage auf unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke in einem Dateisystem-Metadatenlayout zu ermitteln, wobei die dateiinterne blockweise organisierte Speicherablage auf einem vorausschauenden Spaltendatenblock-Ablagemodell basiert, das eine Vielzahl von Faktoren von Spaltendatenblöcken berücksichtigt.
  13. Das Computerprogrammprodukt aus Anspruch 12, wobei das Ermitteln der dateiinternen blockweise organisierten Speicherablage ein Ermitteln einer dateiinternen Speicherebenenverteilung von Blöcken auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke aufweist; die Dateisystem-Metadaten umfassen einen Metadaten-Header auf Blockebene, einen Metadaten-Header auf Zeilengruppenebene und einen Metadaten-Header auf Spaltenebene; und die Vielzahl von Faktoren von Spaltendatenblöcken Kardinalität, Sortierreihenfolge, Seltenheit und Größe umfasst.
  14. Computerprogrammprodukt nach Anspruch 13, wobei das Ermitteln der dateiinternen blockweise organisierten Speicherablage ein Ermitteln einer dateiinternen parallelen Anordnung von Blöcken auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke aufweist; der Metadaten-Header auf Blockebene (310) umfasst eine Anzahl von Zeilengruppen in dem Dateiblock und eine Versionsnummer, die es ermöglicht, eine Abwärts- und Aufwärtskompatibilität über verschiedene Versionen der Dateiblockstruktur hinweg aufrechtzuerhalten; der Metadaten-Header auf Zeilengruppenebene (315) enthält die Anzahl von Zeilen und Spalten, die in der Zeilengruppe vorliegen; und der Metadaten-Header auf Spaltenebene (320) verwaltet Datei-Offsetzeiger für verschiedene mögliche spaltenförmige Layouts in dem Dateiblock; und spaltenförmige Daten in einem ersten Format, das für eine schnelle Auswahl nach Auswahlspalten optimiert ist, auf die häufig zugegriffen wird, einem zweiten Format, das für die schnelle Projektion auf die Projektionsspalten optimiert ist, auf die häufig zugegriffen wird, und einem dritten Format, umfassend ein Hybrid-Layout, das für Spalten verwendet wird, die als Projektionspalten, Auswahlspalten oder Projektions- und Auswahlspalten verwendet werden, formatiert sind.
  15. Computerprogrammprodukt nach Anspruch 14, wobei der Programmcode durch den Prozessor ausführbar ist, um ferner: Aufrechterhalten einer Beziehung zwischen den mindestens zwei zusammengehörigen Blöcken, wobei ein Teilblock eine Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, und ein zweiter Teilblock die übrigen Spalten enthält; und Paralleles Ablegen der Blöcke, auf die häufig zugegriffen wird, und der Blöcke, auf die selten zugegriffen wird, während der Dateiaufnahme, des Speicher-Restripe-Vorgangs, Restriping, der Dateimigration und der Aufwärtsverlagerung von Dateiblöcken innerhalb der Speicherebenenhierarchie; Bereitstellen einer Empfehlung durch eine Anwendung zum Ablegen eines Teilblocks, der eine Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, auf einem Halbleiterlaufwerkspool, SSD-Pool, SSD = Solid State Drive, Halbleiterlaufwerk, und eines Teilblocks, der übrige Spalten enthält, auf einem Festplattenlaufwerkspool, HDD-Pool, HDD = Festplattenlaufwerk; und Angeben einer Einschränkung, dass der Teilblock, der die Teilmenge von Spalten enthält, auf die häufig zugegriffen wird, und der Teilblock, der die übrigen Spalten enthält, für eine angegebene Zahl von Zeilen auf anderen Speicherpools auf demselben Datenknotenserver in dem Dateisystem abgelegt werden soll.
  16. Computerprogrammprodukt nach Anspruch 13, wobei der Programmcode durch den Prozessor ausführbar ist, um ferner: Ermitteln eines ersten Teilblocks der mindestens zwei zusammengehörigen Teilblöcke für die Datei, die für eine erste Speicherebene vorgesehen ist; Ermitteln eines zweiten Teilblocks der mindestens zwei zusammengehörigen Teilblöcke für die Datei, die für eine zweite Speicherebene vorgesehen ist; und Auswählen eines Datenknotenservers, auf dem Platz für sowohl den ersten Teilblock auf der ersten Speicherebene als auch den zweiten Teilblock auf der zweiten Speicherebene zur Verfügung steht.
  17. Computerprogrammprodukt nach Anspruch 12, wobei das Ermitteln der dateiinternen blockweise organisierten Speicherablage ein Ermitteln einer dateiinternen Speicherebenenverteilung und parallelen Anordnung von Blöcken auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke aufweist.
  18. Computerprogrammprodukt nach Anspruch 12, wobei der Programmcode durch den Prozessor ausführbar ist, um ferner Bestimmen, durch den Prozessor, einer Anwendungsempfehlung in dem Dateisystem zum Ermitteln einer Blockspeicherablage auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke.
  19. Verfahren, aufweisend: Erhalten eines Blocks in einer Datei in einem Dateisystem, wobei der Block einen Teil einer horizontalen Aufteilung der Spalten resultierend in mehreren Zeilengruppen umfasst; Zerlegen des Blocks in mindestens zwei zusammengehörige Teilblöcke, wobei ein Teilblock eine Teilmenge häufiger Projektionsspalten und ein anderer Teilblock die übrigen Spalten enthält; und Ermitteln einer dateiinternen Speicherebenenverteilung und parallelen Anordnung von Blöcken auf unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke in einem Dateisystem-Metadatenlayout basierend auf einem vorausschauenden Spaltendatenblock-Ablagemodell, das eine Vielzahl von Faktoren von Spaltendatenblöcken berücksichtigt.
  20. Verfahren nach Anspruch 13, ferner aufweisend: Ermitteln von Anwendungsempfehlungen in dem Dateisystem zum Ermitteln einer Blockspeicherablage auf den unterschiedlichen Speichereinheiten für die mindestens zwei zusammengehörigen Teilblöcke; Ermitteln einer ersten Speicherebene für einen ersten Teilblock der mindestens zwei zusammengehörigen Teilblöcke; Ermitteln einer zweiten Speicherebene für einen zweiten Teilblock der mindestens zwei zusammengehörigen Teilblöcke; und Auswählen eines Datenknotenservers in dem Dateisystem, auf dem Platz für sowohl den ersten Teilblock auf der ersten Speicherebene als auch den zweiten Teilblock auf der zweiten Speicherebene zur Verfügung steht; wobei: die Dateisystem-Metadaten umfassen einen Metadaten-Header auf Blockebene, einen Metadaten-Header auf Zeilengruppenebene und einen Metadaten-Header auf Spaltenebene; der Metadaten-Header auf Blockebene umfasst eine Anzahl von Zeilengruppen in dem Dateiblock und eine Versionsnummer, die es ermöglicht, eine Abwärts- und Aufwärtskompatibilität über verschiedene Versionen der Dateiblockstruktur hinweg aufrechtzuerhalten; der Metadaten-Header auf Zeilengruppenebene enthält die Anzahl von Zeilen und Spalten, die in der Zeilengruppe vorliegen; der Metadaten-Header auf Spaltenebene verwaltet Datei-Offsetzeiger für verschiedene mögliche spaltenförmige Layouts in dem Dateiblock; die Vielzahl von Faktoren von Spaltendatenblöcken Kardinalität, Sortierreihenfolge, Seltenheit und Größe umfasst; und spaltenförmige Daten in einem ersten Format, das für eine schnelle Auswahl nach Auswahlspalten optimiert ist, auf die häufig zugegriffen wird, einem zweiten Format, das für die schnelle Projektion auf die Projektionsspalten optimiert ist, auf die häufig zugegriffen wird, und einem dritten Format, umfassend ein Hybrid-Layout, das für Spalten verwendet wird, die als Projektionspalten, Auswahlspalten oder Projektions- und Auswahlspalten verwendet werden, formatiert sind.
DE102016105472.0A 2015-03-26 2016-03-23 Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen Active DE102016105472B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/669,565 US9952808B2 (en) 2015-03-26 2015-03-26 File system block-level tiering and co-allocation
US14/669,565 2015-03-26

Publications (2)

Publication Number Publication Date
DE102016105472A1 DE102016105472A1 (de) 2016-09-29
DE102016105472B4 true DE102016105472B4 (de) 2024-05-02

Family

ID=56889716

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016105472.0A Active DE102016105472B4 (de) 2015-03-26 2016-03-23 Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen

Country Status (3)

Country Link
US (3) US9952808B2 (de)
CN (1) CN106021268B (de)
DE (1) DE102016105472B4 (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9846567B2 (en) 2014-06-16 2017-12-19 International Business Machines Corporation Flash optimized columnar data layout and data access algorithms for big data query engines
US10042914B2 (en) * 2015-06-10 2018-08-07 International Business Machines Corporation Database index for constructing large scale data level of details
US9923966B1 (en) 2015-06-29 2018-03-20 Amazon Technologies, Inc. Flexible media storage and organization in automated data storage systems
US9961141B1 (en) * 2015-06-29 2018-05-01 Amazon Technologies, Inc. Techniques and systems for tray-based storage and organization in automated data storage systems
US10649850B1 (en) 2015-06-29 2020-05-12 Amazon Technologies, Inc. Heterogenous media storage and organization in automated data storage systems
US10379959B1 (en) * 2015-06-29 2019-08-13 Amazon Technologies, Inc. Techniques and systems for physical manipulation of data storage devices
US10983957B2 (en) * 2015-07-27 2021-04-20 Sas Institute Inc. Distributed columnar data set storage
US10599352B2 (en) * 2015-08-14 2020-03-24 Samsung Electronics Co., Ltd. Online flash resource allocation manager based on a TCO model
US9886440B2 (en) 2015-12-08 2018-02-06 International Business Machines Corporation Snapshot management using heatmaps in a large capacity disk environment
US10838911B1 (en) 2015-12-14 2020-11-17 Amazon Technologies, Inc. Optimization of data request processing for data storage systems
JP6165909B1 (ja) * 2016-03-16 2017-07-19 株式会社東芝 階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法
US10320906B2 (en) * 2016-04-29 2019-06-11 Netapp, Inc. Self-organizing storage system for asynchronous storage service
US10891201B1 (en) * 2017-04-27 2021-01-12 EMC IP Holding Company LLC Dynamic rule based model for long term retention
US10838963B2 (en) * 2017-09-11 2020-11-17 International Business Machines Corporation Optimized access for hierarchical low cardinality value synopsis in analytical databases
CN109669623B (zh) * 2017-10-13 2021-09-03 杭州海康威视系统技术有限公司 一种文件管理方法、文件管理装置、电子设备及存储介质
US10360214B2 (en) * 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11106674B2 (en) 2019-03-31 2021-08-31 International Business Machines Corporation Extensible data skipping
SG11202002587TA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
WO2019228571A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
SG11202002588RA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
CN115398874A (zh) 2019-09-12 2022-11-25 创新先进技术有限公司 日志结构存储系统
US10942852B1 (en) 2019-09-12 2021-03-09 Advanced New Technologies Co., Ltd. Log-structured storage systems
EP3695328A4 (de) 2019-09-12 2020-12-09 Alibaba Group Holding Limited Protokollstrukturierte speichersysteme
CN116756110A (zh) 2019-09-12 2023-09-15 创新先进技术有限公司 日志结构存储系统
CN111183450B (zh) 2019-09-12 2024-04-19 创新先进技术有限公司 日志结构存储系统
EP3669263B1 (de) * 2019-09-12 2022-03-02 Advanced New Technologies Co., Ltd. Protokollstrukturierte speichersysteme
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11422931B2 (en) * 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11902597B2 (en) * 2021-02-09 2024-02-13 Netflix, Inc. Media aware content placement
US11550812B2 (en) * 2021-02-22 2023-01-10 International Business Machines Corporation Processing a federated query via data serialization
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US20230031304A1 (en) * 2021-07-22 2023-02-02 Vmware, Inc. Optimized memory tiering

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918225A (en) 1993-04-16 1999-06-29 Sybase, Inc. SQL-based database system with improved indexing methodology
US5848406A (en) 1996-09-03 1998-12-08 Matsushita Electric Industrial Co., Ltd. Method for presenting information on display devices of varying sizes
US6425020B1 (en) * 1997-04-18 2002-07-23 Cirrus Logic, Inc. Systems and methods for passively transferring data across a selected single bus line independent of a control circuitry
US6330555B1 (en) 1999-02-19 2001-12-11 Nortel Networks Limited Method and apparatus for enabling a view of data across a database
US6487641B1 (en) 1999-04-19 2002-11-26 Oracle Corporation Dynamic caches with miss tables
US7024414B2 (en) * 2001-08-06 2006-04-04 Sensage, Inc. Storage of row-column data
US7499907B2 (en) 2001-10-12 2009-03-03 Teradata Us, Inc. Index selection in a database system
US7117222B2 (en) 2003-03-13 2006-10-03 International Business Machines Corporation Pre-formatted column-level caching to improve client performance
EP1676217B1 (de) 2003-09-15 2011-07-06 Ab Initio Technology LLC Datenprofilierung
KR100684942B1 (ko) 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
US8538969B2 (en) 2005-06-03 2013-09-17 Adobe Systems Incorporated Data format for website traffic statistics
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7761444B2 (en) * 2006-10-05 2010-07-20 Hewlett-Packard Development Company, L.P. Identifying a sequence of blocks of data to retrieve based on a query
JP5266250B2 (ja) 2006-12-26 2013-08-21 サンディスク テクノロジィース インコーポレイテッド 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
US8150850B2 (en) 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US9805077B2 (en) 2008-02-19 2017-10-31 International Business Machines Corporation Method and system for optimizing data access in a database using multi-class objects
US8121975B2 (en) 2008-02-20 2012-02-21 Panorama Software Inc. Creating pivot tables from tabular data
US8478775B2 (en) 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US8935223B2 (en) * 2009-04-30 2015-01-13 Oracle International Corporation Structure of hierarchical compressed data structure for tabular data
JP5858432B2 (ja) 2009-06-02 2016-02-10 サフロン・テクノロジー,インコーポレイテッド 分散連想メモリベースを提供する方法、システム、及びコンピュータプログラム製品
US20110029376A1 (en) 2009-07-29 2011-02-03 Google Inc. Impression forecasting and reservation analysis
CN102859517B (zh) 2010-05-14 2016-07-06 株式会社日立制作所 时序数据管理装置、系统以及方法
US9218408B2 (en) 2010-05-27 2015-12-22 Oracle International Corporation Method for automatically creating a data mart by aggregated data extracted from a business intelligence server
US8284627B2 (en) 2010-10-22 2012-10-09 International Business Machines Corporation Reducing energy consumption and optimizing workload and performance in multi-tier storage systems using extent-level dynamic tiering
JP5178813B2 (ja) 2010-12-16 2013-04-10 ヤフー株式会社 検索システム及び方法
EP2671160A2 (de) 2011-02-01 2013-12-11 Drobo, Inc. System, vorrichtung und verfahren zur unterstützung einer redundanzspeicherung auf basis asymmetrischer blöcke
US8756382B1 (en) * 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US10152482B2 (en) 2011-10-07 2018-12-11 Synopsys, Inc. Method of speeding up access to design databases having large numbers of design units
US8914353B2 (en) 2011-12-20 2014-12-16 Sap Se Many-core algorithms for in-memory column store databases
US11347443B2 (en) * 2012-04-13 2022-05-31 Veritas Technologies Llc Multi-tier storage using multiple file sets
US9658896B2 (en) 2012-05-16 2017-05-23 International Business Machines Corporation Apparatus and method to manage device performance in a storage system
US8868576B1 (en) * 2012-06-28 2014-10-21 Emc Corporation Storing files in a parallel computing system based on user-specified parser function
CN103440244A (zh) * 2013-07-12 2013-12-11 广东电子工业研究院有限公司 一种大数据存储优化方法
US10909113B2 (en) 2013-07-31 2021-02-02 Sap Se Global dictionary for database management systems
US9292554B2 (en) 2013-08-20 2016-03-22 Pivotal Software, Inc. Thin database indexing
US9176801B2 (en) * 2013-09-06 2015-11-03 Sap Se Advanced data models containing declarative and programmatic constraints
CA2867589A1 (en) * 2013-10-15 2015-04-15 Coho Data Inc. Systems, methods and devices for implementing data management in a distributed data storage system
US9450602B2 (en) 2014-01-02 2016-09-20 Sap Se Efficiently query compressed time-series data in a database
US9846567B2 (en) 2014-06-16 2017-12-19 International Business Machines Corporation Flash optimized columnar data layout and data access algorithms for big data query engines
US10127275B2 (en) * 2014-07-11 2018-11-13 International Business Machines Corporation Mapping query operations in database systems to hardware based query accelerators
US11023486B2 (en) * 2018-11-13 2021-06-01 Thoughtspot, Inc. Low-latency predictive database analysis
US11062133B2 (en) * 2019-06-24 2021-07-13 International Business Machines Corporation Data structure generation for tabular information in scanned images

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
HE, Yongqiang [et al.]: RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems. In: 2011 IEEE 27th International Conference on Data Engineering, Hannover, 2011, IEEE Computer Society, Washington D.C., USA, S. 1199-1208. DOI: 10.1109/ICDE.2011.5767933
HE, Yongqiang [et al.]: RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems. In: 2011 IEEE 27th International Conference on Data Engineering, Hannover, 2011, IEEE Computer Society, Washington D.C., USA, S. 1199‑1208. DOI: 10.1109/ICDE.2011.5767933
KAUSHIK, Rini T.: FlashQueryFile: Flash-Optimized Layout and Algorithms for Interactive Ad Hoc SQL on Big Data. In: 6th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage '14), 2014, USENIX Association, USA, Berkeley, S. 1-5
KAUSHIK, Rini T.: FlashQueryFile: Flash-Optimized Layout and Algorithms for Interactive Ad Hoc SQL on Big Data. In: 6th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage '14), 2014, USENIX Association, USA, Berkeley, S. 1‑5.

Also Published As

Publication number Publication date
US9952808B2 (en) 2018-04-24
CN106021268A (zh) 2016-10-12
DE102016105472A1 (de) 2016-09-29
CN106021268B (zh) 2020-04-10
US11593037B2 (en) 2023-02-28
US10558399B2 (en) 2020-02-11
US20160283140A1 (en) 2016-09-29
US20180189003A1 (en) 2018-07-05
US20200097218A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
DE102016105472B4 (de) Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen
US11163746B2 (en) Reclustering of database tables based on peaks and widths
US10235376B2 (en) Merging metadata for database storage regions based on overlapping range values
DE202019005484U1 (de) Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen
DE202015009875U1 (de) Transparente Entdeckung eines semistrukturierten Datenschemas
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE202009019139U1 (de) Asynchron verteilte Deduplizierung für replizierte inhaltsadressierte Speichercluster
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
Sinthong et al. Aframe: Extending dataframes for large-scale modern data analysis
Costa et al. A survey on data-driven performance tuning for big data analytics platforms
DE112016000776T5 (de) Effiziente Durchführung von Einfüge- und Punktabfrage-Operationen in einem Spaltenspeicher
Krishna et al. Business intelligence solutions for processing huge data to the business user's using dashboards
Pokorný How to Store and Process Big Data: Are Today’s Databases Sufficient?
Sureshrao et al. MapReduce-Based warehouse systems: a survey
Lakhe et al. Case study: Implementing lambda architecture
DE102021123844A1 (de) Arbeitslast-gesteuerte datenbankreorganisation
Noon Automated performance tuning of database systems
Saravana et al. A case study on analyzing Uber datasets using Hadoop framework
Martin Collocation of Data in a Multi-temperate Logical Data Warehouse

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0016000000

Ipc: G06F0016245300

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence