DE112016001075T5 - Verteiltes speichern und abrufen von datensätzen - Google Patents

Verteiltes speichern und abrufen von datensätzen Download PDF

Info

Publication number
DE112016001075T5
DE112016001075T5 DE112016001075.3T DE112016001075T DE112016001075T5 DE 112016001075 T5 DE112016001075 T5 DE 112016001075T5 DE 112016001075 T DE112016001075 T DE 112016001075T DE 112016001075 T5 DE112016001075 T5 DE 112016001075T5
Authority
DE
Germany
Prior art keywords
data
record
mapping
node
node devices
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.)
Granted
Application number
DE112016001075.3T
Other languages
English (en)
Other versions
DE112016001075B4 (de
Inventor
Brian Payton Bowman
Steven E. Krueger
Richard Todd Knight
Chih-Wei Ho
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.)
SAS Institute Inc
Original Assignee
SAS Institute Inc
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 SAS Institute Inc filed Critical SAS Institute Inc
Publication of DE112016001075T5 publication Critical patent/DE112016001075T5/de
Application granted granted Critical
Publication of DE112016001075B4 publication Critical patent/DE112016001075B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/064Management of blocks
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or 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)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

Eine Vorrichtung weist eine Prozessorkomponente auf, die veranlasst wird, Folgendes auszuführen: Abrufen von Metadaten zur Organisation von Daten innerhalb eines Datensatzes und Zuordnungskartendaten zur Organisation von Datenblöcken innerhalb einer Datendatei, Empfangen von Angaben dazu, welche Knotenvorrichtungen verfügbar sind, um eine Verarbeitungsaufgabe mit einem Datensatzteil auszuführen, und ansprechend darauf, dass der Datensatz partitionierte Daten aufweist, Vergleichen der Anzahlen verfügbarer Knotenvorrichtungen und der zuletzt am Speichern des Datensatzes beteiligten Knotenvorrichtungen. Ansprechend auf eine Übereinstimmung wird für jeden Zuordnungskartendatenzuordnungskarteneintrag Folgendes ausgeführt: Abrufen einer gehashten Kennung für einen Datenunterblock und der Größe jedes der Datenunterblöcke innerhalb des entsprechenden Datenblocks, Dividieren der gehashten Kennung durch die Anzahl verfügbarer Knotenvorrichtungen, Vergleichen des Modulo-Werts mit einer jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegung und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, der die übereinstimmende Festlegung zugewiesen ist. Eine Vorrichtung umfasst eine Prozessorkomponente, um Folgendes auszuführen: Empfangen von Metadaten zur Datenorganisation innerhalb eines Datensatzes, Empfangen von Angaben dazu, welche Knotenvorrichtungen den Datensatz als mehrere Datenblöcke innerhalb einer Datendatei speichern, und Empfangen einer Zeigeranforderung auf eine Stelle innerhalb der Datendatei zum Speichern des Datensatzteils als Datenblock von jeder Knotenvorrichtung. Ansprechend darauf, dass der Datensatz partitionierte Daten aufweist, wird für jede Anforderung eines Zeigers Folgendes ausgeführt: Bestimmen der Stelle innerhalb der Datendatei, Erzeugen eines Zuordnungskartendatenzuordnungskarteneintrags für den Datenblock, Erzeugen einer Unterblockanzahl von Datenunterblöcken innerhalb des Datenblocks darin, Erzeugen eines Untereintrags für jeden Datenunterblock, einschließlich einer Größe und einer von einem Partitionsetikett abgeleiteten gehashten Kennung darin und Bereitstellen eines Zeigers für die Knotenvorrichtung. Ansprechend auf das erfolgreiche Speichern aller Datenblöcke werden die Zuordnungskartendaten in der Datendatei gespeichert. Eine Vorrichtung, welche eine Prozessorkomponente umfasst, führt Folgendes aus: Bereitstellen einer Angabe zur Verfügbarkeit, eine Verarbeitungsaufgabe mit einem oder mehr als einem Datensatzteil als eine Knotenvorrichtung auszuführen, für eine Steuervorrichtung, Ausführen einer Verarbeitungsaufgabe, die durch die Steuervorrichtung spezifiziert ist, mit dem einen oder den mehreren Datensatzteilen, und Anfordern eines Zeigers auf eine Stelle, an der der eine oder mehr als eine Datensatzteil als ein Datenblock innerhalb ...

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht den Vorteil der Priorität aus Folgendem: vorläufige US-Anmeldung mit der laufenden Nummer 62/197 514, eingereicht am 27. Juli 2015, vorläufige US-Anmeldung mit der laufenden Nummer 62/197 519, eingereicht am 27. Juli 2015, US-Anmeldung mit der laufenden Nummer 15/220 034, eingereicht am 26. Juli 2016, US-Anmeldung mit der laufenden Nummer 15/220 182, eingereicht am 26. Juli 2016, und US-Anmeldung mit der laufenden Nummer 15/220 192, eingereicht am 26. Juli 2016. Die Offenbarungen der vorläufigen US-Anmeldung mit der laufenden Nummer 62/197 514, der vorläufigen US-Anmeldung mit der laufenden Nummer 62/197 519, der US-Anmeldung mit der laufenden Nummer 15/220 034, der US-Anmeldung mit der laufenden Nummer 15/220 182 und der US-Anmeldung mit der laufenden Nummer 15/220 192 werden hier durch Verweis in ihren jeweiligen Gesamtheiten für alle Zwecke aufgenommen.
  • TECHNISCHES GEBIET
  • Verschiedene hier beschriebene Ausführungsformen betreffen allgemein die Koordination zwischen Vorrichtungen und die Datensatzorganisation zur Verbesserung des verteilten Speicherns und Abrufens eines von mehreren Knotenvorrichtungen verarbeiteten Datensatzes.
  • HINTERGRUND
  • Die Ausführung von Analysen großer Datensätze (was gewöhnlich beispielsweise als ”Big Data” bezeichnet wird) wird in Gebieten in der Art von Simulationen, Prozessüberwachung, Entscheidungstreffung, Verhaltensmodellierung und Vorhersagebildung zunehmend üblich. Solche Analysen werden häufig durch Grids verschiedener Anzahlen verfügbarer Knotenvorrichtungen ausgeführt, während die Datensätze häufig innerhalb eines getrennten Satzes von Speichervorrichtungen gespeichert werden. Dies bringt die Herausforderung mit sich, solche großen Datensätze zwischen Speichervorrichtungen und verschiedenen Knotenvorrichtungen in einem Grid von Knotenvorrichtungen wirksam auszutauschen.
  • KURZFASSUNG
  • Diese Kurzfassung soll nicht nur Schlüssel- oder wesentliche Merkmale des beschriebenen Erfindungsgegenstands identifizieren und soll auch nicht isoliert verwendet werden, um den Schutzumfang des beschriebenen Erfindungsgegenstands zu bestimmen. Der Erfindungsgegenstand sollte mit Bezug auf geeignete Teile der gesamten Beschreibung dieses Patents, jegliche oder alle Zeichnungen und jeden Anspruch verstanden werden.
  • Eine Vorrichtung kann eine Prozessorkomponente und einen Speicher zum Speichern von Befehlen aufweisen, die, wenn sie durch die Prozessorkomponente ausgeführt werden, die Prozessorkomponente veranlassen können, Folgendes auszuführen: Abrufen von Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, und von Zuordnungskartendaten, welche die Organisation mehrerer Datenblöcke innerhalb einer von der einen oder mehr als einen Speichervorrichtung gehaltenen Datendatei angeben, von einer oder mehr als einer Speichervorrichtung über ein Netz, wobei die Zuordnungskartendaten mehrere Zuordnungskarteneinträge umfassen und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, und Empfangen von Angaben darüber, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, die in der Lage sind, eine Verarbeitungsaufgabe mit wenigstens einem Datensatzteil von dem einen oder mehr als einen Datensatzteil auszuführen, von mehreren Knotenvorrichtungen. Ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Bestimmen einer ersten Anzahl der verfügbaren Knotenvorrichtungen auf der Grundlage der Angaben darüber, welche Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, Abrufen einer zweiten Anzahl von Knotenvorrichtungen, die zuletzt am Speichern des Datensatzes innerhalb der Datendatei beteiligt waren, aus den Metadaten oder den Zuordnungskartendaten, Vergleichen der ersten und der zweiten Anzahl von Knotenvorrichtungen, um eine Übereinstimmung zwischen der ersten und der zweiten Anzahl zu erkennen, und Zuweisen von einem von einer Reihe positiver ganzzahliger Werte zu jeder der verfügbaren Knotenvorrichtungen als ein Festlegungswert, wobei sich die Reihe von einem ganzzahligen Wert von 0 bis zu einem positiven ganzzahligen Wert, der gleich der ersten Anzahl minus dem ganzzahligen Wert von 1 ist, erstreckt. Zusätzlich kann ansprechend auf die Erkennung einer Übereinstimmung zwischen der ersten und der zweiten Anzahl für jeden Zuordnungskarteneintrag der Zuordnungskartendaten die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Abrufen einer gehashten Kennung für einen Datenunterblock, der im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben ist, und einer Datenunterblockgröße für jeden der Datenunterblöcke, die im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben sind, aus dem Zuordnungskarteneintrag, wobei die gehashte Kennung von einem Partitionsetikett einer Partition von den mehreren Partitionen abgeleitet wird und der Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger eine Angabe zur Stelle des entsprechenden Datenblocks und eine Summe der Datenunterblockgrößen aller Datenunterblöcke innerhalb des entsprechenden Datenblocks aufweist.
  • Ansprechend auf die Angabe, dass der Datensatz partitionierte Daten aufweist, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen der ersten und der zweiten Anzahl kann die Prozessorkomponente veranlasst werden, für jede Angabe innerhalb jedes Zuordnungskarteneintrags eines Datenunterblocks innerhalb eines entsprechenden Datenblocks Operationen auszuführen, welche Folgende umfassen: Abrufen der Datenunterblockgröße und der gehashten Kennung des Datenunterblocks aus dem Zuordnungskarteneintrag, Bestimmen einer Stelle des Datenunterblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger eine Angabe zur Stelle des Datenunterblocks und die Datenunterblockgröße aufweist.
  • Ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz keine partitionierten Daten aufweist, kann die Prozessorkomponente für jeden Zuordnungskarteneintrag der Zuordnungskartendaten aus dem Zuordnungskarteneintrag die Datenblockgröße und die Datenblockanzahl abrufen, wobei die Datenblockanzahl die Anzahl der benachbarten Datenblöcke in der Datendatei, die dem Zuordnungskarteneintrag entsprechen, angibt. Die Prozessorkomponente kann auch für jeden Datenblock, der dem Zuordnungskarteneintrag entspricht, Operationen ausführen, welche Folgende umfassen: Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Auswählen einer der verfügbaren Knotenvorrichtungen und Bereitstellen eines Zeigers für die ausgewählte der verfügbaren Knotenvorrichtungen, wobei der Zeiger eine Angabe zur Stelle des entsprechenden Datenblocks und die Datenblockgröße aufweist. Die Auswahl einer der verfügbaren Knotenvorrichtungen kann eine Ringauswahl einer der verfügbaren Knotenvorrichtungen einschließen.
  • Die Vorrichtung kann eine der verfügbaren Knotenvorrichtungen aufweisen. Die Prozessorkomponente kann veranlasst werden, eine Verarbeitungsaufgabe mit zumindest einem aus der Datendatei abgerufenen Datensatzteil als die eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen auszuführen.
  • Zum Abrufen der Zuordnungskartendaten aus der einen oder den mehreren Speichervorrichtungen kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Abrufen einer Basiszuordnungskarte aus der Datendatei, Analysieren der Basiszuordnungskarte zum Feststellen, ob zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung innerhalb der Datendatei gespeichert ist, und ansprechend auf eine Feststellung, dass zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, Abrufen der einen oder mehr als einen Zuordnungskartenerweiterung aus der Datendatei und Abrufen zumindest einer Untermenge der Zuordnungskarteneinträge aus der einen oder mehr als einen Zuordnungskartenerweiterung. Ansprechend auf eine Feststellung, dass kein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, kann der Prozessor veranlasst werden, alle Zuordnungskarteneinträge aus der Basiszuordnungskarte abzurufen.
  • Zum Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbar sind, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe zur Verfügbarkeit jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen. Die Prozessorkomponente kann veranlasst werden, Operationen auszuführen, wobei eine Angabe zu einer mit dem Datensatz auszuführenden Aufgabe den mehreren Knotenvorrichtungen bereitgestellt wird, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen.
  • Ein Computerprogrammprodukt, das gegenständlich in einem nichtflüchtigen maschinenlesbaren Speichermedium verwirklicht ist, wobei das Computerprogrammprodukt Befehle aufweist, die in der Lage sind, eine Prozessorkomponente zu veranlassen, Operationen auszuführen, welche Folgende umfassen: Abrufen von Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, und von Zuordnungskartendaten, welche die Organisation mehrerer Datenblöcke innerhalb einer von der einen oder mehr als einen Speichervorrichtung gehaltenen Datendatei angeben, von einer oder mehr als einer Speichervorrichtung über ein Netz, wobei die Zuordnungskartendaten mehrere Zuordnungskarteneinträge umfassen und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, und Empfangen von Angaben darüber, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, die in der Lage sind, eine Verarbeitungsaufgabe mit wenigstens einem Datensatzteil von dem einen oder mehr als einen Datensatzteil auszuführen, von mehreren Knotenvorrichtungen. Ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Bestimmen einer ersten Anzahl der verfügbaren Knotenvorrichtungen auf der Grundlage der Angaben darüber, welche Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, Abrufen einer zweiten Anzahl von Knotenvorrichtungen, die zuletzt am Speichern des Datensatzes innerhalb der Datendatei beteiligt waren, aus den Metadaten oder den Zuordnungskartendaten, Vergleichen der ersten und der zweiten Anzahl von Knotenvorrichtungen, um eine Übereinstimmung zwischen der ersten und der zweiten Anzahl zu erkennen, und Zuweisen von einem von einer Reihe positiver ganzzahliger Werte zu jeder der verfügbaren Knotenvorrichtungen als ein Festlegungswert, wobei sich die Reihe von einem ganzzahligen Wert von 0 bis zu einem positiven ganzzahligen Wert, der gleich der ersten Anzahl minus dem ganzzahligen Wert von 1 ist, erstreckt. Ansprechend auf die Erkennung einer Übereinstimmung zwischen der ersten und der zweiten Anzahl kann für jeden Zuordnungskarteneintrag der Zuordnungskartendaten die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Abrufen einer gehashten Kennung für einen Datenunterblock, der im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben ist, und einer Datenunterblockgröße für jeden der Datenunterblöcke, die im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben sind, aus dem Zuordnungskarteneintrag, wobei die gehashte Kennung von einem Partitionsetikett einer Partition von den mehreren Partitionen abgeleitet wird und der Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger eine Angabe zur Stelle des entsprechenden Datenblocks und eine Summe der Datenunterblockgrößen aller Datenunterblöcke innerhalb des entsprechenden Datenblocks aufweist.
  • Ansprechend auf die Angabe, dass der Datensatz partitionierte Daten aufweist, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen der ersten und der zweiten Anzahl kann die Prozessorkomponente veranlasst werden, für jede Angabe innerhalb jedes Zuordnungskarteneintrags eines Datenunterblocks innerhalb eines entsprechenden Datenblocks Operationen auszuführen, welche Folgende umfassen: Abrufen der Datenunterblockgröße und der gehashten Kennung des Datenunterblocks aus dem Zuordnungskarteneintrag, Bestimmen einer Stelle des Datenunterblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger eine Angabe zur Stelle des Datenunterblocks und die Datenunterblockgröße aufweist.
  • Ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz keine partitionierten Daten aufweist, kann die Prozessorkomponente für jeden Zuordnungskarteneintrag der Zuordnungskartendaten aus dem Zuordnungskarteneintrag die Datenblockgröße und die Datenblockanzahl abrufen, wobei die Datenblockanzahl die Anzahl der benachbarten Datenblöcke in der Datendatei, die dem Zuordnungskarteneintrag entsprechen, angibt. Die Prozessorkomponente kann auch für jeden Datenblock, der dem Zuordnungskarteneintrag entspricht, Operationen ausführen, welche Folgende umfassen: Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Auswählen einer der verfügbaren Knotenvorrichtungen und Bereitstellen eines Zeigers für die ausgewählte der verfügbaren Knotenvorrichtungen, wobei der Zeiger eine Angabe zur Stelle des entsprechenden Datenblocks und die Datenblockgröße aufweist. Die Auswahl einer der verfügbaren Knotenvorrichtungen schließt eine Ringauswahl einer der verfügbaren Knotenvorrichtungen ein. Die Prozessorkomponente kann veranlasst werden, ansprechend darauf, dass der Datensatz keine partitionierten Daten aufweist, die Angabe zur Stelle und zur Datenblockgröße eines einem der Zuordnungskarteneinträge entsprechenden Datenblocks zum Abrufen des Datenblocks aus der Datendatei als eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen zu verwenden. Die Prozessorkomponente kann veranlasst werden, eine Verarbeitungsaufgabe mit dem Datenblock als eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen auszuführen.
  • Zum Abrufen der Zuordnungskartendaten aus der einen oder den mehreren Speichervorrichtungen kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Abrufen einer Basiszuordnungskarte aus der Datendatei, Analysieren der Basiszuordnungskarte zum Feststellen, ob zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung innerhalb der Datendatei gespeichert ist, und ansprechend auf eine Feststellung, dass zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, Abrufen der einen oder mehr als einen Zuordnungskartenerweiterung aus der Datendatei und Abrufen zumindest einer Untermenge der Zuordnungskarteneinträge aus der einen oder mehr als einen Zuordnungskartenerweiterung. Ansprechend auf eine Feststellung, dass kein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, wobei alle Zuordnungskarteneinträge aus der Basiszuordnungskarte abgerufen werden.
  • Zum Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbar sind, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe zur Verfügbarkeit jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen. Die Prozessorkomponente kann veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe zu einer Aufgabe, die mit dem Datensatz auszuführen ist, zu den mehreren Knotenvorrichtungen, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und Ausführen der Aufgabe mit einem zweiten Datensatzteil des Datensatzes als eine zweite Knotenvorrichtung zumindest teilweise parallel zu dem Ausführen der Aufgabe durch die erste Knotenvorrichtung.
  • Ein computerimplementiertes Verfahren kann Folgendes aufweisen: Abrufen von Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, und von Zuordnungskartendaten, welche die Organisation mehrerer Datenblöcke innerhalb einer von der einen oder mehr als einen Speichervorrichtung gehaltenen Datendatei angeben, von einer oder mehr als einer Speichervorrichtung über ein Netz, wobei die Zuordnungskartendaten mehrere Zuordnungskarteneinträge umfassen und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, und Empfangen von Angaben darüber, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, die in der Lage sind, eine Verarbeitungsaufgabe mit wenigstens einem Datensatzteil von dem einen oder mehr als einen Datensatzteil auszuführen, von mehreren Knotenvorrichtungen. Ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, kann das Verfahren Folgendes aufweisen: Bestimmen einer ersten Anzahl der verfügbaren Knotenvorrichtungen auf der Grundlage der Angaben darüber, welche Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, Abrufen einer zweiten Anzahl von Knotenvorrichtungen, die zuletzt am Speichern des Datensatzes innerhalb der Datendatei beteiligt waren, aus den Metadaten oder den Zuordnungskartendaten, Vergleichen der ersten und der zweiten Anzahl von Knotenvorrichtungen, um eine Übereinstimmung zwischen der ersten und der zweiten Anzahl zu erkennen, und Zuweisen von einem von einer Reihe positiver ganzzahliger Werte zu jeder der verfügbaren Knotenvorrichtungen als ein Festlegungswert, wobei sich die Reihe von einem ganzzahligen Wert von 0 bis zu einem positiven ganzzahligen Wert, der gleich der ersten Anzahl minus dem ganzzahligen Wert von 1 ist, erstreckt. Ansprechend auf die Erkennung einer Übereinstimmung zwischen der ersten und der zweiten Anzahl kann das Verfahren für jeden Zuordnungskarteneintrag der Zuordnungskartendaten Folgendes aufweisen: Abrufen einer gehashten Kennung für einen Datenunterblock, der im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben ist, und einer Datenunterblockgröße für jeden der Datenunterblöcke, die im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben sind, aus dem Zuordnungskarteneintrag, wobei die gehashte Kennung von einem Partitionsetikett einer Partition von den mehreren Partitionen abgeleitet wird und der Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger eine Angabe zur Stelle des entsprechenden Datenblocks und eine Summe der Datenunterblockgrößen aller Datenunterblöcke innerhalb des entsprechenden Datenblocks aufweist.
  • Ansprechend auf die Angabe, dass der Datensatz partitionierte Daten aufweist, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen der ersten und der zweiten Anzahl kann das Verfahren für jede Angabe innerhalb jedes Zuordnungskarteneintrags eines Datenunterblocks innerhalb eines entsprechenden Datenblocks Folgendes aufweisen: Abrufen der Datenunterblockgröße und der gehashten Kennung des Datenunterblocks aus dem Zuordnungskarteneintrag, Bestimmen einer Stelle des Datenunterblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger eine Angabe zur Stelle des Datenunterblocks und die Datenunterblockgröße aufweist.
  • Ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz keine partitionierten Daten aufweist, kann das Verfahren für jeden Zuordnungskarteneintrag der Zuordnungskartendaten Folgendes aufweisen: Abrufen einer Datenblockgröße und einer Datenblockanzahl aus dem Zuordnungskarteneintrag, wobei die Datenblockanzahl eine Anzahl benachbarter Datenblöcke in der Datendatei, die dem Zuordnungskarteneintrag entsprechen, angibt. Das Verfahren kann auch für jeden Datenblock, der dem Zuordnungskarteneintrag entspricht, Folgendes aufweisen: Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Auswählen einer der verfügbaren Knotenvorrichtungen und Bereitstellen eines Zeigers für die ausgewählte der verfügbaren Knotenvorrichtungen, wobei der Zeiger eine Angabe zur Stelle des entsprechenden Datenblocks und die Datenblockgröße aufweist. Die Auswahl einer der verfügbaren Knotenvorrichtungen kann eine Ringauswahl einer der verfügbaren Knotenvorrichtungen einschließen.
  • Ansprechend darauf, dass der Datensatz partitionierte Daten umfasst, kann beim Verfahren als eine der verfügbaren Knotenvorrichtungen gewirkt werden, indem die Angabe der Stelle und die Datenblockgröße eines Datenblocks entsprechend einem der Zuordnungskarteneinträge verwendet werden, um den Datenblock aus der Datendatei zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen abzurufen. Beim Verfahren kann eine Verarbeitungsaufgabe mit jedem Datenunterblock innerhalb des Datenblocks als die eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen ausgeführt werden.
  • Das Abrufen der Zuordnungskartendaten aus der einen oder den mehreren Speichervorrichtungen kann Folgendes aufweisen: Abrufen einer Basiszuordnungskarte aus der Datendatei, Analysieren der Basiszuordnungskarte zum Feststellen, ob zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung innerhalb der Datendatei gespeichert ist, und ansprechend auf eine Feststellung, dass zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, Abrufen der einen oder mehr als einen Zuordnungskartenerweiterung aus der Datendatei und Abrufen zumindest einer Untermenge der Zuordnungskarteneinträge aus der einen oder mehr als einen Zuordnungskartenerweiterung.
  • Das Abrufen der Zuordnungskartendaten aus der einen oder mehr als einen Speichervorrichtung kann Folgendes aufweisen: ansprechend auf eine Feststellung, dass kein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, Abrufen aller Zuordnungskarteneinträge aus der Basis zuordnungskarte.
  • Das Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbar sind, kann Folgendes aufweisen: wiederholtes Empfangen von Angaben zum Status von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe zur Verfügbarkeit jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen. Beim Verfahren kann eine Angabe einer mit dem Datensatz auszuführenden Aufgabe den mehreren Knotenvorrichtungen bereitgestellt werden, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen.
  • Eine Vorrichtung kann eine Prozessorkomponente und einen Speicher zum Speichern von Befehlen aufweisen, die, wenn sie von der Prozessorkomponente ausgeführt werden, die Prozessorkomponente veranlassen können, Operationen auszuführen, welche Folgende umfassen: Empfangen zumindest eines Teils der Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, von zumindest einer Knotenvorrichtung von mehreren Knotenvorrichtungen, Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen an einer Speicherung des Datensatzes als mehrere Datenblöcke innerhalb einer Datendatei, die von einer oder mehr als einer Speichervorrichtung gehalten wird, zu beteiligen sind, von den mehreren Knotenvorrichtungen, wobei die Organisation der mehreren Datenblöcke innerhalb der Datendatei in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, und Empfangen einer Anforderung eines Zeigers auf eine Stelle innerhalb der Datendatei, an der die Knotenvorrichtung zumindest einen Datensatzteil als einen Datenblock speichern soll, von jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung. Ansprechend auf eine von der zumindest einen Knotenvorrichtung empfangene Angabe, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und wobei jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, für jede Anforderung eines Zeigers, die von einer am Speichern des Datensatzes beteiligten Knotenvorrichtung empfangen wird, werden Operationen ausgeführt, welche Folgende umfassen: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl innerhalb des Zuordnungskarteneintrags, welche die Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, wobei jeder Datenunterblock einen Datensatzteil des Datensatzes, der von der Knotenvorrichtung zu speichern ist, umfasst, Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine gehashte Kennung, die von einem Partitionsetikett der Partition abgeleitet wurde, zu der der entsprechende Datensatzteil gehört, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, aufweist. Ansprechend auf das erfolgreiche Speichern aller Datenblöcke des Datensatzes innerhalb der Datendatei durch alle am Speichern des Datensatzes beteiligten Knotenvorrichtungen kann die Prozessorkomponente veranlasst werden, die Zuordnungskartendaten in der Datendatei zu speichern.
  • Ansprechend auf das Fehlen einer von der zumindest einen Knotenvorrichtung empfangenen Angabe, dass der Datensatz partitionierte Daten aufweist, kann die Prozessorkomponente für jede von einer Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung eines Zeigers veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Vergleichen der Datenblockgröße des Datenblocks mit der in den Zuordnungskartendaten angegebenen Datenblockgröße für einen benachbarten Datenblock, der von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichern ist, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf eine Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, ansprechend auf eine Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, aufweist, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, aufweist.
  • Der zumindest eine Teil der Metadaten kann die von der zumindest einen Knotenvorrichtung empfangene Angabe, dass der Datensatz partitionierte Daten aufweist, aufweisen. Jede Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, kann eine einzige Anforderung eines Zeigers zum Speichern aller auf die Knotenvorrichtung verteilten Datensatzteile erzeugen müssen, und die Prozessorkomponente kann veranlasst werden, auf der Grundlage des Empfangs einer einzigen Anforderung eines Zeigers von jeder Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, festzustellen, dass alle Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei von allen Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, erzeugt worden sind. Die Vorrichtung kann eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen umfassen. Zum Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen am Speichern des Datensatzes innerhalb der Datendatei beteiligt sind, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe, ob jede Knotenvorrichtung von den mehreren Knotenvorrichtungen am Speichern des Datensatzes beteiligt ist.
  • Zum Speichern der Zuordnungskartendaten in der Datendatei kann die Prozessorkomponente veranlasst werden, festzustellen, ob die Größe der Zuordnungskartendaten eine vorgegebene Datengröße überschreitet. Ansprechend auf eine Feststellung, dass die Größe der Zuordnungskartendaten die vorgegebene Datengröße überschreitet, kann die Prozessorkomponente auch veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Unterteilen der Zuordnungskartendaten in eine oder mehrere Zuordnungskartenerweiterungen, Speichern der einen oder der mehreren Zuordnungskartenerweiterungen innerhalb der Datendatei an Stellen, die zwischen den von Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, gespeicherten Datenblöcken verteilt sind, und Speichern einer Basiszuordnungskarte, welche einen oder mehrere Zeiger auf die Stelle jeder Zuordnungskartenerweiterung innerhalb der Datendatei umfasst, innerhalb der Datendatei. Die Größe jeder Zuordnungskartenerweiterung, die innerhalb der Datendatei an einer Stelle gespeichert ist, die einer ersten der Zuordnungskartenerweiterungen folgt, kann doppelt so groß sein wie die Größe einer vorhergehenden Zuordnungskartenerweiterung.
  • Die Prozessorkomponente kann veranlasst werden, Operationen auszuführen, wobei eine Angabe zu einer mit dem Datensatz auszuführenden Aufgabe den am Speichern des Datensatzes beteiligten Knotenvorrichtungen bereitgestellt wird, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen. Jede gehashte Kennung kann einen ganzzahligen Wert umfassen, der von einem Hash-Wert abgeleitet wurde, welcher von einem Partitionsetikett genommen wurde, das eine der Partitionen von den mehreren Partitionen eindeutig identifiziert.
  • Ein Computerprogrammprodukt, das gegenständlich in einem nichtflüchtigen maschinenlesbaren Speichermedium verwirklicht ist, wobei das Computerprogrammprodukt Befehle aufweist, die in der Lage sind, eine Prozessorkomponente zu veranlassen, Operationen auszuführen, welche Folgende umfassen: Empfangen zumindest eines Teils der Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, von zumindest einer Knotenvorrichtung von mehreren Knotenvorrichtungen, Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen an einer Speicherung des Datensatzes als mehrere Datenblöcke innerhalb einer Datendatei, die von einer oder mehr als einer Speichervorrichtung gehalten wird, zu beteiligen sind, von den mehreren Knotenvorrichtungen, wobei die Organisation der mehreren Datenblöcke innerhalb der Datendatei in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, und Empfangen einer Anforderung eines Zeigers auf eine Stelle innerhalb der Datendatei, an der die Knotenvorrichtung zumindest einen Datensatzteil als einen Datenblock speichern soll, von jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung. Ansprechend auf eine von der zumindest einen Knotenvorrichtung empfangene Angabe, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und wobei jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, für jede Anforderung eines Zeigers, die von einer am Speichern des Datensatzes beteiligten Knotenvorrichtung empfangen wird, werden Operationen ausgeführt, welche Folgende umfassen: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl innerhalb des Zuordnungskarteneintrags, welche die Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, wobei jeder Datenunterblock einen Datensatzteil des Datensatzes, der von der Knotenvorrichtung zu speichern ist, umfasst, Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine gehashte Kennung, die von einem Partitionsetikett der Partition abgeleitet wurde, zu der der entsprechende Datensatzteil gehört, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, aufweist. Ansprechend auf das erfolgreiche Speichern aller Datenblöcke des Datensatzes innerhalb der Datendatei durch alle am Speichern des Datensatzes beteiligten Knotenvorrichtungen kann die Prozessorkomponente veranlasst werden, die Zuordnungskartendaten in der Datendatei zu speichern.
  • Ansprechend auf das Fehlen einer von der zumindest einen Knotenvorrichtung empfangenen Angabe, dass der Datensatz partitionierte Daten aufweist, die Prozessorkomponente für jede von einer Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung eines Zeigers veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Vergleichen der Datenblockgröße des Datenblocks mit der in den Zuordnungskartendaten angegebenen Datenblockgröße für einen benachbarten Datenblock, der von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichern ist, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf eine Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, ansprechend auf eine Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, aufweist, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, aufweist.
  • Der zumindest eine Teil der Metadaten kann die von der zumindest einen Knotenvorrichtung empfangene Angabe, dass der Datensatz partitionierte Daten aufweist, aufweisen. Jede Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, kann eine einzige Anforderung eines Zeigers zum Speichern aller auf die Knotenvorrichtung verteilten Datensatzteile erzeugen müssen, und die Prozessorkomponente kann veranlasst werden, auf der Grundlage des Empfangs einer einzigen Anforderung eines Zeigers von jeder Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, festzustellen, dass alle Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei von allen Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, erzeugt worden sind. Die Prozessorkomponente kann veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Anfordern eines Zeigers auf eine Stelle innerhalb der Datendatei, an der zumindest ein Datensatzteil als ein Datenblock zu speichern ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen, Erzeugen eines Zeigers ansprechend auf die Anforderung und Speichern des wenigstens einen Datensatzteils an einer Stelle innerhalb der Datendatei, die durch den Zeiger angegeben wird, zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils durch eine andere Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen. Zum Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen am Speichern des Datensatzes innerhalb der Datendatei beteiligt sind, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe, ob jede Knotenvorrichtung von den mehreren Knotenvorrichtungen am Speichern des Datensatzes beteiligt ist.
  • Zum Speichern der Zuordnungskartendaten in der Datei kann die Prozessorkomponente veranlasst werden, festzustellen, ob die Größe der Zuordnungskartendaten eine vorgegebene Datengröße überschreitet. Ansprechend auf eine Feststellung, dass die Größe der Zuordnungskartendaten die vorgegebene Datengröße überschreitet, kann die Prozessorkomponente auch veranlasst werden, Folgendes auszuführen: Unterteilen der Zuordnungskartendaten in eine oder mehrere Zuordnungskartenerweiterungen, Speichern der einen oder der mehreren Zuordnungskartenerweiterungen innerhalb der Datendatei an Stellen, die zwischen den von Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, gespeicherten Datenblöcken verteilt sind, und Speichern einer Basiszuordnungskarte, welche einen oder mehrere Zeiger auf die Stelle jeder Zuordnungskartenerweiterung innerhalb der Datendatei umfasst, innerhalb der Datendatei. Die Größe jeder Zuordnungskartenerweiterung, die innerhalb der Datendatei an einer Stelle gespeichert ist, die einer ersten der Zuordnungskartenerweiterungen folgt, ist doppelt so groß wie die Größe einer vorhergehenden Zuordnungskartenerweiterung.
  • Die Prozessorkomponente kann veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe zu einer mit dem Datensatz auszuführenden Aufgabe zu jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung, um es zumindest einer ersten am Speichern des Datensatzes beteiligten Knotenvorrichtung zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und Ausführen der Aufgabe mit einem zweiten Datensatzteil des Datensatzes als eine zweite am Speichern des Datensatzes beteiligte Knotenvorrichtung zumindest teilweise parallel zu der Ausführung der Aufgabe durch die erste Knotenvorrichtung. Jede gehashte Kennung kann einen ganzzahligen Wert umfassen, der von einem Hash-Wert abgeleitet wurde, welcher von einem Partitionsetikett genommen wurde, das eine der Partitionen von den mehreren Partitionen eindeutig identifiziert.
  • Ein computerimplementiertes Verfahren kann Folgendes aufweisen: Empfangen zumindest eines Teils der Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, von zumindest einer Knotenvorrichtung von mehreren Knotenvorrichtungen über ein Netz, Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen an einer Speicherung des Datensatzes als mehrere Datenblöcke innerhalb einer Datendatei, die von einer oder mehr als einer Speichervorrichtung gehalten wird, zu beteiligen sind, von den mehreren Knotenvorrichtungen über das Netz, wobei die Organisation der mehreren Datenblöcke innerhalb der Datendatei in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, Empfangen einer Anforderung eines Zeigers auf eine Stelle innerhalb der Datendatei, an der die Knotenvorrichtung zumindest einen Datensatzteil als einen Datenblock speichern soll, von jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung über das Netz. Ansprechend auf eine über das Netz von der wenigstens einen Knotenvorrichtung empfangene Angabe, dass der Datensatz partitionierte Daten aufweist, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, kann das Verfahren für jede für einen Zeiger, der von einer Knotenvorrichtung empfangen wurde, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung Folgendes aufweisen: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl innerhalb des Zuordnungskarteneintrags, welche die Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, wobei jeder Datenunterblock einen Datensatzteil des Datensatzes, der von der Knotenvorrichtung zu speichern ist, umfasst, Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine gehashte Kennung, die von einem Partitionsetikett der Partition abgeleitet wurde, zu der der entsprechende Datensatzteil gehört, umfasst, und Bereitstellen eines Zeigers für. die Knotenvorrichtung über das Netz, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, aufweist. Ansprechend auf das erfolgreiche Speichern aller Datenblöcke des Datensatzes innerhalb der Datendatei durch alle am Speichern des Datensatzes beteiligten Knotenvorrichtungen kann das Verfahren die Zuordnungskartendaten in der Datendatei speichern.
  • Ansprechend auf das Fehlen einer von der zumindest einen Knotenvorrichtung empfangenen Angabe, dass der Datensatz partitionierte Daten aufweist, kann das Verfahren für jede für einen Zeiger, der von einer Knotenvorrichtung empfangen wurde, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung Folgendes aufweisen: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Vergleichen der Datenblockgröße des Datenblocks mit der in den Zuordnungskartendaten angegebenen Datenblockgröße für einen benachbarten Datenblock, der von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichern ist, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf eine Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, ansprechend auf eine Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, aufweist, und Bereitstellen eines Zeigers für die Knotenvorrichtung über das Netz, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, aufweist.
  • Zumindest ein Teil der Metadaten kann die von der zumindest einen Knotenvorrichtung empfangene Angabe aufweisen, dass der Datensatz partitionierte Daten aufweist. Jede Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, kann eine einzige Anforderung eines Zeigers zum Speichern aller Datensatzteile, die auf die Knotenvorrichtung verteilt sind, erzeugen müssen, und beim Verfahren kann auf der Grundlage des Empfangs einer einzigen Anforderung eines Zeigers von jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung festgestellt werden, dass alle Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei durch alle am Speichern des Datensatzes beteiligten Knotenvorrichtungen erzeugt wurden. Das Verfahren kann Folgendes aufweisen: Anfordern eines Zeigers auf eine Stelle innerhalb der Datendatei, an der zumindest ein Datensatzteil als ein Datenblock zu speichern ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen, Erzeugen eines Zeigers ansprechend auf die Anforderung und Speichern des wenigstens einen Datensatzteils an einer Stelle innerhalb der Datendatei, die durch den Zeiger angegeben wird, zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils durch eine andere Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen. Das Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen am Speichern des Datensatzes innerhalb der Datendatei beteiligt sind, kann Folgendes aufweisen: wiederholtes Empfangen von Angaben zum Status von jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen über das Netz und wiederholtes Aktualisieren einer gespeicherten Angabe, ob jede Knotenvorrichtung von den mehreren Knotenvorrichtungen am Speichern des Datensatzes beteiligt ist.
  • Beim Speichern der Zuordnungskartendaten in der Datei kann festgestellt werden, ob die Größe der Zuordnungskartendaten eine vorgegebene Datengröße überschreitet. Ansprechend auf die Feststellung, dass die Größe der Zuordnungskartendaten die vorgegebene Datengröße überschreitet, kann das Verfahren auch Folgendes aufweisen: Unterteilen der Zuordnungskartendaten in eine oder mehrere Zuordnungskartenerweiterungen, Speichern der einen oder der mehreren Zuordnungskartenerweiterungen innerhalb der Datendatei an Stellen, die zwischen den von Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, gespeicherten Datenblöcken verteilt sind, und Speichern einer Basiszuordnungskarte, welche einen oder mehrere Zeiger auf die Stelle jeder Zuordnungskartenerweiterung innerhalb der Datendatei umfasst, innerhalb der Datendatei. Die Größe jeder Zuordnungskartenerweiterung, die innerhalb der Datendatei an einer Stelle gespeichert ist, die einer ersten der Zuordnungskartenerweiterungen folgt, kann doppelt so groß sein wie die Größe einer vorhergehenden Zuordnungskartenerweiterung.
  • Beim Verfahren kann eine Angabe zu einer mit dem Datensatz auszuführenden Aufgabe den am Speichern des Datensatzes beteiligten Knotenvorrichtungen bereitgestellt werden, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen. Jede gehashte Kennung kann einen ganzzahligen Wert umfassen, der von einem Hash-Wert abgeleitet wurde, welcher von einem Partitionsetikett genommen wurde, das eine der Partitionen von den mehreren Partitionen eindeutig identifiziert.
  • Eine Vorrichtung weist eine Prozessorkomponente und einen Speicher zum Speichern von Befehlen auf, die, wenn sie von der Prozessorkomponente ausgeführt werden, die Prozessorkomponente veranlassen, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe für eine Steuervorrichtung, dass sie gegenwärtig verfügbar ist, um am Ausführen einer Verarbeitungsaufgabe als eine Knotenvorrichtung von mehreren Knotenvorrichtungen teilzunehmen, Empfangen einer Angabe zur Verarbeitungsaufgabe, die mit einem oder mehr als einem Datensatzteil von mehreren Datensatzteilen eines Datensatzes auszuführen ist, von der Steuervorrichtung, wobei der Datensatz Daten umfasst, die in einer in Metadaten angegebenen Weise organisiert sind, Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Bereitstellen einer Anforderung eines Zeigers auf eine Stelle, an der der eine oder mehr als eine Datensatzteil als ein Datenblock von mehreren Datenblöcken innerhalb einer von einer oder mehreren Speichervorrichtungen gehaltenen Datendatei zu speichern ist, für die Steuervorrichtung, wobei die mehreren Datenblöcke innerhalb der Datendatei in einer Art organisiert sind, die in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht. Ansprechend auf eine Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, wird die Prozessorkomponente veranlasst, Operationen auszuführen, welche Folgende umfassen: für jeden Datensatzteil von dem einen oder mehr als einen Datensatzteil Aufnehmen einer Datenunterblockgröße, welche die Größe des Datensatzteils angibt, in die Anforderung, Ableiten einer gehashten Kennung eines Partitionsetiketts der Partition, zu der der Datensatzteil gehört, von den mehreren Partitionen und Aufnehmen der gehashten Kennung in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und Speichern jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil als einen Datenunterblock innerhalb des Datenblocks beginnend mit der Stelle innerhalb der Datendatei.
  • Ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten aufweist, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Ableiten einer Summe von Größen jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil, Aufnehmen der Summe der Größen als Datenblockgröße des Datenblocks in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und Speichern des einen oder mehr als einen Datensatzteils gemeinsam als den Datenblock an der Stelle innerhalb der Datendatei. Die Verarbeitungsaufgabe kann die Erzeugung des Datensatzes als Ausgabe umfassen, und die Prozessorkomponente kann veranlasst werden, zumindest einen Teil der Metadaten zu erzeugen und zumindest den Teil der Metadaten der Steuervorrichtung bereitzustellen. Die Verarbeitungsaufgabe umfasst die Verwendung des Datensatzes als Eingabe, und die Prozessorkomponente kann veranlasst werden, die Metadaten von der Steuervorrichtung zu empfangen.
  • Die Prozessorkomponente kann mehrere Prozessorkerne aufweisen und veranlasst werden, die Verarbeitungsaufgabe mit jedem Datensatzteil von dem einen oder mehr als einen Datensatzteil unter Verwendung eines getrennten der mehreren Prozessorkerne zumindest teilweise parallel auszuführen. Die Prozessorkomponente kann veranlasst werden, die Verarbeitungsaufgabe mit zumindest einem Datensatzteil von dem einen oder mehr als einen Datensatzteil zumindest teilweise parallel zu dem Ausführen der Verarbeitungsaufgabe mit zumindest einem anderen Datensatzteil von den mehreren Datensatzteilen durch wenigstens eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen auszuführen. Jede Knotenvorrichtung von den mehreren Knotenvorrichtungen kann eine einzige Anforderung eines Zeigers für alle Datensatzteile, womit die Verarbeitungsaufgabe von jeder Knotenvorrichtung ausgeführt wird, erzeugen müssen, und die Prozessorkomponente kann veranlasst werden, die Anforderung zu erzeugen, die allen Datensatzteilen von dem einen oder mehr als einen Datensatzteil, womit die Prozessorkomponente die Verarbeitungsaufgabe ausführt, zuzuordnen ist.
  • Die Prozessorkomponente kann veranlasst werden, den einen oder mehr als einen Datenteil innerhalb des Datenblocks innerhalb der Datendatei zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen zu speichern. Die Prozessorkomponente kann veranlasst werden, ansprechend auf den Abschluss des Speicherns des einen oder mehr als einen Datensatzteils innerhalb des Datenblocks innerhalb der Datendatei eine Angabe zum Abschluss des Speicherns der Steuervorrichtung bereitzustellen.
  • Die Knotenvorrichtung kann eine von jeglichen von der einen oder mehr als einen Speichervorrichtung getrennte und abgesetzte Vorrichtung umfassen, die Knotenvorrichtung umfasst die als eine Steuereinrichtung innerhalb der Knotenvorrichtung implementierte Steuervorrichtung, und die Steuereinrichtung umfasst eine Steuereinrichtungsprozessorkomponente und einen Steuereinrichtungsspeicher zum Speichern von Steuereinrichtungsbefehlen, die, wenn sie von der Steuereinrichtungsprozessorkomponente ausgeführt werden, die Steuereinrichtungsprozessorkomponente veranlassen, Operationen auszuführen, welche das Bestimmen der Stelle innerhalb der Datendatei, an der der vom angeforderten Zeiger angegebene Datenblock zu speichern ist, und das Bereitstellen des angeforderten Zeigers für die Prozessorkomponente umfassen. Ansprechend auf die Angabe in den Metadaten, dass der Datensatz partitionierte Daten aufweist, kann die Steuereinrichtungsprozessorkomponente veranlasst werden, Folgendes auszuführen: Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl, welche die Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, innerhalb des Zuordnungskarteneintrags, wobei jeder Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, und Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine von einem Partitionsetikett der Partition, zu der der entsprechende Datensatzteil gehört, abgeleitete Hash-Kennung umfasst. Ansprechend auf die Erzeugung aller Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei durch alle von den mehreren Knotenvorrichtungen kann die Steuereinrichtungsprozessorkomponente auch veranlasst werden, die Zuordnungskartendaten in der Datendatei zu speichern. Ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten aufweist, kann die Steuereinrichtungsprozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Vergleichen der Datenblockgröße des Datenblocks mit der Datenblockgröße eines von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichernden benachbarten Datenblocks, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf die Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, umfasst.
  • Ein Computerprogrammprodukt, das gegenständlich in einem nichtflüchtigen maschinenlesbaren Speichermedium verwirklicht ist, wobei das Computerprogrammprodukt Befehle aufweist, die in der Lage sind, eine Prozessorkomponente zu veranlassen, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe für eine Steuervorrichtung, dass sie gegenwärtig verfügbar ist, um am Ausführen einer Verarbeitungsaufgabe als eine Knotenvorrichtung von mehreren Knotenvorrichtungen teilzunehmen, Empfangen einer Angabe zur Verarbeitungsaufgabe, die mit einem oder mehr als einem Datensatzteil von mehreren Datensatzteilen eines Datensatzes auszuführen ist, von der Steuervorrichtung, wobei der Datensatz Daten umfasst, die in einer in Metadaten angegebenen Weise organisiert sind, Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Bereitstellen einer Anforderung eines Zeigers auf eine Stelle, an der der eine oder mehr als eine Datensatzteil als ein Datenblock von mehreren Datenblöcken innerhalb einer von einer oder mehreren Speichervorrichtungen gehaltenen Datendatei zu speichern ist, für die Steuervorrichtung, wobei die mehreren Datenblöcke innerhalb der Datendatei in einer Art organisiert sind, die in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht. Ansprechend auf eine Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, wird die Prozessorkomponente veranlasst, Operationen auszuführen, welche Folgende umfassen: für jeden Datensatzteil von dem einen oder mehr als einen Datensatzteil Aufnehmen einer Datenunterblockgröße, welche die Größe des Datensatzteils angibt, in die Anforderung, Ableiten einer gehashten Kennung eines Partitionsetiketts der Partition, zu der der Datensatzteil gehört, von den mehreren Partitionen und Aufnehmen der gehashten Kennung in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und Speichern jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil als einen Datenunterblock innerhalb des Datenblocks beginnend mit der Stelle innerhalb der Datendatei.
  • Ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten aufweist, kann die Prozessorkomponente veranlasst werden, Operationen auszuführen, welche Folgende umfassen: Ableiten einer Summe von Größen jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil, Aufnehmen der Summe der Größen als Datenblockgröße des Datenblocks in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und Speichern des einen oder mehr als einen Datensatzteils gemeinsam als den Datenblock an der Stelle innerhalb der Datendatei. Die Verarbeitungsaufgabe kann die Erzeugung des Datensatzes als Ausgabe umfassen, und die Prozessorkomponente kann veranlasst werden, zumindest einen Teil der Metadaten zu erzeugen und zumindest den Teil der Metadaten der Steuervorrichtung bereitzustellen. Die Verarbeitungsaufgabe umfasst die Verwendung des Datensatzes als Eingabe, und die Prozessorkomponente kann veranlasst werden, die Metadaten von der Steuervorrichtung zu empfangen.
  • Die Prozessorkomponente kann veranlasst werden, die Verarbeitungsaufgabe mit jedem Datensatzteil von dem einen oder mehr als einen Datensatzteil unter Verwendung eines getrennten von mehreren Prozessorkernen der Prozessorkomponente zumindest teilweise parallel auszuführen. Die Prozessorkomponente kann veranlasst werden, die Verarbeitungsaufgabe mit zumindest einem Datensatzteil von dem einen oder mehr als einen Datensatzteil zumindest teilweise parallel zu dem Ausführen der Verarbeitungsaufgabe mit zumindest einem anderen Datensatzteil von den mehreren Datensatzteilen durch wenigstens eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen auszuführen. Jede Knotenvorrichtung von den mehreren Knotenvorrichtungen kann eine einzige Anforderung eines Zeigers für alle Datensatzteile, womit die Verarbeitungsaufgabe von jeder Knotenvorrichtung ausgeführt wird, erzeugen müssen, und die Prozessorkomponente kann veranlasst werden, die Anforderung zu erzeugen, die allen Datensatzteilen von dem einen oder mehr als einen Datensatzteil, womit die Prozessorkomponente die Verarbeitungsaufgabe ausführt, zuzuordnen ist.
  • Die Prozessorkomponente kann veranlasst werden, den einen oder mehr als einen Datenteil innerhalb des Datenblocks innerhalb der Datendatei zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen zu speichern. Die Prozessorkomponente kann veranlasst werden, ansprechend auf den Abschluss des Speicherns des einen oder mehr als einen Datensatzteils innerhalb des Datenblocks innerhalb der Datendatei eine Angabe zum Abschluss des Speicherns der Steuervorrichtung bereitzustellen.
  • Ein computerimplementiertes Verfahren kann Folgendes aufweisen: Bereitstellen einer Angabe für eine Steuervorrichtung, dass sie gegenwärtig verfügbar ist, um am Ausführen einer Verarbeitungsaufgabe als eine Knotenvorrichtung von mehreren Knotenvorrichtungen teilzunehmen, Empfangen einer Angabe zur Verarbeitungsaufgabe, die mit einem oder mehr als einem Datensatzteil von mehreren Datensatzteilen eines Datensatzes auszuführen ist, von der Steuervorrichtung, wobei der Datensatz Daten umfasst, die in einer in Metadaten angegebenen Weise organisiert sind, Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, und Bereitstellen einer Anforderung eines Zeigers auf eine Stelle, an der der eine oder mehr als eine Datensatzteil als ein Datenblock von mehreren Datenblöcken innerhalb einer von einer oder mehreren Speichervorrichtungen gehaltenen Datendatei zu speichern ist, für die Steuervorrichtung, wobei die mehreren Datenblöcke innerhalb der Datendatei in einer Art organisiert sind, die in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht. Ansprechend auf eine Angabe in den Metadaten, dass der Datensatz partitionierte Daten aufweist, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, kann das Verfahren Folgendes aufweisen: für jeden Datensatzteil von dem einen oder mehr als einen Datensatzteil Aufnehmen einer Datenunterblockgröße, welche die Größe des Datensatzteils angibt, in die Anforderung, Ableiten einer gehashten Kennung eines Partitionsetiketts der Partition, zu der der Datensatzteil gehört, von den mehreren Partitionen und Aufnehmen der gehashten Kennung in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung, und Speichern jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil als einen Datenunterblock innerhalb des Datenblocks beginnend mit der Stelle innerhalb der Datendatei.
  • Ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten aufweist, kann das Verfahren Folgendes aufweisen: Ableiten einer Summe von Größen jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil, Aufnehmen der Summe der Größen als Datenblockgröße des Datenblocks in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und Speichern des einen oder mehr als einen Datensatzteils gemeinsam als den Datenblock an der Stelle innerhalb der Datendatei. Die Verarbeitungsaufgabe kann die Erzeugung des Datensatzes als Ausgabe aufweisen, und beim Verfahren kann zumindest ein Teil der Metadaten erzeugt werden und der zumindest eine Teil der Metadaten der Steuervorrichtung bereitgestellt werden. Die Verarbeitungsaufgabe kann die Verwendung des Datensatzes als Eingabe aufweisen, und beim Verfahren können die Metadaten von der Steuervorrichtung empfangen werden.
  • Beim Verfahren kann die Verarbeitungsaufgabe mit jedem Datensatzteil von dem einen oder mehr als einen Datensatzteil unter Verwendung eines getrennten von mehreren Prozessorkernen einer Prozessorkomponente der Knotenvorrichtung zumindest teilweise parallel ausgeführt werden. Beim Verfahren kann die Verarbeitungsaufgabe mit zumindest einem Datensatzteil von dem einen oder mehr als einen Datensatzteil zumindest teilweise parallel zu dem Ausführen der Verarbeitungsaufgabe mit zumindest einem anderen Datensatzteil von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen ausgeführt werden. Jede Knotenvorrichtung von den mehreren Knotenvorrichtungen kann eine einzige Anforderung eines Zeigers für alle Datensatzteile, womit die Verarbeitungsaufgabe durch jede Knotenvorrichtung ausgeführt wird, erzeugen müssen, und beim Verfahren kann die Anforderung erzeugt werden, die allen Datensatzteilen von dem einen oder mehr als einen Datensatzteil, womit die Prozessorkomponente die Verarbeitungsaufgabe ausführt, zuzuordnen ist.
  • Beim Verfahren können der eine oder mehr als eine Datenteil innerhalb des Datenblocks innerhalb der Datendatei zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen gespeichert werden. Beim Verfahren kann ansprechend auf den Abschluss des Speicherns des einen oder mehr als einen Datensatzteils innerhalb des Datenblocks innerhalb der Datendatei eine Angabe zum Abschluss des Speicherns der Steuervorrichtung bereitgestellt werden.
  • Das vorhergehend Erwähnte wird zusammen mit anderen Merkmalen und Ausführungsformen anhand der folgenden Beschreibung, der Ansprüche und der anliegenden Zeichnungen verständlicher werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Offenbarung wird in Zusammenhang mit den anliegenden Figuren beschrieben. Es zeigen:
  • 1 ein Blockdiagramm einer Darstellung der Hardwarekomponenten eines Rechensystems gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 2 ein als Beispiel dienendes Netz mit einem als Beispiel dienenden Satz von Vorrichtungen, die miteinander über ein Austauschsystem und über ein Netz kommunizieren, gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 3 eine Repräsentation eines Konzeptmodells eines Kommunikationsprotokollsystems gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 4 ein Kommunikations-Grid-Rechensystem mit einer Vielzahl von Steuer- und Arbeitsknoten gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 5 ein Flussdiagramm eines als Beispiel dienenden Prozesses zum Einstellen eines Kommunikations-Grids oder eines Arbeitsprojekts in einem Kommunikations-Grid nach einem Ausfall eines Knotens gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 6 einen Teil eines Kommunikations-Grid-Rechensystems mit einem Steuerknoten und einem Arbeitsknoten gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 7 ein Flussdiagramm eines als Beispiel dienenden Prozesses zum Ausführen einer Datenanalyse oder eines Verarbeitungsprojekts gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 8 ein Blockdiagramm mit Komponenten einer Ereignis-Stream-Verarbeitungsmaschine (ESPE) gemäß Ausführungsformen der vorliegenden Technologie,
  • 9 ein Flussdiagramm eines als Beispiel dienenden Prozesses, der von einer Ereignis-Stream-Verarbeitungsmaschine ausgeführte Operationen aufweist, gemäß einigen Ausführungsformen der vorliegenden Technologie,
  • 10 ein ESP-System, das zwischen einer veröffentlichenden Vorrichtung und mehreren Ereignissubskriptionsvorrichtungen vermittelt, gemäß Ausführungsformen der vorliegenden Technologie,
  • die 11A und 11B jeweils eine als Beispiel dienende Ausführungsform eines verteilten Verarbeitungssystems,
  • die 12A, 12B und 2C jeweils eine als Beispiel dienende Ausführungsform der Verteilung von Teilen eines Datensatzes,
  • die 13A, 13B, 13C, 13D und 13E gemeinsam ein Beispiel des Speicherns von Teilen nicht partitionierter Daten eines Datensatzes,
  • die 14A, 14B, 14C, 14D und 14B gemeinsam ein Beispiel des Abrufens nicht partitionierter Daten eines Datensatzes,
  • die 15A, 15B, 15C, 15D und 15B gemeinsam ein Beispiel des Speicherns von Teilen partitionierter Daten eines Datensatzes,
  • die 16A, 16B, 16C und 16D gemeinsam ein Beispiel des Abrufens partitionierter Daten eines Datensatzes,
  • 17 eine als Beispiel dienende Ausführungsform eines Logikflusses einer Knotenvorrichtung, die Datensatzteile speichert,
  • 18 eine als Beispiel dienende Ausführungsform eines Logikflusses eines Knotens, der Datensatzteile abruft,
  • die 19A und 19B gemeinsam eine als Beispiel dienende Ausführungsform eines Logikflusses einer Steuervorrichtung, die das Speichern von Datensatzteilen koordiniert, und
  • die 20A, 20B und 20C gemeinsam eine als Beispiel dienende Ausführungsform eines Logikflusses einer Steuervorrichtung, die das Abrufen von Datensatzteilen koordiniert.
  • DETAILLIERTE BESCHREIBUNG
  • Verschiedene hier beschriebene Ausführungsformen betreffen allgemein die Koordination zwischen Vorrichtungen und die Datensatzorganisation zur Verbesserung des verteilten Speicherns und Abrufens eines von mehreren Knotenvorrichtungen verarbeiteten Datensatzes. Ein Datensatz kann innerhalb einer einzigen Datendatei für eine verhältnismäßig langfristige Speicherung (üblicherweise auch als ”permanent” bezeichnet) zwischen einer oder mehreren Speichervorrichtungen verteilt gespeichert werden. Die Daten des Datensatzes können in mehrere Datenblöcke und/oder Datenunterblöcke innerhalb der Datendatei in einer Weise unterteilt werden, die mit der Art korreliert, in der Teile des Datensatzes während der Verarbeitung zwischen mehreren Knotenvorrichtungen verteilt werden. Die Datendatei kann eine Zuordnungskarte der Art aufweisen, in der die Datenblöcke und/oder die Datenunterblöcke innerhalb der einzigen Datendatei organisiert sind, einschließlich der Menge, der Größe(n) und/oder des Orts (der Orte) innerhalb der Datendatei. Die eine oder die mehreren Speichervorrichtungen können beliebige von einer Vielzahl von Dateisystemen verwenden, um die Datendatei zu speichern, und die Datendatei kann einen Datei-Header aufweisen, der Angaben zu verschiedenen Eigenschaften der Datendatei, die für das Dateisystem relevant sind, bereitstellt. Es sei bemerkt, dass die Art, in der die Datendatei zwischen der einen oder den mehreren Speichervorrichtungen verteilt ist, völlig unkorreliert mit der Art sein kann, in der die Daten des Datensatzes in Datenblöcke unterteilt sind. Beispielsweise beeinflusst oder verhindert die Art, in der die Daten des Datensatzes in Datenblöcke unterteilt sind, vorteilhafterweise nicht die Verteilung der Datendatei zwischen mehreren Speichervorrichtungen, die dafür ausgelegt sind, zusammenzuarbeiten, um ein redundantes Feld kostengünstiger Platten (RAID) zu bilden, um einen Schutz vor einem Verlust der Datendatei bereitzustellen und/oder einen schnelleren Zugriff auf die Datendatei bereitzustellen.
  • Die Daten innerhalb des Datensatzes können in beliebigen von einer Vielzahl von Arten (beispielsweise Zeilen und Spalten, Säulen, ein oder mehrere Hyperwürfel usw.) mit beliebigen von einer Vielzahl von Indexierungsmechanismen, die beliebige von einer Vielzahl von Etikettierungsschemata verwenden können, organisiert werden. Zum Ermöglichen eines Zugriffs auf die Daten und der Verwendung der Daten kann der Datensatz Metadaten aufweisen, die solche Aspekte der Art beschreiben, in der die Daten des Datensatzes auf diese Weise organisiert sind. Gemäß einigen Ausführungsformen können die Daten innerhalb des Datensatzes in mehrere Partitionen organisiert werden, in denen die Daten innerhalb jeder Partition alle gemeinsam als eine einzige atomare Einheit verarbeitet werden müssen.
  • Falls der Datensatz partitioniert ist, können daher die Datenblöcke und der eine oder die mehreren Datenunterblöcke, in die jeder Datenblock unterteilt ist, zumindest teilweise durch die Art definiert werden, in denen Daten in Partitionen organisiert sind. Wie nachstehend in weiteren Einzelheiten erklärt wird, können die Art, in der der Datensatz innerhalb der Datendatei durch die mehreren Knotenvorrichtungen gespeichert wird, und die Art, in der der Datensatz durch die mehreren Knotenvorrichtungen abgerufen wird, zumindest teilweise davon abhängen, ob die Daten des Datensatzes partitioniert sind. Die Metadaten und/oder die Zuordnungskarte können einen Hinweis darauf aufweisen, ob die Daten des Datensatzes partitioniert sind, und falls dies der Fall ist, können die Metadaten verschiedene Aspekte der Partitionierung beschreiben. Die Partitionierung der Daten innerhalb eines Datensatzes kann dabei helfen, die Verarbeitung in einer verteilten Mehrknoten-Rechenumgebung zu vereinfachen und zu optimieren, indem sie als ein Mechanismus dient, durch den logisch in einer Beziehung stehende Daten zur Verarbeitung an derselben Knotenvorrichtung physikalisch miteinander gruppiert werden. Ein gemeinsames Anordnen aller Daten innerhalb einer Partition an derselben Knotenvorrichtung kann zeitaufwendige und/oder ressourcenaufwendige Datenumverteilungen zwischen Knoten überflüssig machen, weil die Berechnungen insgesamt an den Partitionsdaten ausgeführt werden. Ferner kann ein einfaches Schema verwendet werden, um die spezifische Knotenvorrichtung zu lokalisieren, welche die Partition enthält, wie hier in weiteren Einzelheiten erklärt wird.
  • Die Aktionen, die von den mehreren Knotenvorrichtungen ausgeführt werden, um den Datensatz zu speichern und abzurufen, können unter diesen durch eine Steuervorrichtung koordiniert werden. Gemäß einigen Ausführungsformen kann die Steuervorrichtung von allen Knotenvorrichtungen getrennt und abgesondert sein. Gemäß anderen Ausführungsformen kann eine solche Koordinierungsfunktion der Steuervorrichtung durch eine der mehreren Knotenvorrichtungen ausgeführt werden (beispielsweise in einem getrennten Ausführungsthread, durch einen getrennten Prozessorkern, innerhalb einer getrennten virtuellen Maschine usw.). Beim Speichern oder Abrufen des Datensatzes können die Steuervorrichtung und jede Knotenvorrichtung von den mehreren Knotenvorrichtungen direkt auf die einzelne Datendatei, worin der Datensatz gespeichert ist, zugreifen. Insbesondere kann die Steuervorrichtung die Metadaten und die Zuordnungskarte direkt speichern oder abrufen, während jede der Knotenvorrichtungen einen oder mehrere verschiedene Datenblöcke und/oder Datenunterblöcke direkt speichern oder abrufen kann. Zumindest die Zugriffe, die durch die Knotenvorrichtungen ausgeführt werden, um Datenblöcke und/oder Datenunterblöcke zu speichern oder abzurufen, können zumindest teilweise parallel ausgeführt werden. Die Steuervorrichtung kann jede der Knotenvorrichtungen mit einem oder mehreren Zeigern auf Stellen innerhalb der Datendatei, an denen die verschiedenen Datenblöcke und/oder Datenunterblöcke gespeichert oder abgerufen werden können, in Form von Offsets in Bezug auf eine festgelegte Anfangsstelle der Datendatei versehen (beispielsweise Offsets vom ersten Byte der Datendatei oder vom ersten Byte eines Nutzinhaltsteils der Datendatei). Durch eine solche Verwendung von Zeigern wird die Notwendigkeit der Koordination zwischen den Knotenvorrichtungen und der Steuervorrichtung stark minimiert. Die Knotenvorrichtungen sind jeweils in der Lage, getrennt zu handeln, um einen oder mehrere Datenblöcke und/oder einen oder mehrere Datenunterblöcke zu speichern oder abzurufen, ohne dass es erforderlich wäre, die Zeitsteuerung dieser Vorgänge miteinander und/oder mit der Steuervorrichtung zu synchronisieren. Gemäß einigen Ausführungsformen kann die Steuervorrichtung die Metadaten und/oder die Zuordnungskarte zumindest teilweise parallel zu der Speicherung oder dem Abrufen von Datenblöcken und/oder Datenunterblöcken durch eine oder mehr als eine von den mehreren Knotenvorrichtungen speichern oder abrufen.
  • Gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, kann die Zuordnungskarte Angaben über die Größe jedes Datenblocks und/oder darüber, wie viele Datenblöcke verwendet werden, um die Daten des Datensatzes zu speichern, aufweisen. Um die Speicheranforderungen für die Zuordnungskarte selbst zu verringern, kann die Zuordnungskarte eine Tabelle oder eine ähnliche Datenstruktur mit mehreren Einträgen aufweisen, wobei jeder Eintrag eine Angabe zur Datenblockgröße und einen Betrag in Bezug darauf, wie viele innerhalb der Datendatei benachbart gespeicherte Datenblöcke sich diese Datenblockgröße teilen, aufweist. Gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, kann die Zuordnungskarte Einträge für jeden Datenblock aufweisen, wobei jeder Eintrag Größen und gehashte Kennungen für jeden vom einen oder von den mehreren Datenunterblöcken innerhalb jedes Datenblocks angibt. Wie in größeren Einzelheiten erklärt wird, kann jede Partition ein eindeutiges Partitionsetikett aufweisen, das in den Metadaten beschrieben sein kann und/oder mit den zu dieser Partition gehörenden Daten aufgenommen sein kann, und kann ein Hash für jedes derartige Partitionsetikett genommen werden, um eine entsprechende gehashte Kennung zu erzeugen. Abhängig von den Speicheranforderungen für die Zuordnungskarte selbst kann die Zuordnungskarte vollständig innerhalb einer einzigen Stelle innerhalb der Datendatei gespeichert werden oder können Teile der Zuordnungskarte an mehreren innerhalb der Datendatei verteilten Stellen gespeichert werden.
  • Beim Speichern des Datensatzes innerhalb der Datendatei gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, kann jede der Knotenvorrichtungen zur Steuervorrichtung eine Anforderung für einen Zeiger auf eine Stelle innerhalb der Datendatei, wo ein Datenblock zu speichern ist, senden. Jede solche Anforderung kann eine Angabe zur Größe des Datenblocks aufweisen, den die anfordernde Knotenvorrichtung an dieser Stelle speichern soll. Die Spezifikation der Größe des zu speichernden Datenblocks in jeder Anforderung ermöglicht es der Steuervorrichtung, die Stelle innerhalb der Datendatei abzuleiten, die im nächsten Zeiger zu spezifizieren ist, den die Steuervorrichtung ansprechend auf die nächste Anforderung eines Zeigers von einer anderen Knotenvorrichtung bereitstellt. Die Steuervorrichtung kann auch die spezifizierte Größe verwenden, um eine Angabe des durch die anfordernde Knotenvorrichtung zu speichernden Datenblocks zur Zuordnungskarte hinzuzufügen. Jede Knotenvorrichtung, die auf diese Weise einen Zeiger anfordert, kann, nachdem ihr der angeforderte Zeiger bereitgestellt wurde, den Zeiger verwenden, um den Datenblock zu speichern, für den der Zeiger angefordert wurde. Diese Anforderung und Bereitstellung von Zeigern, an denen Datenblöcke innerhalb der Datendatei zu speichern sind, kann fortgesetzt werden, bis es keine weiteren Datenblöcke des von beliebigen der Knotenvorrichtungen zu speichernden Datensatzes mehr gibt, für die kein Zeiger angefordert wurde. Gemäß einigen Ausführungsformen kann jede der Knotenvorrichtungen eine Angabe zur Steuervorrichtung senden, dass sie keine weiteren Datenblöcke des Datensatzes mehr hat, wofür Zeiger anzufordern sind. Gemäß anderen Ausführungsformen, bei denen jede der Knotenvorrichtungen nur einen einzigen Zeiger für alle Daten anfordern muss, die von dieser Knotenvorrichtung zu speichern sind, kann die Steuervorrichtung jedoch auf der Grundlage davon, ob Anforderungen von Zeigern von allen Knotenvorrichtungen empfangen wurden, die an der Verarbeitung des Datensatzes beteiligt sind, feststellen, ob es weitere Datenblöcke gibt, für die noch Zeiger anzufordern sind. Gemäß einigen Ausführungsformen kann die Steuervorrichtung die Zuordnungskarte und/oder die Metadaten des Datensatzes innerhalb der Datendatei ansprechend darauf speichern, dass es keine weiteren Datenblöcke des Datensatzes mehr gibt, wofür Zeiger angefordert werden müssen. Gemäß diesen Ausführungsformen hängt die Speicherung der Zuordnungskarte und/oder der Metadaten durch die Steuervorrichtung daher nicht von der Speicherung beliebiger der Datenblöcke und/oder Datenunterblöcke, die durch die Knotenvorrichtungen ausgeführt wird, ab und braucht nicht damit synchronisiert zu werden. Gemäß anderen Ausführungsformen kann die Steuervorrichtung jedoch die Speicherung der Zuordnungskarte und/oder der Metadaten des Datensatzes innerhalb der Datendatei verzögern, bis durch die Steuervorrichtung von allen Knotenvorrichtungen Angaben empfangen wurden, dass alle Datenblöcke erfolgreich gespeichert wurden. Dies kann als eine Maßnahme wünschenswert angesehen werden, Fehler bei der Übertragung eines oder mehrerer Datenblöcke zur einen oder zu den mehreren Speichervorrichtungen über ein Netz und/oder Fehler bei der Speicherung eines oder mehrerer Datenblöcke durch die eine oder die mehreren Speichervorrichtungen zu adressieren.
  • Gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, kann das Fehlen einer Anforderung, beliebige zwei oder mehr spezifische Teile der Daten des Datensatzes für die Verarbeitung zusammenzuhalten, zur Unterteilung der Daten des Datensatzes in Datenblöcke führen, die ausschließlich mit der Art korreliert ist, in der die Daten des Datensatzes zu der Zeit zwischen den mehreren Knotenvorrichtungen verteilt waren, zu der der Datensatz erzeugt und/oder beim letzten Mal gespeichert wurde. Genauer gesagt wird jeder innerhalb der Datendatei gespeicherte Datenblock darin durch nur eine Knotenvorrichtung gespeichert, so dass kein Datenblock innerhalb der Datendatei Daten aufweist, die von mehr als einer Knotenvorrichtung darin gespeichert wurden. Allerdings kann gemäß einigen Ausführungsformen eine einzige Knotenvorrichtung mehr als einen Datenblock innerhalb der Datendatei speichern, so dass ein einziger Knoten mehr als einen Zeiger von der Steuervorrichtung anfordern kann. Gemäß einigen Ausführungsformen kann sich dies infolge einer Verteilung von Daten und einer Verarbeitung der Daten zwischen mehreren Ausführungs-Threads, mehreren virtuellen Maschinen und/oder mehreren Prozessorkernen innerhalb einer einzigen Knotenvorrichtung ergeben. Demgemäß kann, damit jeder Teil der Daten innerhalb einer einzigen Knotenvorrichtung innerhalb und/oder durch einen getrennten entsprechenden Ausführungs-Thread, eine getrennte entsprechende virtuelle Maschine und/oder einen getrennten entsprechenden Prozessorkern vollständig verarbeitet wird, die Knotenvorrichtung eine getrennte Anforderung eines getrennten Zeigers auf eine Stelle innerhalb der Datendatei, wo ein getrennter entsprechender Datenblock zu speichern ist, machen. Alternativ kann eine einzige Anforderung eines einzigen Zeigers, an dem alle mit einer einzigen Knotenvorrichtung verbundenen Datenblöcke einander benachbart zu speichern sind, gemacht werden, und die Anforderung kann eine Größe spezifizieren, welche die Summe der Größen all dieser Datenblöcke ist. Dies kann bei Ausführungsformen der Fall sein, bei denen jede Knotenvorrichtung nur eine Anforderung eines Zeigers machen darf. Alternativ zu einer solchen einzelnen Anforderung, welche eine Größe spezifiziert, welche die Summe der Größen aller von einer Knotenvorrichtung zu speichernden Datenblöcke ist, kann die Anforderung alternativ jedoch Spezifikationen einer getrennten Größe für jeden Datenblock aufweisen.
  • Beim Abrufen des Datensatzes aus der Datendatei gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, kann die Steuervorrichtung Angaben abrufen, welche Knotenvorrichtungen verfügbar sind, um den Datensatz zu verarbeiten. Gemäß einigen Ausführungsformen kann die Anzahl der Knotenvorrichtungen, die verfügbar sind, auf der Grundlage beliebiger von einer Vielzahl von Faktoren zeitlich variieren, einschließlich Anforderungen an die Verarbeitungsressourcen jeder der Knotenvorrichtungen, die andere Verarbeitungsaufgaben ausführen, Benutzersitzungen, die eine spezifische Knotenvorrichtungsanzahl auf der Grundlage von Richtlinien angeben, bekannter Funktionsmerkmale, Dienstniveauvereinbarungen usw., Instanzen von Knotenvorrichtungen, die fehlerhaft funktioniert haben oder aus anderen Gründen aus dem Betrieb genommen wurden usw. Die Steuervorrichtung kann dann auf die Datendatei zugreifen, um die Zuordnungskarte und die Metadaten des Datensatzes abzurufen, und eine Angabe einer auszuführenden Aufgabe und/oder die Metadaten zu jeder der verfügbaren mehreren Knotenvorrichtungen weiterleiten. Die Steuervorrichtung kann dann die Informationen in Bezug auf jeden Datenblock innerhalb der Zuordnungskarte verwenden, um die Datenblöcke zwischen den verfügbaren Knotenvorrichtungen zu verteilen. Die Steuervorrichtung kann beliebige von einer Vielzahl von Techniken verwenden, um die Datenblöcke zwischen den verfügbaren Knotenvorrichtungen zu verteilen, wobei diese von einfacheren Ringtechniken bis zu beliebigen von einer Vielzahl von Datengrößenausgleichstechniken reichen.
  • Beim Bewirken dieser Verteilung der Datenblöcke kann die Steuervorrichtung für jeden Datenblock, den die Steuervorrichtung einer Knotenvorrichtung zuweist, einen Zeiger auf die Stelle des Datenblocks innerhalb der Datendatei zusammen mit einer Angabe zur Größe des Datenblocks zur Knotenvorrichtung senden. Für jede solche Kombination eines Zeigers und einer Größe eines Datenblocks, die von einer Knotenvorrichtung empfangen wird, kann die Knotenvorrichtung den Zeiger verwenden, um auf den Datenblock von innerhalb der Datendatei zuzugreifen und diesen abzurufen, und zwar ausgehend von der Stelle, auf welche der Zeiger weist, und endend, wenn die durch die Größe angegebene Datenmenge des Datenblocks abgerufen wurde. Gemäß einigen Ausführungsformen kann jede Knotenvorrichtung eine Angabe, dass jedes solche Abrufen eines Datenblocks abgeschlossen wurde, zur Steuervorrichtung senden. Wenn jede Knotenvorrichtung, der das Abrufen eines oder mehrerer Datenblöcke zugewiesen wurde, das Abrufen des einen oder der mehreren zugewiesenen Datenblöcke abgeschlossen hat, kann die Knotenvorrichtung damit beginnen, Verarbeitungsaufgaben mit dem einen oder den mehreren zugewiesenen Datenblöcken auszuführen. Wiederum wird durch eine solche Verwendung von Zeigern die Notwendigkeit einer Koordination zwischen den Knotenvorrichtungen und/oder zwischen den Knotenvorrichtungen und der Steuervorrichtung stark minimiert. Genauer gesagt, kann es keine Synchronisation in Bezug darauf geben, wann jeder Knoten mit der Ausführung von Verarbeitungsaufgaben mit dem einen oder den mehreren ihm zugewiesenen Datenblöcken beginnt, so dass jeder Datenblock sofort nach dem Abrufen zumindest eines Teils zumindest eines Datenblocks mit dieser Verarbeitung beginnen kann.
  • Verschiedene Aspekte des Speicherns des Datensatzes innerhalb der Datendatei gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, können vom Speichern des Datensatzes gemäß Ausführungsformen abweichen, bei denen die Daten des Datensatzes nicht partitioniert sind. Jede der Knotenvorrichtungen kann eine Anforderung eines Zeigers auf eine Stelle innerhalb der Datendatei, an der ein einziger Datenblock zu speichern ist, der einen oder mehrere Datenunterblöcke aufweist, zur Steuervorrichtung senden. Jede solche Anforderung kann eine Datenstruktur aufweisen, die Angaben zur Anzahl der Datenunterblöcke, zur Größe jedes Datenunterblocks und/oder zur gehashten Kennung jedes Datenunterblocks bereitstellt. Die Spezifikationen der Anzahl der Datenunterblöcke innerhalb jedes Datenblocks und der Größe jedes Datenunterblocks ermöglichen es der Steuervorrichtung, die Stelle innerhalb der Datendatei zur Spezifizierung im nächsten Zeiger abzuleiten, den die Steuervorrichtung ansprechend auf die nächste Anforderung eines Zeigers von dieser oder einer anderen Knotenvorrichtung bereitstellt. Die Steuervorrichtung kann solche Informationen sowie die gehashten Kennungen auch verwenden, um Angaben zum Datenblock und zum einen oder zu den mehreren Datenunterblöcken darin zur Zuordnungskarte hinzuzufügen. Jede Knotenvorrichtung, die auf diese Weise einen Zeiger anfordert, kann, nachdem ihr der angeforderte Zeiger bereitgestellt wurde, den Zeiger verwenden, um den Datenblock, für den der Zeiger angefordert wurde, als Teil der Datendatei zu speichern. Weil jede Knotenvorrichtung einen Zeiger für den Datenblock empfängt, den sie speichern soll, kann jede Knotenvorrichtung eine Angabe zur Steuervorrichtung senden, dass sie keine weiteren Datenblöcke aufweist, für die Zeiger anzufordern wären. Gemäß Ausführungsformen, bei denen jede der Knotenvorrichtungen nur einen einzigen Zeiger für alle Daten anfordern muss, die von dieser Knotenvorrichtung zu speichern sind, kann die Knotenvorrichtung jedoch auf der Grundlage davon, ob Anforderungen von Zeigern von allen Knotenvorrichtungen empfangen wurden, die an der Verarbeitung des Datensatzes beteiligt sind, feststellen, ob es weitere Datenblöcke gibt, für die noch Zeiger anzufordern sind. Ansprechend darauf, dass es keine weiteren Datenblöcke des Datensatzes mehr gibt, für die jegliche der Knotenvorrichtungen mit einem Zeiger versehen werden müssen, kann die Steuervorrichtung die Zuordnungskarte, die Metadaten des Datensatzes und/oder einen Daten-Header innerhalb der Datendatei speichern. Der Daten-Header kann eine Angabe darüber aufweisen, wie viele Knotenvorrichtungen an der Erzeugung des Datensatzes und/oder am Speichern des Datensatzes nach seiner Erzeugung beteiligt waren.
  • Wie zuvor erörtert wurde, können gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, alle Daten innerhalb jeder Partition innerhalb einer einzigen Knotenvorrichtung gemeinsam verarbeitet werden müssen und nicht zwischen mehreren Knotenvorrichtungen verteilt werden. Allerdings kann eine einzige Knotenvorrichtung Verarbeitungsoperationen ausführen, welche die Daten von mehr als einer Partition betreffen. Wie zuvor ebenfalls erörtert wurde, müssen alle Daten innerhalb jeder Partition zusammen innerhalb eines einzigen Datenblocks innerhalb der Datendatei gespeichert werden und nicht zwischen mehreren Datenblöcken innerhalb der Datendatei verteilt werden. Innerhalb jedes Datenblocks können die Daten einer einzigen Partition jedoch in mehrere Datenunterblöcke unterteilt werden und kann ein einziger Datenblock Datenunterblöcke der Daten von mehr als einer Partition aufweisen. Die gehashten Kennungen in Zusammenhang mit jedem Datenunterblock der Zuordnungskarte können von der Steuervorrichtung verwendet werden, um zwischen den mehreren Partitionen zu unterscheiden, zu denen die Daten innerhalb jedes Datenunterblocks gehören.
  • Verschiedene Aspekte des Abrufens des Datensatzes aus der Datendatei gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, können vom Abrufen des Datensatzes gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, abweichen. Die Steuervorrichtung kann Angaben darüber abrufen, welche Knotenvorrichtungen zur Ausführung der Verarbeitung am Datensatz verfügbar sind. Wiederum kann gemäß Ausführungsformen die Anzahl der verfügbaren Knotenvorrichtungen zeitlich variieren. Die Steuervorrichtung kann auf die Datendatei zugreifen, um die Zuordnungskarte, die Metadaten des Datensatzes und/oder den Daten-Header abzurufen. Die Steuervorrichtung kann dann eine Angabe zu einer Aufgabe, die mit dem Datensatz und/oder den Metadaten auszuführen ist, zu jeder verfügbaren der mehreren Knotenvorrichtungen senden. Die Steuervorrichtung kann dann eine Kombination der gehashten Kennungen in Zusammenhang mit den Datenunterblöcken, der Anzahl der Partitionen, in welche der Datensatz unterteilt ist, der Anzahl der Knotenvorrichtungen, die an der Erzeugung und/oder am letzten Speichern des Datensatzes innerhalb der Datendatei beteiligt waren, und der Anzahl der Knotenvorrichtungen, die gegenwärtig beim Ableiten einer Verteilung der Datenblöcke und/oder Datenunterblöcke des Datensatzes unter den gegenwärtig verfügbaren Knotenvorrichtungen verfügbar sind, verwenden.
  • Insbesondere kann die Steuervorrichtung die Anzahl der Knotenvorrichtungen, die bei der letzten Speicherung des Datensatzes innerhalb der Datendatei beteiligt waren, mit der Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen vergleichen. Falls diese beiden Anzahlen von Knotenvorrichtungen übereinstimmen, kann die Steuervorrichtung die Datenblöcke derart zwischen den gegenwärtig verfügbaren Knotenvorrichtungen verteilen, dass die Verteilung von Partitionen zwischen Knotenvorrichtungen wiederhergestellt wird, die zu der Zeit existiert hat, als der Datensatz beim letzten Mal innerhalb der Datendatei gespeichert wurde. Zur Ausführung dieser Verteilung von Partitionen zwischen den gegenwärtig verfügbaren Knotenvorrichtungen kann die Steuervorrichtung jede gegenwärtig verfügbare Knotenvorrichtung mit wenigstens einem Zeiger auf eine Stelle innerhalb der Datendatei, von der die Knotenvorrichtung einen Datenblock abrufen kann, zusammen mit einer Angabe zur Größe des Datenblocks versehen. Demgemäß beruht die Verteilung der Zeiger und dementsprechend der Daten des Datensatzes auf den Datenblöcken innerhalb der Datendatei, wodurch der Zusatzaufwand in Bezug auf die Zeit und/oder die Datenübertragung bei der Verteilung vermieden wird, der in einer erheblich größeren Anzahl von Zeigern auf einzelne Datenunterblöcke bestehen kann.
  • Falls jedoch die Anzahl der Knotenvorrichtungen, die zumindest beim Speichern des Datensatzes innerhalb der Datendatei beteiligt sind, nicht mit der Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen übereinstimmt, kann die Steuervorrichtung die Datenunterblöcke unter Verwendung beliebiger von einer Vielzahl von Techniken unter den gegenwärtig verfügbaren Knotenvorrichtungen verteilen, während gewährleistet wird, dass es keine Fälle gibt, in denen die Daten irgendeiner Partition zwischen mehreren Knotenvorrichtungen verteilt werden. Dabei kann die Steuervorrichtung die gehashte Kennung verwenden, der durch die Zuordnungskarte jedem einzelnen Datenunterblock zugeordnet ist. Beispielsweise kann die Steuervorrichtung jede der gehashten Kennungen durch die Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen teilen, um den Modulo-Wert für jede solche Teilung abzuleiten. Die Steuervorrichtung kann dann den Modulo-Wert als Indikator dafür verwenden, auf welche Knotenvorrichtung jeder Datenunterblock zu verteilen ist. Zur Ausführung dieser Verteilung von Partitionen zwischen den gegenwärtig verfügbaren Knotenvorrichtungen kann die Steuervorrichtung jede gegenwärtig verfügbare Knotenvorrichtung mit wenigstens einem Zeiger auf eine Stelle innerhalb der Datendatei, von der die Knotenvorrichtung einen Datenunterblock abrufen kann, zusammen mit einer Angabe zur Größe des Datenunterblocks versehen. Eine solche Verteilung von Zeigern auf Stellen einzelner Datenunterblöcke innerhalb von Datenblöcken an Stelle einer Verteilung von Zeigern auf Stellen von Datenblöcken kann angesichts der Tatsache ausgeführt werden, dass ein einziger Datenblock Datenunterblöcke aufweisen kann, die mehr als einer Partition zugeordnet sind.
  • Für jede solche Kombination aus einem Zeiger und einer Größe eines Datenblocks oder Datenunterblocks, der von einer Knotenvorrichtung empfangen wurde, kann die Knotenvorrichtung den Zeiger verwenden, um auf den Datenblock oder Datenunterblock innerhalb der Datendatei zuzugreifen und diesen abzurufen, und zwar beginnend an der Stelle, auf welche der Zeiger weist, und endend, wenn die durch die Größe angegebene Datenmenge des Datenblocks oder des Datenunterblocks abgerufen wurde. Gemäß einigen Ausführungsformen kann jede Knotenvorrichtung eine Angabe zur Steuervorrichtung senden, dass sie das Abrufen jedes Datenblocks oder Datenunterblocks abgeschlossen hat. Wenn jede Knotenvorrichtung, der ein oder mehrere Datenblöcke oder Datenunterblöcke zugewiesen wurden, das Abrufen dieses einen oder dieser mehreren Datenblöcke oder Datenunterblöcke beendet, kann die Knotenvorrichtung damit beginnen, eine Verarbeitungsaufgabe mit den Daten dieser Datenblöcke oder Datenunterblöcke auszuführen. Alternativ kann eine Knotenvorrichtung mit der Ausführung einer Verarbeitungsaufgabe selbst dann beginnen, wenn der Knoten diesen einen oder diese mehreren Datenblöcke oder Datenunterblöcke weiter abruft.
  • Gemäß verschiedenen Ausführungsformen können die Steuervorrichtung und die mehreren Knotenvorrichtungen zusammenarbeiten, um Sicherheit für die Daten des Datensatzes bereitzustellen. Gemäß einigen Ausführungsformen kann die Steuervorrichtung die Metadaten und/oder die Zuordnungskarte vor dem Speichern innerhalb der Datendatei während des Speicherns des Datensatzes innerhalb der Datendatei verschlüsseln. Entsprechend kann die Steuervorrichtung die Metadaten und/oder die Zuordnungskarte vor dem Bereitstellen der Metadaten und/oder der Zeiger zu den Knotenvorrichtungen während des Abrufens des Datensatzes aus der Datendatei entschlüsseln. Gemäß einigen Ausführungsformen können die Knotenvorrichtungen die Datenblöcke und/oder die Datenunterblöcke während des Speicherns des Datensatzes innerhalb der Datendatei verschlüsseln und/oder die Datenblöcke und/oder die Datenunterblöcke während des Abrufens des Datensatzes aus der Datendatei entschlüsseln. Zur Unterstützung dieser Verschlüsselung und/oder Entschlüsselung durch die Knotenvorrichtungen kann die Steuervorrichtung einen oder mehrere bei einer solchen Verschlüsselung und/oder Entschlüsselung verwendete Sicherheitsberechtigungsnachweise unter den Knotenvorrichtungen verteilen. Alternativ oder zusätzlich kann die Steuervorrichtung Angaben solcher Sicherheitsberechtigungsnachweise in der Datendatei während der Speicherung des Datensatzes darin speichern und/oder diese Angaben aus der Datendatei abrufen, während der Datensatz daraus abgerufen wird.
  • Unter allgemeinem Bezug auf Notationen und Benennungen, die hier verwendet werden, sei bemerkt, dass Teile der folgenden detaillierten Beschreibung in Bezug auf Programmprozeduren präsentiert werden können, die durch eine Prozessorkomponente einer Maschine oder mehrerer vernetzter Maschinen ausgeführt werden. Diese prozeduralen Beschreibungen und Repräsentationen werden von Fachleuten verwendet, um den Gegenstand ihrer Arbeit anderen Fachleuten am wirksamsten zu vermitteln. Eine Prozedur wird hier und allgemein als eine selbstkonsistente Sequenz von Operationen aufgefasst, die zu einem gewünschten Ergebnis führen. Diese Operationen erfordern demgemäß physikalische Manipulationen physikalischer Größen. Gewöhnlich, wenn auch nicht notwendigerweise, nehmen diese Größen die Form elektrischer, magnetischer oder optischer Kommunikationen an, die gespeichert, übertragen, kombiniert, verglichen und auf andere Weise manipuliert werden können. Es erweist sich gelegentlich hauptsächlich aus Gründen der allgemeinen Verwendung als zweckmäßig, das Kommunizierte als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen. Es ist jedoch zu verstehen, dass all diese und ähnliche Terme den geeigneten physikalischen Größen zuzuordnen sind und lediglich zweckmäßige Bezeichnungen sind, die auf diese Größen angewendet werden.
  • Ferner wird auf diese Manipulationen häufig durch Terme in der Art von Addieren oder Vergleichen Bezug genommen, die üblicherweise von einem menschlichen Bediener ausgeführten mentalen Operationen zugeordnet sind. In den meisten Fällen ist bei beliebigen der Operationen, die hier beschrieben werden und Teil einer oder mehrerer Ausführungsformen sind, eine solche Fähigkeit eines menschlichen Bedieners jedoch nicht erforderlich oder wünschenswert. Diese Operationen sind vielmehr Maschinenoperationen. Nützliche Maschinen zum Ausführen von Operationen verschiedener Ausführungsformen umfassen Maschinen, die selektiv durch eine darin gespeicherte Routine aktiviert oder konfiguriert werden, die gemäß den hier dargelegten Lehren geschrieben ist, und/oder eine Vorrichtung, die speziell für den erforderlichen Zweck konstruiert ist. Verschiedene Ausführungsformen betreffen auch Vorrichtungen oder Systeme zum Ausführen dieser Operationen. Diese Vorrichtungen können speziell für den erforderlichen Zweck konstruiert sein oder einen Computer für allgemeine Zwecke aufweisen. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird anhand der gegebenen Beschreibung verständlich werden.
  • Es wird nun auf die Zeichnung Bezug genommen, worin überall gleiche Bezugszahlen verwendet werden, um auf gleiche Elemente Bezug zu nehmen. In der folgenden Beschreibung werden zu Erklärungszwecken zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis davon bereitzustellen. Es kann jedoch verständlich sein, dass die neuartigen Ausführungsformen ohne diese spezifischen Einzelheiten verwirklicht werden können. In anderen Fällen sind wohlbekannte Strukturen und Vorrichtungen in Form eines Blockdiagramms dargestellt, um die Beschreibung davon zu erleichtern. Die Absicht besteht darin, alle Modifikationen, gleichwertigen Ausgestaltungen und Alternativen innerhalb des Schutzumfangs der Ansprüche abzudecken.
  • Systeme, die in einigen Figuren dargestellt sind, können in verschiedenen Konfigurationen bereitgestellt werden. Gemäß einigen Ausführungsformen können die Systeme als ein verteiltes System konfiguriert sein, wobei eine oder mehrere Komponenten des Systems über ein oder mehrere Netze in einem Cloud-Rechensystem und/oder einem Fog-Rechensystem verteilt sind.
  • 1 ist ein Blockdiagramm, das die Hardwarekomponenten eines Datenübertragungsnetzes 100 gemäß Ausführungsformen der vorliegenden Technologie zeigt. Das Datenübertragungsnetz 100 ist ein spezialisiertes Computersystem, das für die Verarbeitung großer Datenmengen verwendet werden kann, wobei eine große Anzahl von Computerverarbeitungszyklen erforderlich ist.
  • Das Datenübertragungsnetz 100 kann auch eine Rechenumgebung 114 aufweisen. Die Rechenumgebung 114 kann ein spezialisierter Computer oder eine andere Maschine sein, welche die innerhalb des Datenübertragungsnetzes 100 empfangenen Daten verarbeitet. Das Datenübertragungsnetz 100 weist auch eine oder mehrere Netzvorrichtungen 102 auf. Die Netzvorrichtungen 102 können Client-Vorrichtungen aufweisen, die versuchen, mit der Rechenumgebung 114 zu kommunizieren. Beispielsweise können die Netzvorrichtungen 102 zu verarbeitende Daten zur Rechenumgebung 114 senden, Signale zur Rechenumgebung 114 senden, um verschiedene Aspekte der Rechenumgebung oder der Daten, die darin verarbeitet werden, zu steuern, oder dies kann aus anderen Gründen geschehen. Die Netzvorrichtungen 102 können durch eine Anzahl von Wegen, beispielsweise über ein oder mehrere Netze 108, mit der Rechenumgebung 114 interagieren. Wie in 1 dargestellt ist, kann die Rechenumgebung 114 ein oder mehrere andere Systeme aufweisen. Beispielsweise kann die Rechenumgebung 114 ein Datenbanksystem 118 und/oder ein Kommunikations-Grid 120 aufweisen.
  • Gemäß anderen Ausführungsformen können Netzvorrichtungen eine große Datenmenge entweder auf einmal oder durch Streamen über einen Zeitraum (beispielsweise unter Verwendung einer Ereignis-Stream-Verarbeitung (ESP), wie weiter mit Bezug auf die 810 beschrieben wird) über Netze 108 der Rechenumgebung 114 bereitstellen. Beispielsweise können die Netzvorrichtungen 102 Netzcomputer, Sensoren, Datenbanken oder andere Vorrichtungen, welche Daten zur Rechenumgebung 114 übertragen oder dieser auf andere Weise bereitstellen können, aufweisen. Beispielsweise können die Netzvorrichtungen lokale Netzvorrichtungen in der Art von Routern, Hubs, Switches oder anderen Computernetzvorrichtungen aufweisen. Diese Vorrichtungen können eine Vielzahl gespeicherter oder erzeugter Daten in der Art von Netzdaten oder Daten, die für die Netzvorrichtungen selbst spezifisch sind, bereitstellen. Die Netzvorrichtungen können auch Sensoren aufweisen, welche ihre Umgebung oder andere Vorrichtungen überwachen, um Daten in Bezug auf diese Umgebung oder diese Vorrichtungen zu sammeln, und diese Netzvorrichtungen können Daten bereitstellen, die sie im Laufe der Zeit sammeln. Die Netzvorrichtungen können auch Vorrichtungen innerhalb des Internets der Dinge in der Art von Vorrichtungen innerhalb eines Heimautomatisierungsnetzes aufweisen. Einige dieser Vorrichtungen können als Edge-Vorrichtungen bezeichnet werden und eine Edge-Rechenschaltungsanordnung aufweisen. Daten können durch Netzvorrichtungen direkt zur Rechenumgebung 114 oder zu netzverbundenen Datenspeichern in der Art netzverbundener Datenspeicher 110 übertragen werden, um sie zu speichern, so dass die Daten später von der Rechenumgebung 114 oder anderen Teilen des Datenübertragungsnetzes 100 abgerufen werden können.
  • Das Datenübertragungsnetz 100 kann auch einen oder mehrere netzverbundene Datenspeicher 110 aufweisen. Netzverbundene Datenspeicher 110 werden verwendet, um Daten, die durch die Rechenumgebung 114 zu verarbeiten sind, sowie jegliche Zwischendaten oder endgültige Daten, die durch das Rechensystem erzeugt werden, in einem nichtflüchtigen Speicher zu speichern. Gemäß bestimmten Ausführungsformen ermöglicht die Konfiguration der Rechenumgebung 114 jedoch, dass ihre Operationen so ausgeführt werden, dass Zwischendatenergebnisse und endgültige Datenergebnisse ausschließlich im flüchtigen Speicher (beispielsweise RAM) gespeichert werden können, ohne dass es erforderlich wäre, dass Zwischendatenergebnisse oder endgültige Datenergebnisse in nichtflüchtigen Speichertypen (beispielsweise auf einer Platte) gespeichert werden. Dies kann in bestimmten Situationen nützlich sein, beispielsweise wenn die Rechenumgebung 114 Ad-hoc-Anfragen von einem Benutzer empfängt und Antworten, die durch Verarbeiten großer Datenmengen erzeugt werden, unmittelbar erzeugt werden müssen. In dieser nicht einschränkenden Situation kann die Rechenumgebung 114 dafür ausgelegt sein, die verarbeiteten Informationen innerhalb des Speichers zu halten, so dass Antworten für den Benutzer auf verschiedenen Detailniveaus erzeugt werden können und es einem Benutzer ermöglicht wird, diese Informationen interaktiv abzufragen.
  • Netzverbundene Datenspeicher können eine Vielzahl verschiedener Datentypen, die in einer Vielzahl verschiedener Arten organisiert sind, und von einer Vielzahl verschiedener Quellen speichern. Beispielsweise können netzverbundene Datenspeicher andere Speicher als Primärspeicher, die sich innerhalb der Rechenumgebung 114 befinden, worauf sich darin befindende Prozessoren direkt zugreifen können, einschließen. Netzverbundene Datenspeicher können sekundäre, tertiäre oder Hilfsspeicher in der Art großer Festplatten, Server, eines virtuellen Speichers sowie andere Typen einschließen. Speichervorrichtungen können tragbare oder nicht tragbare Speichervorrichtungen, optische Speichervorrichtungen und verschiedene andere Medien, die in der Lage sind, enthaltene Daten zu speichern, einschließen. Ein maschinenlesbares Speichermedium oder ein computerlesbares Speichermedium kann ein nichtflüchtiges Medium einschließen, worin Daten gespeichert werden können und das keine Trägerwellen und/oder flüchtige elektronische Signale aufweist. Beispiele eines nichtflüchtigen Mediums können beispielsweise eine Magnetplatte oder ein Magnetband, optische Speichermedien in der Art einer CD oder einer DVD, einen Flash-Speicher, einen Speicher oder Speichervorrichtungen einschließen. Ein Computerprogrammprodukt kann Code und/oder durch eine Maschine ausführbare Befehle aufweisen, die eine Prozedur, eine Funktion, ein Unterprogramm, ein Programm, eine Routine, eine Unterroutine, ein Modul, ein Softwarepaket, eine Klasse oder eine Kombination von Befehlen, Datenstrukturen oder Programmvorschriften repräsentieren können. Ein Codesegment kann mit einem anderen Codesegment oder einer Hardwareschaltung gekoppelt werden, indem Informationen, Daten, Argumente, Parameter oder Speicherinhalte übergeben und/oder empfangen werden. Informationen, Argumente, Parameter, Daten usw. können durch ein beliebiges geeignetes Mittel einschließlich einer Speicherteilung, einer Nachrichtenübermittlung, einer Token-Übermittlung, einer Netzübertragung sowie anderer, übergeben, weitergeleitet oder übertragen werden. Ferner können die Datenspeicher eine Vielzahl verschiedener Datentypen enthalten. Beispielsweise können netzverbundene Datenspeicher 110 unstrukturierte Daten (beispielsweise Rohdaten) enthalten, wie Herstellungsdaten (beispielsweise eine Datenbank, die Datensätze enthält, welche Produkte identifizieren, die mit Parameterdaten für jedes Produkt in der Art von Farben und Modellen hergestellt werden) oder Produktverkaufsdatenbanken (beispielsweise eine Datenbank, die individuelle Datensätze enthält, welche Einzelheiten individueller Produktverkäufe identifizieren).
  • Die unstrukturierten Daten können der Rechenumgebung 114 in verschiedenen Formen in der Art einer flachen Datei oder eines Konglomerats von Datensätzen präsentiert werden und Datenwerte und damit verbundene Zeitstempel aufweisen. Die Rechenumgebung 114 kann verwendet werden, um die unstrukturierten Daten auf eine Vielzahl von Arten zu analysieren, um die beste Art zum (beispielsweise hierarchischen) Strukturieren dieser Daten zu bestimmen, so dass die strukturierten Daten für einen Typ einer weiteren Analyse ausgelegt werden, die ein Benutzer an den Daten ausführen möchte. Beispielsweise können die unstrukturierten mit einem Zeitstempel versehenen Daten nach der Verarbeitung zeitlich aggregiert werden (beispielsweise in Tageszeitperiodeneinheiten), um Zeitreihendaten und/oder hierarchisch strukturierte Daten gemäß einer oder mehreren Dimensionen (beispielsweise Parametern, Attributen und/oder Variablen) zu erzeugen. Beispielsweise können Daten in einer hierarchischen Datenstruktur in der Art einer ROLAP-OR-MOLAP-Datenbank gespeichert werden oder in einer anderen Tabellenform in der Art einer flachen Hierarchieform gespeichert werden.
  • Das Datenübertragungsnetz 100 kann auch eine oder mehrere Server-Farmen 106 aufweisen. Die Rechenumgebung 114 kann ausgewählte Kommunikationen oder Daten zur einen oder zu den mehreren Server-Farmen 106 oder zu einem oder mehreren Servern innerhalb der Server-Farmen leiten. Die Server-Farmen 106 können dafür ausgelegt sein, auf vorgegebene Weise Informationen bereitzustellen. Beispielsweise können die Server-Farmen 106 auf Daten zugreifen, um sie ansprechend auf eine Kommunikation zu übertragen. Die Server-Farmen 106 können getrennt von jeder anderen Vorrichtung innerhalb des Datenübertragungsnetzes 100 in der Art der Rechenumgebung 114 untergebracht sein und/oder Teil einer Vorrichtung oder eines Systems sein.
  • Die Server-Farmen 106 können eine Vielzahl verschiedener Typen von Datenverarbeitungen als Teil des Datenübertragungsnetzes 100 hosten. Die Server-Farmen 106 können eine Vielzahl verschiedener Daten von Netzvorrichtungen, von der Rechenumgebung 114, vom Cloud-Netz 116 oder von anderen Quellen empfangen. Die Daten können von einem oder mehreren Sensoren oder als Eingaben von einer Steuerdatenbank erhalten oder gesammelt worden sein oder als Eingaben von einem externen System oder einer externen Vorrichtung empfangen worden sein. Die Server-Farmen 106 können dabei helfen, die Daten zu verarbeiten, indem Rohdaten auf der Grundlage einer oder mehrerer Regeln, die durch die Server-Farmen implementiert werden, zu verarbeiteten Daten gemacht werden. Beispielsweise können Sensordaten analysiert werden, um Änderungen in einer Umgebung im Laufe der Zeit oder in Echtzeit zu bestimmen.
  • Das Datenübertragungsnetz 100 kann auch ein oder mehrere Cloud-Netze 116 aufweisen. Das Cloud-Netz 116 kann ein Cloud-Infrastruktursystem aufweisen, das Cloud-Dienste bereitstellt. Gemäß bestimmten Ausführungsformen können durch das Cloud-Netz 116 bereitgestellte Dienste eine Vielzahl von Diensten umfassen, die Benutzern des Cloud-Infrastruktursystems bei Bedarf zur Verfügung gestellt werden. Das Cloud-Netz 116 ist in 1 als mit der Rechenumgebung 114 verbunden dargestellt (und weist daher die Rechenumgebung 114 als Client oder Benutzer auf), es können sich jedoch beliebige der Vorrichtungen aus 1 mit dem Cloud-Netz 116 verbinden oder dieses verwenden. Dienste, die durch das Cloud-Netz bereitgestellt werden, können dynamisch skalieren, um die Anforderungen der Benutzer zu erfüllen. Das Cloud-Netz 116 kann einen oder mehrere Computer, Server und/oder Systeme aufweisen. Gemäß einigen Ausführungsformen unterscheiden sich die Computer, Server und/oder Systeme, die das Cloud-Netz 116 bilden, von den Computern, Servern und/oder Systemen an den Liegenschaften des Benutzers. Beispielsweise kann das Cloud-Netz 116 eine Anwendung hosten, und ein Benutzer kann über ein Kommunikationsnetz in der Art des Internets nach Bedarf die Anwendung bestellen und verwenden.
  • Wenngleich jede Vorrichtung, jeder Server und jedes System in 1 als eine einzige Vorrichtung dargestellt ist, ist zu verstehen, dass stattdessen mehrere Vorrichtungen verwendet werden können. Beispielsweise kann ein Satz von Netzvorrichtungen verwendet werden, um verschiedene Kommunikationen von einem einzigen Benutzer zu übertragen, oder ein ferner Server 140 kann einen Server-Stapel aufweisen. Bei einem anderen Beispiel können Daten als Teil der Rechenumgebung 114 verarbeitet werden.
  • Jede Kommunikation innerhalb des Datenübertragungsnetzes 100 (beispielsweise zwischen Client-Vorrichtungen, zwischen Servern 106 und der Rechenumgebung 114 oder zwischen einem Server und einer Vorrichtung) kann über ein oder mehrere Netze 108 geschehen. Die Netze 108 können einen oder mehrere von einer Vielzahl verschiedener Netztypen einschließlich eines Drahtlosnetzes, eines drahtgestützten Netzes oder einer Kombination eines drahtgestützten und eines Drahtlosnetzes einschließen. Beispiele geeigneter Netze umfassen das Internet, ein persönliches Netz, ein lokales Netz (LAN), ein Weitbereichsnetz (WAN) oder ein drahtloses lokales Netz (WLAN). Ein Drahtlosnetz kann eine Drahtlosschnittstelle oder eine Kombination von Drahtlosschnittstellen aufweisen. Beispielsweise kann ein Netz in dem einen oder den mehreren Netzen 108 einen kurzreichweitigen Kommunikationskanal in der Art eines Bluetooth- oder Bluetooth-Low-Energy-Kanals aufweisen. Ein drahtgestütztes Netz kann eine drahtgestützte Schnittstelle aufweisen. Das drahtgestützte Netz und/oder Drahtlosnetz kann unter Verwendung von Routern, Zugangspunkten, Bridges, Gateways oder dergleichen zur Verbindung von Vorrichtungen im Netz 114 implementiert werden, wie weiter mit Bezug auf 2 beschrieben wird. Das eine oder die mehreren Netze 108 können vollständig in ein Intranet, ein Extranet oder eine Kombination davon aufgenommen sein oder diese enthalten. Gemäß einer Ausführungsform können Kommunikationen zwischen zwei oder mehr Systemen und/oder Vorrichtungen durch ein sicheres Kommunikationsprotokoll in der Art von Secure Sockets Layer (SSL) oder Transport Layer Security (TLS) erreicht werden. Zusätzlich können Daten und/oder Transaktionseinzelheiten verschlüsselt werden.
  • Einige Aspekte können das Internet der Dinge (IoT) verwenden, wobei Dinge (beispielsweise Maschinen, Vorrichtungen, Telefone, Sensoren) mit Netzen verbunden werden können und die Daten von diesen Dingen gesammelt und innerhalb der Dinge und/oder außerhalb der Dinge verarbeitet werden können. Beispielsweise kann das IoT Sensoren in vielen verschiedenen Vorrichtungen aufweisen und können hochwertige Analysen angewendet werden, um verborgene Beziehungen zu identifizieren und erhöhte Effizienzen zu treiben. Dies kann auf Big-Data-Analysen und Echtzeitanalysen (beispielsweise ESP-Analysen) angewendet werden. Dies wird nachstehend mit Bezug auf 2 beschrieben.
  • Wie erwähnt wurde, kann die Rechenumgebung 114 ein Kommunikations-Grid 120 und ein Übertragungsnetz-Datenbanksystem 118 aufweisen. Das Kommunikations-Grid 120 kann ein Grid-basiertes Rechensystem zur Verarbeitung großer Datenmengen sein. Das Übertragungsnetz-Datenbanksystem 118 kann dem Verwalten, Speichern und Abrufen großer Datenmengen dienen, die auf den einen oder die mehreren netzverbundenen Datenspeicher 110 oder andere Datenspeicher, die sich an verschiedenen Stellen innerhalb des Übertragungsnetz-Datenbanksystems 118 befinden, verteilt sind und darin gespeichert sind. Die Rechenknoten im Grid-basierten Rechensystem 120 und im Übertragungsnetz-Datenbanksystem 118 können sich dieselbe Prozessorhardware teilen wie Prozessoren, die sich innerhalb der Rechenumgebung 114 befinden.
  • 2 zeigt ein als Beispiel dienendes Netz mit einem als Beispiel dienenden Satz von Vorrichtungen, die miteinander über ein Austauschsystem und über ein Netz kommunizieren, gemäß Ausführungsformen der vorliegenden Technologie. Wie erwähnt wurde, kann jede Kommunikation innerhalb des Datenübertragungsnetzes 100 über ein oder mehrere Netze geschehen. Das System 200 weist eine Netzvorrichtung 204 auf, die dafür ausgelegt ist, mit einer Vielzahl von Typen von Client-Vorrichtungen, beispielsweise Client-Vorrichtungen 230, über eine Vielzahl von Kommunikationskanaltypen zu kommunizieren.
  • Wie in 2 dargestellt ist, kann die Netzvorrichtung 204 eine Kommunikation über ein Netz (beispielsweise ein Mobilfunknetz über eine Basisstation 210) übertragen. Die Kommunikation kann über eine Basisstation 210 zu einer anderen Netzvorrichtung in der Art der Netzvorrichtungen 205209 weitergeleitet werden. Die Kommunikation kann auch über die Basisstation 210 zur Rechenumgebung 214 weitergeleitet werden. Beispielsweise kann die Netzvorrichtung 204 Daten entweder aus ihrer Umgebung oder von anderen Netzvorrichtungen (in der Art der Netzvorrichtungen 205209) sammeln und diese Daten zur Rechenumgebung 214 übertragen.
  • Wenngleich die Netzvorrichtungen 204209 in 2 als ein Mobiltelefon, ein Laptopcomputer, ein Tabletcomputer, ein Temperatursensor, ein Bewegungssensor bzw. ein Audiosensor dargestellt sind, können die Netzvorrichtungen beliebige Sensoren sein oder aufweisen, die dafür empfindlich sind, Aspekte ihrer Umgebung zu erfassen. Beispielsweise können die Netzvorrichtungen Sensoren in der Art von Wassersensoren, Leistungssensoren, Sensoren für elektrischen Strom, chemischen Sensoren, optischen Sensoren, Drucksensoren, geographischen oder Positionssensoren (beispielsweise GPS), Geschwindigkeitssensoren, Beschleunigungssensoren, Strömungsratensensoren sowie andere einschließen. Beispiele von Merkmalen, die gemessen werden können, umfassen Kraft, Drehmoment, Last, Dehnung, Position, Temperatur, Luftdruck, Fluidströmung, chemische Eigenschaften, Widerstand, elektromagnetische Felder, Strahlung, Bestrahlung, Nähe, Akustik, Feuchtigkeit, Abstand, Geschwindigkeit, Vibrationen, Beschleunigung, elektrisches Potential, elektrischer Strom sowie andere. Die Sensoren können an verschiedenen Komponenten montiert werden, die als Teil einer Vielzahl verschiedener Systemtypen (beispielsweise bei einem Ölbohrvorgang) verwendet werden. Die Netzvorrichtungen können Daten in Bezug auf die Umgebung, die sie überwachen, erfassen und aufzeichnen und diese Daten zur Rechenumgebung 214 übertragen.
  • Wie erwähnt wurde, umfasst ein Typ eines Systems, das verschiedene Sensoren aufweisen kann, die Daten sammeln, die zu verarbeiten sind und/oder zu einer Rechenumgebung zu übertragen sind, gemäß bestimmten Ausführungsformen ein Ölbohrsystem. Beispielsweise können der eine oder die mehreren Bohrvorgangssensoren Oberflächensensoren, welche die Hakenlast, die Fluidrate, die Temperatur und die Dichte innerhalb und außerhalb der Bohrung, den Standrohrdruck, das Oberflächendrehmoment, die Drehgeschwindigkeit eines Bohrrohrs, die Eindringrate, die mechanische spezifische Energie usw. messen, und unten im Bohrloch eingesetzte Sensoren, welche die Drehgeschwindigkeit eines Bohrkopfs, Fluiddichten, das Drehmoment unten im Bohrloch, Vibrationen unten im Bohrloch (axial, tangential, lateral), das auf einen Bohrkopf ausgeübte Gewicht, den Ringdruck, den Differenzialdruck, den Azimutwinkel, die Neigung, die Schwere einer Knickung, die gemessene Tiefe, die vertikale Tiefe, die Temperatur unten im Bohrloch usw. messen, einschließen. Abgesehen von den durch die Sensoren direkt gesammelten Rohdaten können andere Daten Parameter einschließen, die entweder durch die Sensoren entwickelt werden oder dem System von einem Client oder einer anderen Steuervorrichtung zugewiesen werden. Beispielsweise können ein oder mehrere Bohrvorgangs-Steuerparameter Einstellungen in der Art des Schlammmotorgeschwindigkeit-zu-Strömung-Verhältnisses, des Bohrkopfdurchmessers, einer vorhergesagten Formationsspitze, seismischer Daten, Wetterdaten usw. steuern. Andere Daten können unter Verwendung physikalischer Modelle in der Art eines Erdmodells, eines Wettermodells, eines seismischen Modells, eines Unten-im-Loch-Montagemodells, eines Bohrlochplanmodells, eines Ringreibungsmodells usw. erzeugt werden. Zusätzlich zu Sensor- und Steuereinstellungen können auch vorhergesagte Ausgaben beispielsweise der Eindringrate, der mechanischen spezifischen Energie, der Hakenlast, der Einströmungs-Fluidrate, der Ausströmungs-Fluidrate, des Pumpdrucks, des Oberflächendrehmoments, der Drehgeschwindigkeit des Bohrrohrs, des Ringdrucks, des Ringreibungsdrucks, der Ringtemperatur, der äquivalenten Umlaufdichte usw. im Datenlager gespeichert werden.
  • Bei einem anderen Beispiel umfasst ein anderer Systemtyp, der verschiedene Sensoren aufweisen kann, welche Daten sammeln, die gemäß bestimmten Ausführungsformen zu verarbeiten und/oder zu einer Rechenumgebung zu übertragen sind, ein Heimautomations- oder ähnliches automatisiertes Netz in einer anderen Umgebung in der Art eines Büroraums, einer Schule, eines öffentlichen Raums, einer Sportanlage oder einer Vielzahl anderer Orte. Netzvorrichtungen in einem solchen automatisierten Netz können Netzvorrichtungen einschließen, die es einem Benutzer ermöglichen, auf verschiedene Heimgeräte zuzugreifen, diese zu steuern und/oder diese zu konfigurieren, die sich innerhalb des Heims des Benutzers (beispielsweise ein Fernsehgerät, ein Radio, ein Licht, ein Gebläse, ein Befeuchter, ein Sensor, ein Mikrowellenofen, ein Bügeleisen und/oder dergleichen) oder außerhalb des Heims des Benutzers (beispielsweise äußere Bewegungssensoren, Außenbeleuchtung, Garagentüröffer, Sprinklersysteme oder dergleichen) befinden. Beispielsweise kann die Netzvorrichtung 102 einen Heimautomationsschalter aufweisen, der mit einem Heimgerät gekoppelt sein kann. Gemäß einer anderen Ausführungsform kann es eine Netzvorrichtung einem Benutzer ermöglichen, auf Vorrichtungen zuzugreifen, sie zu steuern und/oder sie zu konfigurieren, wobei diese Vorrichtungen folgender Art sind: bürobezogene Vorrichtungen (beispielsweise Kopiergerät, Drucker oder Faxgerät), audio- und/oder videobezogene Vorrichtungen (beispielsweise ein Empfänger, ein Lautsprecher, ein Projektor, ein DVD-Abspielgerät oder ein Fernsehgerät), Medienwiedergabevorrichtungen (beispielsweise ein Compact-Disk-Abspielgerät, ein CD-Abspielgerät oder dergleichen), Rechenvorrichtungen (beispielsweise ein Heimcomputer, ein Laptopcomputer, ein Tablet, ein persönlicher digitaler Assistent (PDA), eine Rechenvorrichtung oder eine tragbare Vorrichtung), Beleuchtungsvorrichtungen (beispielsweise eine Lampe oder eine in einer Aussparung angeordnete Beleuchtung), Vorrichtungen in Zusammenhang mit einem Sicherheitssystem, Vorrichtungen in Zusammenhang mit einem Alarmsystem, Vorrichtungen, die in einem Automobil betrieben werden können (beispielsweise Radiovorrichtungen, Navigationsvorrichtungen) und/oder dergleichen. Daten können von solchen verschiedenen Sensoren in Rohform gesammelt werden, oder Daten können von den Sensoren verarbeitet werden, um Parameter oder andere Daten zu erzeugen, die entweder von den Sensoren auf der Grundlage der Rohdaten entwickelt werden oder dem System durch einen Client oder eine andere Steuervorrichtung zugewiesen werden.
  • Bei einem anderen Beispiel weist ein anderer Systemtyp, der verschiedene Sensoren aufweisen kann, welche Daten sammeln, die zu verarbeiten sind und/oder zu einer Rechenumgebung zu übertragen sind, gemäß bestimmten Ausführungsformen ein Strom- oder Energie-Grid auf. Eine Vielzahl verschiedener Netzvorrichtungen kann in ein Energie-Grid aufgenommen werden in der Art verschiedener Vorrichtungen in einem oder in mehreren Kraftwerken, Energiefarmen (beispielsweise Windfarm, Solarfarm und andere), Energiespeicheranlagen, Fabriken, Heime und Geschäfte von Endverbrauchern usw. Eine oder mehrere solcher Vorrichtungen können einen oder mehrere Sensoren aufweisen, die einen Energiegewinn oder einen Energieverlust, eine elektrische Eingabe oder Ausgabe oder einen elektrischen Verlust und eine Vielzahl anderer Effizienzen detektieren. Diese Sensoren können Daten sammeln, um Benutzer darüber zu informieren, wie das Energie-Grid und einzelne Vorrichtungen innerhalb des Grids funktionieren können und wie sie effizienter gemacht werden können.
  • Netzvorrichtungssensoren können auch eine Verarbeitung an Daten ausführen, die sie sammeln, bevor die Daten zur Rechenumgebung 114 übertragen werden oder bevor entschieden wird, ob Daten zur Rechenumgebung 114 zu übertragen sind. Beispielsweise können Netzvorrichtungen feststellen, ob gesammelte Daten bestimmte Regeln erfüllen, beispielsweise durch Vergleichen von Daten oder anhand der Daten berechneter Werte und durch Vergleichen dieser Daten mit einer oder mehreren Schwellen. Die Netzvorrichtung kann diese Daten und/oder Vergleiche verwenden, um festzustellen, ob die Daten zur Weiterverwendung oder Weiterverarbeitung zur Rechenumgebung 214 übertragen werden sollten.
  • Die Rechenumgebung 214 kann die Maschinen 220 und 240 aufweisen. Wenngleich in 2 dargestellt ist, dass die Rechenumgebung 214 zwei Maschinen aufweist, nämlich 220 und 240, kann die Rechenumgebung 214 nur eine einzige Maschine aufweisen oder mehr als zwei Maschinen aufweisen. Die Maschinen, welche die Rechenumgebung 214 bilden, können spezialisierte Computer, Server oder andere Maschinen einschließen, die dafür ausgelegt sind, einzeln und/oder gemeinsam große Datenmengen zu verarbeiten. Die Rechenumgebung 214 kann auch Speichervorrichtungen aufweisen, die eine oder mehrere Datenbanken strukturierter Daten in der Art in einer oder mehreren Hierarchien organisierter Daten oder unstrukturierter Daten aufweisen. Die Datenbanken können mit den Verarbeitungsvorrichtungen innerhalb der Rechenumgebung 214 kommunizieren, um Daten auf sie zu verteilen. Weil Netzvorrichtungen Daten zur Rechenumgebung 214 übertragen können, können diese Daten von der Rechenumgebung 214 empfangen werden und anschließend innerhalb dieser Speichervorrichtungen gespeichert werden. Von der Rechenumgebung 214 verwendete Daten können auch in Datenspeichern 235 gespeichert werden, die auch Teil der Rechenumgebung 214 sein können oder damit verbunden sein können.
  • Die Rechenumgebung 214 kann mit verschiedenen Vorrichtungen über einen oder mehrere Router 225 oder andere Inter-Netz- oder Intra-Netz-Verbindungskomponenten kommunizieren. Beispielsweise kann die Rechenumgebung 214 über einen oder mehrere Router 225 mit Vorrichtungen 230 kommunizieren. Die Rechenumgebung 214 kann Daten sammeln, analysieren und/oder speichern, die zu Kommunikationen, Client-Vorrichtungsoperationen, Client-Regeln und/oder benutzerassoziierten Aktionen gehören, die an einem oder mehreren Datenspeichern 235 gespeichert sind. Diese Daten können die Kommunikationsweiterleitung zu den Vorrichtungen innerhalb der Rechenumgebung 214, wie Daten innerhalb der Rechenumgebung 214 gespeichert oder verarbeitet werden, sowie andere Aktionen beeinflussen.
  • Insbesondere können ferner verschiedene andere Vorrichtungen verwendet werden, um die Kommunikationsweiterleitung und/oder -verarbeitung zwischen Vorrichtungen innerhalb der Rechenumgebung 214 und mit Vorrichtungen außerhalb der Rechenumgebung 214 zu beeinflussen. Beispielsweise kann die Rechenumgebung 214, wie in 2 dargestellt ist, einen Web-Server 240 aufweisen. Demgemäß kann die Rechenumgebung 214 interessierende Daten in der Art von Client-Informationen (beispielsweise Produktinformationen, Client-Regeln usw.), Einzelheiten technischer Produkte, Nachrichten, aktuelle oder vorhergesagte Wetterbedingungen usw. abrufen.
  • Zusätzlich dazu, dass die Rechenumgebung 214 Daten sammelt (die beispielsweise von Netzvorrichtungen in der Art von Sensoren und Client-Vorrichtungen oder anderen Quellen empfangen wurden), die als Teil eines Big-Data-Analyseprojekts zu verarbeiten sind, kann sie auch Daten in Echtzeit als Teil einer Streaming-Analyseumgebung empfangen. Wie erwähnt wurde, können Daten unter Verwendung einer Vielzahl von Quellen, die über verschiedene Arten von Netzen oder lokal übermittelt werden, gesammelt werden. Diese Daten können auf einer Echtzeit-Streaming-Basis empfangen werden. Beispielsweise können Netzvorrichtungen Daten periodisch von Netzvorrichtungssensoren empfangen, während die Sensoren Änderungen in ihrer Umgebung kontinuierlich messen, überwachen und verfolgen. Vorrichtungen innerhalb der Rechenumgebung 214 können auch eine Voranalyse an Daten ausführen, die sie empfangen, um festzustellen, ob die empfangenen Daten als Teil eines fortlaufenden Projekts verarbeitet werden sollten. Die von der Rechenumgebung 214 empfangenen und gesammelten Daten können unabhängig davon, welches die Quelle oder das Verfahren oder der Zeitpunkt des Empfangs ist, über einen Zeitraum für einen Client verarbeitet werden, um auf der Grundlage der Bedürfnisse und Regeln des Clients Ergebnisdaten zu bestimmen.
  • 3 zeigt eine Repräsentation eines Konzeptmodells eines Kommunikationsprotokollsystems gemäß Ausführungsformen der vorliegenden Technologie. Insbesondere identifiziert 3 den Betrieb eines Rechensystems in einem Open-Systems-Interaction-Modell, das verschiedenen Verbindungskomponenten entspricht. Das Modell 300 zeigt beispielsweise, wie eine Rechenumgebung in der Art der Rechenumgebung 314 (oder der Rechenumgebung 214 in 2) mit anderen Vorrichtungen in ihrem Netz kommunizieren kann und steuern kann, wie Kommunikationen zwischen der Rechenumgebung und anderen Vorrichtungen unter welchen Bedingungen ausgeführt werden.
  • Das Modell kann Schichten 302314 aufweisen. Die Schichten sind in einem Stapel angeordnet. Jede Schicht im Stapel dient der eine Ebene höheren Schicht (mit Ausnahme der Anwendungsschicht, welche die höchste Schicht ist), und ihr wird durch die Schicht gedient, die eine Ebene unter ihr liegt (mit Ausnahme der physikalischen Schicht, welche die niedrigste Schicht ist). Die physikalische Schicht ist die niedrigste Schicht, weil sie Rohdatenbytes empfängt und überträgt, und sie ist vom Benutzer in einem Kommunikationssystem die am weitesten entfernte Schicht. Andererseits ist die Anwendungsschicht die höchste Schicht, weil sie direkt mit einer Softwareanwendung interagiert.
  • Wie erwähnt wurde, weist das Modell eine physikalische Schicht 302 auf. Die physikalische Schicht 302 repräsentiert die physikalische Kommunikation und kann Parameter dieser physikalischen Kommunikation definieren. Beispielsweise kann diese physikalische Kommunikation in Form elektrischer, optischer oder elektromagnetischer Signale vorkommen. Die physikalische Schicht 302 definiert auch Protokolle, welche Kommunikationen mit einem Datenübertragungsnetz steuern können.
  • Eine Verbindungsschicht 304 definiert Verbindungen und Mechanismen, die zum Übertragen (d. h. Bewegen) von Daten über ein Netz verwendet werden. Die Verbindungsschicht behandelt Knoten-zu-Knoten-Kommunikationen, beispielsweise innerhalb einer Grid-Rechenumgebung. Die Verbindungsschicht 304 kann Fehler erkennen und korrigieren (beispielsweise Übertragungsfehler in der physikalischen Schicht 302). Die Verbindungsschicht 304 kann auch eine Medienzugangssteuer(MAC)-Schicht und eine Logische-Verbindungs-Steuer(LLC)-Schicht aufweisen.
  • Eine Netzschicht 306 definiert das Protokoll zur Weiterleitung innerhalb eines Netzes. Mit anderen Worten koordiniert die Netzschicht die Übertragung von Daten über Knoten im selben Netz (beispielsweise in der Art einer Grid-Rechenumgebung). Die Netzschicht 306 kann auch die Prozesse definieren, die verwendet werden, um eine lokale Adressierung innerhalb des Netzes zu strukturieren.
  • Eine Transportschicht 308 kann die Übertragung von Daten und die Qualität der Übertragung und/oder des Empfangs dieser Daten behandeln. Die Transportschicht 308 kann ein Protokoll zur Datenübertragung in der Art beispielsweise eines Übertragungssteuerprotokolls (TOP) bereitstellen. Die Transportschicht 308 kann Datenrahmen zur Übertragung zusammenstellen und zerlegen. Die Transportschicht kann auch Übertragungsfehler erkennen, die in den darunter liegenden Schichten auftreten.
  • Eine Sitzungsschicht 310 kann Kommunikationsverbindungen zwischen Vorrichtungen auf einem Netz einrichten, erhalten und behandeln. Mit anderen Worten steuert die Sitzungsschicht die Dialoge oder die Natur von Kommunikationen zwischen Netzvorrichtungen auf dem Netz. Die Sitzungsschicht kann auch Überprüfungs-, Aufschub-, Beendigungs- und Neustartprozeduren einrichten.
  • Eine Präsentationsschicht 312 kann eine Übersetzung von Kommunikationen zwischen der Anwendungs- und der Netzschicht bereitstellen. Mit anderen Worten kann diese Schicht Daten auf der Grundlage von Datentypen und/oder Codierungen, von denen bekannt ist, dass sie von einer Anwendungs- oder Netzschicht akzeptiert werden, verschlüsseln, entschlüsseln und/oder formatieren.
  • Die Anwendungsschicht 314 interagiert direkt mit Softwareanwendungen und Endbenutzern und behandelt Kommunikationen zwischen ihnen. Die Anwendungsschicht 314 kann Ziele, Zustände oder Verfügbarkeit lokaler Ressourcen und/oder Kommunikationsinhalt oder Formatierungen unter Verwendung der Anwendungen identifizieren.
  • Die Intra-Netz-Verbindungskomponenten 322 und 324 arbeiten wie gezeigt auf unteren Ebenen in der Art der physikalischen Schicht 302 bzw. der Verbindungsschicht 304. Beispielsweise kann ein Hub in der physikalischen Schicht arbeiten, kann ein Switch in der physikalischen Schicht arbeiten und kann ein Router in der Netzschicht arbeiten. Inter-Netz-Verbindungskomponenten 326 und 328 arbeiten wie dargestellt auf höheren Ebenen in der Art der Schichten 306314. Beispielsweise können Router in der Netzschicht arbeiten und können Netzvorrichtungen in der Transport-, Sitzungs-, Präsentations- und Anwendungsschicht arbeiten.
  • Wie erwähnt, kann eine Rechenumgebung 314 gemäß verschiedenen Ausführungsformen mit einer, mehreren, allen oder beliebigen von verschiedenen Schichten interagieren und/oder daran arbeiten. Beispielsweise kann die Rechenumgebung 314 mit einem Hub (beispielsweise über die Verbindungsschicht) interagieren, um einzustellen, mit welchen Vorrichtungen der Hub kommuniziert. Die physikalische Schicht kann durch die Verbindungsschicht bedient werden, so dass sie solche Daten von der Verbindungsschicht implementieren kann. Beispielsweise kann die Rechenumgebung 314 steuern, von welchen Vorrichtungen sie Daten empfängt. Falls die Rechenumgebung 314 beispielsweise weiß, dass eine bestimmte Netzvorrichtung abgeschaltet wurde, außer Betrieb gegangen ist oder auf andere Weise nicht verfügbar oder unzuverlässig geworden ist, kann die Rechenumgebung 314 den Hub anweisen, zu verhindern, dass Daten von dieser Netzvorrichtung zur Rechenumgebung 314 übertragen werden. Ein solcher Prozess kann vorteilhaft sein, um zu verhindern, dass Daten empfangen werden, die ungenau sind oder die durch eine unkontrollierte Umgebung beeinflusst wurden. Bei einem weiteren Beispiel kann die Rechenumgebung 314 mit einer Bridge, einem Switch, einem Router oder einem Gateway kommunizieren und beeinflussen, welche Vorrichtung innerhalb des Systems (beispielsweise des Systems 200) die Komponente als Ziel auswählt. Gemäß einigen Ausführungsformen kann die Rechenumgebung 314 mit verschiedenen Schichten interagieren, indem sie Kommunikationen mit Geräten austauscht, die auf einer bestimmten Schicht arbeiten, indem existierende Kommunikationen weitergeleitet oder modifiziert werden. Gemäß einer anderen Ausführungsform, beispielsweise in einer Grid-Rechenumgebung, kann ein Knoten auf der Grundlage bestimmter Parameter oder Informationen, die von anderen Schichten innerhalb des Modells bereitgestellt werden, bestimmen, wie Daten innerhalb der Umgebung weitergeleitet werden sollten (beispielsweise welcher Knoten bestimmte Daten empfangen sollte).
  • Wie erwähnt wurde, kann die Rechenumgebung 314 Teil einer Kommunikations-Grid-Umgebung sein, deren Kommunikationen wie im Protokoll aus 3 dargestellt implementiert werden können. Beispielsweise sei auf 2 zurück verweisend bemerkt, dass eine oder mehrere der Maschinen 220 und 240 Teil einer Kommunikations-Grid-Rechenumgebung sein können. Eine Grid-Rechenumgebung kann in einem verteilten System mit nicht interaktiven Arbeitsbelastungen verwendet werden, wobei sich Daten in Speichern auf den Maschinen oder Rechenknoten befinden. In einer solchen Umgebung steuert analytischer Code an Stelle eines Datenbankverwaltungssystems die durch die Knoten ausgeführte Verarbeitung. Daten werden gemeinsam angeordnet, indem sie auf die Grid-Knoten vorverteilt werden, und der analytische Code auf jedem Knoten lädt die lokalen Daten in den Speicher. Jedem Knoten kann eine bestimmte Aufgabe zugewiesen werden wie ein Teil eines Verarbeitungsprojekts, oder ihm kann die Organisation oder Steuerung anderer Knoten innerhalb des Grids zugewiesen werden.
  • 4 zeigt ein Kommunikations-Grid-Rechensystem 400 mit einer Vielzahl von Steuer- und Arbeitsknoten gemäß Ausführungsformen der vorliegenden Technologie. Das Kommunikations-Grid-Rechensystem 400 weist drei Steuerknoten und einen oder mehrerer Arbeitsknoten auf. Das Kommunikations-Grid-Rechensystem 400 weist Steuerknoten 402, 404 und 406 auf. Die Steuerknoten sind über Kommunikationswege 451, 453 und 455 kommunikativ verbunden. Daher können die Steuerknoten Informationen (beispielsweise in Bezug auf das Kommunikations-Grid oder Benachrichtigungen) zueinander übertragen und voneinander empfangen. Wenngleich in 4 dargestellt ist, dass das Kommunikations-Grid-Rechensystem 400 drei Steuerknoten aufweist, kann es auch mehr oder weniger als drei Steuerknoten aufweisen.
  • Das Kommunikations-Grid-Rechensystem (oder einfach ”Kommunikations-Grid”) 400 weist auch einen oder mehrere Arbeitsknoten auf. In 4 sind sechs Arbeitsknoten 410420 dargestellt. Wenngleich 4 sechs Arbeitsknoten zeigt, kann ein Kommunikations-Grid gemäß Ausführungsformen der vorliegenden Technologie mehr oder weniger als sechs Arbeitsknoten aufweisen. Die Anzahl der Arbeitsknoten, die in einem Kommunikations-Grid enthalten ist, kann davon abhängen, wie groß das Projekt oder der Datensatz ist, der durch das Kommunikations-Grid verarbeitet wird, und von der Kapazität jedes Arbeitsknotens, der für das Kommunikations-Grid zugewiesenen Zeit für den Abschluss des Projekts sowie von anderen Dingen abhängen. Jeder Arbeitsknoten innerhalb des Kommunikations-Grids 400 kann mit Steuerknoten 402406 verbunden (verdrahtet oder drahtlos und direkt oder indirekt verbunden) sein. Daher kann jeder Arbeitsknoten Informationen von den Steuerknoten empfangen (beispielsweise einen Befehl, Arbeit an einem Projekt auszuführen) und Informationen zu den Steuerknoten senden (beispielsweise ein Ergebnis an einem Projekt ausgeführter Arbeit). Ferner können Arbeitsknoten miteinander (entweder direkt oder indirekt) kommunizieren. Beispielsweise können Arbeitsknoten zwischeneinander Daten übertragen, die sich auf eine ausgeführte Aufgabe oder einen individuellen Auftrag innerhalb einer Aufgabe, die durch diesen Arbeitsknoten ausgeführt wird, beziehen. Gemäß bestimmten Ausführungsformen können Arbeitsknoten jedoch beispielsweise nicht mit bestimmten anderen Arbeitsknoten verbunden sein (kommunikativ oder auf andere Weise). Gemäß einer Ausführungsform können Arbeitsknoten nur in der Lage sein, mit dem Steuerknoten zu kommunizieren, der sie steuert, und nicht in der Lage sein, mit anderen Arbeitsknoten im Kommunikations-Grid zu kommunizieren, unabhängig davon, ob sie andere Arbeitsknoten sind, die durch den Steuerknoten gesteuert werden, der den Arbeitsknoten steuert, oder ob sie Arbeitsknoten sind, die von anderen Steuerknoten im Kommunikations-Grid gesteuert werden.
  • Ein Steuerknoten kann sich mit einer externen Vorrichtung verbinden, mit der der Steuerknoten kommunizieren kann (beispielsweise kann sich ein Grid-Benutzer in der Art eines Servers oder Computers mit einer Steuereinrichtung des Grids verbinden). Beispielsweise kann sich ein Server oder ein Computer mit Steuerknoten verbinden und ein Projekt oder eine Aufgabe zum Knoten übertragen. Das Projekt kann einen Datensatz aufweisen. Der Datensatz kann eine beliebige Größe aufweisen. Sobald der Steuerknoten ein solches Projekt, das einen großen Datensatz aufweist, empfangen hat, kann der Steuerknoten den Datensatz oder Projekte, die sich auf den Datensatz beziehen, die durch Arbeitsknoten auszuführen sind, verteilen. Alternativ kann der Datensatz für ein Projekt, das einen großen Datensatz aufweist, durch eine andere Maschine als einen Steuerknoten empfangen oder gespeichert werden (beispielsweise einen Hadoop-Datenknoten, wobei das Hadoop Distributed File System oder HDFS verwendet wird).
  • Steuerknoten können Wissen über den Status der Knoten im Grid (d. h. Grid-Statusinformationen) vorhalten, Arbeitsanforderungen von Clients aktivieren, die Arbeit auf Arbeitsknoten aufteilen, die Arbeitsknoten koordinieren und andere Verantwortlichkeiten übernehmen. Arbeitsknoten können Arbeitsanforderungen von einem Steuerknoten akzeptieren und dem Steuerknoten Ergebnisse der vom Arbeitsknoten ausgeführten Arbeit bereitstellen. Ein Grid kann von einem einzelnen Knoten (beispielsweise einer Maschine, einem Computer, einem Server usw.) gestartet werden. Der erste Knoten kann als primärer Steuerknoten zugewiesen oder gestartet werden, der jegliche zusätzlichen Knoten, die in das Grid eintreten, steuert.
  • Wenn ein Projekt zur Ausführung eingereicht wird (beispielsweise durch einen Client oder eine Steuereinrichtung des Grids), kann es einem Satz von Knoten zugewiesen werden. Nachdem die Knoten einem Projekt zugewiesen wurden, kann die Datenstruktur (d. h. ein Kommunikator) erzeugt werden. Der Kommunikator kann vom Projekt für Informationen verwendet werden, die vom Projektcode, der auf jedem Knoten läuft, zu teilen sind. Ein Kommunikations-Handle kann auf jedem Knoten erzeugt werden. Ein Handle ist beispielsweise eine Referenz auf den Kommunikator, der innerhalb eines einzigen Prozesses auf einem einzigen Knoten gültig ist, und das Handle kann verwendet werden, wenn Kommunikationen zwischen Knoten angefordert werden.
  • Ein Steuerknoten in der Art des Steuerknotens 402 kann als primärer Steuerknoten zugewiesen werden. Ein Server, ein Computer oder eine andere externe Vorrichtung kann mit dem primären Steuerknoten verbunden werden. Sobald der Steuerknoten ein Projekt empfängt, kann der primäre Steuerknoten Teile des Projekts zur Ausführung auf seine Arbeitsknoten verteilen. Wenn beispielsweise ein Projekt auf dem Kommunikations-Grid 400 eingeleitet wird, steuert der primäre Steuerknoten 402 die für das Projekt auszuführende Arbeit, um das Projekt wie angefordert oder angewiesen abzuschließen. Der primäre Steuerknoten kann auf der Grundlage verschiedener Faktoren, beispielsweise welche Untermengen oder Teile von Projekten am wirksamsten und im korrekten Zeitraum abgeschlossen werden können, Arbeit auf die Arbeitsknoten verteilen. Beispielsweise kann ein Arbeitsknoten eine Analyse an einem Teil der Daten ausführen, die sich bereits lokal am Arbeitsknoten befinden (beispielsweise darauf gespeichert sind). Der primäre Steuerknoten koordiniert und verarbeitet auch die Ergebnisse der von jedem Arbeitsknoten ausgeführten Arbeit, nachdem jeder Arbeitsknoten seinen Auftrag ausgeführt und abgeschlossen hat. Beispielsweise kann der primäre Steuerknoten ein Ergebnis von einem oder mehreren Arbeitsknoten empfangen und kann der Steuerknoten die empfangenen Ergebnisse organisieren (beispielsweise sammeln und zusammenstellen) und sie kompilieren, um ein vollständiges Ergebnis für das vom Endbenutzer empfangene Projekt zu erzeugen.
  • Jegliche restliche Steuerknoten in der Art der Steuerknoten 404 und 406 können dem Projekt als Reserve-Steuerknoten zugewiesen werden. Gemäß einer Ausführungsform können Reserve-Steuerknoten keinen Teil des Projekts steuern. Stattdessen können Reserve-Steuerknoten als Reserve für den primären Steuerknoten dienen und als primärer Steuerknoten übernehmen, falls der primäre Steuerknoten ausfallen sollte. Falls ein Kommunikations-Grid nur einen einzigen Steuerknoten aufnehmen sollte und der Steuerknoten ausfallen sollte (beispielsweise wird der Steuerknoten abgeschaltet oder funktionsuntüchtig), kann das Kommunikations-Grid insgesamt ausfallen und kann ein Projekt oder Auftrag, das oder der auf dem Kommunikations-Grid ausgeführt wird, fehlschlagen und nicht abgeschlossen werden. Wenngleich das Projekt erneut ausgeführt werden kann, kann ein solches Versagen eine Verzögerung (in manchen Fällen eine erhebliche Verzögerung in der Art einer Verzögerung über Nacht) für den Abschluss des Projekts hervorrufen. Daher kann ein Grid mit mehreren Steuerknoten, einschließlich eines Reserve-Steuerknotens, vorteilhaft sein.
  • Zum Hinzufügen eines anderen Knotens oder einer anderen Maschine zum Grid kann der primäre Steuerknoten beispielsweise ein Paar von Listening-Sockets öffnen. Ein Socket kann verwendet werden, um Arbeitsanforderungen von Clients zu verwenden, und der zweite Socket kann verwendet werden, um Verbindungen von anderen Grid-Knoten zu akzeptieren. Der primäre Steuerknoten kann mit einer Liste anderer Knoten (beispielsweise anderen Maschinen, Computern, Servern), die am Grid teilnehmen, und der Rolle, die jeder Knoten im Grid ausfüllt, versehen werden. Nach dem Hochfahren des primären Steuerknotens (beispielsweise des ersten Knotens im Grid) kann der primäre Steuerknoten ein Netzprotokoll verwenden, um den Server-Prozess auf jedem anderen Knoten im Grid einzuleiten. Befehlszeilenparameter können beispielsweise jeden Knoten über einen oder mehrere Informationsbestandteile informieren, wie der Rolle, welche der Knoten im Grid hat, des Host-Namens des primären Steuerknotens, der Portnummer, an der der primäre Steuerknoten Verbindungen von Peer-Knoten akzeptiert, usw. Die Informationen können auch in einer Konfigurationsdatei bereitgestellt werden, über einen Secure-Shell-Tunnel übertragen werden, von einem Konfigurationsserver abgerufen werden usw. Wenngleich die anderen Maschinen im Grid die Konfiguration des Grids anfänglich nicht kennen können, können diese Informationen auch durch den primären Steuerknoten zu jedem anderen Knoten gesendet werden. Aktualisierungen der Grid-Informationen können anschließend auch zu diesen Knoten gesendet werden.
  • Für jeden anderen Steuerknoten als den zum Grid hinzugefügten primären Steuerknoten kann der Steuerknoten drei Sockets öffnen. Der erste Socket kann Arbeitsanforderungen von Clients akzeptieren, der zweite Socket kann Verbindungen von anderen Grid-Teilnehmern akzeptieren, und der dritte Socket kann (beispielsweise permanent) mit dem primären Steuerknoten verbinden. Wenn ein Steuerknoten (beispielsweise der primäre Steuerknoten) eine Verbindung von einem anderen Steuerknoten empfängt, prüft er zuerst, ob der Peer-Knoten in der Liste konfigurierter Knoten im Grid ist. Falls er nicht in der Liste ist, kann der Steuerknoten die Verbindung löschen. Falls er in der Liste ist, kann er dann versuchen, die Verbindung zu authentifizieren. Falls die Authentifizierung erfolgreich ist, kann der authentifizierende Knoten Informationen zu seinem Peer senden in der Art der Portnummer, worauf ein Knoten auf Verbindungen horcht, des Host-Namens des Knotens, von Informationen darüber, wie der Knoten zu identifizieren ist, sowie anderer Informationen. Wenn ein Knoten in der Art des neuen Steuerknotens Informationen über einen anderen aktiven Knoten empfängt, prüft er, ob er bereits eine Verbindung zu diesem anderen Knoten hat. Falls er keine Verbindung zu diesem Knoten hat, kann er eine Verbindung zu diesem Steuerknoten einrichten.
  • Jeder Arbeitsknoten, der zum Grid hinzugefügt wird, kann eine Verbindung zum primären Steuerknoten und beliebigen anderen Steuerknoten auf dem Grid einrichten. Nach dem Einrichten der Verbindung kann er sich selbst am Grid authentifizieren (beispielsweise bei beliebigen Steuerknoten, einschließlich sowohl primärer als auch Reserve-Steuerknoten, sowie einem Server oder Benutzer, der das Grid steuert). Nach der erfolgreichen Authentifizierung kann der Arbeitsknoten Konfigurationsinformationen vom Steuerknoten akzeptieren.
  • Wenn ein Knoten in ein Kommunikations-Grid eintritt (beispielsweise wenn der Knoten hochgefahren wird oder mit einem existierenden Knoten auf dem Grid verbunden wird oder beides), wird dem Knoten eine universelle eindeutige Kennung (UUID) zugewiesen (beispielsweise durch ein Betriebssystem des Grids). Diese eindeutige Kennung kann anderen Knoten und externen Einheiten (Vorrichtungen, Benutzern usw.) dabei helfen, den Knoten zu identifizieren und ihn von anderen Knoten zu unterscheiden. Wenn ein Knoten mit dem Grid verbunden wird, kann der Knoten seine eindeutige Kennung mit den anderen Knoten im Grid teilen. Weil jeder Knoten seine eindeutige Kennung teilen kann, kann jeder Knoten die eindeutige Kennung jedes anderen Knotens auf dem Grid kennen. Eindeutige Kennungen können auch eine Hierarchie jedes der Knoten (beispielsweise Reserve-Steuerknoten) innerhalb des Grids festlegen. Beispielsweise können die eindeutigen Kennungen jedes der Reserve-Steuerknoten in einer Liste von Reserve-Steuerknoten gespeichert werden, um eine Reihenfolge anzugeben, in der die Reserve-Steuerknoten für einen ausgefallenen primären Steuerknoten übernehmen, um ein neuer primärer Steuerknoten zu werden. Eine Hierarchie von Knoten kann jedoch auch unter Verwendung anderer Verfahren als der eindeutigen Kennungen der Knoten festgelegt werden. Beispielsweise kann die Hierarchie vorgegeben werden oder auf der Grundlage anderer vorgegebener Faktoren zugewiesen werden.
  • Das Grid kann zu jeder Zeit (beispielsweise von irgendeinem Steuerknoten eingeleitet) neue Maschinen hinzufügen. Nach dem Hinzufügen eines neuen Knotens zum Grid kann der Steuerknoten den neuen Knoten zuerst zu seiner Tabelle von Grid-Knoten hinzufügen. Der Steuerknoten kann dann jeden anderen Steuerknoten über den neuen Knoten benachrichtigen. Die Knoten, welche die Benachrichtigung empfangen, können bestätigen, dass sie ihre Konfigurationsinformationen aktualisiert haben.
  • Der primäre Steuerknoten 402 kann beispielsweise eine oder mehrere Kommunikationen zu Reserve-Steuerknoten 404 und 406 übertragen (und beispielsweise zu anderen Steuer- oder Arbeitsknoten innerhalb des Kommunikations-Grids). Diese Kommunikationen können periodisch in festen Zeitintervallen zwischen bekannten festen Stufen der Projektausführung sowie nach anderen Protokollen gesendet werden. Die vom primären Steuerknoten 402 übertragenen Kommunikationen können von verschiedenen Typen sein und eine Vielzahl von Informationstypen aufweisen. Beispielsweise kann der primäre Steuerknoten 402 Snapshots (beispielsweise Statusinformationen) des Kommunikations-Grids übertragen, so dass der Reserve-Steuerknoten 404 stets einen aktuellen Snapshot des Kommunikations-Grids hat. Der Snapshot oder der Grid-Status können beispielsweise die Struktur des Grids (einschließlich beispielsweise der Arbeitsknoten im Grid, eindeutiger Kennungen der Knoten oder ihrer Beziehungen mit dem primären Steuerknoten) und den Status eines Projekts (einschließlich beispielsweise des Status des Teils des Projekts von jedem Arbeitsknoten) aufweisen. Der Snapshot kann auch von Arbeitsknoten im Kommunikations-Grid empfangene Analysen oder Ergebnisse aufweisen. Die Reserve-Steuerknoten können die vom primären Steuerknoten empfangenen Reservedaten empfangen und speichern. Die Reserve-Steuerknoten können eine Anforderung eines solchen Snapshots (oder andere Informationen) vom primären Steuerknoten übertragen, oder der primäre Steuerknoten kann solche Informationen periodisch zu den Reserve-Steuerknoten senden.
  • Wie erwähnt wurde, können es die Reservedaten dem Reserve-Steuerknoten ermöglichen, einen primären Steuerknoten zu übernehmen, falls der primäre Steuerknoten ausfällt, ohne dass es erforderlich wäre, dass das Grid das Projekt von Anfang an neu startet. Falls der primäre Steuerknoten ausfällt, kann der Reserve-Steuerknoten, der als primärer Steuerknoten übernimmt, die neueste Version des vom primären Steuerknoten empfangenen Snapshots abrufen und den Snapshot verwenden, um das Projekt von der Stufe an fortzusetzen, die von den Reservedaten angegeben wird. Hierdurch kann ein Fehlschlagen des Projekts insgesamt verhindert werden.
  • Ein Reserve-Steuerknoten kann verschiedene Verfahren verwenden, um festzustellen, dass der primäre Steuerknoten ausgefallen ist. Bei einem Beispiel eines solchen Verfahrens kann der primäre Steuerknoten (beispielsweise periodisch) eine Kommunikation zum Reserve-Steuerknoten senden, welche angibt, dass der primäre Steuerknoten arbeitet und nicht ausgefallen ist, wie eine Herzschlagkommunikation. Der Reserve-Steuerknoten kann feststellen, dass der primäre Steuerknoten ausgefallen ist, falls der Reserve-Steuerknoten während eines bestimmten vorgegebenen Zeitraums keine Herzschlagkommunikation empfangen hat. Alternativ kann ein Reserve-Steuerknoten auch eine Kommunikation vom primären Steuerknoten selbst (bevor er ausgefallen ist) oder von einem Arbeitsknoten, die angibt, dass der primäre Steuerknoten ausgefallen ist, beispielsweise weil der primäre Steuerknoten nicht mit dem Arbeitsknoten kommuniziert hat, empfangen.
  • Es können verschiedene Verfahren ausgeführt werden, um zu bestimmen, welcher Reserve-Steuerknoten eines Satzes von Reserve-Steuerknoten (beispielsweise Reserve-Steuerknoten 404 und 406) für einen ausgefallenen primären Steuerknoten 402 übernimmt und zum neuen primären Steuerknoten wird. Beispielsweise kann der neue primäre Steuerknoten auf der Grundlage einer Rangordnung oder ”Hierarchie” von Reserve-Steuerknoten auf der Grundlage ihrer eindeutigen Kennungen ausgewählt werden. Gemäß einer alternativen Ausführungsform kann ein Reserve-Steuerknoten durch eine andere Vorrichtung im Kommunikations-Grid oder von einer externen Vorrichtung (beispielsweise einer Systeminfrastruktur oder einem Endbenutzer in der Art eines Servers oder Computers, wodurch das Kommunikations-Grid gesteuert wird) als der neue primäre Steuerknoten zugewiesen werden. Gemäß einer anderen alternativen Ausführungsform kann der Reserve-Steuerknoten, der als neuer primärer Steuerknoten übernimmt, auf der Grundlage der Bandbreite oder anderer Statistiken über das Kommunikations-Grid festgelegt werden.
  • Ein Arbeitsknoten innerhalb des Kommunikations-Grids kann auch ausfallen. Falls ein Arbeitsknoten ausfällt, kann die vom ausgefallenen Arbeitsknoten ausgeführte Arbeit unter betriebsfähigen Arbeitsknoten neu aufgeteilt werden. Gemäß einer alternativen Ausführungsform kann der primäre Steuerknoten eine Kommunikation zu jedem der noch arbeitsfähigen Arbeitsknoten auf dem Kommunikations-Grid senden, dass jeder der Arbeitsknoten auch absichtlich ausfallen sollte. Nachdem jeder Arbeitsknoten ausgefallen ist, können sie jeweils ihren vor kürzester Zeit gespeicherten Prüfpunkt ihres Status abrufen und das Projekt von diesem Prüfpunkt wieder einleiten, um den Verlust an Fortschritt an dem gerade ausgeführten Projekt zu minimieren.
  • 5 zeigt ein Flussdiagramm eines als Beispiel dienenden Prozesses zum Einstellen eines Kommunikations-Grids oder eines Arbeitsprojekts in einem Kommunikations-Grid nach einem Ausfall eines Knotens gemäß Ausführungsformen der vorliegenden Technologie. Beim Prozess können beispielsweise Grid-Statusinformationen empfangen werden, einschließlich eines Projektstatus eines Teils eines Projekts, der von einem Knoten im Kommunikations-Grid ausgeführt wird, wie in Operation 502 beschrieben. Beispielsweise kann ein Steuerknoten (beispielsweise ein Reserve-Steuerknoten, der mit einem primären Steuerknoten und einem Arbeitsknoten auf einem Kommunikations-Grid verbunden ist) Grid-Statusinformationen empfangen, wobei die Grid-Statusinformationen einen Projektstatus des primären Steuerknotens oder einen Projektstatus des Arbeitsknotens aufweisen. Der Projektstatus des primären Steuerknotens und der Projektstatus des Arbeitsknotens können einen Status eines oder mehrerer Teile eines Projekts aufweisen, die vom primären und Arbeitsknoten im Kommunikations-Grid ausgeführt werden. Beim Prozess können auch die Grid-Statusinformationen gespeichert werden, wie in Operation 504 beschrieben. Beispielsweise kann ein Steuerknoten (beispielsweise ein Reserve-Steuerknoten) die empfangenen Grid-Statusinformationen lokal innerhalb des Steuerknotens speichern. Alternativ können die Grid-Statusinformationen zu einer anderen Vorrichtung zum Speichern gesendet werden, wo der Steuerknoten Zugang zu den Informationen haben kann.
  • Beim Prozess kann auch eine Ausfallskommunikation entsprechend einem Knoten im Kommunikations-Grid in Operation 506 empfangen werden. Beispielsweise kann ein Knoten eine Ausfallskommunikation empfangen, die eine Angabe aufweist, dass der primäre Steuerknoten ausgefallen ist, wodurch der Reserve-Steuerknoten aufgefordert wird, für den primären Steuerknoten zu übernehmen. Gemäß einer alternativen Ausführungsform kann ein Knoten eine Ausfallskommunikation empfangen, die angibt, dass ein Arbeitsknoten ausgefallen ist, wodurch ein Steuerknoten aufgefordert wird, die vom Arbeitsknoten ausgeführte Arbeit neu zuzuweisen. Beim Prozess kann auch ein Knoten oder ein Teil des Projekts, der vom ausgefallenen Knoten ausgeführt wird, neu zugewiesen werden, wie in Operation 508 beschrieben. Beispielsweise kann ein Steuerknoten den Reserve-Steuerknoten auf der Grundlage der Ausfallskommunikation nach dem Empfang der Ausfallskommunikation als einen neuen primären Steuerknoten festlegen. Falls der ausgefallene Knoten ein Arbeitsknoten ist, kann ein Steuerknoten einen Projektstatus des ausgefallenen Arbeitsknotens unter Verwendung des Snapshots des Kommunikations-Grids identifizieren, wobei der Projektstatus des ausgefallenen Arbeitsknotens einen Status eines Teils des Projekts, der vom ausgefallenen Arbeitsknoten ausgeführt wird, zur Ausfallszeit aufweist.
  • Beim Prozess können auch aktualisierte Grid-Statusinformationen auf der Grundlage der Neuzuweisung empfangen werden, wie in Operation 510 beschrieben, und ein Befehlssatz auf der Grundlage der aktualisierten Grid-Statusinformationen zu einem oder mehreren Knoten im Kommunikations-Grid übertragen werden, wie in Operation 512 beschrieben. Die aktualisierten Grid-Statusinformationen können einen aktualisierten Projektstatus des primären Steuerknotens oder einen aktualisierten Projektstatus des Arbeitsknotens aufweisen. Die aktualisierten Informationen können zu den anderen Knoten im Grid übertragen werden, um ihre Statusspeicherinformationen zu aktualisieren.
  • 6 zeigt einen Teil eines Kommunikations-Grid-Rechensystems 600 mit einem Steuerknoten und einem Arbeitsknoten gemäß Ausführungsformen der vorliegenden Technologie. Das Kommunikations-Grid-Rechensystem 600 weist für die Zwecke der Darstellung einen Steuerknoten (Steuerknoten 602) und einen Arbeitsknoten (Arbeitsknoten 610) auf, kann jedoch auch mehr Arbeits- und/oder Steuerknoten aufweisen. Der Steuerknoten 602 ist über einen Kommunikationsweg 650 kommunikativ mit dem Arbeitsknoten 610 verbunden. Daher kann der Steuerknoten 602 Informationen (beispielsweise in Bezug auf das Kommunikations-Grid oder Benachrichtigungen) über den Weg 650 zum Arbeitsknoten 610 senden und von diesem empfangen.
  • Ähnlich 4 weist das Kommunikations-Grid-Rechensystem (oder einfach ”Kommunikations-Grid”) 600 Datenverarbeitungsknoten (Steuerknoten 602 und Arbeitsknoten 610) auf. Die Knoten 602 und 610 umfassen Mehrkern-Datenprozessoren. Jeder Knoten 602 und 610 weist eine Grid-fähige Softwarekomponente (GESC) 620 auf, die auf dem Datenprozessor, welcher diesem Knoten zugeordnet ist und mit einem Pufferspeicher 622 verbunden ist, der auch diesem Knoten zugeordnet ist, ausgeführt wird. Jeder Knoten 602 und 610 weist eine Datenbankverwaltungssoftware (DBMS) 628 auf, welche auf einem Datenbankserver (nicht dargestellt) am Steuerknoten 602 und auf einem Datenbankserver (nicht dargestellt) am Arbeitsknoten 610 ausgeführt wird.
  • Jeder Knoten weist auch einen Datenspeicher 624 auf. Die Datenspeicher 624 werden ähnlich den netzverbundenen Datenspeichern 110 aus 1 und den Datenspeichern 235 aus 2 verwendet, um Daten zu speichern, die von den Knoten in der Rechenumgebung zu verarbeiten sind. Die Datenspeicher 624 können auch vom Rechensystem erzeugte Zwischen- oder endgültige Daten nach der Verarbeitung speichern, beispielsweise in einem nichtflüchtigen Speicher. Gemäß bestimmten Ausführungsformen ermöglicht die Konfiguration der Grid-Rechenumgebung jedoch, dass ihre Operationen so ausgeführt werden, dass Zwischen- und endgültige Datenergebnisse ausschließlich im flüchtigen Speicher (beispielsweise RAM) gespeichert werden können, ohne dass die Anforderung besteht, dass Zwischen- oder endgültige Datenergebnisse in nichtflüchtigen Speichertypen gespeichert werden. Das Speichern solcher Daten im flüchtigen Speicher kann in bestimmten Situationen nützlich sein, beispielsweise wenn das Grid Anfragen (beispielsweise ad hoc) von einem Client empfängt und wenn Antworten, die durch die Verarbeitung großer Datenmengen erzeugt werden, schnell oder unmittelbar erzeugt werden müssen. In einer solchen Situation kann das Grid dafür ausgelegt sein, die Daten innerhalb des Speichers vorzuhalten, so dass Antworten auf verschiedenen Detailniveaus erzeugt werden können und ein Client diese Informationen interaktiv abfragen kann.
  • Jeder Knoten weist auch eine benutzerdefinierte Funktion (UDF) 626 auf. Die UDF stellt der DMBS 628 einen Mechanismus bereit, um Daten zur Datenbank zu übertragen oder davon zu empfangen, welche in den Datenspeichern 624 gespeichert ist, die durch die DBMS verwaltet werden. Beispielsweise kann die UDF 626 durch die DBMS aufgerufen werden, um der GESC Daten für die Verarbeitung bereitzustellen. Die UDF 626 kann eine Socket-Verbindung (nicht dargestellt) mit der GESC einrichten, um die Daten zu übertragen. Alternativ kann die UDF 626 Daten zur GESC übertragen, indem sie Daten in den geteilten Speicher schreibt, der sowohl für die UDF als auch die GESC zugänglich ist.
  • Die GESC 620 kann an den Knoten 602 und 620 über ein Netz in der Art des in 1 dargestellten Netzes 108 verbunden werden. Daher können die Knoten 602 und 620 über das Netz unter Verwendung eines vorgegebenen Kommunikationsprotokolls in der Art beispielsweise der Nachrichtenübermittlungsschnittstelle (MPI) miteinander kommunizieren. Jede GESC 620 kann an einem anderen Knoten in eine Punkt-zu-Punkt-Kommunikation mit der GESC eintreten oder eine gemeinsame Kommunikation mit mehreren GESC über das Netz eintreten. Die GESC 620 kann an jedem Knoten identische (oder nahezu identische) Softwarebefehle enthalten. Jeder Knoten kann in der Lage sein, entweder als ein Steuerknoten oder ein Arbeitsknoten zu arbeiten. Die GESC am Steuerknoten 602 kann über einen Kommunikationsweg 652 mit einer Client-Vorrichtung 630 kommunizieren. Insbesondere kann der Steuerknoten 602 mit einer Client-Anwendung 632 kommunizieren, die von der Client-Vorrichtung 630 gehostet wird, um Anfragen zu empfangen und nach der Verarbeitung großer Datenmengen auf diese Anfragen zu antworten.
  • Die DMBS 628 kann die Erzeugung, Wartung und Verwendung der Datenbank oder Datenstruktur (nicht dargestellt) innerhalb eines Knotens 602 oder 610 steuern. Die Datenbank kann in Datenspeichern 624 gespeicherte Daten organisieren. Die DMBS 628 am Steuerknoten 602 kann Anforderungen von Daten akzeptieren und die geeigneten Daten für die Anforderung übertragen. Bei einem solchen Prozess können Datensammlungen über mehrere physikalische Stellen verteilt werden. Bei diesem Beispiel speichert jeder Knoten 602 und 610 einen Teil der vom Verwaltungssystem verwalteten Gesamtdaten im zugeordneten Datenspeicher 624.
  • Ferner kann die DBMS für den Schutz vor einem Datenverlust durch die Verwendung von Replikationstechniken verantwortlich sein. Replikation umfasst das Bereitstellen einer Reservekopie an einem Knoten gespeicherter Daten an einem oder mehreren anderen Knoten. Daher können, falls ein Knoten ausfällt, die Daten vom ausgefallenen Knoten anhand einer replizierten Kopie, die sich an einem anderen Knoten befindet, wiederhergestellt werden. Wie hier mit Bezug auf 4 beschrieben wurde, können Daten oder Statusinformationen für jeden Knoten im Kommunikations-Grid jedoch auch mit jedem Knoten auf dem Grid geteilt werden.
  • 7 zeigt ein Flussdiagramm eines als Beispiel dienenden Verfahrens zum Ausführen eines Projekts innerhalb eines Grid-Rechensystems gemäß Ausführungsformen der vorliegenden Technologie. Wie mit Bezug auf 6 beschrieben, kann die GESC am Steuerknoten Daten mit einer Client-Vorrichtung (beispielsweise einer Client-Vorrichtung 630) übertragen, um Anfragen für die Ausführung eines Projekts zu empfangen, und auf diese Anfragen antworten, nachdem große Datenmengen verarbeitet worden sind. Die Anfrage kann zum Steuerknoten übertragen werden, wobei die Anfrage eine Anforderung zur Ausführung eines Projekts aufweisen kann, wie in Operation 702 beschrieben. Die Anfrage kann Anweisungen über den Typ der im Projekt auszuführenden Datenanalyse und dazu, ob das Projekt unter Verwendung der Grid-basierten Rechenumgebung ausgeführt werden sollte, enthalten, wie in Operation 704 dargestellt.
  • Zum Einleiten des Projekts kann der Steuerknoten feststellen, ob die Anfrage die Verwendung der Grid-basierten Rechenumgebung für die Ausführung des Projekts anfordert. Falls die Feststellung Nein ist, leitet der Steuerknoten die Ausführung des Projekts in einer Solo-Umgebung (beispielsweise am Steuerknoten) ein, wie in Operation 710 beschrieben. Falls die Feststellung Ja ist, kann der Steuerknoten die Ausführung des Projekts in der Grid-basierten Rechenumgebung einleiten, wie in Operation 706 beschrieben. In einer solchen Situation kann die Anforderung eine angeforderte Konfiguration des Grids aufweisen. Beispielsweise kann die Anforderung die Anzahl der Steuerknoten und die Anzahl der Arbeitsknoten, die im Grid zu verwenden sind, wenn das Projekt ausgeführt wird, aufweisen. Nachdem das Projekt abgeschlossen wurde, kann der Steuerknoten erhaltene Ergebnisse der Analyse durch das Grid übertragen, wie in Operation 708 beschrieben. Unabhängig davon, ob das Projekt in einer Solo- oder einer Grid-basierten Umgebung ausgeführt wird, stellt der Steuerknoten die Ergebnisse des Projekts bereit.
  • Wie mit Bezug auf 2 erwähnt wurde, kann die hier beschriebene Rechenumgebung Daten (beispielsweise von Netzvorrichtungen in der Art von Sensoren in der Art der Netzvorrichtungen 204209 in 2 und Client-Vorrichtungen oder anderen Quellen empfangen) sammeln, die als Teil eines Datenanalyseprojekts zu verarbeiten sind, und Daten können in Echtzeit als Teil einer Streaming-Analyseumgebung (beispielsweise ESP) empfangen werden. Daten können unter Verwendung einer Vielzahl von Quellen, über verschiedene Arten von Netzen oder lokal, beispielsweise auf einer Echtzeit-Streaming-Basis, übermittelt gesammelt werden. Beispielsweise können Netzvorrichtungen Daten periodisch von Netzvorrichtungssensoren empfangen, während die Sensoren Änderungen in ihrer Umgebung kontinuierlich messen, überwachen und verfolgen. Insbesondere entwickelt oder erzeugt eine zunehmende Anzahl verteilter Anwendungen kontinuierlich fließende Daten von verteilten Quellen durch Anwenden von Anfragen auf die Daten, bevor die Daten auf geographisch verteilte Empfänger verteilt werden. Eine Ereignis-Stream-Verarbeitungsmaschine (ESPE) kann die Anfragen kontinuierlich auf die Daten anwenden, wenn sie empfangen werden, und stellt fest, welche Einheiten die Daten empfangen sollten. Clients oder andere Vorrichtungen können sich auch an der ESPE oder anderen Vorrichtungen, die ESP-Daten verarbeiten, anmelden, so dass sie Daten nach der Verarbeitung empfangen können, beispielsweise auf der Grundlage der von der Verarbeitungsmaschine bestimmten Einheiten. Beispielsweise können sich Client-Vorrichtungen 230 in 2 an der ESPE in der Rechenumgebung 214 anmelden. Bei einem anderen Beispiel können sich mit Bezug auf 10 weiter beschriebene Ereignissubskriptionsvorrichtungen 874a–c auch an der ESPE anmelden. Die ESPE kann festlegen oder definieren, wie Eingangsdaten oder Ereignis-Streams von Netzvorrichtungen oder anderen Veröffentlichern (beispielsweise Netzvorrichtungen 204209 in 2) in von Teilnehmern in der Art beispielsweise der Client-Vorrichtungen 230 in 2 zu verbrauchende bedeutsame Ausgangsdaten umgewandelt werden.
  • 8 zeigt ein Blockdiagramm mit Komponenten einer Ereignis-Stream-Verarbeitungsmaschine (ESPE) gemäß Ausführungsformen der vorliegenden Technologie. Die ESPE 800 kann ein oder mehrere Projekte 802 aufweisen. Ein Projekt kann als ein Container zweiter Ebene in einem von der ESPE 800 verwalteten Maschinenmodell beschrieben werden, wobei die Thread-Pool-Größe für das Projekt vom Benutzer definiert werden kann. Jedes von dem einen oder den mehreren Projekten 802 kann eine oder mehrere kontinuierliche Anfragen 804 aufweisen, die Datenflüsse enthalten, welche Datentransformationen eingehender Ereignis-Streams sind. Die eine oder die mehreren kontinuierlichen Anfragen 804 können ein oder mehrere Quellfenster 806 und ein oder mehrere abgeleitete Fenster 808 aufweisen.
  • Die ESPE kann Streaming-Daten über einen Zeitraum empfangen, der sich auf bestimmte Ereignisse bezieht, wie Ereignisse oder andere Daten, die von einer oder mehreren Netzvorrichtungen erfasst werden. Die ESPE kann Operationen in Zusammenhang mit durch eine oder mehrere Vorrichtungen erzeugten Verarbeitungsdaten ausführen. Beispielsweise kann die ESPE Daten von der einen oder von den mehreren in 2 dargestellten Netzvorrichtungen 204209 empfangen. Wie erwähnt wurde, können die Netzvorrichtungen Sensoren aufweisen, die verschiedene Aspekte ihrer Umgebung erfassen, und sie können auf der Grundlage dieser erfassten Beobachtungen im Laufe der Zeit Daten sammeln. Beispielsweise kann die ESPE innerhalb einer oder mehrerer in 2 dargestellter Maschinen 220 und 240 implementiert sein. Die ESPE kann innerhalb einer solchen Maschine durch eine ESP-Anwendung implementiert sein. Eine ESP-Anwendung kann eine ESPE mit ihrem eigenen zweckgebundenen Thread-Pool oder ihren eigenen zweckgebundenen Thread-Pools in ihren Anwendungsraum einbetten, wo der Hauptanwendungs-Thread anwendungsspezifische Arbeit ausführen kann und die ESPE Ereignis-Streams zumindest durch Erzeugen einer Instanz eines Modells in Verarbeitungsobjekte verarbeitet.
  • Der Maschinen-Container ist der Container oberster Ebene in einem Modell, das die Ressourcen des einen oder der mehreren Projekte 802 verwaltet. Gemäß einer der Erläuterung dienenden Ausführungsform kann es beispielsweise nur eine ESPE 800 für jede Instanz der ESP-Anwendung geben, und die ESPE 800 kann einen eindeutigen Maschinennamen aufweisen. Zusätzlich können das eine oder die mehreren Projekte 802 jeweils eindeutige Projektnamen aufweisen, und jede Anfrage kann einen eindeutigen kontinuierlichen Anfragenamen aufweisen und mit einem eindeutig benannten Quellfenster von dem einen oder den mehreren Quellfenstern 806 beginnen. Die ESPE 800 kann permanent sein oder nicht.
  • Eine kontinuierliche Anfragemodellierung beinhaltet das Definieren gerichteter Fenstergraphen für die Ereignis-Stream-Manipulation und -Transformation. Ein Fenster in Zusammenhang mit einer Ereignis-Stream-Manipulation und -Transformation ist ein Verarbeitungsknoten in einem Ereignis-Stream-Verarbeitungsmodell. Ein Fenster bei einer kontinuierlichen Anfrage kann Aggregationen, Berechnungen, einen Mustervergleich und andere Operationen an durch das Fenster fließenden Daten ausführen. Eine kontinuierliche Anfrage kann als ein gerichteter Graph von Quellfenstern, relationalen Fenstern, Mustervergleichsfenstern und prozeduralen Fenstern beschrieben werden. Das eine oder die mehreren Quellfenster 806 und das eine oder die mehreren abgeleiteten Fenster 808 repräsentieren kontinuierlich ausgeführte Anfragen, welche Aktualisierungen an einem Anfrageergebnis erzeugen, das durch die ESPE 800 als ein neuer Ereignisblock-Stream festgelegt wird. Ein gerichteter Graph ist beispielsweise ein Satz durch Kanten verbundener Knoten, wobei den Kanten eine Richtung zugeordnet ist.
  • Ein Ereignisobjekt kann als ein Paket als eine Sammlung von Feldern zugänglicher Daten beschrieben werden, wobei wenigstens eines der Felder als ein Schlüssel oder eine eindeutige Kennung (ID) definiert ist. Das Ereignisobjekt kann unter Verwendung einer Vielzahl von Formaten einschließlich binärer, alphanumerischer, XML usw. erzeugt werden. Jedes Ereignis-Objekt kann ein oder mehrere Felder aufweisen, die als Primärkennung (ID) für das Ereignis bezeichnet werden, so dass die ESPE 800 Operationscodes (Opcodes) für Ereignisse unter Einschluss von Einfügen, Aktualisieren, Upsert und Löschen unterstützen kann. Upsert-Opcodes aktualisieren das Ereignis, falls das Schlüsselfeld bereits existiert, wobei das Ereignis andernfalls eingefügt wird. Zur Erläuterung sei bemerkt, dass ein Ereignisobjekt eine gepackte binäre Repräsentation eines Satzes von Feldwerten sein kann und sowohl Metadaten als auch Felddaten in Zusammenhang mit einem Ereignis aufweisen kann. Die Metadaten können einen Opcode, der angibt, ob das Ereignis ein Einfügen, Aktualisieren, Löschen oder Upsert repräsentiert, einen Satz von Hinweiszeichen, die angeben, ob das Ereignis normal ist, ein Teilaktualisieren oder ein retentionserzeugtes Ereignis von einer Retentionsrichtlinienverwaltung und einen Satz von Mikrosekunden-Zeitstempeln, der für Latenzmessungen verwendet werden kann, aufweisen.
  • Ein Ereignisblockobjekt kann als eine Gruppierung oder ein Paket von Ereignisobjekten beschrieben werden. Ein Ereignis-Stream kann als ein Fluss von Ereignisblockobjekten beschrieben werden. Eine kontinuierliche Anfrage von der einen oder den mehreren kontinuierlichen Anfragen 804 transformiert einen Quell-Ereignis-Stream, der aus Streaming-Ereignisblockobjekten besteht, die in ESPE 800 veröffentlicht sind, unter Verwendung des einen oder der mehreren Quellfenster 806 und des einen oder der mehreren abgeleiteten Fenster 808 in einen oder mehrere Ausgangs-Ereignis-Streams. Eine kontinuierliche Anfrage kann auch als eine Datenflussmodellierung angesehen werden.
  • Das eine oder die mehreren Quellfenster 806 sind an der Spitze des gerichteten Graphs, und es gibt keine Fenster, die ihnen zuführen. Ereignis-Streams werden im einen oder in den mehreren Quellfenstern 806 veröffentlicht, und die Ereignis-Streams können von dort aus zum nächsten Satz verbundener Fenster geleitet werden, wie durch den gerichteten Graph definiert ist. Das eine oder die mehreren abgeleiteten Fenster 808 sind alle instanziierte Fenster, die keine Quellfenster sind und die andere Fenster aufweisen, welche Ereignisse in sie streamen. Das eine oder die mehreren abgeleiteten Fenster 808 können Berechnungen oder Transformationen an den eingehenden Ereignis-Streams ausführen. Das eine oder die mehreren abgeleiteten Fenster 808 transformieren Ereignis-Streams auf der Grundlage des Fenstertyps (d. h. Operatoren in der Art von Verbinden, Filtern, Berechnen, Aggregieren, Kopieren, Mustervergleich, prozedural, Vereinigung usw.) und der Fenstereinstellungen. Weil Ereignis-Streams in ESPE 800 veröffentlicht werden, werden sie kontinuierlich angefragt, und der sich ergebende Satz abgeleiteter Fenster in diesen Anfragen wird kontinuierlich aktualisiert.
  • 9 zeigt ein Flussdiagramm eines als Beispiel dienenden Prozesses mit Operationen, die durch eine Ereignis-Stream-Verarbeitungsmaschine ausgeführt werden, gemäß einigen Ausführungsformen der vorliegenden Technologie. Wie erwähnt wurde, definiert die ESPE 800 (oder eine zugeordnete ESP-Anwendung), wie Eingangs-Ereignis-Streams in bedeutungsvolle Ausgangs-Ereignis-Streams umgewandelt werden. Insbesondere kann die ESP-Anwendung definieren, wie Eingangs-Ereignis-Streams von Veröffentlichern (beispielsweise Netzvorrichtungen, die gemessene Daten bereitstellen) in bedeutungsvolle Ausgangs-Ereignis-Streams umgewandelt werden, die von Teilnehmern (beispielsweise einem Datenanalyseprojekt, das von einer Maschine oder einem Satz von Maschinen ausgeführt wird) verbraucht werden.
  • Innerhalb dieser Anwendung kann ein Benutzer mit einem oder mehreren Benutzerschnittstellenfenstern interagieren, die dem Benutzer in einer Anzeige von der ESPE gesteuert unabhängig oder durch eine Browseranwendung in einer vom Benutzer auswählbaren Reihenfolge präsentiert werden. Beispielsweise kann ein Benutzer eine ESP-Anwendung ausführen, welche die Präsentation eines ersten Benutzerschnittstellenfensters hervorruft, das mehrere Menüs und Selektoren in der Art von Dropdown-Menüs, Tasten, Textkästchen, Hyperlinks usw. in Zusammenhang mit der ESP-Anwendung aufweisen kann, wie Fachleute verstehen werden. Wie Fachleute ferner verstehen werden, können verschiedene Operationen parallel ausgeführt werden, beispielsweise unter Verwendung mehrerer Threads.
  • In Operation 900 kann eine ESP-Anwendung eine ESPE definieren und starten und dabei eine ESPE an einer Vorrichtung in der Art der Maschine 220 und/oder 240 instanziieren. In Operation 902 wird der Maschinen-Container erzeugt. Zur Erläuterung sei bemerkt, dass die ESPE 800 unter Verwendung eines Funktionsaufrufs instanziiert werden kann, welcher den Maschinen-Container als Manager für das Modell spezifiziert.
  • In Operation 904 werden die eine oder die mehreren kontinuierlichen Anfragen 804 durch die ESPE 800 als Modell instanziiert. Die eine oder die mehreren kontinuierlichen Anfragen 804 können mit einem zweckgebundenen Thread-Pool oder -Pools instanziiert werden, welche Aktualisierungen als neue Ereignis-Streams durch die ESPE 800 erzeugen. Zur Erläuterung sei bemerkt, dass die eine oder die mehreren kontinuierlichen Anfragen 804 erzeugt werden können, um eine Geschäftsverarbeitungslogik innerhalb der ESPE 800 zu modellieren, Ereignisse innerhalb der ESPE 800 vorherzusagen, ein physikalisches System innerhalb der ESPE 800 zu modellieren, den Zustand des physikalischen Systems innerhalb der ESPE 800 vorherzusagen usw. Beispielsweise kann die ESPE 800 wie erwähnt verwendet werden, um eine Sensordatenüberwachung und -verwaltung zu unterstützen (gemessen werden können beispielsweise Kraft, Drehmoment, Last, Dehnung, Position, Temperatur, Luftdruck, Fluidströmung, chemische Eigenschaften, Widerstand, elektromagnetische Felder, Strahlung, Bestrahlung, Nähe, Akustik, Feuchtigkeit, Abstand, Geschwindigkeit, Vibrationen, Beschleunigung, elektrisches Potential oder elektrischer Strom usw.).
  • Die ESPE 800 kann sich in Bewegung befindende Ereignisse oder ”Ereignis-Streams” analysieren und verarbeiten. Statt Daten zu speichern und Anfragen auf die gespeicherten Daten zu richten, kann die ESPE 800 Anfragen speichern und Daten durch sie streamen, um eine kontinuierliche Analyse von Daten, wenn sie empfangen werden, zu ermöglichen. Das eine oder die mehreren Quellfenster 806 und das eine oder die mehreren abgeleiteten Fenster 808 können auf der Grundlage der relationalen, Mustervergleichs- und prozeduralen Algorithmen erzeugt werden, welche die Eingangs-Ereignis-Streams in die Ausgangs-Ereignis-Streams umwandeln, um auf der Grundlage des definierten kontinuierlichen Anfragemodells und der Anwendung auf die gestreamten Daten zu modellieren, zu simulieren, zu zählen, zu testen, vorherzusagen usw.
  • In Operation 906 wird eine Veröffentlichen/Teilnehmen(pub/sub)-Fähigkeit für ESPE 800 initialisiert. Gemäß einer der Erläuterung dienenden Ausführungsform wird eine pub/sub-Fähigkeit für jedes Projekt von dem einen oder den mehreren Projekten 802 initialisiert. Zum Initialisieren und Ermöglichen einer pub/sub-Fähigkeit für ESPE 800 kann eine Portnummer bereitgestellt werden. Pub/sub-Clients können einen Host-Namen einer die ESPE ausführenden ESP-Vorrichtung und die Portnummer zum Einrichten von pub/sub-Verbindungen zur ESPE 800 verwenden.
  • 10 zeigt ein ESP-System 850, das zwischen einer veröffentlichenden Vorrichtung 872 und Ereignissubskriptionsvorrichtungen 874a–c verbindet, gemäß Ausführungsformen der vorliegenden Technologie. Das ESP-System 850 kann eine ESP-Vorrichtung oder ein ESP-Untersystem 851, eine Ereignisveröffentlichungsvorrichtung 872, eine Ereignissubskriptionsvorrichtung A 874a, eine Ereignissubskriptionsvorrichtung B 874b und eine Ereignissubskriptionsvorrichtung C 874c aufweisen. Eingangs-Ereignis-Streams werden durch die veröffentlichende Vorrichtung 872 an die ESP-Vorrichtung 851 ausgegeben. Gemäß alternativen Ausführungsformen können die Eingangs-Ereignis-Streams durch mehrere veröffentlichende Vorrichtungen erzeugt werden. Die mehreren veröffentlichenden Vorrichtungen können ferner Ereignis-Streams für andere ESP-Vorrichtungen veröffentlichen. Die eine oder die mehreren durch die ESPE 800 instanziierten kontinuierlichen Anfragen können die Eingangs-Ereignis-Streams analysieren und verarbeiten, um Ausgangs-Ereignis-Streams zu bilden, die an die Ereignissubskriptionsvorrichtung A 874a, die Ereignissubskriptionsvorrichtung B 874b und die Ereignissubskriptionsvorrichtung C 874c ausgegeben werden. Das ESP-System 850 kann eine größere oder geringere Anzahl von Ereignissubskriptionsvorrichtungen aufweisen.
  • Veröffentlichen-Teilnehmen ist ein nachrichten-orientiertes Interaktionsparadigma auf der Grundlage der indirekten Adressierung. Empfänger verarbeiteter Daten spezifizieren ihr Interesse, Informationen von der ESPE 800 zu empfangen, indem sie sich bei spezifischen Ereignisklassen anmelden, während Informationsquellen Ereignisse für die ESPE 800 veröffentlichen, ohne direkt an die empfangenden Parteien zu adressieren. Die ESPE 800 koordiniert die Interaktionen und verarbeitet die Daten. In manchen Fällen empfängt die Datenquelle eine Bestätigung, dass die veröffentlichten Informationen von einem Datenempfänger empfangen wurden.
  • Eine Veröffentlichen/Teilnehmen-API kann als eine Bibliothek beschrieben werden, die es einem Ereignisveröffentlicher in der Art der veröffentlichenden Vorrichtung 872 ermöglicht, Ereignis-Streams für die ESPE 800 zu veröffentlichen, oder es einem Ereignisteilnehmer in der Art der Ereignissubskriptionsvorrichtung A 874a, der Ereignissubskriptionsvorrichtung B 874b und der Ereignissubskriptionsvorrichtung C 874c ermöglicht, sich bei Ereignis-Streams von der ESPE 800 anzumelden. Beispielsweise können eine oder mehrere Veröffentlichen/Teilnehmen-API definiert werden. Unter Verwendung der Veröffentlichen/Teilnehmen-API kann eine Ereignisveröffentlichungsanwendung Ereignis-Streams in einem Laufendes-Ereignis-Stream-Prozessor-Projekt-Quellfenster der ESPE 800 veröffentlichen und kann sich die Ereignissubskriptionsanwendung bei einem Ereignis-Stream-Prozessor-Projekt-Quellfenster der ESPE 800 anmelden.
  • Die Veröffentlichen/Teilnehmen-API stellt eine Verbindbarkeit über Plattformen und die Byte-Reihenfolgekompatibilität zwischen der ESP-Anwendung und anderen vernetzten Anwendungen in der Art an der veröffentlichenden Vorrichtung 872 instanziierter Ereignisveröffentlichungsanwendungen und an einer oder mehreren von der Ereignissubskriptionsvorrichtung A 874a, der Ereignissubskriptionsvorrichtung B 874b und der Ereignissubskriptionsvorrichtung C 874c instanziierter Ereignissubskriptionsanwendungen bereit.
  • Auf 9 zurück verweisend sei bemerkt, dass Operation 906 die Veröffentlichen/Teilnehmen-Fähigkeit der ESPE 800 initialisiert. In Operation 908 werden das eine oder die mehreren Projekte 802 gestartet. Das eine oder die mehreren gestarteten Projekte können im Hintergrund auf einer ESP-Vorrichtung laufen. In Operation 910 wird ein Ereignisblockobjekt von einer oder mehreren Rechenvorrichtungen der Ereignisveröffentlichungsvorrichtung 872 empfangen.
  • Das ESP-Untersystem 800 kann einen veröffentlichenden Client 852, die ESPE 800, einen teilnehmenden Client A 854, einen teilnehmenden Client B 856 und einen teilnehmenden Client C 858 aufweisen. Der veröffentlichende Client 852 kann durch eine Ereignisveröffentlichungsanwendung, die an der veröffentlichenden Vorrichtung 872 ausgeführt wird, unter Verwendung der Veröffentlichen/Teilnehmen-API gestartet werden. Der teilnehmende Client A 854 kann durch eine Ereignissubskriptionsanwendung A, die an der Ereignissubskriptionsvorrichtung A 874a ausgeführt wird, unter Verwendung der Veröffentlichen/Teilnehmen-API gestartet werden. Der teilnehmende Client B 856 kann durch eine Ereignissubskriptionsanwendung B, die an der Ereignissubskriptionsvorrichtung B 874b ausgeführt wird, unter Verwendung der Veröffentlichen/Teilnehmen-API gestartet werden. Der teilnehmende Client C 858 kann durch eine Ereignissubskriptionsanwendung C, die an der Ereignissubskriptionsvorrichtung C 874c ausgeführt wird, unter Verwendung der Veröffentlichen/Teilnehmen-API gestartet werden.
  • Ein Ereignisblockobjekt, das ein oder mehrere Ereignisobjekte enthält, wird von einer Instanz einer Ereignisveröffentlichungsanwendung auf der Ereignisveröffentlichungsvorrichtung 872 in ein Quellfenster von dem einen oder den mehreren Quellfenstern 806 injiziert. Das Ereignisblockobjekt kann beispielsweise durch die Ereignisveröffentlichungsanwendung erzeugt werden und vom veröffentlichenden Client 852 empfangen werden. Eine eindeutige Kennung kann beibehalten werden, während das Ereignisblockobjekt zwischen dem einen oder den mehreren Quellfenstern 806 und/oder dem einen oder den mehreren abgeleiteten Fenstern 808 der ESPE 800 zum teilnehmenden Client A 854, zum teilnehmenden Client B 806 und zum teilnehmenden Client C 808 sowie zur Ereignissubskriptionsvorrichtung A 874a, zur Ereignissubskriptionsvorrichtung B 874b und zur Ereignissubskriptionsvorrichtung C 874c weitergeleitet wird. Der veröffentlichende Client 852 kann ferner eine eingebettete Transaktionskennung erzeugen und in das Ereignisblockobjekt aufnehmen, wenn das Ereignisblockobjekt durch eine kontinuierliche Anfrage verarbeitet wird, ebenso wie die eindeutige Kennung, welche die veröffentlichende Vorrichtung 872 dem Ereignisblockobjekt zugewiesen hat.
  • In Operation 912 wird das Ereignisblockobjekt durch die eine oder die mehreren kontinuierlichen Anfragen 804 verarbeitet. In Operation 914 wird das verarbeitete Ereignisblockobjekt an eine oder mehrere Rechenvorrichtungen der Ereignis subskriptionsvorrichtungen 874a–c ausgegeben. Beispielsweise können der teilnehmende Client A 804, der teilnehmende Client B 806 und der teilnehmende Client C 808 das empfangene Ereignisblockobjekt zur Ereignissubskriptionsvorrichtung A 874a, zur Ereignissubskriptionsvorrichtung B 874b bzw. zur Ereignissubskriptionsvorrichtung C 874c senden.
  • Die ESPE 800 behält den Ereignisblockcontaineraspekt der empfangenen Ereignisblöcke von der Zeit an aufrecht, zu der der Ereignisblock in einem Quellfenster veröffentlicht wird, und bereitet sich ihren Weg durch den gerichteten Graphen, der durch die eine oder die mehreren kontinuierlichen Anfragen 804 definiert ist, mit den verschiedenen Ereignisübersetzungen vor der Ausgabe an Teilnehmer. Die Teilnehmer können eine Gruppe von subskribierten Ereignissen zu einer Gruppe veröffentlichter Ereignisse zurück korrelieren, indem sie die eindeutige Kennung des Ereignisblockobjekts, welche ein Veröffentlicher in der Art der veröffentlichenden Vorrichtung 872 an das Ereignisblockobjekt angehängt hat, mit der vom Teilnehmer empfangenen Ereignisblockkennung vergleichen.
  • In Operation 916 wird festgestellt, ob die Verarbeitung unterbrochen werden sollte. Falls die Verarbeitung nicht unterbrochen wird, wird sie in Operation 910 fortgesetzt, um den Empfang des einen oder der mehreren Ereignisblockobjekte enthaltenden Ereignis-Streams beispielsweise von der einen oder den mehreren Netzvorrichtungen fortzusetzen. Falls die Verarbeitung unterbrochen wird, wird sie in Operation 918 fortgesetzt. In Operation 918 werden die gestarteten Projekte unterbrochen. In Operation 920 wird die ESPE heruntergefahren.
  • Wie vorstehend erwähnt wurde, werden gemäß einigen Ausführungsformen Big Data für ein Analyseprojekt verarbeitet, nachdem die Daten empfangen und gespeichert wurden. Gemäß anderen Ausführungsformen verarbeiten verteilte Anwendungen kontinuierlich fließende Daten in Echtzeit von verteilten Quellen durch Anwenden von Anfragen auf die Daten, bevor die Daten auf geographisch verteilte Empfänger verteilt werden. Wie erwähnt wurde, kann eine Ereignis-Stream-Verarbeitungsmaschine (ESPE) die Anfragen kontinuierlich auf die Daten anwenden, wenn sie empfangen werden, und bestimmt, welche Einheiten die verarbeiteten Daten empfangen. Dies ermöglicht es, dass große Datenmengen in einer Vielzahl von Umgebungen empfangen und/oder gesammelt werden, um in Echtzeit verarbeitet und verteilt zu werden. Beispielsweise können, wie in 2 dargestellt ist, Daten von Netzvorrichtungen gesammelt werden, die Vorrichtungen innerhalb des Internets der Dinge aufweisen, wie Vorrichtungen innerhalb eines Heimautomationsnetzes. Allerdings können solche Daten von einer Vielzahl verschiedener Ressourcen in einer Vielzahl verschiedener Umgebungen gesammelt werden. In jeder solchen Situation ermöglichen Ausführungsformen der vorliegenden Technologie eine Echtzeitverarbeitung solcher Daten.
  • Aspekte der vorliegenden Offenbarung stellen technische Lösungen für technische Probleme in der Art von Rechenproblemen bereit, die sich ergeben, wenn eine ESP-Vorrichtung ausfällt, was zu einer vollständigen Dienstunterbrechung und möglicherweise einem erheblichen Datenverlust führt. Der Datenverlust kann katastrophal sein, wenn die gestreamten Daten missions-kritische Operationen unterstützen wie solche, die einen gerade ablaufenden Herstellungs- oder Bohrvorgang unterstützen. Eine Ausführungsform eines ESP-Systems erreicht eine schnelle und nahtlose Ausfallüberwindung einer ESPE, die auf den mehreren ESP-Vorrichtungen läuft, ohne eine Dienstunterbrechung oder einen Datenverlust, wodurch die Zuverlässigkeit eines Betriebssystems erheblich verbessert wird, das auf der Live- oder Echtzeitverarbeitung der Daten-Streams beruht. Die Ereignisveröffentlichungssysteme, die Ereignissubskriptionssysteme und jede ESPE, die nicht auf einer ausgefallenen ESP-Vorrichtung ausgeführt wird, sind sich der ausgefallenen ESP-Vorrichtung nicht bewusst oder werden nicht dadurch beeinflusst. Das ESP-System kann tausende von Ereignisveröffentlichungssystemen und Ereignissubskriptionssystemen aufweisen. Das ESP-System hält die Ausfallüberwindungslogik und das Ausfallüberwindungsbewusstsein innerhalb der Grenzen einer Ausgangsnachrichtennetzverbindung und einer Ausgangsnachrichtennetzvorrichtung.
  • Gemäß einer als Beispiel dienenden Ausführungsform ist ein System zum Unterstützen einer Ausfallüberwindung vorgesehen, wenn eine Ereignis-Stream-Verarbeitung (ESP) von Ereignisblöcken ausgeführt wird. Das System weist eine Ausgangsnachrichtennetzvorrichtung und eine Rechenvorrichtung auf, ist jedoch nicht darauf beschränkt. Die Rechenvorrichtung weist einen Prozessor und ein computerlesbares Medium, das mit dem Prozessor gekoppelt ist, auf, ist jedoch nicht darauf beschränkt. Der Prozessor ist dafür ausgelegt, eine ESP-Maschine (ESPE) auszuführen. Auf dem computerlesbaren Medium sind Befehle gespeichert, die, wenn sie vom Prozessor ausgeführt werden, die Rechenvorrichtung veranlassen, die Ausfallüberwindung zu unterstützen. Ein Ereignisblockobjekt, das eine eindeutige Kennung aufweist, wird von der ESPE empfangen. Ein erster Status der Rechenvorrichtung in der Art von aktiv oder Bereitschaft wird bestimmt. Wenn der erste Status aktiv ist, wird ein zweiter Status der Rechenvorrichtung als neu aktiv oder nicht neu aktiv bestimmt. Neu aktiv wird bestimmt, wenn die Rechenvorrichtung aus einem Bereitschaftsstatus in einen aktiven Status geschaltet wird. Wenn der zweite Status neu aktiv ist, wird eine zuletzt veröffentlichte Ereignisblockobjektkennung, die ein zuletzt veröffentlichtes Ereignisblockobjekt eindeutig identifiziert, bestimmt. Ein nächstes Ereignisblockobjekt wird von einem nichtflüchtigen computerlesbaren Medium ausgewählt, worauf die Rechenvorrichtung zugreifen kann. Das nächste Ereignisblockobjekt weist eine Ereignisblockobjektkennung auf, die größer ist als die bestimmte letzte veröffentlichte Ereignisblockobjektkennung. Das ausgewählte nächste Ereignisblockobjekt wird an einer Ausgangsnachrichtennetzvorrichtung veröffentlicht. Wenn der zweite Status der Rechenvorrichtung nicht neu aktiv ist, wird das empfangene Ereignisblockobjekt an der Ausgangsnachrichtennetzvorrichtung veröffentlicht. Wenn der erste Status der Rechenvorrichtung Bereitschaft ist, wird das empfangene Ereignisblockobjekt im nichtflüchtigen computerlesbaren Medium gespeichert.
  • 11A zeigt ein Blockdiagramm einer als Beispiel dienenden Ausführungsform eines verteilten Verarbeitungssystems 1000, das eine oder mehrere Speichervorrichtungen 1100, mehrere Knotenvorrichtungen 1700 und eine Steuervorrichtung 1500 aufweist. Wie gezeigt ist, können diese Vorrichtungen 1100, 1500 und/oder 1700 Kommunikationen, die sich auf das Speichern und das Abrufen eines Datensatzes 1330 beziehen, über ein Netz 1999 austauschen, einschließlich eines oder mehrerer von Metadaten 1335, Datensatzteilen 1732, Knotenstatus 1530 und/oder Zeigerdaten 1735. Eine oder mehrere der Vorrichtungen 1100, 1500 und/oder 1700 können jedoch andere Daten, die sich gar nicht auf das Speichern und Abrufen des Datensatzes 1330 beziehen, miteinander und/oder mit anderen Vorrichtungen (nicht dargestellt) über das Netz 1999 austauschen. Gemäß verschiedenen Ausführungsformen kann das Netz 1999 ein einzelnes Netz sein, das sich innerhalb eines einzelnen Gebäudes oder eines anderen verhältnismäßig begrenzten Bereichs erstrecken kann, eine Kombination verbundener Netze sein, die sich in einem erheblichen Abstand erstrecken können, und/oder das Internet einschließen. Demgemäß kann das Netz 1999 auf beliebigen von einer Vielzahl (oder Kombination) von Kommunikationstechnologien beruhen, durch welche Kommunikationen ausgeführt werden können, einschließlich und ohne Einschränkung drahtgestützter Technologien, bei denen eine elektrische und/oder optisch leitende Verkabelung verwendet wird, und drahtloser Technologien, bei denen Infrarot-, Hochfrequenz(HF)- oder andere Formen einer drahtlosen Übertragung verwendet werden.
  • Der Datensatz 1330 kann in die Datensatzteile 1732 zerlegbar sein. Verschiedene der Datensatzteile 1732 können durch verschiedene der Knotenvorrichtungen 1700 in der Art der mehreren Knotenvorrichtungen 1700 getrennt zwischengespeichert werden und zumindest teilweise parallel Verarbeitungsaufgaben mit den Datensatzteilen 1732 ausführen. Eine solche zumindest teilweise parallele Ausführung der Verarbeitung von Aufgaben durch die mehreren Knotenvorrichtungen 1700 kann durch die Steuervorrichtung 1500 koordiniert werden. Die Steuervorrichtung 1500 kann Angaben der auszuführenden Verarbeitungsaufgaben und/oder andere relevante Informationen in der Art der Metadaten 1335 zwischen den mehreren Knotenvorrichtungen 1700 verteilen. Die Steuervorrichtung 1500 kann auch Angaben zum Fortschritt bei der getrennten, jedoch zumindest teilweise parallelen Ausführung der Verarbeitungsaufgaben von jeder der Knotenvorrichtungen 1700 empfangen.
  • Bei der Vorbereitung solcher Verarbeitungsaufgaben und/oder zur Unterstützung von diesen kann der Datensatz 1330 für eine längerfristige Speicherung als eine einzige Datendatei 1110 durch die eine oder die mehreren Speichervorrichtungen 1100 gespeichert werden. Wenn der Datensatz 1330 von den mehreren Knotenvorrichtungen 1700 als eine Eingabe für solche Verarbeitungsaufgaben verwendet wird, können die mehreren Knotenvorrichtungen 1700 entsprechende der Datensatzabschnitte 1732 zumindest teilweise parallel von der einen oder den mehreren Speichervorrichtungen 1100 abrufen. Alternativ oder zusätzlich können die mehreren Knotenvorrichtungen 1700, wenn der Datensatz 1330 als eine Ausgabe solcher Verarbeitungsaufgaben erzeugt wird, entsprechende der Datensatzabschnitte 1732 zumindest teilweise parallel in der einen oder den mehreren Speichervorrichtungen 1100 speichern. Solche zumindest teilweise parallelen Austäusche des Datensatzes 1330 zwischen den mehreren Knotenvorrichtungen 1700 und der einen oder den mehreren Speichervorrichtungen 1100 können auch durch die Steuervorrichtung 1500 koordiniert werden. Die Steuervorrichtung 1500 kann zu jeder Knotenvorrichtung 1700 einen oder mehrere Zeiger auf Stellen innerhalb der Datendatei 1110, wo ein oder mehrere entsprechende Datensatzteile 1732 gespeichert sein können und/oder wo ein oder mehrere entsprechende Datensatzteile 1732 abgerufen werden können, verteilen.
  • Gemäß verschiedenen Ausführungsformen kann jede von der einen oder den mehreren Speichervorrichtungen 1100 eine oder mehrere von einer Prozessorkomponente 1150, einem Speicher 1160 und einer Netzschnittstelle 1190 zum Koppeln jeder von der einen oder den mehreren Speichervorrichtungen 1100 mit dem Netz 1999 aufweisen. Der Speicher 1160 kann eine Steuerroutine 1140 und/oder wenigstens einen Teil der Datendatei 1110, worin der Datensatz 1330 gespeichert ist, speichern. Die Steuerroutine 1140 kann eine Sequenz auf der Prozessorkomponente 1150 ausgeführter Befehle zur Implementation von Logik für die Ausführung verschiedener Funktionen aufweisen. Bei der Ausführung der Steuerroutine 1140 kann die Prozessorkomponente 1150 von jeder von der einen oder den mehreren Speichervorrichtungen 1100 die Netzschnittstelle 1190 betätigen, um Datensatzteile 1732 von entsprechenden der Knotenvorrichtungen 1700 zu empfangen, und die empfangenen Datensatzteile 1732 innerhalb der Datendatei 1110 speichern. Alternativ oder zusätzlich kann die Prozessorkomponente 1150 die Datensatzteile 1732 aus der Datendatei 1110 abrufen und die Netzschnittstelle 1190 betätigen, um die abgerufenen Datensatzteile 1732 zu entsprechenden der Knotenvorrichtungen 1700 zu übertragen.
  • Gemäß verschiedenen Ausführungsformen kann jede der mehreren Knotenvorrichtungen 1700 eine oder mehrere von einer Prozessorkomponente 1750, einem Speicher 1760 und einer Netzschnittstelle 1790 zum Koppeln jeder der Knotenvorrichtungen 1700 mit dem Netz 1999 aufweisen. Der Speicher 1760 kann eine Steuerroutine 1740, die Metadaten 1335, einen oder mehrere der Datensatzteile 1732 und/oder die Zeigerdaten 1735 speichern. Die Steuerroutine 1740 kann eine Sequenz auf der Prozessorkomponente 1750 ausgeführter Befehle zur Implementation von Logik für die Ausführung verschiedener Funktionen aufweisen. Bei der Ausführung der Steuerroutine 1740 kann die Prozessorkomponente 1750 von jeder der Knotenvorrichtungen 1700 die Netzschnittstelle 1790 veranlassen, Angaben zu Verarbeitungsaufgaben zur Ausführung an einem oder mehreren der Datensatzteile 1732 zumindest teilweise parallel zu anderen der mehreren Knotenvorrichtungen 1700 und/oder andere relevante Informationen von der Steuervorrichtung 1500 zu empfangen. Alternativ oder zusätzlich kann die Prozessorkomponente 1750 die Netzschnittstelle 1790 veranlassen, einen oder mehrere der Datensatzteile 1732 zu der einen oder den mehreren Speichervorrichtungen 1100 zu übertragen, und/oder einen oder mehrere der Datensatzteile 1732 von der einen oder den mehreren Speichervorrichtungen 1100 zu empfangen, um die Ausführung dieser Verarbeitungsaufgaben zu unterstützen.
  • Gemäß verschiedenen Ausführungsformen kann die Steuervorrichtung 1500 eine oder mehrere von einer Prozessorkomponente 1550, einem Speicher 1560 und einer Netzschnittstelle 1590 zum Koppeln der Steuervorrichtung 1500 mit dem Netz 1999 aufweisen. Der Speicher 1560 kann eine Steuerroutine 1540, die Metadaten 1335, Zuordnungskartendaten 1510 und/oder Knotendaten 1530 speichern. Die Steuerroutine 1540 kann eine Sequenz auf der Prozessorkomponente 1550 ausgeführter Befehle zur Implementation von Logik für die Ausführung verschiedener Funktionen aufweisen. Bei der Ausführung der Steuerroutine 1540 kann die Prozessorkomponente 1550 der Steuervorrichtung 1500 die Netzschnittstelle 1590 veranlassen, Angaben zu Verarbeitungsaufgaben zu jeder der Knotenvorrichtungen 1700 zu übertragen, um einen oder mehrere der Datensatzteile 1732 zumindest teilweise parallel zu anderen der mehreren Knotenvorrichtungen 1700 auszuführen, und/oder andere relevante Informationen zu übertragen. Alternativ oder zusätzlich kann die Prozessorkomponente 1550 die Netzschnittstelle 1590 veranlassen, eine oder mehrere der Metadaten 1335 und der Zuordnungskartendaten 1510 mit wenigstens einer von der einen oder den mehreren Speichervorrichtungen 1100 auszutauschen.
  • 11B zeigt ein Blockdiagramm einer alternativen als Beispiel dienenden Ausführungsform des verteilten Verarbeitungssystems 1000, das dem Beispiel aus 11A im Wesentlichen ähnelt, jedoch eine alternative Ausführungsform einer der Knotenvorrichtungen 1700 aufweist, welche zusätzlich die koordinierenden Funktionen der Steuervorrichtung 1500 an Stelle einer getrennten und abgesetzten Steuervorrichtung 1500 ausführt. Wie dargestellt ist, kann gemäß einigen Ausführungsformen eine solche alternative Ausführungsform der Knotenvorrichtung 1700 zusätzlich eine Steuereinrichtung 1507 aufweisen, die selbst die Prozessorkomponente 1550 und den Speicher 1560 aufweist, die als Komponenten der getrennten Steuervorrichtung 1500 aus 11A zur Ausführung der koordinierenden Funktionen dargestellt waren. Wie ebenso als eine Alternative dargestellt ist, kann gemäß einigen Ausführungsformen die Prozessorkomponente 1750 einer solchen alternativen Ausführungsform der Knotenvorrichtung 1700 durch die Ausführung einer Virtuelle-Maschine-Manager(VMM)-Routine 1745, die innerhalb des Speichers 1760 gespeichert ist, veranlasst werden, virtuelle Maschinen VM 1565 und/oder 1765 zu erzeugen. Innerhalb der VM 1765 kann die Prozessorkomponente 1750 die Steuerroutine 1740 ausführen, um Verarbeitungsaufgaben mit einem oder mehreren Datensatzteilen 1732 zumindest teilweise parallel zu anderen der Knotenvorrichtungen 1700 auszuführen. Alternativ oder zusätzlich kann die Prozessorkomponente 1750 innerhalb der VM 1565 die Steuerroutine 1540 ausführen, um Koordinierungsaufgaben auszuführen, welche, wie vorstehend beschrieben wurde, ansonsten durch die Prozessorkomponente 1550 der Steuervorrichtung 1500 aus 1A und/oder durch die Steuereinrichtung 1507 ausgeführt wurden.
  • Die 12A, 12B und 12C zeigen gemeinsam ein Beispiel der Art, in der der Datensatz 1330 durch die eine oder die mehreren Speichervorrichtungen 1100 innerhalb der Datendatei 1110 gespeichert werden kann. Die Daten des Datensatzes 1330 können beliebige von einer Vielzahl von Datentypen sein (beispielsweise Gesellschaftsstatistikdaten, Geschäftsbetriebsdaten, Rohdaten von einem Experiment, Finanzdaten, Analysedaten einer medizinischen Behandlung usw.), und sie können innerhalb des Datensatzes 1330 in beliebigen von einer Vielzahl von Arten organisiert werden (beispielsweise als Zeilen und Spalten, säulenförmig, als Hyperwürfel, als verknüpfte Liste, Baum usw.), welche unter Verwendung beliebiger von einer Vielzahl von Mechanismen zum Finden eines bestimmten Datenpunkts durchlaufbar gemacht werden können. Der Datensatz 1330 kann die Metadaten 1335 aufweisen, welche eine Beschreibung der Art aufweisen können, in der die Daten des Datensatzes 1330 organisiert sind.
  • Die Größe des Datensatzes 1330 kann ausreichen, damit die Verarbeitung des Datensatzes 1330 unter Verwendung einer einzigen Verarbeitungsvorrichtung als sehr unpraktisch angesehen wird. Tatsächlich ist es möglich, dass sich der Datensatz 1330 auch häufig genug im Laufe der Zeit ändert (beispielsweise stündlich, täglich, wöchentlich usw. aktualisiert wird), so dass die für das Verarbeiten des Datensatzes 1330 unter Verwendung einer einzigen Verarbeitungsvorrichtung benötigte Zeit zu Ergebnissen führen würde, die bereits deaktualisiert wären, bevor diese Verarbeitung abgeschlossen werden könnte. Demgemäß kann es als sehr wünschenswert angesehen werden, den Datensatz 1330 verteilt und zumindest teilweise parallel unter Verwendung einer Gruppe miteinander verbundener Verarbeitungsvorrichtungen (manchmal als ”Grid” bezeichnet) in der Art des verteilten Verarbeitungssystems 1000 aus 11A oder 11B zu verarbeiten. Wie in weiteren Einzelheiten erklärt wird, macht es die Art, in der das Speichern und Abrufen des Datensatzes 330 ausgeführt wird, vorteilhafterweise überflüssig, zwischen den Knotenvorrichtungen 1700 zu koordinieren, und es wird dadurch die zwischen den Knotenvorrichtungen 1700 und der Steuervorrichtung 1500 erforderliche Koordination minimiert. Dies trägt dazu bei, dass es möglich wird, dass die Knotenvorrichtungen 1700 getrennte Datensatzteile 1732 des Datensatzes 1330 zumindest teilweise parallel speichern, abrufen und verarbeiten. Ferner ist der Zusatzaufwand, der für das Speichern der Zuordnungskartendaten 1510 erforderlich ist, wodurch die genaue und flexible Verteilung von Datenblöcken und/oder der Datenunterblöcke, welche die Datensatzteile 1732 repräsentieren, verglichen mit der Gesamtgröße des Datensatzes 1330 gewöhnlich verhältnismäßig klein. Daher kann der Kompromiss beim Speichern der Zuordnungskartendaten 1510 zu einer erheblich verbesserten Abrufleistung und Flexibilität führen, wodurch die verhältnismäßig geringen Kosten in Zusammenhang mit dem Erzeugen und Speichern der Zuordnungskartendaten überwogen werden. Wenngleich der Grad der Parallelität durch Randbedingungen in Bezug auf die Arbeitsbelastung und die Umwelt beeinflusst werden kann, welche bei verschiedenen Rechensystemen üblich sind, skaliert die Parallelität während des Speicherns und Abrufens leichter mit zunehmend größeren Formaten des Datensatzes 1330 und/oder wenn die Anzahl der Knotenvorrichtungen 1700 zunimmt. Die für das Anfordern eines Zeigers von der Steuervorrichtung 1500 benötigte Zeit kann erheblich geringer sein als die Zeit für das Speichern oder Abrufen des einen oder der mehreren Datenblöcke und/oder des einen oder der mehreren Datenunterblöcke.
  • Die Daten innerhalb des Datensatzes 1330 können in einer Weise organisiert werden, welche eine solche parallele verteilte Verarbeitung ermöglicht. Insbesondere kann die Organisation der Daten innerhalb des Datensatzes 1330 die Unterteilung des Datensatzes 1330 in mehrere Datensatzteile 1732 ermöglichen (mit verschiedenen Flexibilitätsgraden, wie erklärt wird), wobei jeder der Datensatzteile 1732 ohne Abhängigkeiten von den Ergebnissen der Verarbeitung jeglicher der anderen Datensatzteile 1732 verarbeitet werden kann. Dadurch können die Datensatzteile 1732 jeweils auf jegliche der Knotenvorrichtungen 1700 verteilbar sein, und zwar unabhängig davon, auf welche der Knotenvorrichtungen 1700 jegliche der anderen Datensatzteile 1732 verteilt werden. Diese Unterteilbarkeit des Datensatzes 1330 macht es unnötig, die Latenzen für die Serialisierung der Verarbeitung von zwei oder mehr der Datensatzteile 1732 zu behandeln, und macht es auch unnötig, die Latenzen der Übertragung einer Ausgabe der Verarbeitung eines Datensatzteils 1732 durch eine Knotenvorrichtung 1700 über das Netz 1999 zu einer anderen Knotenvorrichtung 1700, an der ein anderer Datensatzteil 1732 zu verarbeiten ist, zu behandeln.
  • Diese Unterteilbarkeit des Datensatzes 1330 kann auch den Austausch der Datensatzteile 1732 zwischen den mehreren Knotenvorrichtungen 1700 und der einen oder den mehreren Speichervorrichtungen 1100 entweder zur Speicherung oder zum Abrufen des Datensatzes 1330 in einer verteilten und zumindest teilweise parallelen Weise ermöglichen. Insbesondere kann jeder der Datensatzteile 1732 zwischen einer der Knotenvorrichtungen 1700 und der einen oder den mehreren Speichervorrichtungen 1100 ausgetauscht werden, und zwar unabhängig davon, ob oder wann jegliche der anderen Datensatzteile 1732 ähnlich zwischen einer anderen der Knotenvorrichtungen 1700 und der einen oder den mehreren Speichervorrichtungen 1100 ausgetauscht wurden. Um solche verteilten und zumindest teilweise parallelen Austäusche der Datensatzteile 1732 besser zu ermöglichen, können die Datensatzteile 1732 und die Informationen, die erforderlich sind, um auf die Datensatzteile 1732 zuzugreifen, in einer solchen Weise innerhalb der Datendatei 1110 gespeichert werden, dass Abhängigkeiten zwischen der Steuervorrichtung 1500 und den mehreren Knotenvorrichtungen 1700 bei der Speicherung und beim Abrufen der Datensatzteile 1732 und solcher zugeordneter Informationen minimiert werden.
  • Mit Bezug sowohl auf 12A als auch 12B sei bemerkt, dass die Datendatei 1110 einen Datei-Header 1111 und einen Nutzinhaltsabschnitt 1113 aufweisen kann. Die eine oder die mehreren Speichervorrichtungen 1100 können jegliche von einer Vielzahl von Dateisystemen für das Speichern und Behandeln des Zugriffs auf Dateien innerhalb der einen oder der mehreren Speichervorrichtungen 1100 verwenden, einschließlich eines Netzdateisystems (NFS), einer Blockspeichervorrichtung, jeglicher der verschiedenen Versionen der Dateizuordnungstabelle (FAT), High Sierra Format (ISO-9660), Write Anywhere File Layout (WAFL), XFS usw., jedoch ohne Einschränkung darauf. Der Datei-Header 1111 kann Angaben jeglicher einer Vielzahl von Einzelheiten der Datendatei 1110 aufweisen, die für eines der von der einen oder den mehreren Speichervorrichtungen 1100 verwendeten Dateisysteme relevant sein können und in Übereinstimmung mit den Spezifikationen davon organisiert sein können.
  • Der Nutzinhaltsabschnitt 1113 kann eine einzige zusammenhängende Bytereihe sein, welche den größten Teil der Datendatei 1110 belegt, und abhängig von verschiedenen Aspekten des von der einen oder den mehreren Speichervorrichtungen 1100 verwendeten Dateisystems kann das Anfangsende des Nutzinhaltsabschnitts 1113 zumindest dem Datei-Header 1111 folgen. Am Anfangsende kann eine erste Anzahl von Kilobytes des Nutzinhaltsabschnitts 1113 von der Basiszuordnungskarte 1115 belegt sein, welche zumindest einen Teil der Zuordnungskartendaten 1510 bereitstellt, wodurch die Art beschrieben wird, in der die Datensatzteile 1732 innerhalb des Nutzinhaltsabschnitts 1113 organisiert sind. Einer solchen ersten Anzahl von Kilobytes des Nutzinhaltsabschnitts 1113 kann eine zweite Anzahl von Kilobytes des Nutzinhaltsabschnitts 1113 folgen, welche durch die Metadaten 1335 belegt werden können. Auf diese beiden Anzahlen von Kilobytes kann dann zumindest eine zusammenhängende Reihe der Datenblöcke 1131 folgen.
  • Gemäß einigen Ausführungsformen kann die Art, in der die Daten des Datensatzes 1330 innerhalb des Datensatzes 1330 organisiert sind, verhältnismäßig hoch granular sein, wodurch ein verhältnismäßig hoher Grad an Flexibilität bei der Unterteilung des Datensatzes 1330 in die Datensatzteile 1732 bereitgestellt wird. Wenn die Daten des Datensatzes 1330 beispielsweise in Zeilen und Spalten mit einer verhältnismäßig großen Anzahl von Zeilen organisiert sind, kann auf der Grundlage der Verteilung der Zeilen unter den Datensatzteilen 1732 ein verhältnismäßig hoher Grad an Granularität bereitgestellt werden. Mit einem solchen verhältnismäßig hohen Grad an Flexibilität beim Definieren der Datensatzteile 1732 können die Anzahl und/oder die Größe jedes Datensatzteils 1732 enger mit der Anzahl der Knotenvorrichtungen 1700, die zu der Zeit verfügbar sind, zu der der Datensatz 1330 erzeugt wird, und/oder mit den Ressourcen innerhalb jeder dieser verfügbaren Knotenvorrichtungen 1700 korreliert werden.
  • Gemäß anderen Ausführungsformen können die Daten des Datensatzes 1330 jedoch innerhalb des Datensatzes 1330 in einer Art organisiert werden, die eine verhältnismäßig geringe Granularität aufweist, wodurch ein verhältnismäßig geringer Grad an Flexibilität bei der Unterteilung des Datensatzes 1330 in die Datensatzteile 1732 bereitgestellt wird. Dadurch kann die Anzahl der Datensatzteile 1732, in die der Datensatz 1330 unterteilt werden kann, während noch Abhängigkeiten bei der Verarbeitung dazwischen vermieden werden, verhältnismäßig begrenzt sein, so dass zumindest einige der Datensatzteile 1732 möglicherweise verhältnismäßig groß sein müssen. Eine solche Ausführungsform des Datensatzes 1330 kann als aus partitionierten Daten bestehend beschrieben werden, wobei die verhältnismäßig begrenzten Gelegenheiten für die Unterteilung des Datensatzes 1330 eine verhältnismäßig geringe Anzahl von Partitionen definieren können. Ein Beispiel einer solchen Partitionierung kann eine Ausführungsform des Datensatzes 1330 sein, wobei die Daten so partitioniert sind, dass sie in nicht mehr als fünfzig Datensatzteile 1732 unterteilbar sind, welche jeweils einem der fünfzig Staaten der Vereinigten Staaten entsprechen. Die Eigenschaften der Daten mit jeder dieser Partitionen können derart sein, dass die Daten innerhalb einer der Partitionen ohne Abhängigkeiten von den Daten innerhalb jeglicher der anderen Partitionen verarbeitet werden können. Die Verarbeitung der Daten innerhalb einer jeglichen der Partitionen kann jedoch einen Zugriff auf zumindest einen erheblichen Teil der sich darin befindenden Daten erfordern, so dass die Daten innerhalb jeder der Partitionen nicht über mehr als eine Knotenvorrichtung 1700 verteilt werden können, ohne dass eine verhältnismäßig hohe Wahrscheinlichkeit auftritt, dass dazwischen zeitabhängige Datenaustäusche erforderlich wären.
  • 12A zeigt eine als Beispiel dienende Ausführungsform der Organisation der Daten des Datensatzes 1330 innerhalb der Datendatei 1110, wobei die Daten des Datensatzes 1330 eine verhältnismäßig hohe Granularität aufweisen, so dass die Daten des Datensatzes 1330 als nicht partitionierte Daten angesehen werden. Für eine solche nicht partitionierte Ausführungsform kann jeder der Datenblöcke 1131 in der zusammenhängenden Reihe der Datenblöcke 1131 (einschließlich der dargestellten Datenblöcke 1131a und 1131b), welche zumindest der Basiszuordnungskarte 1115 und den Metadaten 1335 folgt, einem einzigen Datensatzteil 1732 entsprechen, der von einer der Knotenvorrichtungen 1700 verarbeitet werden kann. Wie später in weiteren Einzelheiten erklärt wird, kann jede der Knotenvorrichtungen 1700 unabhängig von den anderen Knotenvorrichtungen 1700 handeln, um einen einzigen Datensatzteil 1732 innerhalb des Nutzinhaltsabschnitts 1113 als einen einzigen entsprechenden Datenblock 1131 (beispielsweise den dargestellten einzelnen Datenblock 1131a) zu speichern oder mehrere Datensatzteile 1732 innerhalb des Nutzinhaltsabschnitts 1113 als mehrere entsprechende Datenblöcke 1131 (beispielsweise die dargestellten mehreren benachbarten Datenblöcke 1131b) zu speichern.
  • Die Steuervorrichtung 1500 kann solche unabhängigen Aktionen durch die Knotenvorrichtungen 1700 koordinieren, indem sie jeder Knotenvorrichtung 1700 wenigstens einen Zeiger bereitstellt, an dem die Knotenvorrichtung 1700 auf diese Weise einen oder mehrere der Datensatzteile 1732 speichern kann. Nach dem Koordinieren des Speicherns aller Datensatzteile 1732, die von den Knotenvorrichtungen 1700 zu speichern sind, durch die Verteilung von Zeigern kann die Steuervorrichtung 1500 zumindest die Basiszuordnungskarte 1115 und/oder die Metadaten 1335 innerhalb des Nutzinhaltsabschnitts 1113 speichern. Wie nachstehend in weiteren Einzelheiten erklärt wird, kann die Steuervorrichtung 1500 Teile des Inhalts der Basiszuordnungskarte 1115 erzeugen, wenn die Steuervorrichtung 1500 Zeiger erzeugt und diese Zeiger den Knotenvorrichtungen 1700 für die Verwendung beim Speichern der Datensatzteile 1732 bereitstellt.
  • Die Basiszuordnungskarte 1115 kann eine zusammenhängende Bytereihe aufweisen. Am Anfangspunkt der Basiszuordnungskarte 1115 kann eine erste Anzahl von Bytes der Basiszuordnungskarte 1115 durch eine Angabe zur Zuordnungskartengröße 1515 belegt sein, wodurch spezifiziert wird, wie viele Bytes, Wörter, Doppelwörter usw. insgesamt verwendet werden, um eine Zuordnungskarte der Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 bereitzustellen. Einer solchen ersten Anzahl von Bytes kann eine zweite Anzahl von Bytes der Basiszuordnungskarte 1115 folgen, welche durch Angaben zu einem oder mehreren Zuordnungskartenparametern 1516 belegt sind, welche eine Angabe einschließen können, dass die Daten des Datensatzes 1330 nicht partitionierte Daten sind. Nach diesen ersten beiden derartigen Anzahlen von Bytes kann dann eine Reihe von Zuordnungskarteneinträgen 1511 folgen (einschließlich der dargestellten Zuordnungskarteneinträge 1511a und 1511b). Die Reihenfolge der Zuordnungskarteneinträge 1511 innerhalb zumindest der Basiszuordnungskarte 1115 kann der Reihenfolge der Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 entsprechen.
  • Für nicht partitionierte Daten innerhalb des Datensatzes 1330 kann es als wahrscheinlich angesehen werden, dass es eine verhältnismäßig hohe Anzahl von Datensatzteilen 1732 und damit eine entsprechend verhältnismäßig hohe Anzahl von Datenblöcken 1131 gibt. Es kann auch als wahrscheinlich angesehen werden, dass es unter den zahlreichen Datenblöcken 1131 zahlreiche Instanzen mehrerer benachbarter Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 gibt, welche eine identische Größe aufweisen. Demgemäß kann in einer Bemühung, solche wahrscheinlichen Eigenschaften der Datenblöcke 1131 auszunutzen, um den von einer Zuordnungskarte der Datenblöcke 1131 verbrauchten Gesamtspeicherplatz zu verringern, jeder Zuordnungskarteneintrag 1511 eine Angabe einer Datenblockgröße, welche eine Größe in Bytes, Wörtern, Doppelwörtern usw. spezifiziert, und einer Datenblockanzahl, welche die Anzahl benachbarter Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113, welche die spezifizierte Datenblockgröße aufweisen, spezifiziert, aufweisen. Demgemäß kann der dargestellte Zuordnungskarteneintrag 1511a, der dem Datenblock 1131a entspricht, eine Datenblockanzahl von 1 und die Größe lediglich des Datenblocks 1131a spezifizieren, während der dargestellte Zuordnungskarteneintrag 1511b, der dem Trio benachbarter Datenblöcke 1131b entspricht, eine Datenblockanzahl von 3 und eine einzige identische Größe aller drei Datenblöcke 1131b spezifizieren kann.
  • 12B zeigt eine als Beispiel dienende Ausführungsform der Organisation der Daten des Datensatzes 1330 innerhalb der Datendatei 1110, wobei die Daten des Datensatzes 1330 eine verhältnismäßig geringe Granularität aufweisen, so dass die Daten des Datensatzes 1330 als in mehrere Partitionen 1333 unterteilte partitionierte Daten angesehen werden. Wie zuvor erörtert wurde, können die Daten des Datensatzes 1330 innerhalb jeder Partition 1333 durch eine einzige der Knotenvorrichtungen 1700 verarbeitet werden müssen, so dass die Daten des Datensatzes 1330 innerhalb jeder Partition 1333 nicht zwischen mehreren der Knotenvorrichtungen 1700 verteilt werden können. Es kann auch als wahrscheinlich angesehen werden, dass es breite Variationen in der Größe zwischen den Partitionen 1333 gibt (beispielsweise weil die Daten Strings einer weit variierenden Zeichenlänge, verknüpfte Listen weit variierender Anzahlen von Einträgen, Baumdatenstrukturen mit weit variierenden Anzahlen von Zweigen usw. aufweisen). Wenngleich demgemäß eine der Knotenvorrichtungen 1700 veranlasst werden kann, die Daten innerhalb einer einzigen großen Partition 1333 zu verarbeiten, kann eine andere der Knotenvorrichtungen 1700 veranlasst werden, die Daten innerhalb mehrerer erheblich kleinerer Partitionen 1333 zu verarbeiten. Angesichts dieser Differenzen zwischen partitionierten Daten und nicht partitionierten Daten kann die Art, in der eine Ausführungsform des Datensatzes 1330, die aus partitionierten Daten besteht, innerhalb der Datendatei 1110 gespeichert werden kann, von der Art abweichen, in der eine Ausführungsform des Datensatzes 1330, die aus nicht partitionierten Daten besteht, gespeichert werden kann. Genauer gesagt können für partitionierte Daten die Anzahl und/oder die Größe jedes Datensatzteils 1732 enger mit der Anzahl und/oder den Größen der Partitionen 1333 korreliert sein.
  • Demgemäß kann für eine solche partitionierte Ausführungsform jeder der Datenblöcke 1131 in der zusammenhängenden Reihe der Datenblöcke 1131, welche zumindest der Basiszuordnungskarte 1115 und den Metadaten 1335 folgt, einen oder mehrere Datenunterblöcke 1133 aufweisen und kann jeder Datenunterblock 1133 einem einzigen Datensatzteil 1732 entsprechen. Wie in weiteren Einzelheiten erklärt wird, kann jede der Knotenvorrichtungen 1700 unabhängig von den anderen Knotenvorrichtungen 1700 das Speichern eines einzigen Datensatzteils 1732 innerhalb des Nutzinhaltsabschnitts 1113 als ein einziger entsprechender Datenunterblock 1133 innerhalb eines einzelnen Datenblocks 1131 oder das Speichern mehrerer Datensatzteile 1732 innerhalb des Nutzinhaltsabschnitts 1113 als mehrere entsprechende Datenunterblöcke 1133 innerhalb eines einzigen Datenblocks 1131 bewirken. Wiederum kann die Steuervorrichtung 1500 solche unabhängigen Aktionen durch die Knotenvorrichtungen 1700 koordinieren, indem jede Knotenvorrichtung 1700 mit wenigstens einem Zeiger versehen wird, an dem die Knotenvorrichtung 1700 einen oder mehrere der Datensatzteile 1732 als einen oder mehrere Datenunterblöcke 1133 innerhalb eines einzigen Datenblocks 1131 speichern kann. Nach dem Koordinieren des Speicherns aller Datensatzteile 1732, die von den Knotenvorrichtungen 1700 zu speichern sind, durch die Verteilung von Zeigern kann die Steuervorrichtung 1500 zumindest die Basiszuordnungskarte 1115 und/oder die Metadaten 1335 innerhalb des Nutzinhaltsabschnitts 1113 speichern. Die Steuervorrichtung 1500 kann auch einen Daten-Header 1112 speichern, der Angaben über die Anzahl der Knotenvorrichtungen 1700 bereitstellt, die am Speichern des Datensatzes 1330 innerhalb des Nutzinhaltsabschnitts 1113 beteiligt sind. Wie dargestellt ist, kann ein solcher Daten-Header 1112 gemäß verschiedenen Ausführungsformen Teil des Datei-Headers 1111 oder Teil des Nutzinhaltsabschnitts 1113 sein (beispielsweise Teil der Basiszuordnungskarte 1115 oder Teil der Metadaten 1335).
  • Diese Unterschiede zwischen der Art, in der eine Ausführungsform des Datensatzes 1330, der aus partitionierten Daten besteht, gespeichert wird, und der Art, in der eine Ausführungsform des Datensatzes 1330, der aus nicht partitionierten Daten besteht, gespeichert wird, kann mit entsprechenden Unterschieden zwischen den Inhalten der Basiszuordnungskarte 1115 einhergehen. Insbesondere kann unter den Angaben eines oder mehrerer Zuordnungskartenparameter 1516 eine Angabe sein, dass die Daten des Datensatzes 1330 partitionierte Daten sind. Wiederum kann nach den beiden Anzahlen von Bytes, bei denen die Basiszuordnungskarte 1115 und die Metadaten 1335 gespeichert sind, eine Reihe von Zuordnungskarteneinträgen 1511 auftreten, die der Reihenfolge der Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 entsprechen kann. Jeder Zuordnungskarteneintrag 1511 kann jedoch ausschließlich einem einzigen Datenblock 1131 entsprechen und eine Datenunterblockanzahl aufweisen, welche die Anzahl eines oder mehrerer benachbarter Datenunterblöcke 1133 spezifiziert, die innerhalb des einzigen entsprechenden Datenblocks 1131 enthalten sind. Nach der Unterblockanzahl innerhalb jedes Zuordnungskarteneintrags 1511 kann eine Reihe eines oder mehrerer Zuordnungskartenuntereinträge 1513 auftreten, die jeweils einem der Datenunterblöcke 1133 innerhalb des entsprechenden Datenblocks 1131 entsprechen, und die Reihenfolge dieser Zuordnungskartenuntereinträge 1513 kann der Reihenfolge der Datenunterblöcke 1133 innerhalb des entsprechenden Datenblocks 1131 entsprechen. Jeder solche Zuordnungskartenuntereintrag 1513 kann eine Angabe zur Größe des entsprechenden Datenunterblocks 1133 und eine gehashte Kennung aufweisen, welche die Partition 1333 angibt, zu der die Daten innerhalb des entsprechenden Datenunterblocks 1133 gehören.
  • Bei einer solchen partitionierten Ausführungsform kann jeder Partition 1333 ein eindeutiges Etikett gegeben werden, das eine Form einer eindeutigen Identifikation bereitstellt. Ebenso wie die Daten innerhalb des Datensatzes 1330 jegliche von einer Vielzahl von Datentypen sein können, können die jeder Partition 1333 gegebenen Etiketten jedoch jegliche von einer Vielzahl von Formen annehmen, einschließlich und ohne Einschränkung darauf numerischer Werte und/oder alphanumerischen Texts mit einer beliebigen Länge. Die gehashten Kennungen können normierte Versionen dieser Etiketten sein und gemäß einigen Ausführungsformen durch Bilden eines Hash-Werts der Etiketten und/oder durch Ausführen jeglicher von einer Vielzahl anderer Funktionen an diesen Etiketten gemäß anderen Ausführungsformen erzeugt werden.
  • Wiederum mit Bezug auf beide 12A und 12B sei bemerkt, dass gemäß verschiedenen Ausführungsformen die Anzahl der Datenblöcke 1131 und/oder der Datenunterblöcke 1133 verhältnismäßig groß werden kann, so dass ein verhältnismäßig großer Speicherplatz innerhalb des Nutzinhaltsabschnitts 1113 zugeordnet werden müssen kann, um eine entsprechend große Anzahl von Zuordnungskarteneinträgen 1511 innerhalb der Basiszuordnungskarte 1115 aufzunehmen. Gemäß einigen Ausführungsformen kann zusätzlicher Platz für die Speicherung von Zuordnungskarteneinträgen 1511 über den hinaus, der innerhalb der Basiszuordnungskarte 1115 bereitgestellt werden kann, an einer oder mehreren anderen Stellen innerhalb des Nutzinhaltsabschnitts 1113 bereitgestellt werden.
  • Insbesondere und mit Bezug auf 12C sei bemerkt, dass eine oder mehrere Zuordnungskartenerweiterungen 1117 zwischen der Basiszuordnungskarte 1115 und den Metadaten 1335 angeordnet werden kann und/oder zwischen den Datenblöcken 1131 innerhalb des Nutzinhaltsabschnitts 1113 verteilt werden kann. Wie gezeigt können die Zuordnungskarteneinträge 1511, die andernfalls innerhalb der Basiszuordnungskarte 1115 gespeichert werden können, stattdessen innerhalb der ersten der Zuordnungskartenerweiterungen 1117 gespeichert werden, um innerhalb des Nutzinhaltsabschnitts 1113 gespeichert zu werden, welcher der Basiszuordnungskarte 1115 folgt. Dies kann geschehen, um in der Basiszuordnungskarte 1115 Platz für eine Reihe von Erweiterungszeigern 1517 zu schaffen, die jeweils eine Angabe zum Ort einer der Zuordnungskartenerweiterungen 1117 innerhalb des Nutzinhaltsabschnitts bereitstellen, und die Reihenfolge der Erweiterungszeiger 1517 innerhalb der Basiszuordnungskarte 1115 kann mit der Reihenfolge der Zuordnungskartenerweiterungen 1117 innerhalb des Nutzinhaltsabschnitts 1113 übereinstimmen.
  • Gemäß einigen Ausführungsformen kann jede Zuordnungskartenerweiterung 1117 innerhalb des Nutzinhaltsabschnitts 1113 an einer Stelle gespeichert werden müssen, die vor den Stellen aller Datenblöcke 1131 liegt, für die die Zuordnungskartenerweiterung 1117 Zuordnungskarteneinträge 1511 aufweist, um ein wirksameres Abrufen eines oder mehrerer dieser Datenblöcke 1131 aus dem Nutzinhaltsabschnitt 1113 zu ermöglichen. Gemäß einigen Ausführungsformen können die Basiszuordnungskarte 1115 und jede der Zuordnungskartenerweiterungen 1117 eine gemeinsame Größe aufweisen. Gemäß anderen Ausführungsformen kann die erste Zuordnungskartenerweiterung 1117, die der Basiszuordnungskarte 1115 innerhalb des Nutzinhaltsabschnitts 1113 folgt, eine Größe aufweisen, die doppelt so groß ist wie die Größe der Basiszuordnungskarte 1115, und kann jede zusätzliche Zuordnungskartenerweiterung 1117 eine Größe aufweisen, die doppelt so groß ist wie die vorhergehende Zuordnungskartenerweiterung 1117 innerhalb des Nutzinhaltsabschnitts 1113. Dadurch kann gemäß Ausführungsformen, bei denen der Nutzinhaltsabschnitt 1113 mehrere Zuordnungskartenerweiterungen 1117 aufweist, die Größe der Zuordnungskartenerweiterungen 1117 von der ersten bis zur letzten exponential anwachsen. Wo ein solches vorhersagbares Muster der Erhöhung der Größe in den Zuordnungskartenerweiterungen 1117 verwendet wird, kann es nicht notwendig sein, eine Angabe zu den Größen der jeweiligen Zuordnungskartenerweiterungen 1117 innerhalb der Basiszuordnungskarte 1115 zu speichern.
  • Die 13A–E zeigen gemeinsam ein Beispiel des Speicherns einer Ausführungsform des Datensatzes 1330, der aus nicht partitionierten Daten gemäß Ausführungsformen des verteilten Verarbeitungssystems 1000 aus 11A oder 11B besteht, in weiteren Einzelheiten. Insbesondere zeigen die 13A und 13B gemeinsam Aspekte des Speicherns eines einzigen Datensatzteils 1732 durch eine einzige Knotenvorrichtung 1700. Die 13C und 13D zeigen gemeinsam Aspekte des Speicherns mehrerer Datensatzteile 1732 durch eine einzige Knotenvorrichtung 1700. 13E zeigt Aspekte des Speicherns der Zuordnungskartendaten 1510 durch die Steuervorrichtung 1500 (oder die Steuereinrichtung 1500).
  • Wie Fachleute verstehen werden, werden die Steuerroutinen 1540 und 1740, einschließlich der Komponenten, aus denen sie jeweils zusammengesetzt sind, so ausgewählt, dass sie auf jedem beliebigen Typ eines Prozessors oder von Prozessoren ausgeführt werden können, die ausgewählt werden, um anwendbare Prozessorkomponenten 1550 und/oder 1750 zu implementieren. Gemäß verschiedenen Ausführungsformen kann jede dieser Routinen eines oder mehrere von einem Betriebssystem, von Vorrichtungstreibern und/oder Anwendungsniveauroutinen (beispielsweise so genannte ”Software-Suites”, die auf Plattenmedien bereitgestellt werden, ”Applets”, die von einem fernen Server erhalten werden usw.) aufweisen. Wenn ein Betriebssystem aufgenommen ist, kann das Betriebssystem jegliches von einer Vielzahl verfügbarer Betriebssysteme sein, die für die Prozessorkomponenten 1550 und/oder 1750 geeignet sind. Wenn ein oder mehrere Vorrichtungstreiber aufgenommen sind, können diese Vorrichtungstreiber Unterstützung für jegliche von einer Vielzahl anderer Komponenten, ob Hardware- oder Softwarekomponenten, der Knotenvorrichtungen 1700 und/oder der Steuervorrichtung 1500 (oder der Steuereinrichtung 1500, die in eine der Knotenvorrichtungen 1700 aufgenommen ist) bereitstellen.
  • Mit Bezug auf 13A sei bemerkt, dass die Steuerroutine 1740 wie dargestellt eine Aufgabenkomponente 1745 zum Ausführen von Verarbeitungsaufgaben, wie durch die Steuervorrichtung 1500 vorgeschrieben, und eine permanente Komponente 1741 zum Bewirken eines Speicherns eines Datensatzteils 1732, der durch Ausführen einer Aufgabe durch die Aufgabenkomponente 1745 erzeugt worden sein kann, aufweisen kann. Entsprechend kann die Steuerroutine 1540 eine koordinierende Komponente 1545 zum Koordinieren der wenigstens teilweise parallelen verteilten Ausführungen verschiedener Aufgaben zwischen mehreren der Knotenvorrichtungen 1700 und eine zuordnende Komponente 1541 zum Koordinieren der zumindest teilweise parallelen und verteilten Ausführungen des Speicherns und Abrufens von Datensatzteilen 1732 durch die mehreren Knotenvorrichtungen 1700 aufweisen.
  • Gemäß einigen Ausführungsformen kann die Aufgabenkomponente 1745 nach Abschluss einer Verarbeitungsaufgabe, die einen Datensatzteil 1732 des Datensatzes 1330 betrifft, die Netzschnittstelle 1790 der Knotenvorrichtung 1700 veranlassen, eine Angabe über einen solchen Abschluss über das Netz 1999 zur Steuervorrichtung 1500 zu übertragen. Gemäß Ausführungsformen, bei denen die abgeschlossene Aufgabe die Erzeugung des Datensatzteils 1732 aufweist, kann die Aufgabenkomponente 1745 zumindest einen Teil der Metadaten 1335, der Aspekte der Organisation der Daten innerhalb des Datensatzteils 1732 beschreibt, über das Netz 1999 zur Steuervorrichtung 1500 übertragen. Zusätzlich kann die permanente Komponente 1741 ansprechend auf einen solchen Abschluss der Verarbeitungsaufgabe durch die Aufgabenkomponente 1745 die Netzschnittstelle 1790 veranlassen, eine Anforderung eines Zeigers auf eine Stelle innerhalb des Nutzinhaltsabschnitts 1113 der Datendatei 1110 (siehe 12A), wo der Datensatzteil 1732 zu speichern ist, zur Steuervorrichtung 1500 zu übertragen. Dabei kann die permanente Komponente 1741 eine Angabe zur Größe des Datensatzteils 1732 zusammen mit der Anforderung, der Steuervorrichtung 1500 eine Angabe bereitzustellen, wie viel Speicherplatz innerhalb des Nutzinhaltsabschnitts 1113 erforderlich ist, um den Datensatzteil 1732 als ein Datenblock 1131 zu speichern, übertragen.
  • Innerhalb der Steuervorrichtung 1500 kann die koordinierende Komponente 1545 die Netzschnittstelle 1590 veranlassen, wiederholt auf empfangene Angaben zum Status von Knotenvorrichtungen 1700 zu überwachen, und sie kann Angaben zum aktuellen Status jeder Knotenvorrichtung 1700 als Teil der Knotendaten 1530 vorhalten. Ansprechend auf den Empfang der Angabe zum Abschluss der Verarbeitungsaufgabe in Bezug auf den Datensatzteil 1732 von der Knotenvorrichtung 1700, kann die koordinierende Komponente 1545 eine Angabe zum aktuellen Status der Knotenvorrichtung 1700 innerhalb der Knotendaten 1530 aktualisieren, um diesen Abschluss widerzuspiegeln. Zusätzlich kann die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen, wiederholt auf Anforderungen von Zeigern zu überwachen. Ansprechend auf den Empfang der Anforderung eines Zeigers von der Knotenvorrichtung 1700 für die Verwendung beim Speichern des Datensatzteils 1732, kann die zuordnende Komponente 1541 zuvor innerhalb der Zuordnungskartendaten 1510 gespeicherte Angaben zu Teilen des Nutzinhaltsabschnitts 1113, die bereits zugewiesen wurden, verwenden, um eine Stelle innerhalb des Nutzinhaltsabschnitts 1113 zu identifizieren, an welcher der Datensatzteil 1732 gespeichert werden kann. Die zuordnende Komponente 1541 kann dann die Netzschnittstelle 1590 veranlassen, einen Zeiger auf diese identifizierte Stelle über das Netz 1999 zur Knotenvorrichtung 1700 zurückzusenden. Die zuordnende Komponente 1541 kann dann auch die Zuordnungskartendaten 1510 mit einer Angabe darüber aktualisieren, wo der Datensatzteil 1732 innerhalb des Nutzinhaltsabschnitts 1113 zu speichern ist, um die anschließende Identifikation einer anderen Stelle innerhalb des Nutzinhaltsabschnitts 1113 zu ermöglichen, an der ein anderer Datensatzteil 1732 gespeichert werden kann und wofür ein anderer Zeiger ansprechend auf eine andere Anforderung von einer anderen Knotenvorrichtung 1700 bereitgestellt werden kann.
  • Ansprechend auf den Empfang des Zeigers, der von der Steuervorrichtung 1500 ansprechend auf die zuvor übertragene Anforderung eines Zeigers übertragen wurde, kann die permanente Komponente 1741 eine Angabe zum empfangenen Zeiger innerhalb der Zeigerdaten 1735 speichern. Mit Bezug auf 13B sei bemerkt, dass die permanente Komponente 1741 wie dargestellt dann die Netzschnittstelle 1790 veranlassen kann, den Datensatzteil 1732 zu einer oder zu den mehreren Speichervorrichtungen 1100 zu übertragen, und zwar zusammen mit einem Befehl an die eine oder die mehreren Speichervorrichtungen 1000, den Datensatzteil 1732 als ein Datenblock 1131 an der Stelle innerhalb des Nutzinhaltsabschnitts 1113 zu speichern, die durch den Zeiger spezifiziert ist. Es sei bemerkt, dass, wenngleich 13B ein Beispiel der Knotenvorrichtung 1700 zeigt, welche den einzelnen Datensatzteil 1732 nicht partitionierter Daten als einen einzelnen Datenblock 1131 speichert, auch andere Ausführungsformen möglich sind, bei denen die Knotenvorrichtung 1700 mehrere Datensatzteile 1732 nicht partitionierter Daten speichern kann.
  • Mit Bezug auf 13C sei bemerkt, dass, wie dargestellt, Ausführungsformen möglich sind, bei denen wenigstens eine von mehreren Knotenvorrichtungen 1700 (beispielsweise die dargestellte Knotenvorrichtung 1700y) einen einzigen Datensatzteil 1732 einer Ausführungsform des aus nicht partitionierten Daten bestehenden Datensatzes 1330 als einzelnen Datenblock 1131 speichert, wenngleich wenigstens eine andere der mehreren Knotenvorrichtungen 1700 (beispielsweise die dargestellten Knotenvorrichtungen 1700x und 1700z) mehrere Datensatzteile 1732 davon als entsprechende mehrere Datenblöcke 1131 speichert. In 13C ist auch ein Beispiel davon dargestellt, wie der Zeitablauf der Übertragung von Anforderungen zur Steuervorrichtung 1500 für Zeiger zu einer Verteilung von Datenblöcken 1131 von verschiedenen Knotenvorrichtungen 1700 innerhalb des Nutzinhaltsabschnitts 1113 führen kann. Insbesondere kann die dargestellte Knotenvorrichtung 1700x nach Abschluss der Ausführung einer oder mehrerer Verarbeitungsaufgaben in Bezug auf die Datensatzteile 1732a und 1732b ein Paar von Zeigern auf ein Paar benachbarter Stellen innerhalb des Nutzinhaltsabschnitts 1113 angefordert haben, wo die Datensatzteile 1732a und 1732b als benachbarte Datenblöcke 1131a und 1131b zu speichern sind. Alternativ kann die Knotenvorrichtung 1700x nach Abschluss dieser Ausführung einen einzigen Zeiger auf eine einzige Stelle innerhalb des Nutzinhaltsabschnitts 1113 angefordert haben, die groß genug ist, um beide Datensatzteile 1732a und 1732b als die benachbarten Datenblöcke 1131a und 1131b zu speichern.
  • Dagegen kann die dargestellte Knotenvorrichtung 1700z nach Abschluss der Ausführung einer oder mehrerer Verarbeitungsaufgaben in Bezug auf den Datensatzteil 1732d und vor Abschluss derselben einen oder mehreren Verarbeitungsaufgaben in Bezug auf den Datensatzteil 1732e einen einzigen Zeiger auf eine Stelle innerhalb des Nutzinhaltsabschnitts 1113 angefordert haben, wo der Datensatzteil 1732d als Datenblock 1131d zu speichern ist. Dann kann die dargestellte Knotenvorrichtung 1700y, bevor die Knotenvorrichtung 1700z in der Lage ist, eine solche Verarbeitung in Bezug auf den Datensatzteil 1732e abzuschließen und/oder einen anderen einzelnen Zeiger auf eine andere einzelne Stelle innerhalb des Nutzinhaltsabschnitts 1113 anzufordern, wo der Datensatzteil 1732e als der Datenblock 1131e zu speichern ist, diese Verarbeitung des Datensatzteils 1732c abschließen und einen Zeiger auf eine Stelle innerhalb des Nutzinhaltsabschnitts 1113 anfordern, wo der Datensatzteil 1732c als der Datenblock 1131c zu speichern ist. Dadurch kann der Knotenvorrichtung 1700y ein Zeiger zur Verwendung beim Speichern des Datensatzteils 1732c bereitgestellt werden, bevor der Knotenvorrichtung 1700z ein Zeiger zur Verwendung beim Speichern des Datensatzteils 1732e bereitgestellt wird. Dies kann dazu führen, dass der Datenblock 1131c an einer Stelle innerhalb des Nutzinhaltsabschnitts 1113 gespeichert wird, die zwischen den Stellen angeordnet ist, an denen die Datenblöcke 1131d und 1131e gespeichert werden.
  • Es sei bemerkt, dass der Zeitablauf, mit dem Anforderungen von Zeigern an der Steuervorrichtung 1500 empfangen werden und/oder mit dem die Steuervorrichtung 1500 die angeforderten Zeiger zu jenen der Knotenvorrichtungen 1700 zurück überträgt, die sie angefordert haben, nicht notwendigerweise den Zeitablauf steuert, mit dem entsprechende Datensatzteile 1732 innerhalb des Nutzinhaltsabschnitts 1113 gespeichert werden. Insbesondere können jegliche von einer Vielzahl von Faktoren bewirken, dass eine Knotenvorrichtung 1700 einen empfangenen Zeiger an einer Stelle innerhalb des Nutzinhaltsabschnitts 1113 schneller verwendet als eine andere Knotenvorrichtung 1700. Demgemäß kann zumindest damit begonnen werden, einen Datensatzteil 1732, für den ein Zeiger später empfangen wurde, zu speichern, bevor ein anderer Datensatzteil 1732 gespeichert wird, für den ein Zeiger früher empfangen wurde.
  • Mit Bezug auf 13D sei bemerkt, dass eine einzelne Knotenvorrichtung 1700 die dargestellten mehreren Datensatzteile 1732a–d als Ergebnis der Ausführung mehrerer Instanzen einer Verarbeitungsaufgabe zumindest teilweise parallel innerhalb der einzelnen Knotenvorrichtung 1700 ausgeben kann, wobei jede Instanz einen der mehreren Datensatzteile 1732a–d erzeugt. Insbesondere kann, wie dargestellt, jede von mehreren Instanzen der Aufgabenkomponente 1745a–d in einem getrennten Ausführungsthread durch die Prozessorkomponente 1750 der einzelnen Knotenvorrichtung 1700 ausgeführt werden und/oder kann die Prozessorkomponente 1750 mehrere Kerne 1755a–d aufweisen, die jeweils in der Lage sind, eine der Instanzen der Aufgabenkomponente 1745a–d unabhängig von den anderen auszuführen. Demgemäß kann gemäß solchen Ausführungsformen die einzelne der Knotenvorrichtungen 1700 intern bei der Erzeugung der mehreren Datensatzteile 1732a–d ähnlich funktionieren wie mehrere der Knotenvorrichtungen 1700.
  • Gemäß einigen solchen Ausführungsformen können die mehreren Instanzen der Aufgabenkomponente 1745a–d in der Lage sein, sich in dem Maße zu koordinieren, dass die permanente Komponente 1741 veranlasst wird, das, was andernfalls mehrere getrennte Anforderungen von mehreren getrennten Zeigern wären, zu einer einzigen Anforderung eines einzigen Zeigers für alle der mehreren Datensatzteile 1732a–d zu kombinieren. Die permanente Komponente 1741 kann dann die Netzschnittstelle 1790 veranlassen, eine solche einzelne Anforderung eines einzigen Zeigers zur Steuervorrichtung 1500 zu übertragen, der beim Speichern aller der mehreren Datensatzteile 1732a–d als benachbart angeordnete Datenblöcke 1131a–d innerhalb des Nutzinhaltsabschnitts 1113 zu verwenden ist. Diese Kombination zu einer einzigen Anforderung, wobei dann veranlasst wird, dass die mehreren Datensatzteile 1732a–d als ein einziger Datenblock 1131 gespeichert werden, kann als vorteilhaft angesehen werden, weil dadurch erlaubt wird, dass die eine oder die mehreren Speichervorrichtungen 1100 eine nahezu optimale Organisation des Speicherns dieses sich ergebenden Datenblocks 1131 zwischen der einen oder den mehreren Speichervorrichtungen 1100 auf der Grundlage der Konfiguration von Speicherkomponenten darin festlegen, einschließlich einer nahezu optimalen Aufteilung dieses sich ergebenden Datenblocks 1131 zwischen mehr als einer Speicherkomponente, jedoch ohne Einschränkung darauf. Die Tatsache, dass die mehreren Datensatzteile 1732a–d auch als ein einziger Datenblock 1131 von der dargestellten Knotenvorrichtung 1700 übertragen werden, kann es auch ermöglichen, dass ein gewisser Optimierungsgrad bei der Übertragung zwischen der dargestellten Knotenvorrichtung 1700 und der einen oder den mehreren Speichervorrichtungen 1100 erreicht wird, wodurch mögliche Probleme eines Konflikts zwischen den Knotenvorrichtungen 1700 adressiert werden, weil sie jeweils zumindest teilweise parallel wirken, um einen oder mehrere Datenblöcke 1131 zu speichern. Gemäß einigen solchen Ausführungsformen kann die Anforderung nur eine einzige Größe spezifizieren, welche die Summe der Größen aller Datensatzteile 1732a–d ist, während gemäß anderen solchen Ausführungsformen die Anforderung die Größen getrennt spezifizieren kann oder alternativ Spezifikationen einer getrennten Größe für jeden Datensatzteil 1732a–d aufweisen kann. Gemäß anderen Ausführungsformen können die mehreren Instanzen der Aufgabenkomponente 1745a–d jedoch nicht zu einer solchen Koordination in der Lage sein (oder einfach nicht mit einer solchen Architektur versehen worden sein, um eine solche Koordination auszuführen), so dass jede von ihnen die permanente Komponente 1741 veranlasst, eine getrennte Anforderung für einen getrennten Zeiger zur Verwendung beim getrennten Speichern jedes der mehreren Datensatzteile 1732a–d zu übertragen. Wie mit Bezug auf 3C erörtert wurde, kann die Verwendung solcher getrennter Anforderungen von Zeigern dazu führen, dass die mehreren Datensatzteile 1732a–d nicht aneinandergrenzend innerhalb des Nutzinhaltsabschnitts 1113 gespeichert werden.
  • Mit Bezug auf 13E sei bemerkt, dass nach der Bereitstellung von Zeigern für das Speichern aller Datensatzteile 1732 der nicht partitionierten Ausführungsform des Datensatzes 1330 die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen kann, die Zuordnungskartendaten 1510 zur einen oder zu den mehreren Speichervorrichtungen 1100 zu übertragen, um sie zumindest als die Basiszuordnungskarte 1115 innerhalb des Nutzinhaltsabschnitts 1113 zu speichern. Wie zuvor mit Bezug auf 12C erörtert wurde, können die Zuordnungskartendaten 1510, wenn der für ihre Speicherung innerhalb des Nutzinhaltabschnitts 1113 erforderliche Speicherplatz verhältnismäßig groß wird, alternativ als eine Kombination der Basiszuordnungskarte 1115 und einer oder mehrerer Zuordnungskartenerweiterungen 1117 gespeichert werden. Zusätzlich zum Speichern der Zuordnungskartendaten 1510 zumindest als die Basiszuordnungskarte 1115 kann die zuordnende Komponente 1541 auch die Netzschnittstelle 1590 veranlassen, die Metadaten 1335 zur Speicherung innerhalb des Nutzinhaltsabschnitts 1113 zur einen oder zu den mehreren Speichervorrichtungen 1100 zu übertragen.
  • Gemäß einigen Ausführungsformen kann die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen, wiederholt auf Angaben von jeder Knotenvorrichtung 1700 zu überwachen, dass keine Zeiger mehr von der Steuervorrichtung 1500 angefordert werden müssen. Gemäß solchen Ausführungsformen kann die zuordnende Komponente 1541 das Speichern zumindest der Zuordnungskartendaten 1510 verzögern, bis Angaben von allen der mehreren Knotenvorrichtungen 1700 empfangen wurden, die an der Verarbeitung der nicht partitionierten Ausführungsform des Datensatzes 1330 beteiligt sind, dass keine weiteren Zeiger mehr angefordert werden. Gemäß Ausführungsformen, bei denen jede der Knotenvorrichtungen 1700 nur einen einzigen Zeiger für alle Datensatzteile 1732, die von dieser Knotenvorrichtung 1700 zu speichern sind, anfordern darf, kann die Steuervorrichtung 1500 jedoch auf der Grundlage davon, ob Anforderungen von Zeigern von allen Knotenvorrichtungen 1700 empfangen wurden, die an der Verarbeitung des Datensatzes 1330 beteiligt sind, feststellen, ob es weitere Datensatzteile 1732 gibt, für die noch Zeiger angefordert werden müssen. Dementsprechend können gemäß solchen Ausführungsformen Informationsaustäusche zwischen der Steuervorrichtung 1500 und den Knotenvorrichtungen 1700 über das Netz 1999 für die Zwecke des Koordinierens zumindest des Speicherns des Datensatzes 1330 vorteilhaft weiter minimiert werden, indem Austäusche expliziter Angaben überflüssig gemacht werden, ob es weitere Datensatzteile 1732 gibt, für die noch Zeiger anzufordern sind.
  • Die 14A–E zeigen gemeinsam ein Beispiel des Abrufens einer Ausführungsform des aus nicht partitionierten Daten bestehenden Datensatzes 1330 gemäß Ausführungsformen des verteilten Verarbeitungssystems 1000 aus 11A oder 11B in weiteren Einzelheiten. Insbesondere zeigen die 14A und 14B gemeinsam Aspekte des Sammelns von Informationen, welche die Steuervorrichtung 1500 benötigt, um eine Verteilung von Datensatzteilen 1732 zwischen verfügbaren der Knotenvorrichtungen 1700 zu bestimmen. 14C zeigt Aspekte der Übertragung der Zeiger zu verfügbaren der Knotenvorrichtungen 1700. 14D zeigt Aspekte des Abrufens eines oder mehrerer Datensatzteile 1732 durch eine einzige Knotenvorrichtung 1700. 145 zeigt Aspekte eines Ansatzes zum Bewirken einer verhältnismäßig ausgeglichenen Verteilung der Datensatzteile 1732 zwischen verfügbaren der Knotenvorrichtungen 1700.
  • Mit Bezug auf 14A sei bemerkt, dass innerhalb jeder Knotenvorrichtung 1700 von mehreren Knotenvorrichtungen 1700 die Aufgabenkomponente 1745 die Netzschnittstelle 1790 veranlassen kann, wiederholt Angaben zum aktuellen Status der Knotenvorrichtung 1700 über das Netz 1999 zur Steuervorrichtung 1500 zu übertragen. Diese wiederholten Übertragungen können eine Angabe über die Verfügbarkeit der Knotenvorrichtung 1700 für die Ausführung von Aufgaben an einem oder mehreren Teilen eines Datensatzes übermitteln.
  • Innerhalb der Steuervorrichtung 1500 kann die koordinierende Komponente 1545 die Netzschnittstelle 1590 veranlassen, wiederholt auf empfangene Angaben zum Status von Knotenvorrichtungen 1700 zu überwachen und Angaben zum aktuellen Status jeder Knotenvorrichtung 1700 als Teil der Knotendaten 1530 erhalten und wiederholt aktualisieren. Insbesondere kann die koordinierende Komponente 1545 wiederholt auf Angaben überwachen, ob jede Knotenvorrichtung 1700 von mehreren Knotenvorrichtungen 1700 verfügbar ist, um für die Ausführung von Operationen an einem Teil eines Datensatzes als Teil einer verteilten und zumindest teilweise parallelen Ausführung einer Verarbeitungsaufgabe, welche mehrere Teile eines Datensatzes betrifft, zugewiesen zu werden, wie gemäß der Ausführungsform des aus nicht partitionierten Daten bestehenden Datensatzes 1330.
  • Mit Bezug auf 14B sei bemerkt, dass als Teil des Abrufens der nicht partitionierten Daten einer solchen Ausführungsform des Datensatzes 1330 die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen kann, die Basiszuordnungskarte 1115 (und jegliche damit verbundenen Zuordnungskartenerweiterungen 1117 – siehe 12C) über das Netz 1999 aus dem Nutzinhaltsabschnitt 1113 der innerhalb der einen oder der mehreren Speichervorrichtungen 1100 gespeicherten Datendatei 1110 abzurufen. Wie zuvor erörtert wurde, kann die Basiszuordnungskarte 1115 (und jegliche damit verbundenen Zuordnungskartenerweiterungen 1117) eine Zuordnungskarte für die Art bereitstellen, in der die mehreren Datensatzteile 1732 der nicht partitionierten Ausführungsform des Datensatzes 1330 als mehrere Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 gespeichert werden, und kann die zuordnende Komponente 1541 eine solche Zuordnungskarte als die Zuordnungskartendaten 1510 speichern. Zusätzlich kann die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen, die Metadaten 1335, die Aspekte der Organisation von Daten innerhalb des Datensatzes 1330 beschreiben, über das Netz 1999 aus dem Nutzinhaltsabschnitt 1113 abzurufen.
  • Mit Bezug auf 14C sei bemerkt, dass sich die koordinierende Komponente 1545 auf die wiederholt aktualisierten Angaben zum Status mehrerer Knotenvorrichtungen 1700 in den Knotendaten 1530 beziehen kann, um festzustellen, welche der mehreren Knotenvorrichtungen 1700 gegenwärtig verfügbar sind, um eine Verarbeitungsaufgabe an einem oder mehreren Datensatzteilen 1732 der nicht partitionierten Ausführungsform des Datensatzes 1330 auszuführen. Die koordinierende Komponente 1545 kann dann die Netzschnittstelle 1590 veranlassen, eine Angabe darüber, was die Verarbeitungsaufgabe für die verfügbaren der Knotenvorrichtungen 1700 ist, über das Netz 1999 zu übertragen. Dabei kann die koordinierende Komponente 1545 auch Kopien zumindest eines Teils der Metadaten 1335 auf jede dieser verfügbaren Knotenvorrichtungen 1700 verteilen.
  • Zusätzlich kann die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen, zu den verfügbaren der Knotenvorrichtungen 1700 einen oder mehrere Zeiger auf Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 zu übertragen. Dabei kann sich die zuordnende Komponente 1541 auf die Zuordnungskartendaten 1510 beziehen, um die Stellen innerhalb des Nutzinhaltsabschnitts 1113 zu identifizieren, auf welche jeder der Zeiger weist, um das Abrufen der Datenblöcke 1131 daraus zu ermöglichen. Gemäß einigen Ausführungsformen kann die zuordnende Komponente 1541 diese Stellen für jeden Datenblock 1131 innerhalb des Nutzinhaltsabschnitts 1113 zumindest teilweise durch Summieren der in den Zuordnungskartendaten 1510 für alle Datenblöcke 1131, die jedem Datenblock 1131 vorhergehen, spezifizierten Größen ableiten. Die zuordnende Komponente 1541 kann Angaben darüber, welche der mehreren Knotenvorrichtungen 1700 verfügbar sind, von der koordinierenden Komponente 1545 empfangen oder diese Angaben direkt aus den Knotendaten 1530 abrufen. Jede Übertragung eines Zeigers kann eine Angabe der Größe des einen oder der mehreren Datenblöcke 1131 aufweisen, worauf dieser Zeiger weist, um zu ermöglichen, dass jede der verfügbaren Knotenvorrichtungen 1700 die korrekte Datenmenge abruft, wenn jeder der Datenblöcke 1131 aus dem Nutzinhaltsabschnitt 1113 abgerufen wird.
  • Innerhalb jeder Knotenvorrichtung 1700 kann die Aufgabenkomponente 1745 die Netzschnittstelle 1790 veranlassen, wiederholt auf empfangene Angaben von der Steuervorrichtung 1500 in Bezug auf eine auszuführende Aufgabe zu überwachen und jeglichen Teil der über das Netz 1999 empfangenen Metadaten 1335 zur Verwendung bei der Ausführung einer solchen Aufgabe lokal speichern. Wie dargestellt ist, kann die Steuerroutine 1740 zusätzlich eine abrufende Komponente zum wirksamen Abrufen eines oder mehrerer Datensatzteile 1732 aus dem Nutzinhaltsabschnitt 1113 aufweisen, worin der eine oder die mehreren Datensatzteile 1732 als ein oder mehrere entsprechende Datenblöcke 1131 zur Verwendung bei der Ausführung einer Aufgabe durch die Aufgabenkomponente 1745 gespeichert werden können. Die abrufende Komponente kann die Netzschnittstelle 1790 veranlassen, wiederholt auf jegliche Übertragungen von Zeigern von der Steuervorrichtung 1500 über das Netz 1999 zu überwachen und jegliche solche empfangenen Zeiger als Teil der Zeigerdaten 1735 speichern.
  • Mit Bezug auf 14D, worin ein einziges Beispiel einer der verfügbaren Knotenvorrichtungen 1700 dargestellt ist, sei bemerkt, dass die abrufende Komponente 1743 ansprechend auf den Empfang eines oder mehrerer Zeiger auf einen oder mehrere Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 die Netzschnittstelle 1790 veranlassen kann, den einen oder die mehreren Datenblöcke 1131 aus dem Nutzinhaltsabschnitt 1113 abzurufen. Dabei kann die abrufende Komponente 1743 einen oder mehrere Befehle zur einen oder zu den mehreren Speichervorrichtungen 1100 übertragen, um den einen oder die mehreren Datenblöcke 1131 bereitzustellen, wobei der eine oder die mehreren Zeiger und/oder die damit verbundenen Angaben über die Größe zum Spezifizieren des einen oder der mehreren Datenblöcke 1131, die bereitzustellen sind, verwendet werden. Die abrufende Komponente 1743 kann jeden der abgerufenen Datenblöcke 1131 als einen Datensatzteil 1732 zur Verwendung durch die Aufgabenkomponente 1745 bei der Ausführung der Aufgabe, die der Knotenvorrichtung 1700 durch die Steuervorrichtung 1500 spezifiziert wird, lokal speichern.
  • Wie viele der Datenblöcke 1131 durch jede der verfügbaren der Knotenvorrichtungen 1700 aus dem Nutzinhaltsabschnitt 1113 abgerufen werden, kann durch die Art bestimmt werden, in der Zeiger auf die Datenblöcke 1131 durch die Steuervorrichtung 1500 auf die verfügbaren der Knotenvorrichtungen 1700 verteilt werden. Mit Bezug auf 14E sei bemerkt, dass gemäß einigen Ausführungsformen die Zeiger ringartig auf die verfügbaren der Knotenvorrichtungen 1700 verteilt werden können. Es sei bemerkt, dass 14E für die Zwecke der Erläuterung ein verhältnismäßig einfaches Beispiel einer ringartigen Verteilung auf nur drei Knotenvorrichtungen 1700a–c zeigt. Es wird erwartet, dass wahrscheinlich eine erheblich größere Anzahl von Knotenvorrichtungen 1700 verwendet wird. Dieser Ansatz kann infolge seiner einfachen Implementation und/oder als ein Ansatz zum Verteilen der Datensatzteile 1732 der nicht partitionierten Ausführungsform des Datensatzes 1330 auf die verfügbaren der Knotenvorrichtungen 1700 in verhältnismäßig ähnlichen Mengen als wünschenswert angesehen werden.
  • Die 15A–E zeigen gemeinsam ein Beispiel des Speicherns einer Ausführungsform des aus partitionierten Daten bestehenden Datensatzes 1330 gemäß Ausführungsformen des verteilten Verarbeitungssystems 1000 aus 11A oder 11B in weiteren Einzelheiten. Insbesondere zeigen die 15A und 15B gemeinsam Aspekte des Speicherns eines einzigen Datensatzteils 1732 durch eine einzige Knotenvorrichtung 1700. 15C zeigt Aspekte des Speicherns mehrerer Datensatzteile 1732 durch eine einzige Knotenvorrichtung 1700. Die 15D und 15E zeigen gemeinsam Aspekte des Speicherns der Zuordnungskartendaten 1510 durch die Steuervorrichtung 1500 (oder die Steuereinrichtung 1507).
  • Mit Bezug auf 15A sei bemerkt, dass gemäß einigen Ausführungsformen nach Abschluss einer Verarbeitungsaufgabe, die einen Datensatzteil 1732 des Datensatzes 1330 betrifft, die Aufgabenkomponente 1745 die Netzschnittstelle 1790 der Knotenvorrichtung 1700 veranlassen kann, eine Angabe über diesen Abschluss über das Netz 1999 zur Steuervorrichtung 1500 zu übertragen. Gemäß Ausführungsformen, bei denen die abgeschlossene Aufgabe die Erzeugung des Datensatzteils 1732 aufweist, kann die Aufgabenkomponente 1745 zur Steuervorrichtung 1500 zumindest einen Teil der Metadaten 1335, wodurch Aspekte der Organisation von Daten innerhalb des Datensatzteils 1732 beschrieben werden, übertragen, wobei dies einschließt, zu welcher Partition 1333 (siehe 12B) der Datensatzteil 1732 gehört. Zusätzlich kann die permanente Komponente 1741 ansprechend auf einen solchen Abschluss der Verarbeitungsaufgabe durch die Aufgabenkomponente 1745 die Netzschnittstelle 1790 veranlassen, eine Anforderung eines Zeigers auf eine Stelle innerhalb des Nutzinhaltsabschnitts 1113 der Datendatei 1110 (siehe 12B), wo der Datensatzteil 1732 zu speichern ist, zur Steuervorrichtung 1500 zu übertragen.
  • Bei der Übertragung der Anforderung eines Zeigers zur Steuervorrichtung 1500 kann die permanente Komponente 1741 eine Angabe zur Größe des Datensatzteils 1732 zusammen mit der Anforderung, der Steuervorrichtung 1500 eine Angabe darüber bereitzustellen, wie viel Speicherplatz innerhalb des Nutzinhaltsabschnitts 1113 erforderlich ist, um den Datensatzteil 1732 als einen Datenunterblock 1133 innerhalb eines Datenblocks 1131 zu speichern, übertragen. Ferner kann die permanente Komponente 1741 zusätzlich eine gehashte Kennung übertragen, die anhand des Etiketts der Partition 133 erzeugt wurde, zu der der Datensatzteil 1732 gehört. Wie dargestellt ist, kann die permanente Komponente 1741 gemäß einigen Ausführungsformen eine Hash-Komponente 1742 zur Erzeugung solcher gehashter Kennungen aus den eindeutigen Etiketten, die jeder von der einen oder den mehreren Partitionen 1333 der partitionierten Daten bereitgestellt sind, aufweisen. Gemäß einigen Ausführungsformen kann die Hash-Komponente 1742 einen Hash-Wert vom Partitionsetikett der Partition nehmen (oder jegliche von einer Vielzahl anderer Normierungsoperationen damit ausführen), wozu der Datensatzteil 1732 gehört, um die entsprechende gehashte Kennung zu erzeugen, welche die permanente Komponente 1741 bei der Anforderung eines Zeigers zur Steuervorrichtung 1500 übertragen kann.
  • Innerhalb der Steuervorrichtung 1500 kann die zuordnende Komponente 1541 die gehashte Kennung als Teil der Zuordnungskartendaten 1510 in einer solchen Weise speichern, dass die gehashte Kennung dem Datensatzteil 1732 und der Partition 1333, wozu der Datensatzteil 1732 gehört, zugeordnet wird. Innerhalb der Steuervorrichtung 1500 kann die koordinierende Komponente 1545 die Netzschnittstelle 1590 auch veranlassen, wiederholt auf empfangene Angaben zum Status von Knotenvorrichtungen 1700 zu überwachen, und sie kann Angaben zum aktuellen Status jeder Knotenvorrichtung 1700 als Teil der Knotendaten 1530 vorhalten. Ansprechend auf den Empfang der Angabe zum Abschluss der Verarbeitungsaufgabe in Bezug auf den Datensatzteil 1732 von der Knotenvorrichtung 1700, kann die koordinierende Komponente 1545 eine Angabe zum aktuellen Status der Knotenvorrichtung 1700 aktualisieren, um diesen Abschluss innerhalb der Knotendaten 1530 widerzuspiegeln. Zusätzlich kann die zuordnende Komponente 1541 ansprechend auf den Empfang der Anforderung eines Zeigers von der Knotenvorrichtung 1700 zur Verwendung beim Speichern des Datensatzteils 1732 zuvor innerhalb der Zuordnungskartendaten 1510 gespeicherte Angaben zu Teilen des Nutzinhaltsabschnitts 1113, die bereits zugewiesen wurden, verwenden, um eine Stelle innerhalb des Nutzinhaltsabschnitts 1113 zu identifizieren, an welcher der Datensatzteil 1732 gespeichert werden kann. Insbesondere kann die zuordnende Komponente 1541 solche Stellen für jeden Datenunterblock 1133 innerhalb des Nutzinhaltsabschnitts 1113 zumindest teilweise durch Summieren der in den Zuordnungskartendaten 1510 spezifizierten Größen für alle vorhergehenden Datenunterblöcke 1133 ableiten. Die zuordnende Komponente 1541 kann dann die Netzschnittstelle 1590 veranlassen, einen Zeiger auf diese identifizierte Stelle über das Netz 1999 zur Knotenvorrichtung 1700 zurückzusenden. Die zuordnende Komponente 1541 kann dann auch die Zuordnungskartendaten 1510 mit einer Angabe darüber aktualisieren, wo der Datensatzteil 1732 innerhalb des Nutzinhaltsabschnitts 1113 zu speichern ist, um die anschließende Identifikation einer anderen Stelle innerhalb des Nutzinhaltsabschnitts 1113 zu ermöglichen, an der ein anderer Datensatzteil 1732 gespeichert werden kann und wofür ein anderer Zeiger ansprechend auf eine andere Anforderung von einer anderen Knotenvorrichtung 1700 bereitgestellt werden kann.
  • Ansprechend auf den Empfang des Zeigers, der von der Steuervorrichtung 1500 ansprechend auf die zuvor übertragene Anforderung eines Zeigers übertragen wurde, kann die permanente Komponente 1741 eine Angabe zum empfangenen Zeiger innerhalb der Zeigerdaten 1735 speichern. Mit Bezug auf 15B sei bemerkt, dass die permanente Komponente 1741 wie dargestellt dann die Netzschnittstelle 1790 veranlassen kann, den Datensatzteil 1732 zu einer oder zu den mehreren Speichervorrichtungen 1100 zu übertragen, und zwar zusammen mit einem Befehl an die eine oder die mehreren Speichervorrichtungen 1000, den Datensatzteil 1732 als ein Datenunterblock 1133 innerhalb eines Datenblocks 1131 an der Stelle innerhalb des Nutzinhaltsabschnitts 1113 zu speichern, die durch den Zeiger spezifiziert ist. Es sei bemerkt, dass, wenngleich 158 ein Beispiel der Knotenvorrichtung 1700 zeigt, welche den einzelnen Datensatzteil 1732 als einen einzelnen Datenunterblock 1133 speichert, andere Ausführungsformen möglich sind, bei denen die Knotenvorrichtung 1700 mehrere Datensatzteile 1732 der partitionierten Ausführungsform des Datensatzes 1330 als mehrere entsprechende Datenunterblöcke 1133 innerhalb des einzelnen Datenblocks 1131 speichern kann.
  • Mit Bezug auf 15C sei bemerkt, dass die Knotenvorrichtung 1700 gemäß einigen Ausführungsformen die dargestellten mehreren Datensatzteile 1732a–d als Ergebnis der Ausführung mehrerer Instanzen einer Verarbeitungsaufgabe zumindest teilweise parallel innerhalb der einzelnen Knotenvorrichtung 1700 ausgeben kann, wobei jede Instanz einen der mehreren Datensatzteile 1732a–d erzeugt. Insbesondere kann, wie dargestellt, jede von mehreren Instanzen der Aufgabenkomponente 1745a–d in einem getrennten Ausführungsthread durch die Prozessorkomponente 1750 der einzelnen Knotenvorrichtung 1700 ausgeführt werden und/oder kann die Prozessorkomponente 1750 mehrere Kerne 1755a–d aufweisen, die jeweils in der Lage sind, eine der Instanzen der Aufgabenkomponente 1745a–d unabhängig von den anderen auszuführen. Demgemäß kann gemäß solchen Ausführungsformen die einzelne der Knotenvorrichtungen 1700 intern bei der Erzeugung der mehreren Datensatzteile 1732a–d ähnlich funktionieren wie mehrere der Knotenvorrichtungen 1700.
  • Gemäß solchen Ausführungsformen können die mehreren Instanzen der Aufgabenkomponente 1745a–d koordinieren, um die permanente Komponente 1741 zu veranlassen, eine einzige Anforderung eines einzigen Zeigers zur Verwendung beim Speichern aller von den mehreren Datensatzteilen 1732a–d als aneinander angrenzende Datenunterblöcke 1133a–d innerhalb eines einzelnen Datenblocks 1131 innerhalb des Nutzinhaltsabschnitts 1113 zur Steuervorrichtung 1500 zu übertragen. Die Anforderung kann getrennte Angaben zu einer gehashten Kennung für jeden der Datensatzteile 1732a–d aufweisen. Wenn alle der mehreren Datensatzteile 1732a–d zu den gleichen Partitionen 1333 gehören, können die gleichen gehashten Kennungen in der Anforderung für alle Datensatzteile 1732a–d angegeben werden. Wenn jedoch verschiedene von den mehreren Datensatzteilen 1732a–d zu verschiedenen Partitionen 1333 gehören, können verschiedene gehashte Kennungen für verschiedene der Datensatzteile 1732a–d angegeben werden.
  • Mit Bezug auf 15D sei bemerkt, dass nach dem Bereitstellen von Zeigern für das Speichern aller Datensatzteile 1732 der partitionierten Ausführungsform des Datensatzes 1330 und/oder nach dem Empfang von Angaben von den Knotenvorrichtungen 1700, die am Speichern des Datensatzes 1330 beteiligt sind, dass alle Datenblöcke 1131 und/oder Datenunterblöcke 1133 erfolgreich innerhalb des Nutzinhaltsabschnitts 1113 der Datendatei 1110 gespeichert wurden, die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen kann, die Zuordnungskartendaten 1510 zur einen oder den mehreren Speichervorrichtungen 1100 zu übertragen, um sie zumindest als die Basiszuordnungskarte 1115 innerhalb des Nutzinhaltsabschnitts 1113 zu speichern. Wie zuvor mit Bezug auf 12C erörtert wurde, können die Zuordnungskartendaten 1510 jedoch, wenn der für ihre Speicherung innerhalb des Nutzinhaltsabschnitts 1113 erforderliche Speicherplatz verhältnismäßig groß wird, alternativ als eine Kombination der Basiszuordnungskarte 1115 und einer oder mehrerer Zuordnungskartenerweiterungen 1117 gespeichert werden, wie in 15E dargestellt ist.
  • Zu 15D zurückkehrend sei bemerkt, dass zusätzlich zum Speichern der Zuordnungskartendaten 1510 zumindest als die Basiszuordnungskarte 1115 die zuordnende Komponente 1541 auch die Netzschnittstelle 1590 veranlassen kann, die Metadaten 1335 zur Speicherung innerhalb des Nutzinhaltsabschnitts 1113 zur einen oder zu den mehreren Speichervorrichtungen 1100 zu übertragen. Ferner kann die zuordnende Komponente 1541 auch Angaben zur Anzahl der Knotenvorrichtungen 1700 speichern, zwischen denen alle Datensatzteile 1732 des Datensatzes 1330 zwischengespeichert wurden und/oder als Daten-Header 1112 erzeugt wurden. Wiederum kann der Daten-Header 1112 gemäß verschiedenen Ausführungsformen entweder in den Datei-Header 1111 oder den Nutzinhaltsabschnitt 1113 aufgenommen werden (beispielsweise innerhalb der Basiszuordnungskarte 1115 oder als Teil der Metadaten 1335). Unabhängig davon, wo die Angabe zur Anzahl der Knotenvorrichtungen 1700 gespeichert wird, kann gemäß einigen Ausführungsformen die Angabe dazu, ob die Daten des Datensatzes 1330 partitionierte Daten oder nicht partitionierte Daten sind, mit der Angabe der Anzahl der Knotenvorrichtungen 1700 kombiniert werden. Insbesondere kann gemäß solchen Ausführungsformen eine Angabe zu einer Anzahl null von Knotenvorrichtungen 1700 als eine Angabe dienen, dass die Daten des Datensatzes 330 nicht partitionierte Daten sind. Dagegen kann eine Angabe zu einer von null verschiedenen Anzahl der Knotenvorrichtungen 1700 als eine Angabe dienen, dass der Datensatz 330 aus partitionierten Daten besteht, zusätzlich dazu, dass die Anzahl der Knotenvorrichtungen 1700 spezifiziert wird. Diese Art des Kombinierens dieser beiden Angaben kann verwendet werden, wenn eine Angabe zur Anzahl von Knotenvorrichtungen 1700 als überflüssig angesehen wird, wo die Daten nicht partitionierte Daten sind.
  • Gemäß einigen Ausführungsformen kann die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen, wiederholt auf Angaben von jeder Knotenvorrichtung 1700 zu überwachen, dass keine Zeiger mehr von der Steuervorrichtung 1500 angefordert werden müssen. Gemäß solchen Ausführungsformen kann die zuordnende Komponente 1541 das Speichern zumindest der Zuordnungskartendaten 1510 verzögern, bis Angaben von allen der mehreren Knotenvorrichtungen 1700 empfangen wurden, die an der Verarbeitung der partitionierten Ausführungsform des Datensatzes 1330 beteiligt sind, dass keine weiteren Zeiger mehr angefordert werden. Gemäß Ausführungsformen, bei denen jede der Knotenvorrichtungen 1700 nur einen einzigen Zeiger für alle Datensatzteile 1732, die von dieser Knotenvorrichtung 1700 zu speichern sind, anfordern darf, kann die Steuervorrichtung 1500 jedoch auf der Grundlage davon, ob Anforderungen von Zeigern von allen Knotenvorrichtungen 1700 empfangen wurden, die an der Verarbeitung des Datensatzes 1330 beteiligt sind, feststellen, ob es weitere Datensatzteile 1732 gibt, für die noch Zeiger angefordert werden müssen. Wiederum können gemäß solchen Ausführungsformen Informationsaustäusche zwischen der Steuervorrichtung 1500 und den Knotenvorrichtungen 1700 über das Netz 1999 für die Zwecke des Koordinierens zumindest des Speicherns des Datensatzes 1330 vorteilhaft weiter minimiert werden, indem Austäusche expliziter Angaben überflüssig gemacht werden, ob es weitere Datensatzteile 1732 gibt, für die noch Zeiger anzufordern sind. Wiederum kann der Vorteil, dass von jeder Knotenvorrichtung 1700 nur eine einzige Anforderung eines Zeigers gemacht werden muss, was zur gemeinsamen Behandlung mehrerer Datenblöcke 1131 bei ihrer Speicherung führt, eine weitere Optimierung dieses Speicherns durch eine oder mehrere Speichervorrichtungen 1100 ermöglicht werden und/oder eine weitere Optimierung der Übertragung davon zwischen der Knotenvorrichtung 1700 und der einen oder den mehreren Speichervorrichtungen 1100 über das Netz 1999, das für konkurrierende Datenübertragungen durch jede der Knotenvorrichtungen 1700 zu der einen oder zu den mehreren Speichervorrichtungen 1100 verantwortlich ist, ermöglicht werden.
  • sDie 16A–D zeigen gemeinsam ein Beispiel des Abrufens einer Ausführungsform des aus partitionierten Daten bestehenden Datensatzes 1330 gemäß Ausführungsformen des verteilten Verarbeitungssystems 1000 aus 11A oder 11B in weiteren Einzelheiten. Insbesondere zeigt 16A Aspekte der Sammlung von Informationen, welche die Steuervorrichtung 1500 benötigt, um eine Verteilung von Datensatzteilen 1732 zwischen verfügbaren der Knotenvorrichtungen 1700 zu bestimmen. 16B zeigt Aspekte der Übertragung der Zeiger zu verfügbaren der Knotenvorrichtungen 1700. 16C zeigt Aspekte eines Ansatzes zum Bewirken einer verhältnismäßig ausgeglichenen Verteilung der Datensatzteile 1732 zwischen verfügbaren der Knotenvorrichtungen 1700. 16D zeigt Aspekte des Abrufens eines oder mehrerer Datensatzteile 1732 durch eine einzige Knotenvorrichtung 1700.
  • Mit Bezug auf 16A sei bemerkt, dass die zuordnende Komponente 1541 als Teil zum Abrufen des Datensatzes 1330 gemäß einer solchen partitionierten Ausführungsform die Netzschnittstelle 1590 veranlassen kann, die Basiszuordnungskarte 1115 (und jegliche damit verbundenen Zuordnungskartenerweiterungen 1117 – siehe 12C) über das Netz 1999 aus dem Nutzinhaltsabschnitt 1113 der innerhalb der einen oder der mehreren Speichervorrichtungen 1100 gespeicherten Datendatei 1110 abzurufen. Wie zuvor erörtert wurde, kann die Basiszuordnungskarte 1115 (und jegliche damit verbundenen Zuordnungskartenerweiterungen 1117) eine Zuordnungskarte der Art bereitstellen, in der die mehreren Datensatzteile 1732 der partitionierten Ausführungsform des Datensatzes 1330 innerhalb des Nutzinhaltsabschnitts 1113 gespeichert sind, und kann die zuordnende Komponente 1541 eine solche Zuordnungskarte als die Zuordnungskartendaten 1510 speichern. Die zuordnende Komponente 1541 kann zusätzlich die Netzschnittstelle 1590 veranlassen, die Metadaten 1335, die Aspekte der Organisation von Daten innerhalb des Datensatzes 1330 beschreiben, über das Netz 1999 aus dem Nutzinhaltsabschnitt 1113 abzurufen. Alternativ oder zusätzlich kann die zuordnende Komponente 1541 die Netzschnittstelle 1590 veranlassen, den Daten-Header 1112 abzurufen, der (falls vorhanden) die Anzahl der Knotenvorrichtungen 1700 beschreiben kann, die den Datensatz 1330 als Letzte innerhalb des Nutzinhaltsabschnitts 1113 der Datendatei 1110 gespeichert haben. Wiederum kann der Daten-Header 1112 gemäß verschiedenen Ausführungsformen in eine oder beide von der Basiszuordnungskarte 1115 und von den Metadaten 1335 aufgenommen werden.
  • Mit Bezug auf 16B sei bemerkt, dass sich die koordinierende Komponente 1545 auf wiederholt aktualisierte Angaben zum Status mehrerer Knotenvorrichtungen 1700 beziehen kann, welche innerhalb der Knotendaten 1530 enthalten sind, um festzustellen, welche der mehreren Knotenvorrichtungen 1700 gegenwärtig verfügbar sind, um eine Verarbeitungsaufgabe an einem oder mehreren Datensatzteilen 1732 der partitionierten Ausführungsform des Datensatzes 1330 auszuführen. Die koordinierende Komponente 1545 kann dann die Netzschnittstelle 1590 veranlassen, eine Angabe zur Verarbeitungsaufgabe über das Netz 1999 zu den verfügbaren der Knotenvorrichtungen 1700 zu übertragen. Dabei kann die koordinierende Komponente 1545 auch Kopien zumindest eines Teils der Metadaten 1335 auf jede dieser verfügbaren Knotenvorrichtungen 1700 verteilen.
  • Die zuordnende Komponente 1541 kann zuerst feststellen, welcher von zwei Ansätzen bei der Verteilung der Datensatzteile 1732 des Datensatzes 1330 zwischen den gegenwärtig verfügbaren Knotenvorrichtungen 1700 zu verwenden ist und demgemäß welcher von zwei Ansätzen beim Ableiten und Verteilen von Zeigern zwischen den gegenwärtig verfügbaren Knotenvorrichtungen 1700 zu verwenden ist. Hierfür kann die zuordnende Komponente 1541 die Anzahl der Knotenvorrichtungen 1700, die gegenwärtig verfügbar sind, mit der Anzahl der Knotenvorrichtungen 1700, die am letzten Speichern des Datensatzes 1330 innerhalb der einen Datendatei 1110 beteiligt waren, vergleichen. Falls diese beiden Anzahlen der Knotenvorrichtungen 1700 übereinstimmen, kann die zuordnende Komponente 1541 die Vorschrift machen, die Datensatzteile 1732 in einer solchen Weise zwischen den gegenwärtig verfügbaren Knotenvorrichtungen 1700 zu verteilen, dass effektiv die Verteilung der Datensatzteile 1732 wiederhergestellt wird, die zu der Zeit existiert hat, als der Datensatz 1330 zuletzt innerhalb der Datendatei 1110 gespeichert wurde. Genauer gesagt, kann die zuordnende Komponente 1541 jeden ganzen Datenblock 1131 innerhalb des Nutzinhaltsabschnitts 1113 der Datendatei 1110 auf eine andere der gegenwärtig verfügbaren Knotenvorrichtungen 1700 verteilen (und dadurch alle Datenunterblöcke 1133 innerhalb jedes Datenblocks 1131 zusammenhalten). Falls diese beiden Anzahlen der Knotenvorrichtungen 1700 jedoch nicht übereinstimmen, kann die zuordnende Komponente 1541 die Vorschrift machen, eine neue Verteilung individueller der Datenunterblöcke 1133 innerhalb jedes der Datenblöcke 1131 innerhalb des Nutzinhaltsabschnitts 1113 der Datendatei 1110 Weise zwischen den gegenwärtig verfügbaren Knotenvorrichtungen 1700 abzuleiten (um dadurch jeden der Datensatzteile 1732 individuell zu verteilen).
  • Mit Bezug auf die 16B und 16C sei bemerkt, dass zum Bewirken entweder einer solchen Verteilung ganzer Datenblöcke 1131 oder einer solchen Verteilung individueller der Datenunterblöcke 1133 zwischen den gegenwärtig verfügbaren Knotenvorrichtungen 1700 die zuordnende Komponente 1541 zumindest eine Untermenge der gehashten Kennungen verwenden kann, die durch die Zuordnungskartendaten 1510 mit jedem der Datenunterblöcke 1133 in Beziehung stehen. Die zuordnende Komponente 1541 kann positive ganzzahlige Werte als Kennungen jeder der verfügbaren Knotenvorrichtungen 1700 ausgehend vom ganzzahligen Wert 0 und inkrementierend mit dem ganzzahligen Wert 1 für jede solche Knotenvorrichtung 1700 zuweisen. Wie dargestellt ist, kann die zuordnende Komponente 1541 eine Divisionskomponente 1543 zum Ausführen einer ganzzahligen Division aufweisen, in der gehashte Kennungen durch die Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen 1700 dividiert werden, um einen Modulo-Wert für jede solche Division abzuleiten.
  • Genauer gesagt kann die zuordnende Komponente 1541, wenn die Anzahlen der gegenwärtig verfügbaren Knotenvorrichtungen 1700 und der Knotenvorrichtungen 1700, die zuletzt am Speichern des Datensatzes 1330 beteiligt waren, nicht übereinstimmen, für jeden der Datenblöcke 1131 eine einzige gehashte Kennung, die durch die Zuordnungskartendaten 1510 einem der Datenunterblöcke 1133 innerhalb dieses Datenblocks 1131 zugeordnet sind, abrufen und kann die Divisionskomponente 1543 diese einzige gehashte Kennung durch die Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen 1700 dividieren, um einen Modulo-Wert abzuleiten. Die zuordnende Komponente 1541 kann dann diesen Modulo-Wert mit einem der positiven ganzzahligen Werte vergleichen, der einer der gegenwärtig verfügbaren Knotenvorrichtungen 1700 zugewiesen wurde. Die zuordnende Komponente 1541 kann dann die Netzschnittstelle 1590 veranlassen, einen Zeiger auf die Stelle dieses Datenblocks 1131 innerhalb des Nutzinhaltsabschnitts 1113 zu jener der Knotenvorrichtungen 1700 zu übertragen, welcher der übereinstimmende der positiven ganzzahligen Werte zugewiesen wurde.
  • Gemäß Ausführungsformen, bei denen die Daten des Datensatzes 330 partitioniert sind und bei denen es eine oder mehrere Instanzen von Daten gibt, die zu mehr als einer Partition 1333 gehören, die von derselben Knotenvorrichtung 1700 erzeugt und/oder verarbeitet wird, kann es eine Beschränkung dafür geben, welche Partitionen 1333 von Daten des Datensatzes 330 innerhalb derselben Knotenvorrichtung 1700 erzeugt und/oder gespeichert werden können. Die Beschränkung kann darin bestehen, dass alle Partitionen 1333 von Daten, die sich auf diese Weise die gleiche Knotenvorrichtung 1700 teilen, Partitionsetiketten aufweisen müssen, welche denselben Modulo-Wert erzeugen, wenn die von diesen Partitionsetiketten abgeleiteten gehashten Kennungen (beispielsweise durch Nehmen von Hash-Werten dieser Partitionsetiketten) durch die Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen 1700 dividiert werden. Demgemäß kann die Verwendung nur einer einzigen gehashten Kennung in Zusammenhang mit nur einem der Datenunterblöcke 1133 innerhalb jedes Datenblocks 1131 beim Ableiten eines Modulo-Werts, durch den die Verteilung des gesamten Datenblocks 1131 festgelegt wird, auf dieser Anforderung beruhen, um zu gewährleisten, dass es keinen Unterschied macht, welche der gehashten Kennungen unter all jenen, die mit jedem der Datenunterblöcke 1133 in Verbindung stehen, auf diese Weise verwendet wird.
  • Wenn jedoch die Anzahlen der gegenwärtig verfügbaren Knotenvorrichtungen 1700 und der zuletzt am Speichern des Datensatzes 1330 beteiligten Knotenvorrichtungen 1700 nicht übereinstimmen, kann die zuordnende Komponente 1541 für jeden der Datenunterblöcke 1133 die gehashte Kennung, die durch die Zuordnungskartendaten 1510 diesem Datenunterblock 1133 zugeordnet wurde, abrufen und kann die Divisionskomponente 1543 die gehashte Kennung durch die Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen 1700 dividieren, um einen Modulo-Wert abzuleiten. Die zuordnende Komponente 1541 kann dann diesen Modulo-Wert mit einem der positiven ganzzahligen Werte vergleichen, der einer der gegenwärtig verfügbaren Knotenvorrichtungen 1700 zugewiesen wurde. Die zuordnende Komponente 1541 kann dann die Netzschnittstelle 1590 veranlassen, einen Zeiger auf die Stelle dieses Datenunterblocks 1133 innerhalb des Nutzinhaltsabschnitts 1113 zu jener der Knotenvorrichtungen 1700 zu übertragen, welcher der übereinstimmende der positiven ganzzahligen Werte zugewiesen wurde.
  • Eine solche Verwendung der gehashten Kennungen von jedem der Datenunterblöcke 1133 zur individuellen Bestimmung der Verteilung jedes der Datenunterblöcke 1133 kann zur Ableitung einer neuen Verteilung der Datensatzteile 1732 führen, welche eine verhältnismäßig ausgeglichene Verteilung von Daten zwischen den verfügbaren Knotenvorrichtungen 1700 ist. Auch gewährleistet angesichts der Tatsache, dass alle Datenunterblöcke 1133 in Zusammenhang mit einer einzigen Partition 1333 die gleiche gehashte Kennung aufweisen, diese Verwendung von Modulo-Werten, die von den gehashten Kennungen genommen wurden, dass alle Daten, die zu einer jeglichen der Partitionen 1333 gehören, auf dieselbe der verfügbaren Knotenvorrichtungen 1700 und nicht zwischen mehreren Knotenvorrichtungen 1700 verteilt werden.
  • Mit Bezug auf 16D sei bemerkt, dass ansprechend auf den Empfang eines oder mehrerer Zeiger auf einen oder mehrere Datenblöcke 1131 oder Datenunterblöcke 1133 innerhalb des Nutzinhaltsabschnitts 1113 die abrufende Komponente 1743 die Netzschnittstelle 1790 veranlassen kann, diesen einen oder diese mehreren Datenblöcke 1131 oder Datenunterblöcke 1133 aus dem Nutzinhaltsabschnitt 1113 abzurufen. Dabei kann die abrufende Komponente 1743 einen oder mehrere Befehle zur einen oder zu den mehreren Speichervorrichtungen 1100 übertragen, um den einen oder die mehreren Datenblöcke 1131 oder Datenunterblöcke 1133 bereitzustellen, wobei der eine oder die mehreren Zeiger und/oder die damit verbundenen Angaben über die Größe zum Spezifizieren des einen oder der mehreren Datenblöcke 1131 oder Datenunterblöcke 1133, die bereitzustellen sind, verwendet werden. Die abrufende Komponente 1743 kann jeden der abgerufenen Datenunterblöcke 1133 als einen Datensatzteil 1732 zur Verwendung durch die Aufgabenkomponente 1745 bei der Ausführung der Aufgabe, die der Knotenvorrichtung 1700 durch die Steuervorrichtung 1500 spezifiziert wird, lokal speichern.
  • Zu den 11A und 11B zurückkehrend sei bemerkt, dass gemäß verschiedenen Ausführungsformen jede der Prozessorkomponenten 1550 und 1750 jegliche von einer breiten Vielfalt kommerziell verfügbarer Prozessoren aufweisen kann. Ferner können eine oder mehrere dieser Prozessorkomponenten mehrere Prozessoren, einen Mehr-Thread-Prozessor, einen Mehrkernprozessor (unabhängig davon, ob die mehreren Prozessorkerne auf demselben oder auf getrennten Dies koexistieren) und/oder eine Mehrprozessorarchitektur einer anderen Vielfalt, wodurch mehrere physikalisch getrennte Prozessoren verknüpft sind, aufweisen.
  • Gemäß einer spezifischen Ausführungsform kann die Prozessorkomponente 1550 der Steuervorrichtung 1500 jedoch ausgewählt werden, um die Ableitung von Verteilungen von Datensatzteilen 1732 wirksam auszuführen. Alternativ oder zusätzlich kann die Prozessorkomponente 1750 jeder der Knotenvorrichtungen 1700 ausgewählt werden, um Verarbeitungsaufgaben mit mehreren Datensatzteilen wirksam parallel auszuführen. Beispielsweise kann die Prozessorkomponente 1550 und/oder 1750 eine Einzelner-Befehl-mehrere-Daten(SIMD)-Architektur aufweisen, mehrere Verarbeitungs-Pipelines aufweisen und/oder die Fähigkeit aufweisen, mehrere gleichzeitige Ausführungs-Threads pro Verarbeitungs-Pipeline zu unterstützen. Alternativ oder zusätzlich kann die Prozessorkomponente 1750 zumindest einer der Knotenvorrichtungen 1700 beispielsweise Mehr-Thread-Fähigkeiten und/oder Mehrprozessorkerne aufweisen, um das parallele Ausführen der Funktionen sowohl der Steuervorrichtung 1500 als auch einer Knotenvorrichtung 1700 zu ermöglichen.
  • Gemäß verschiedenen Ausführungsformen kann jeder der Speicher 1560 und 1760 auf jeglichen von einer breiten Vielfalt von Informationsspeichertechnologien beruhen, einschließlich flüchtiger Technologien, welche die ununterbrochene Bereitstellung elektrischer Energie erfordern, und/oder einschließlich Technologien, welche die Verwendung maschinenlesbarer Speichermedien mit sich bringen, die möglicherweise entfernbar sein können. Demgemäß kann jeder dieser Speicher jegliche von einer breiten Vielfalt von Typen (oder eine Kombination von Typen) von Speichervorrichtungen aufweisen, einschließlich und ohne Einschränkung eines Nurlesespeichers (ROM), eines Direktzugriffsspeichers (RAM), eines dynamischen RAM (DRAM), eines Double-Data-Rate-DRAM (DDR-DRAM), eines synchronen DRAM (SDRAM), eines statischen RAM (SRAM), eines programmierbaren ROM (PROM), eines löschbaren programmierbaren ROM (EPROM), eines elektrisch löschbaren programmierbaren ROM (EEPROM), eines Flash-Speichers, eines Polymerspeichers (beispielsweise ferroelektrischen Polymerspeichers), eines Ovonic-Speichers, eines Phasenänderungs- oder ferroelektrischen Speichers, eines Silicium-Oxid-Nitrid-Oxid-Silicium(SONOS)-Speichers, Magnet- oder optischer Karten, eines oder mehrerer individueller ferromagnetischer Plattenlaufwerke, eines nichtflüchtigen Speicherklassenspeichers oder mehrerer Speichervorrichtungen, die in einem oder mehreren Feldern organisiert sind (beispielsweise mehrere ferromagnetische Plattenlaufwerke, die in einem redundanten Feld unabhängiger Platten oder RAID organisiert sind). Es sei bemerkt, dass, wenngleich jeder dieser Speicher als ein einziger Block dargestellt ist, eine oder mehrere von diesen mehrere Speichervorrichtungen aufweisen können, die auf unterschiedlichen Speichertechnologien beruhen können. Demgemäß kann beispielsweise einer oder mehrere von jedem dieser dargestellten Speicher eine Kombination eines optischen Laufwerks oder Flash-Speicher-Kartenlesers, wodurch Programme und/oder Daten gespeichert werden können und auf irgendeine Form maschinenlesbarer Speichermedien übertragen werden können, eines ferromagnetischen Plattenlaufwerks zum lokalen Speichern von Programmen und/oder Daten während eines verhältnismäßig langen Zeitraums und einer oder mehrerer flüchtiger Halbleiterspeichervorrichtungen, die einen verhältnismäßig schnellen Zugriff auf Programme und/oder Daten ermöglichen (beispielsweise SRAM oder DRAM), repräsentieren. Es sei auch bemerkt, dass jeder dieser Speicher aus mehreren Speicherkomponenten auf der Grundlage einer identischen Speichertechnologie bestehen kann, welche jedoch infolge einer Spezialisierung bei der Verwendung getrennt gehalten werden können (wobei beispielsweise einige DRAM-Vorrichtungen als ein Hauptspeicher verwendet werden, während andere DRAM-Vorrichtungen als ein gesonderter Rahmenpuffer einer Graphiksteuereinrichtung verwendet werden).
  • Gemäß einer spezifischen Ausführungsform kann der Speicher 1760 eine oder mehrere der Knotenvorrichtungen 1700, worin einer oder mehrere der Datensatzteile 1732 gespeichert sind, jedoch mit einem redundanten Feld unabhängiger Platten (RAID) mit einer RAID-Ebene, die ausgewählt wird, um eine Fehlertoleranz zur Verhinderung eines Verlusts eines oder mehrerer dieser Datensätze bereitzustellen und/oder eine erhöhte Geschwindigkeit für den Zugriff auf einen oder mehrere dieser Datensätze bereitzustellen, implementiert werden.
  • Gemäß verschiedenen Ausführungsformen können die Netzschnittstellen 1590 und 1790 jegliche von einer breiten Vielfalt von Kommunikationstechnologien verwenden, die es ermöglichen, dass diese Vorrichtungen mit anderen Vorrichtungen gekoppelt werden, wie beschrieben wurde. Jede dieser Schnittstellen weist Schaltungen auf, die zumindest einen Teil einer erforderlichen Funktionalität zum Ermöglichen einer solchen Kopplung bereitstellen. Jede dieser Schnittstellen kann jedoch auch zumindest teilweise durch Befehlssequenzen implementiert werden, die durch entsprechende der Prozessorkomponenten ausgeführt werden (beispielsweise zur Implementation eines Protokollstapels oder anderer Merkmale). Wo eine elektrische und/oder optisch leitende Verkabelung verwendet wird, können diese Schnittstellen Zeitsteuerungen und/oder Protokolle verwenden, die mit jeglichen von einer Vielfalt von Industriestandards übereinstimmen, einschließlich und ohne Einschränkung RS-232C, RS-422, USB, Ethernet (IEEE-802.3) oder IEEE-1394. Wo drahtlose Übertragungen verwendet werden, können diese Schnittstellen Zeitsteuerungen und/oder Protokolle verwenden, die mit jeglichen von einer Vielfalt von Industriestandards übereinstimmen, einschließlich und ohne Einschränkung IEEE 802.11a, 802.11ad, 802.11ah, 802.11ax, 802.11b, 802.11g, 802.16, 802.20 (üblicherweise als ”Mobiler Breitband-Drahtloszugang” bezeichnet), Bluetooth, ZigBee oder eines Mobilfunktelefondienstes in der Art von GSM mit General Packet Radio Service (GSM/GPRS), CDMA/1xRTT, Enhanced Data Rates for Global Evolution (EDGE), Evolution Data Only/Optimized (EV-DO), Evolution For Data and Voice (EV-DV), High Speed Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), 4G LTE usw.
  • Gemäß einer spezifischen Ausführungsform kann die Netzschnittstelle 1790 einer oder mehrerer der Knotenvorrichtungen 1700, worin einer oder mehrere der Datensatzteile 1732 gespeichert sind, jedoch mit mehreren kupferbasierten oder faseroptikbasierten Netzschnittstellenports implementiert werden, um redundante und/oder parallele Wege für den Austausch eines oder mehrerer der Datensatzteile 1732 mit der einen oder den mehreren Speichervorrichtungen 1100 bereitzustellen.
  • Gemäß verschiedenen Ausführungsformen kann die Aufteilung von Verarbeitungs- und/oder Speicherressourcen zwischen der Steuervorrichtung 1500 und/oder den Knotenvorrichtungen 1700 und/oder den API-Architekturen, welche Kommunikationen zwischen der Steuervorrichtung 1500 und/oder den Knotenvorrichtungen 1700 unterstützen, so ausgelegt und/oder ausgewählt werden, dass sie mit jeglichen von einer Vielfalt von Standards zum Verteilen einer Verarbeitung übereinstimmt, einschließlich und ohne Einschränkung IEEE P2413, AllJoyn, IoTivity usw. Beispielsweise können eine Untermenge einer API und/oder anderer Architekturmerkmale eines oder mehrerer solcher Standards verwendet werden, um den hier beschriebenen verhältnismäßig geringen Koordinationsgrad zu implementieren, um eine größere Effizienz bei der Parallelisierung der Datenverarbeitung bereitzustellen, während Austäusche koordinierender Informationen minimiert werden, die zu unerwünschten Instanzen einer Serialisierung zwischen Prozessen führen können. Es ist jedoch zu verstehen, dass die Organisation und die Art der Repräsentation von Informationen innerhalb der Zuordnungskartendaten 1510 sowie ihre Verwendung beim Ermöglichen einer Parallelisierung des Speicherns, des Abrufens und/oder der Verarbeitung von Datensatzteilen 1732 des Datensatzes 1330 nicht von existierenden API-Architekturen und/oder unterstützenden Kommunikationsprotokollen abhängen oder dadurch beschränkt sind. Allgemeiner gibt es nichts in der Vererbungsstruktur der Zuordnungskartendaten 1510, der Metadaten 1335 oder der Art, in der der Datensatz 1330 beim Speichern, bei der Übertragung und/oder bei der Verteilung organisiert werden kann, was an existierende API-Architekturen oder -Protokolle gebunden ist.
  • 17 zeigt eine als Beispiel dienende Ausführungsform eines Logikflusses 2100. Der Logikfluss 2100 kann für einige oder alle der Operationen repräsentativ sein, die von einer oder mehreren hier beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2100 Operationen veranschaulichen, die von der Prozessorkomponente 1750 beim Ausführen der Steuerroutine 1740 ausgeführt werden und/oder von einer oder mehreren anderen Komponenten wenigstens einer der Knotenvorrichtungen 1700 ausgeführt werden.
  • Bei 2110 kann eine Prozessorkomponente einer Knotenvorrichtung (beispielsweise die Prozessorkomponente 1750 einer der Knotenvorrichtungen 1700) eine Anforderung zu einer Steuervorrichtung oder zu einer Steuereinrichtung, die innerhalb einer anderen Knotenvorrichtung implementiert ist (beispielsweise der Steuervorrichtung 1500 oder der Steuereinrichtung 1507, die an Stelle der Steuervorrichtung 1500 von innerhalb anderer der Knotenvorrichtungen 1700 wirkt) eines Zeigers auf eine Stelle innerhalb einer Datendatei, die von einer oder mehreren Speichervorrichtungen erhalten wird (beispielsweise der Datendatei 1110, die von der einen oder den mehreren Speichervorrichtungen 1100 erhalten wird), übertragen, wo die Knotenvorrichtung einen oder mehrere Datensatzteile eines Datensatzes (beispielsweise einen oder mehrere der Datensatzteile 1732 des Datensatzes 1330) speichern kann. Wie zuvor erörtert wurde, kann gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, jeder Datensatzteil als ein Datenblock (beispielsweise als Datenblöcke 1131) gespeichert werden und kann die Knotenvorrichtung eine Angabe zur Größe (beispielsweise in Bytes, Wörtern, Doppelwörtern usw.) jedes von dem einen oder den mehreren Datensatzteilen aufweisen, die beginnend mit der Stelle zu speichern sind, worauf der angeforderte Zeiger weist. Wie zuvor auch erörtert wurde, kann jedoch gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, jeder Datensatzteil als ein Datenunterblock eines Datenblocks (beispielsweise als Datenunterblöcke 1133 innerhalb eines Datenblocks 1131) gespeichert werden und kann die Knotenvorrichtung Angaben zu individuellen Größen für jeden zu speichernden Datensatzteil zusammen mit einer von der Knotenvorrichtung anhand des Partitionsetiketts, das jedem Datensatzteil zugeordnet ist, erzeugten gehashten Kennung aufweisen.
  • Bei 2120 kann der angeforderte Zeiger an der Knotenvorrichtung von der Steuervorrichtung (oder einer Steuereinrichtung innerhalb einer anderen Knotenvorrichtung) empfangen werden. Bei 2130 kann die Prozessorkomponente der Knotenvorrichtung ansprechend darauf, dass sie den angeforderten Zeiger empfangen hat, den einen oder die mehreren Datensatzteile mit einem Befehl an die eine oder die mehreren Speichervorrichtungen zur einen oder den mehreren Speichervorrichtungen übertragen, den einen oder die mehreren Datensatzteile an der Stelle, auf die der Zeiger weist, als einen oder mehrere Datenblöcke oder als einen oder mehrere Datenunterblöcke innerhalb eines Datenblocks zu speichern.
  • Bei 2140 kann die Prozessorkomponente prüfen, ob es weitere zu speichernde Datensatzteile gibt, die nicht in der letzten zur Steuervorrichtung (oder einer Steuereinrichtung innerhalb einer anderen Knotenvorrichtung) übertragenen Anforderung eines Zeigers enthalten waren. Wie zuvor erörtert wurde, können mehrere Instanzen einer Verarbeitungsaufgabe, die verschiedene Datensatzteile betrifft, innerhalb einer einzigen Knotenvorrichtung ausgeführt werden und dazu führen, dass mehr als eine Anforderung eines Zeigers übertragen werden muss. Wiederum können solche mehreren Instanzen durch eine Mehr-Thread-Ausführung und/oder durch mehrere Prozessorkerne (beispielsweise die mehreren Prozessorkerne 1755) der Prozessorkomponente der Knotenvorrichtung unterstützt werden. Falls es bei 2140 noch einen oder mehrere Datensatzteile gibt, die gespeichert werden müssen, kann die Prozessorkomponente zur Übertragung einer Anforderung eines Zeigers bei 2110 zurückkehren. Alternativ kann, wie zuvor ebenfalls erörtert wurde, eine Koordination zwischen solchen mehreren Instanzen einer Verarbeitungsaufgabe innerhalb der Knotenvorrichtung so ausgeführt werden, dass nur eine solche Anforderung gemacht wird, welche alle Datensatzteile des Datensatzes aufweist, die innerhalb der Knotenvorrichtung verarbeitet und/oder erzeugt werden, so dass die Prüfung bei 2140 nicht ausgeführt wird. Wiederum ist es möglich, dass jede Knotenvorrichtung nur eine Anforderung eines Zeigers machen muss, der für das Speichern aller innerhalb der Knotenvorrichtung verarbeiteten und/oder erzeugten Datensatzteile zu verwenden ist, und dass sich die Steuervorrichtung (oder eine Steuereinrichtung innerhalb einer anderen Knotenvorrichtung) auf diese Anforderung als Basis für die Feststellung, ob alle Anforderungen von Zeigern empfangen wurden, verlassen kann.
  • 18 zeigt eine als Beispiel dienende Ausführungsform eines Logikflusses 2200. Der Logikfluss 2200 kann für einige oder alle der Operationen repräsentativ sein, die von einer oder mehreren hier beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2200 Operationen veranschaulichen, die von der Prozessorkomponente 1750 beim Ausführen der Steuerroutine 1740 ausgeführt werden und/oder von einer oder mehreren anderen Komponenten wenigstens einer der Knotenvorrichtungen 1700 ausgeführt werden.
  • Bei 2210 kann eine Prozessorkomponente einer Knotenvorrichtung (beispielsweise die Prozessorkomponente 1750 einer der Knotenvorrichtungen 1700) von einer Steuervorrichtung oder einer Steuereinrichtung, die innerhalb einer anderen Knotenvorrichtung implementiert ist (beispielsweise der Steuervorrichtung 1500 oder der Steuereinrichtung 1500 innerhalb einer anderen der Knotenvorrichtungen 1700), einen Zeiger auf einen oder mehrere Datensatzteile eines innerhalb einer Datendatei gespeicherten Datensatzes (beispielsweise Datensatzteile 1732 des innerhalb der Datendatei 1110 gespeicherten Datensatzes 1330) empfangen, um sie daraus abzurufen. Wie zuvor erörtert wurde, kann der Zeiger gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, ein einziger Datensatzteil sein, der in der Datendatei als ein Datenblock gespeichert ist, und kann der Zeiger mit einer Angabe zur Größe des Datenblocks verbunden sein. Wie zuvor jedoch auch erörtert wurde, kann der Zeiger gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, ein einziger Datenunterblock innerhalb eines Datenblocks sein und kann der Zeiger mit einer Angabe zur Größe des Datenunterblocks verbunden sein.
  • Bei 2220 kann die Prozessorkomponente eine Anforderung zur einen oder zu den mehreren Speichervorrichtungen übertragen, den Datenblock oder Datenunterblock bereitzustellen, der an der Stelle in der Datendatei beginnt, auf welche der Zeiger weist, wobei diese die durch die Angabe der Größe, die mit dem Zeiger verbunden ist, spezifizierte Datenmenge aufweist. Bei 2230 kann der angeforderte Datenblock oder Datenunterblock von der einen oder den mehreren Speichervorrichtungen an der Knotenvorrichtung empfangen werden. Bei 2240 kann die Prozessorkomponente den empfangenen Datenblock oder Datenunterblock als einen Datensatzteil lokal speichern, der von der Prozessorkomponente in einer von der Steuervorrichtung (oder einer Steuereinrichtung innerhalb einer anderen Knotenvorrichtung) spezifizierten Verarbeitungsaufgabe zu verarbeiten ist.
  • Die 19A und 19B zeigen gemeinsam eine als Beispiel dienende Ausführungsform eines Logikflusses 2300. Der Logikfluss 2300 kann für einige oder alle der Operationen repräsentativ sein, die von einer oder mehreren hier beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2300 Operationen veranschaulichen, die von der Prozessorkomponente 1550 bei der Ausführung der Steuerroutine 1540 ausgeführt werden und/oder von einer oder mehreren anderen Komponenten der Steuervorrichtung 1500 oder der Steuereinrichtung 1500, die innerhalb wenigstens einer der Knotenvorrichtungen 1700 implementiert ist, ausgeführt werden.
  • Bei 2310 kann eine Prozessorkomponente einer Steuervorrichtung oder einer Steuereinrichtung, die innerhalb einer Knotenvorrichtung implementiert ist (beispielsweise die Prozessorkomponente 1550 der Steuervorrichtung 1500 oder der Steuereinrichtung 1507) eine Anforderung eines Zeigers auf eine Stelle innerhalb einer Datendatei, die von einer oder mehreren Speichervorrichtungen gehalten wird (beispielsweise der Datendatei 1110, die von der einen oder den mehreren Speichervorrichtungen 1100 erhalten wird), wo die Knotenvorrichtung einen oder mehrere Datensatzteile eines Datensatzes (beispielsweise einen oder mehrere der Datensatzteile 1732 des Datensatzes 1330) speichern kann, empfangen. Wie zuvor erörtert wurde, kann gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, jeder Datensatzteil als ein Datenblock (beispielsweise als Datenblöcke 1131) gespeichert werden und kann die Knotenvorrichtung mit der Anforderung eine Angabe zur Größe (beispielsweise in Bytes, Wörtern, Doppelwörtern usw.) des einen oder der mehreren zu speichernden Datensatzteile beginnend an der Stelle, worauf der angeforderte Zeiger weist, aufnehmen. Wie zuvor auch erörtert wurde, kann jedoch gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, jeder Datensatzteil als ein Datenunterblock innerhalb eines Datenblocks (beispielsweise als Datenunterblöcke 1133 innerhalb eines Datenblocks 1131) gespeichert werden und kann die Knotenvorrichtung in die Anforderung Angaben zu individuellen Größen für jeden zu speichernden Datensatzteil zusammen mit einer von der Knotenvorrichtung anhand des Partitionsetiketts für jeden Datensatzteil erzeugten gehashten Kennung aufnehmen.
  • Falls die Daten des Datensatzes bei 2320 nicht partitioniert sind, kann die Prozessorkomponente demgemäß dann bei 2322 auf der Grundlage der Gesamtgrößen aller zuvor in der Datendatei gespeicherten Datenblöcke die Stelle innerhalb der Datendatei ableiten, an der der Datensatzteil, für den der Zeiger angefordert wurde, als ein Datenblock zu speichern ist, und einen Zeiger zum Zeigen auf diese Stelle erzeugen. Die Prozessorkomponente kann diesen Zeiger dann zur Knotenvorrichtung übertragen.
  • Bei 2330 kann die Prozessorkomponente prüfen, ob die Größe des Datenblocks, für den der Zeiger angefordert wurde, gleich jener des unmittelbar vorhergehenden und benachbarten Datenblocks in der Datendatei ist. Falls dies der Fall ist, kann die Prozessorkomponente dann bei 2332 die Blockanzahl benachbarter Datenblöcke mit der gleichen Größe im Zuordnungskarteneintrag inkrementieren, der dem unmittelbar vorhergehenden und benachbarten Datenblock in einer Zuordnungskarte der Datenblöcke innerhalb der Datendatei entspricht (beispielsweise einen der Zuordnungskarteneinträge 1511 in der als Zuordnungskartendaten 1510 gespeicherten Zuordnungskarte). Falls die Größe des Datenblocks, für den der Zeiger angefordert wurde, jedoch nicht gleich jener des unmittelbar vorhergehenden und benachbarten Datenblocks in der Datendatei ist, kann die Prozessorkomponente dann bei 2334 einen neuen Zuordnungskarteneintrag in der Zuordnungskarte erzeugen, der einen Hinweis zur Größe des Datenblocks, wofür der Zeiger angefordert wurde, und die Blockanzahl eines Blocks dieser Größe aufweist.
  • Falls bei 2340 entweder nach einer Inkrementation einer Blockanzahl bei 2332 oder der Hinzufügung eines neuen Zuordnungskarteneintrags in der Zuordnungskarte bei 2334 noch weitere Datensatzteile der nicht partitionierten Daten als Datenblöcke zu speichern sind, kann die Prozessorkomponente auf den Empfang einer anderen Anforderung eines Zeigers bei 2310 warten. Wie zuvor erörtert wurde, kann jede der Knotenvorrichtungen eine Angabe zur Steuervorrichtung (oder zur Steuereinrichtung innerhalb einer der Knotenvorrichtungen) übertragen, ob es noch weitere Datensatzteile gibt, für die Zeiger anzufordern sind. Falls es bei 2340 keine weiteren Datensatzteile der partitionierten Daten mehr gibt, die als Datenblöcke zu speichern sind, kann die Prozessorkomponente die Zuordnungskarte der Datenblöcke zur einen oder zu den mehreren Speichervorrichtungen übertragen, um sie als Basiszuordnungskarte und/oder eine oder mehrere Zuordnungskartenerweiterungen zu speichern, wobei dies von der Größe des Speicherplatzes abhängt, der für das Speichern der Zuordnungskarte benötigt wird.
  • Zu 2320 zurückkehrend sei bemerkt, dass die Prozessorkomponente, falls die Daten des Datensatzes partitioniert sind, bei 2350 dann auf der Grundlage der Gesamtgrößen aller zuvor in der Datendatei gespeicherten Datenunterblöcke die Stelle innerhalb der Datendatei ableiten kann, an der der eine oder die mehreren Datensatzteile als ein oder mehrere Datenunterblöcke zu speichern sind, und einen Zeiger zum Zeigen auf diese Stelle ableiten kann. Die Prozessorkomponente kann diesen Zeiger dann zur Knotenvorrichtung übertragen.
  • Bei 2360 kann die Prozessorkomponente einen neuen Zuordnungskarteneintrag in der Zuordnungskarte für einen neuen Datenblock erzeugen, welcher einen getrennten Untereintrag (beispielsweise einen getrennten Untereintrag 1513) für jeden Datenunterblock in Zusammenhang mit einem der Datensatzteile, wofür der Zeiger angefordert wurde, aufweist. Jeder Untereintrag kann eine Angabe zur Größe des entsprechenden Datenunterblocks und eine gehashte Kennung, die von der Knotenvorrichtung anhand des Partitionsetiketts für jeden Datensatzteil erzeugt wurde, aufweisen.
  • Bei 2340 kann die Prozessorkomponente dann nach der Hinzufügung eines neuen Blockeintrags in der Zuordnungskarte bei 2360, falls es noch weitere Datensatzteile der partitionierten Daten gibt, die als Datenunterblöcke zu speichern sind, auf den Empfang einer anderen Anforderung eines Zeigers bei 2310 warten. Falls es bei 2340 jedoch keine weiteren Datensatzteile der partitionierten Daten mehr gibt, die als Datenunterblöcke zu speichern sind, kann die Prozessorkomponente die Zuordnungskarte der Datenblöcke und Datenunterblöcke innerhalb dieser Datenblöcke dann zur einen oder zu den mehreren Speichervorrichtungen übertragen, um sie als Basiszuordnungskarte und/oder eine oder mehrere Zuordnungskartenerweiterungen zu speichern, wobei dies von der Größe des Speicherplatzes abhängt, der für das Speichern der Zuordnungskarte benötigt wird. Wie zuvor erörtert wurde, kann die Prozessorkomponente für partitionierte Daten auch eine Angabe zur Anzahl der am Speichern des Datensatzes beteiligten Knotenvorrichtungen speichern.
  • Die 20A, 20B und 20C zeigen gemeinsam eine als Beispiel dienende Ausführungsform eines Logikflusses 2400. Der Logikfluss 2400 kann für einige oder alle der Operationen repräsentativ sein, die von einer oder mehreren hier beschriebenen Ausführungsformen ausgeführt werden. Insbesondere kann der Logikfluss 2400 Operationen veranschaulichen, die von der Prozessorkomponente 1550 bei der Ausführung der Steuerroutine 1540 ausgeführt werden und/oder von einer oder mehreren anderen Komponenten der Steuervorrichtung 1500 oder der Steuereinrichtung 1500, die innerhalb wenigstens einer der Knotenvorrichtungen 1700 implementiert ist, ausgeführt werden.
  • Bei 2410 kann eine Prozessorkomponente einer Steuervorrichtung oder einer Steuereinrichtung, die innerhalb einer Knotenvorrichtung implementiert ist (beispielsweise die Prozessorkomponente 1550 der Steuervorrichtung 1500 oder der Steuereinrichtung 1507), Angaben von mehreren Knotenvorrichtungen (beispielsweise den Knotenvorrichtungen 1700) in Bezug auf ihre aktuelle Verfügbarkeit für das Ausführen von Verarbeitungsaufgaben an einem Teil eines Datensatzes (beispielsweise den Datensatzteilen 1732 des Datensatzes 1330) empfangen. Wie zuvor erörtert wurde, kann jede Knotenvorrichtung wiederholt Angaben zu ihrem aktuellen Status übertragen, einschließlich ihrer Verfügbarkeit für die Ausführung von Verarbeitungsaufgaben an einem Teil eines Datensatzes.
  • Bei 2412 kann die Prozessorkomponente aus einer innerhalb einer oder mehrerer Speichervorrichtungen gehaltenen Datendatei (beispielsweise der von der einen oder den mehreren Speichervorrichtungen 1100 gehaltenen Datendatei 1110) eine Zuordnungskarte von Datenblöcken und/oder Datenunterblöcken und Metadaten eines Datensatzes (beispielsweise der Basiszuordnungkarte 1115 und jeglicher Zuordnungskartenerweiterungen 1117 und der Metadaten 1335) abrufen. Zusätzlich kann die Prozessorkomponente eine Angabe zur Anzahl der Knotenvorrichtungen abrufen, die an der letzten Speicherung des Datensatzes in der Datendatei (beispielsweise des Daten-Headers 1112 oder wiederum der Metadaten 1335) beteiligt waren. Wie vorstehend erörtert wurde, kann jeder Datensatzteil gemäß Ausführungsformen, bei denen die Daten des Datensatzes nicht partitioniert sind, in der Datendatei als ein Datenblock gespeichert werden (beispielsweise jeder Datensatzteil 1732 als ein Datenblock 1131) und kann die Zuordnungskarte Angaben zu den Größen von Datenblöcken und/oder Anzahlen der Blöcke benachbarter Sätze von Datenblöcken, welche die gleiche Größe aufweisen, bereitstellen. Wie zuvor jedoch auch erörtert wurde, kann gemäß Ausführungsformen, bei denen die Daten des Datensatzes partitioniert sind, jeder Datensatzteil als ein Datenunterblock innerhalb eines Datenblocks gespeichert werden (beispielsweise als ein Datenunterblock 1133 innerhalb eines Datenblocks 1131) und kann die Zuordnungskarte Angaben zur Größe und gehashte Kennungen für jeden Datenunterblock innerhalb jedes Datenblocks bereitstellen.
  • Falls demgemäß bei 2420 die Daten des Datensatzes nicht partitioniert sind, kann die Prozessorkomponente dann bei 2422 einen einzigen Zuordnungskarteneintrag, der einem einzigen Datenblock entspricht, bei 2422 aus der Zuordnungskarte abrufen (beispielsweise einen einzigen Zuordnungskarteneintrag 1511). Bei 2424 kann die Prozessorkomponente eine der verfügbaren Knotenvorrichtungen 2424 ringartig auswählen, worauf der einzelne Datenblock zu verteilen ist. Bei 2426 kann die Prozessorkomponente die Stelle innerhalb der Datendatei, von der der einzelne Datenblock abzurufen ist, auf der Grundlage der Gesamtgrößen aller an vorhergehenden Stellen innerhalb der Datendatei gespeicherten Datenblöcke ableiten und einen Zeiger zum Zeigen auf diese Stelle erzeugen. Bei 2428 kann die Prozessorkomponente diesen Zeiger dann zur ausgewählten Knotenvorrichtung übertragen. Bei 2430 kann die Prozessorkomponente dann, falls es einen anderen Zuordnungskarteneintrag in der Zuordnungskarte gibt, diesen nächsten Zuordnungskarteneintrag bei 2422 abrufen.
  • Falls die Daten des Datensatzes jedoch bei 2420 partitioniert sind, kann die Prozessorkomponente dann bei 2440 jeder der verfügbaren Knotenvorrichtungen eine Reihe zunehmend positiver ganzzahliger Werte (insbesondere die durch wiederholtes Inkrementieren mit dem positiven ganzzahligen Wert 1 erzeugte Reihe 0, 1, 2, 3 usw.) zuweisen. Bei 2450 kann die Prozessorkomponente dann prüfen, ob die Anzahl der gegenwärtig verfügbaren Knotenvorrichtungen mit der Anzahl der zuletzt am Speichern des Datensatzes innerhalb der Datendatei beteiligten Knotenvorrichtungen übereinstimmt.
  • Falls bei 2450 die beiden Anzahlen von Knotenvorrichtungen übereinstimmen, kann die Verteilung des Datensatzes, die zu der Zeit existierte, zu der der Datensatz zuletzt gespeichert wurde, von der Prozessorkomponente zwischen den verfügbaren Knotenvorrichtungen wiederhergestellt werden. Bei 2452 kann die Prozessorkomponente einen einzigen Zuordnungskarteneintrag, der einem einzigen Datenblock entspricht, aus der Zuordnungskarte abrufen. Bei 2454 kann die Prozessorkomponente die Stelle innerhalb der Datendatei, von der der Datenblock abzurufen ist, auf der Grundlage der Gesamtgrößen aller Datenblöcke an vorhergehenden Stellen innerhalb der Datendatei ableiten und einen Zeiger zum Zeigen auf den Datenblock erzeugen.
  • Bei 2456 kann die Prozessorkomponente eine gehashte Kennung in Zusammenhang mit der Zuordnungskarte mit einem der Datenunterblöcke innerhalb des Datenblocks durch die Anzahl der verfügbaren Knotenvorrichtungen dividieren (und dadurch die gehashte Kennung als einen positiven ganzzahligen Wert behandeln) und einen Modulo-Wert anhand der Divisionsoperation ableiten. Bei 2458 kann die Prozessorkomponente diesen Zeiger dann zur einen der verfügbaren Knotenvorrichtungen übertragen, der (bei 2440) ein ganzzahliger Wert aus der Reihe ganzzahliger Werte, welcher mit dem Modulo-Wert übereinstimmt, zugewiesen wurde.
  • Bei 2460 kann die Prozessorkomponente, falls es einen anderen Zuordnungskarteneintrag in der Zuordnungskarte gibt, diesen Zuordnungskarteneintrag dann bei 2452 abrufen.
  • Falls die beiden Anzahlen von Knotenvorrichtungen jedoch bei 2450 nicht übereinstimmen, kann durch die Prozessorkomponente dann eine Ableitung einer neuen Verteilung des Datensatzes zwischen den verfügbaren Knotenvorrichtungen vorgenommen werden. Bei 2470 kann die Prozessorkomponente einen einzigen Zuordnungskarteneintrag, der einem einzigen Datenblock entspricht, aus der Zuordnungskarte abrufen und dann bei 2472 einen einzigen Untereintrag entsprechend einem einzigen Datenunterblock aus diesem einzigen Zuordnungskarteneintrag abrufen (beispielsweise einen einzigen Zuordnungskartenuntereintrag 1513 aus einem einzigen Zuordnungskarteneintrag 1511). Bei 2474 kann die Prozessorkomponente die Stelle innerhalb der Datendatei, von der der Datenunterblock abzurufen ist, auf der Grundlage der Gesamtgrößen aller Datenunterblöcke in allen Datenblöcken, die an vorhergehenden Stellen innerhalb der Datendatei gespeichert sind, ableiten und einen Zeiger zum Weisen auf den Datenunterblock erzeugen.
  • Bei 2476 kann die Prozessorkomponente eine gehashte Kennung in Zusammenhang mit der Zuordnungskarte mit dem Datenunterblock durch die Anzahl verfügbarer Knotenvorrichtungen dividieren (und dadurch die gehashte Kennung als einen positiven ganzzahligen Wert behandeln) und einen Modulo-Wert anhand der Divisionsoperation ableiten. Bei 2478 kann die Prozessorkomponente diesen Zeiger dann zur einen der verfügbaren Knotenvorrichtungen übertragen, der (bei 2440) ein ganzzahliger Wert aus der Reihe ganzzahliger Werte, welcher mit dem Modulo-Wert übereinstimmt, zugewiesen wurde.
  • Falls es bei 2480 einen anderen Zuordnungskartenuntereintrag innerhalb des Zuordnungskarteneintrags gibt, kann die Prozessorkomponente dann bei 2472 diesen nächsten Zuordnungskartenuntereintrag abrufen. Falls es bei 2480 keinen anderen Zuordnungskartenuntereintrag im Zuordnungskarteneintrag gibt, kann die Prozessorkomponente, falls es bei 2490 einen anderen Zuordnungskarteneintrag in der Zuordnungskarte gibt, dann bei 2470 diesen Zuordnungskarteneintrag abrufen.
  • Einige Systeme können Hadoop®, ein Open-Source-Framework für das Speichern und Analysieren von Big Data in einer verteilten Rechenumgebung, verwenden. Einige Systeme können ein Cloud-Computing verwenden, welches einen allgegenwärtigen, zweckmäßigen und nach Bedarf erfolgenden Netzzugriff auf einen geteilten Pool konfigurierbarer Rechenressourcen (beispielsweise Netze, Server, Speicher, Anwendungen und Dienste) erlauben kann, die bei minimalem Verwaltungsaufwand oder Dienstanbieterinteraktion schnell zur Verfügung gestellt und freigegeben werden können. Einige Grid-Systeme können als ein Mehr-Knoten-Hadoop®-Cluster implementiert werden, wie Fachleute verstehen werden. ApacheTM Hadoop® ist ein Open-Source-Software-Framework für verteilte Berechnungen.
  • Das vorstehend Beschriebene schließt Beispiele der offenbarten Architektur ein. Es ist natürlich nicht möglich, jede erdenkliche Kombination von Komponenten und/oder Methodologien zu beschreiben, Fachleute werden jedoch verstehen, dass viele Kombinationen und Permutation möglich sind. Demgemäß soll die neuartige Architektur all jene Abänderungen, Modifikationen und Variationen einschließen, die in den Gedanken und den Schutzumfang der anliegenden Ansprüche fallen.

Claims (90)

  1. Vorrichtung mit einer Prozessorkomponente und einem Speicher zum Speichern von Befehlen, die, wenn sie durch die Prozessorkomponente ausgeführt werden, die Prozessorkomponente veranlassen, Operationen auszuführen, welche Folgende umfassen: Abrufen von Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, und von Zuordnungskartendaten, welche die Organisation mehrerer Datenblöcke innerhalb einer von der einen oder mehr als einen Speichervorrichtung gehaltenen Datendatei angeben, von einer oder mehr als einer Speichervorrichtung über ein Netz, wobei: die Zuordnungskartendaten mehrere Zuordnungskarteneinträge umfassen und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, Empfangen von Angaben darüber, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, die in der Lage sind, eine Verarbeitungsaufgabe mit wenigstens einem Datensatzteil von dem einen oder mehr als einen Datensatzteil auszuführen, von mehreren Knotenvorrichtungen, und ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht: Bestimmen einer ersten Anzahl der verfügbaren Knotenvorrichtungen auf der Grundlage der Angaben darüber, welche Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, Abrufen einer zweiten Anzahl von Knotenvorrichtungen, die zuletzt am Speichern des Datensatzes innerhalb der Datendatei beteiligt waren, aus den Metadaten oder den Zuordnungskartendaten, Vergleichen der ersten und der zweiten Anzahl von Knotenvorrichtungen, um eine Übereinstimmung zwischen der ersten und der zweiten Anzahl zu erkennen, Zuweisen von einem von einer Reihe positiver ganzzahliger Werte zu jeder der verfügbaren Knotenvorrichtungen als ein Festlegungswert, wobei sich die Reihe von einem ganzzahligen Wert von 0 bis zu einem positiven ganzzahligen Wert, der gleich der ersten Anzahl minus dem ganzzahligen Wert von 1 ist, erstreckt, und ansprechend auf die Erkennung einer Übereinstimmung zwischen der ersten und der zweiten Anzahl, Ausführen des Folgenden für jeden Zuordnungskarteneintrag der Zuordnungskartendaten: Abrufen einer gehashten Kennung für einen Datenunterblock, der im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben ist, und einer Datenunterblockgröße für jeden der Datenunterblöcke, die im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben sind, aus dem Zuordnungskarteneintrag, wobei: die gehashte Kennung von einem Partitionsetikett einer Partition von den mehreren Partitionen abgeleitet wird und der Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des entsprechenden Datenblocks und eine Summe der Datenunterblockgrößen aller Datenunterblöcke innerhalb des entsprechenden Datenblocks.
  2. Vorrichtung nach Anspruch 1, wobei die Prozessorkomponente ansprechend auf die Angabe, dass der Datensatz partitionierte Daten umfasst, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen der ersten und der zweiten Anzahl veranlasst wird, Operationen auszuführen, welche Folgende umfassen: für jede Angabe innerhalb jedes Zuordnungskarteneintrags eines Datenunterblocks innerhalb eines entsprechenden Datenblocks: Abrufen der Datenunterblockgröße und der gehashten Kennung des Datenunterblocks aus dem Zuordnungskarteneintrag, Bestimmen einer Stelle des Datenunterblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des Datenunterblocks und die Datenunterblockgröße.
  3. Vorrichtung nach Anspruch 1, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz keine partitionierten Daten umfasst, für jeden Zuordnungskarteneintrag der Zuordnungskartendaten: Abrufen einer Datenblockgröße und einer Datenblockanzahl aus dem Zuordnungskarteneintrag, wobei die Datenblockanzahl eine Anzahl benachbarter Datenblöcke in der Datendatei, die dem Zuordnungskarteneintrag entsprechen, angibt, und für jeden Datenblock, der dem Zuordnungskarteneintrag entspricht: Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Auswählen einer der verfügbaren Knotenvorrichtungen und Bereitstellen eines Zeigers für die ausgewählte der verfügbaren Knotenvorrichtungen, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des entsprechenden Datenblocks und die Datenblockgröße.
  4. Vorrichtung nach Anspruch 3, wobei die Auswahl einer der verfügbaren Knotenvorrichtungen eine Ringauswahl einer der verfügbaren Knotenvorrichtungen umfasst.
  5. Vorrichtung nach Anspruch 1, wobei die Vorrichtung eine der verfügbaren Knotenvorrichtungen umfasst.
  6. Vorrichtung nach Anspruch 5, wobei die Prozessorkomponente eine Verarbeitungsaufgabe mit zumindest einem aus der Datendatei abgerufenen Datensatzteil als die eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen ausführt.
  7. Vorrichtung nach Anspruch 1, wobei die Prozessorkomponente zum Abrufen der Zuordnungskartendaten aus der einen oder mehr als einen Speichervorrichtung veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Abrufen einer Basiszuordnungskarte aus der Datendatei, Analysieren der Basiszuordnungskarte zum Feststellen, ob zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung innerhalb der Datendatei gespeichert ist, und ansprechend auf eine Feststellung, dass zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist: Abrufen der einen oder mehr als einen Zuordnungskartenerweiterung aus der Datendatei und Abrufen zumindest einer Untermenge der Zuordnungskarteneinträge aus der einen oder mehr als einen Zuordnungskartenerweiterung.
  8. Vorrichtung nach Anspruch 7, wobei der Prozessor ansprechend auf eine Feststellung, dass kein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, veranlasst wird, Operationen auszuführen, welche das Abrufen aller Zuordnungskarteneinträge aus der Basiszuordnungskarte umfassen.
  9. Vorrichtung nach Anspruch 1, wobei die Prozessorkomponente zum Abrufen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbar sind, veranlasst wird, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe zur Verfügbarkeit jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen.
  10. Vorrichtung nach Anspruch 1, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, wobei eine Angabe zu einer mit dem Datensatz auszuführenden Aufgabe den mehreren Knotenvorrichtungen bereitgestellt wird, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen.
  11. Computerprogrammprodukt, das gegenständlich in einem nichtflüchtigen maschinenlesbaren Speichermedium verwirklicht ist, wobei das Computerprogrammprodukt Befehle aufweist, die in der Lage sind, eine Prozessorkomponente zu veranlassen, Operationen auszuführen, welche Folgende umfassen: Abrufen von Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, und von Zuordnungskartendaten, welche die Organisation mehrerer Datenblöcke innerhalb einer von der einen oder mehr als einen Speichervorrichtung gehaltenen Datendatei angeben, von einer oder mehr als einer Speichervorrichtung über ein Netz, wobei: die Zuordnungskartendaten mehrere Zuordnungskarteneinträge umfassen und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, Empfangen von Angaben darüber, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, die jeweils in der Lage sind, eine Verarbeitungsaufgabe mit wenigstens einem Datensatzteil von dem einen oder mehr als einen Datensatzteil auszuführen, von mehreren Knotenvorrichtungen, und ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht: Bestimmen einer ersten Anzahl der verfügbaren Knotenvorrichtungen auf der Grundlage der Angaben darüber, welche Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, Abrufen einer zweiten Anzahl von Knotenvorrichtungen, die zuletzt am Speichern des Datensatzes innerhalb der Datendatei beteiligt waren, aus den Metadaten oder den Zuordnungskartendaten, Vergleichen der ersten und der zweiten Anzahl von Knotenvorrichtungen, um eine Übereinstimmung zwischen der ersten und der zweiten Anzahl zu erkennen, Zuweisen von einem von einer Reihe positiver ganzzahliger Werte zu jeder der verfügbaren Knotenvorrichtungen als ein Festlegungswert, wobei sich die Reihe von einem ganzzahligen Wert von 0 bis zu einem positiven ganzzahligen Wert, der gleich der ersten Anzahl minus dem ganzzahligen Wert von 1 ist, erstreckt, und ansprechend auf die Erkennung einer Übereinstimmung zwischen der ersten und der zweiten Anzahl, Ausführen des Folgenden für jeden Zuordnungskarteneintrag der Zuordnungskartendaten: Abrufen einer gehashten Kennung für einen Datenunterblock, der im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben ist, und einer Datenunterblockgröße für jeden der Datenunterblöcke, die im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben sind, aus dem Zuordnungskarteneintrag, wobei: die gehashte Kennung von einem Partitionsetikett einer Partition von den mehreren Partitionen abgeleitet wird und der Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des entsprechenden Datenblocks und eine Summe der Datenunterblockgrößen aller Datenunterblöcke innerhalb des entsprechenden Datenblocks.
  12. Computerprogrammprodukt nach Anspruch 11, wobei die Prozessorkomponente ansprechend auf die Angabe, dass der Datensatz partitionierte Daten umfasst, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen der ersten und der zweiten Anzahl veranlasst wird, Operationen auszuführen, welche Folgende umfassen: für jede Angabe innerhalb jedes Zuordnungskarteneintrags eines Datenunterblocks innerhalb eines entsprechenden Datenblocks: Abrufen der Datenunterblockgröße und der gehashten Kennung des Datenunterblocks aus dem Zuordnungskarteneintrag, Bestimmen einer Stelle des Datenunterblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des Datenunterblocks und die Datenunterblockgröße.
  13. Computerprogrammprodukt nach Anspruch 11, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz keine partitionierten Daten umfasst, für jeden Zuordnungskarteneintrag der Zuordnungskartendaten: Abrufen einer Datenblockgröße und einer Datenblockanzahl aus dem Zuordnungskarteneintrag, wobei die Datenblockanzahl eine Anzahl benachbarter Datenblöcke in der Datendatei, die dem Zuordnungskarteneintrag entsprechen, angibt, und für jeden Datenblock, der dem Zuordnungskarteneintrag entspricht: Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Auswählen einer der verfügbaren Knotenvorrichtungen und Bereitstellen eines Zeigers für die ausgewählte der verfügbaren Knotenvorrichtungen, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des entsprechenden Datenblocks und die Datenblockgröße.
  14. Computerprogrammprodukt nach Anspruch 13, wobei die Auswahl einer der verfügbaren Knotenvorrichtungen eine Ringauswahl einer der verfügbaren Knotenvorrichtungen umfasst.
  15. Computerprogrammprodukt nach Anspruch 13, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgendes umfassen: ansprechend darauf, dass der Datensatz keine partitionierten Daten umfasst, Verwenden der Angabe der Stelle und der Datenblockgröße eines einem der Zuordnungskarteneinträge entsprechenden Datenblocks zum Abrufen des Datenblocks aus der Datendatei als eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen.
  16. Computerprogrammprodukt nach Anspruch 15, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgendes umfassen: Ausführen einer Verarbeitungsaufgabe mit dem Datenblock als die eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen.
  17. Computerprogrammprodukt nach Anspruch 11, wobei die Prozessorkomponente zum Abrufen der Zuordnungskartendaten aus der einen oder den mehreren Speichervorrichtungen veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Abrufen einer Basiszuordnungskarte aus der Datendatei, Analysieren der Basiszuordnungskarte zum Feststellen, ob zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung innerhalb der Datendatei gespeichert ist, und ansprechend auf eine Feststellung, dass zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist: Abrufen der einen oder mehr als einen Zuordnungskartenerweiterung aus der Datendatei und Abrufen zumindest einer Untermenge der Zuordnungskarteneinträge aus der einen oder mehr als einen Zuordnungskartenerweiterung.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die Prozessorkomponente ansprechend auf eine Feststellung, dass kein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, veranlasst wird, Operationen auszuführen, welche das Abrufen aller Zuordnungskarteneinträge aus der Basiszuordnungskarte umfassen.
  19. Computerprogrammprodukt nach Anspruch 11, wobei die Prozessorkomponente zum Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbar sind, veranlasst wird, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe zur Verfügbarkeit jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen.
  20. Computerprogrammprodukt nach Anspruch 11, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe zu einer Aufgabe, die mit dem Datensatz auszuführen ist, zu den mehreren Knotenvorrichtungen, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und Ausführen der Aufgabe mit einem zweiten Datensatzteil des Datensatzes als eine zweite Knotenvorrichtung zumindest teilweise parallel zu dem Ausführen der Aufgabe durch die erste Knotenvorrichtung.
  21. Computerimplementiertes Verfahren, welches Folgendes umfasst: Abrufen von Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, und von Zuordnungskartendaten, welche die Organisation mehrerer Datenblöcke innerhalb einer von der einen oder mehr als einen Speichervorrichtung gehaltenen Datendatei angeben, von einer oder mehr als einer Speichervorrichtung über ein Netz, wobei: die Zuordnungskartendaten mehrere Zuordnungskarteneinträge umfassen und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, Empfangen von Angaben darüber, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, die jeweils in der Lage sind, eine Verarbeitungsaufgabe mit wenigstens einem Datensatzteil von dem einen oder mehr als einen Datensatzteil auszuführen, von mehreren Knotenvorrichtungen, und ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht: Bestimmen einer ersten Anzahl der verfügbaren Knotenvorrichtungen auf der Grundlage der Angaben darüber, welche Knotenvorrichtungen verfügbare Knotenvorrichtungen sind, Abrufen einer zweiten Anzahl von Knotenvorrichtungen, die zuletzt am Speichern des Datensatzes innerhalb der Datendatei beteiligt waren, aus den Metadaten oder den Zuordnungskartendaten, Vergleichen der ersten und der zweiten Anzahl von Knotenvorrichtungen, um eine Übereinstimmung zwischen der ersten und der zweiten Anzahl zu erkennen, und Zuweisen von einem von einer Reihe positiver ganzzahliger Werte zu jeder der verfügbaren Knotenvorrichtungen als ein Festlegungswert, wobei sich die Reihe von einem ganzzahligen Wert von 0 bis zu einem positiven ganzzahligen Wert, der gleich der ersten Anzahl minus dem ganzzahligen Wert von 1 ist, erstreckt, und ansprechend auf die Erkennung einer Übereinstimmung zwischen der ersten und der zweiten Anzahl, Ausführen des Folgenden für jeden Zuordnungskarteneintrag der Zuordnungskartendaten: Abrufen einer gehashten Kennung für einen Datenunterblock, der im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben ist, und einer Datenunterblockgröße für jeden der Datenunterblöcke, die im Zuordnungskarteneintrag als sich innerhalb des entsprechenden Datenblocks befindend angegeben sind, aus dem Zuordnungskarteneintrag, wobei: die gehashte Kennung von einem Partitionsetikett einer Partition von den mehreren Partitionen abgeleitet wird und der Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des entsprechenden Datenblocks und eine Summe der Datenunterblockgrößen aller Datenunterblöcke innerhalb des entsprechenden Datenblocks.
  22. Computerimplementiertes Verfahren nach Anspruch 21, wobei ansprechend auf die Angabe, dass der Datensatz partitionierte Daten umfasst, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen der ersten und der zweiten Anzahl Folgendes ausgeführt wird: für jede Angabe innerhalb jedes Zuordnungskarteneintrags eines Datenunterblocks innerhalb eines entsprechenden Datenblocks: Abrufen der Datenunterblockgröße und der gehashten Kennung des Datenunterblocks aus dem Zuordnungskarteneintrag, Bestimmen einer Stelle des Datenunterblocks innerhalb der Datendatei, Dividieren der gehashten Kennung durch die erste Anzahl, um einen Modulo-Wert zu erhalten, Vergleichen des Modulo-Werts mit dem jeder der verfügbaren Knotenvorrichtungen zugewiesenen Festlegungswert, um eine verfügbare Knotenvorrichtung zu identifizieren, der ein Festlegungswert zugewiesen ist, welcher mit dem Modulo-Wert übereinstimmt, und Bereitstellen eines Zeigers für die verfügbare Knotenvorrichtung, welcher der Festlegungswert zugewiesen ist, der mit dem Modulo-Wert übereinstimmt, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des Datenunterblocks und die Datenunterblockgröße.
  23. Computerimplementiertes Verfahren nach Anspruch 21, welches Folgendes umfasst: ansprechend auf eine Angabe innerhalb der Metadaten oder der Zuordnungskartendaten, dass der Datensatz keine partitionierten Daten umfasst, für jeden Zuordnungskarteneintrag der Zuordnungskartendaten: Abrufen einer Datenblockgröße und einer Datenblockanzahl aus dem Zuordnungskarteneintrag, wobei die Datenblockanzahl eine Anzahl benachbarter Datenblöcke in der Datendatei, die dem Zuordnungskarteneintrag entsprechen, angibt, und für jeden Datenblock, der dem Zuordnungskarteneintrag entspricht: Bestimmen einer Stelle des entsprechenden Datenblocks innerhalb der Datendatei, Auswählen einer der verfügbaren Knotenvorrichtungen und Bereitstellen eines Zeigers für die ausgewählte der verfügbaren Knotenvorrichtungen, wobei der Zeiger Folgendes umfasst: eine Angabe zur Stelle des entsprechenden Datenblocks und die Datenblockgröße.
  24. Computerimplementiertes Verfahren nach Anspruch 23, wobei die Auswahl einer der verfügbaren Knotenvorrichtungen eine Ringauswahl einer der verfügbaren Knotenvorrichtungen umfasst.
  25. Computerimplementiertes Verfahren nach Anspruch 21, wobei, ansprechend darauf, dass der Datensatz partitionierte Daten umfasst, als eine der verfügbaren Knotenvorrichtungen gewirkt wird, indem die Angabe der Stelle und der Datenblockgröße eines Datenblocks entsprechend einem der Zuordnungskarteneinträge verwendet werden, um den Datenblock aus der Datendatei zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen abzurufen.
  26. Computerimplementiertes Verfahren nach Anspruch 25, wobei eine Verarbeitungsaufgabe mit jedem Datenunterblock innerhalb des Datenblocks als die eine der verfügbaren Knotenvorrichtungen zumindest teilweise parallel zu zumindest einer anderen der verfügbaren Knotenvorrichtungen ausgeführt wird.
  27. Computerimplementiertes Verfahren nach Anspruch 21, wobei das Abrufen der Zuordnungskartendaten aus der einen oder mehr als einen Speichervorrichtung Folgendes umfasst: Abrufen einer Basiszuordnungskarte aus der Datendatei, Analysieren der Basiszuordnungskarte zum Feststellen, ob zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung innerhalb der Datendatei gespeichert ist, und ansprechend auf eine Feststellung, dass zumindest ein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist: Abrufen der einen oder mehr als einen Zuordnungskartenerweiterung aus der Datendatei und Abrufen zumindest einer Untermenge der Zuordnungskarteneinträge aus der einen oder mehr als einen Zuordnungskartenerweiterung.
  28. Computerimplementiertes Verfahren nach Anspruch 27, wobei beim Abrufen der Zuordnungskartendaten von der einen oder mehr als einen Speichervorrichtung ansprechend auf eine Feststellung, dass kein Teil der Zuordnungskartendaten innerhalb einer oder mehr als einer Zuordnungskartenerweiterung gespeichert ist, alle Zuordnungskarteneinträge aus der Basis zuordnungskarte abgerufen werden.
  29. Computerimplementiertes Verfahren nach Anspruch 21, wobei beim Empfang von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen verfügbar sind, Folgendes ausgeführt wird: wiederholtes Empfangen von Angaben zum Status von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe zur Verfügbarkeit jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen.
  30. Computerimplementiertes Verfahren nach Anspruch 21, wobei eine Angabe zu einer mit dem Datensatz auszuführenden Aufgabe den mehreren Knotenvorrichtungen bereitgestellt wird, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen.
  31. Vorrichtung mit einer Prozessorkomponente und einem Speicher zum Speichern von Befehlen, die, wenn sie durch die Prozessorkomponente ausgeführt werden, die Prozessorkomponente veranlassen, Operationen auszuführen, welche Folgende umfassen: Empfangen zumindest eines Teils der Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, von zumindest einer Knotenvorrichtung von mehreren Knotenvorrichtungen, Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen an einer Speicherung des Datensatzes als mehrere Datenblöcke innerhalb einer Datendatei, die von einer oder mehr als einer Speichervorrichtung gehalten wird, zu beteiligen sind, von den mehreren Knotenvorrichtungen, wobei: die Organisation der mehreren Datenblöcke innerhalb der Datendatei in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, Empfangen einer Anforderung eines Zeigers auf eine Stelle innerhalb der Datendatei, an der die Knotenvorrichtung zumindest einen Datensatzteil als einen Datenblock speichern soll, von jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung, ansprechend auf eine von der zumindest einen Knotenvorrichtung empfangene Angabe, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und wobei jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, für jede Anforderung eines Zeigers, die von einer am Speichern des Datensatzes beteiligten Knotenvorrichtung empfangen wird: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl innerhalb des Zuordnungskarteneintrags, welche eine Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, wobei jeder Datenunterblock einen Datensatzteil des Datensatzes, der von der Knotenvorrichtung zu speichern ist, umfasst, Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine gehashte Kennung, die von einem Partitionsetikett der Partition abgeleitet wurde, zu der der entsprechende Datensatzteil gehört, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, umfasst, und ansprechend auf das erfolgreiche Speichern aller Datenblöcke des Datensatzes innerhalb der Datendatei durch alle am Speichern des Datensatzes beteiligten Knotenvorrichtungen, Speichern der Zuordnungskartendaten in der Datendatei.
  32. Vorrichtung nach Anspruch 31, wobei ansprechend auf das Fehlen einer von der zumindest einen Knotenvorrichtung empfangenen Angabe, dass der Datensatz partitionierte Daten umfasst, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: für jede von einer Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung eines Zeigers: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Vergleichen der Datenblockgröße des Datenblocks mit der in den Zuordnungskartendaten angegebenen Datenblockgröße für einen benachbarten Datenblock, der von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichern ist, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf eine Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, ansprechend auf eine Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, umfasst.
  33. Vorrichtung nach Anspruch 31, wobei der zumindest eine Teil der Metadaten die von der zumindest einen Knotenvorrichtung empfangene Angabe umfasst, dass der Datensatz partitionierte Daten umfasst.
  34. Vorrichtung nach Anspruch 31, wobei: jede Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, eine einzige Anforderung eines Zeigers zum Speichern aller auf die Knotenvorrichtung verteilten Datensatzteile erzeugen muss, und die Prozessorkomponente veranlasst wird, auf der Grundlage des Empfangs einer einzigen Anforderung eines Zeigers von jeder Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, festzustellen, dass alle Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei von allen Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, erzeugt worden sind.
  35. Vorrichtung nach Anspruch 31, wobei die Vorrichtung eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen umfasst.
  36. Vorrichtung nach Anspruch 31, wobei zum Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen am Speichern des Datensatzes innerhalb der Datendatei beteiligt sind, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe, ob jede Knotenvorrichtung von den mehreren Knotenvorrichtungen am Speichern des Datensatzes beteiligt ist.
  37. Vorrichtung nach Anspruch 31, wobei die Prozessorkomponente zum Speichern der Zuordnungskartendaten in der Datendatei veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Feststellen, ob die Größe der Zuordnungskartendaten eine vorgegebene Datengröße überschreitet, und ansprechend auf eine Feststellung, dass die Größe der Zuordnungskartendaten die vorgegebene Datengröße überschreitet: Unterteilen der Zuordnungskartendaten in eine oder mehr als eine Zuordnungskartenerweiterung, Speichern der einen oder mehr als einen Zuordnungskartenerweiterung innerhalb der Datendatei an Stellen, die zwischen den von Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, gespeicherten Datenblöcken verteilt sind, und Speichern einer Basiszuordnungskarte, welche einen oder mehr als einen Zeiger auf die Stelle jeder Zuordnungskartenerweiterung innerhalb der Datendatei umfasst, innerhalb der Datendatei.
  38. Vorrichtung nach Anspruch 37, wobei die Größe jeder Zuordnungskartenerweiterung, die innerhalb der Datendatei an einer Stelle gespeichert ist, die einer ersten der Zuordnungskartenerweiterungen folgt, doppelt so groß ist wie die Größe einer vorhergehenden Zuordnungskartenerweiterung.
  39. Vorrichtung nach Anspruch 31, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, wobei eine Angabe zu einer mit dem Datensatz auszuführenden Aufgabe den am Speichern des Datensatzes beteiligten Knotenvorrichtungen bereitgestellt wird, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen.
  40. Vorrichtung nach Anspruch 31, wobei jede gehashte Kennung einen ganzzahligen Wert umfasst, der von einem Hash-Wert abgeleitet wurde, welcher von einem Partitionsetikett genommen wurde, das eine der Partitionen von den mehreren Partitionen eindeutig identifiziert.
  41. Computerprogrammprodukt, das gegenständlich in einem nichtflüchtigen maschinenlesbaren Speichermedium verwirklicht ist, wobei das Computerprogrammprodukt Befehle aufweist, die in der Lage sind, eine Prozessorkomponente zu veranlassen, Operationen auszuführen, welche Folgende umfassen: Empfangen zumindest eines Teils der Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, von zumindest einer Knotenvorrichtung von mehreren Knotenvorrichtungen, Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen an einer Speicherung des Datensatzes als mehrere Datenblöcke innerhalb einer Datendatei, die von einer oder mehr als einer Speichervorrichtung gehalten wird, zu beteiligen sind, von den mehreren Knotenvorrichtungen, wobei: die Organisation der mehreren Datenblöcke innerhalb der Datendatei in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, Empfangen einer Anforderung eines Zeigers auf eine Stelle innerhalb der Datendatei, an der die Knotenvorrichtung zumindest einen Datensatzteil als einen Datenblock speichern soll, von jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung, ansprechend auf eine von der wenigstens einen Knotenvorrichtung empfangene Angabe, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, für jede von einer Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung eines Zeigers: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl innerhalb des Zuordnungskarteneintrags, welche eine Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, wobei jeder Datenunterblock einen Datensatzteil des Datensatzes, der von der Knotenvorrichtung zu speichern ist, umfasst, Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine gehashte Kennung, die von einem Partitionsetikett der Partition abgeleitet wurde, zu der der entsprechende Datensatzteil gehört, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, umfasst, und ansprechend auf das erfolgreiche Speichern aller Datenblöcke des Datensatzes innerhalb der Datendatei durch alle am Speichern des Datensatzes beteiligten Knotenvorrichtungen, Speichern der Zuordnungskartendaten in der Datendatei.
  42. Computerprogrammprodukt nach Anspruch 41, wobei ansprechend auf das Fehlen einer von der zumindest einen Knotenvorrichtung empfangenen Angabe, dass der Datensatz partitionierte Daten umfasst, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: für jede von einer Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung eines Zeigers: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Vergleichen der Datenblockgröße des Datenblocks mit der in den Zuordnungskartendaten angegebenen Datenblockgröße für einen benachbarten Datenblock, der von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichern ist, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf eine Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, ansprechend auf eine Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, umfasst.
  43. Computerprogrammprodukt nach Anspruch 41, wobei der zumindest eine Teil der Metadaten die von der zumindest einen Knotenvorrichtung empfangene Angabe umfasst, dass der Datensatz partitionierte Daten umfasst.
  44. Computerprogrammprodukt nach Anspruch 41, wobei: jede Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, eine einzige Anforderung eines Zeigers zum Speichern aller auf die Knotenvorrichtung verteilten Datensatzteile erzeugen muss, und die Prozessorkomponente veranlasst wird, auf der Grundlage des Empfangs einer einzigen Anforderung eines Zeigers von jeder Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, festzustellen, dass alle Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei von allen Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, erzeugt worden sind.
  45. Computerprogrammprodukt nach Anspruch 41, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Anfordern eines Zeigers auf eine Stelle innerhalb der Datendatei, an der zumindest ein Datensatzteil als ein Datenblock zu speichern ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen, Erzeugen eines Zeigers ansprechend auf die Anforderung und Speichern des wenigstens einen Datensatzteils an einer Stelle innerhalb der Datendatei, die durch den Zeiger angegeben wird, zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils durch eine andere Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen.
  46. Computerprogrammprodukt nach Anspruch 41, wobei zum Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen am Speichern des Datensatzes innerhalb der Datendatei beteiligt sind, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: wiederholtes Empfangen von Angaben zum Status von jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen und wiederholtes Aktualisieren einer gespeicherten Angabe, ob jede Knotenvorrichtung von den mehreren Knotenvorrichtungen am Speichern des Datensatzes beteiligt ist.
  47. Computerprogrammprodukt nach Anspruch 41, wobei die Prozessorkomponente zum Speichern der Zuordnungskartendaten in der Datendatei veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Feststellen, ob die Größe der Zuordnungskartendaten eine vorgegebene Datengröße überschreitet, und ansprechend auf eine Feststellung, dass die Größe der Zuordnungskartendaten die vorgegebene Datengröße überschreitet: Unterteilen der Zuordnungskartendaten in eine oder mehr als eine Zuordnungskartenerweiterung, Speichern der einen oder mehr als einen Zuordnungskartenerweiterung innerhalb der Datendatei an Stellen, die zwischen den von Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, gespeicherten Datenblöcken verteilt sind, und Speichern einer Basiszuordnungskarte, welche einen oder mehr als einen Zeiger auf die Stelle jeder Zuordnungskartenerweiterung innerhalb der Datendatei umfasst, innerhalb der Datendatei.
  48. Computerprogrammprodukt nach Anspruch 47, wobei die Größe jeder Zuordnungskartenerweiterung, die innerhalb der Datendatei an einer Stelle gespeichert ist, die einer ersten der Zuordnungskartenerweiterungen folgt, doppelt so groß ist wie die Größe einer vorhergehenden Zuordnungskartenerweiterung.
  49. Computerprogrammprodukt nach Anspruch 41, wobei die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe zu einer mit dem Datensatz auszuführenden Aufgabe zu jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung, um es zumindest einer ersten am Speichern des Datensatzes beteiligten Knotenvorrichtung zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und Ausführen der Aufgabe mit einem zweiten Datensatzteil des Datensatzes als eine zweite am Speichern des Datensatzes beteiligte Knotenvorrichtung zumindest teilweise parallel zu der Ausführung der Aufgabe durch die erste Knotenvorrichtung.
  50. Computerprogrammprodukt nach Anspruch 41, wobei jede gehashte Kennung einen ganzzahligen Wert umfasst, der von einem Hash-Wert abgeleitet wurde, welcher von einem Partitionsetikett genommen wurde, das eine der Partitionen von den mehreren Partitionen eindeutig identifiziert.
  51. Computerimplementiertes Verfahren, welches Folgendes umfasst: Empfangen zumindest eines Teils der Metadaten, welche die Organisation von Daten innerhalb eines Datensatzes angeben, von zumindest einer Knotenvorrichtung von mehreren Knotenvorrichtungen über ein Netz, Empfangen von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen an einer Speicherung des Datensatzes als mehrere Datenblöcke innerhalb einer Datendatei, die von einer oder mehr als einer Speichervorrichtung gehalten wird, zu beteiligen sind, von den mehreren Knotenvorrichtungen über das Netz, wobei: die Organisation der mehreren Datenblöcke innerhalb der Datendatei in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, Empfangen einer Anforderung eines Zeigers auf eine Stelle innerhalb der Datendatei, an der die Knotenvorrichtung zumindest einen Datensatzteil als einen Datenblock speichern soll, von jeder am Speichern des Datensatzes beteiligten Knotenvorrichtung über das Netz, ansprechend auf eine von der zumindest einen Knotenvorrichtung über das Netz empfangene Angabe, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf eine einzige Knotenvorrichtung verteilbar sind, und wobei jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht, für jede Anforderung eines Zeigers, die von einer am Speichern des Datensatzes beteiligten Knotenvorrichtung empfangen wird: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl innerhalb des Zuordnungskarteneintrags, welche eine Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, wobei jeder Datenunterblock einen Datensatzteil des Datensatzes, der von der Knotenvorrichtung zu speichern ist, umfasst, Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine gehashte Kennung, die von einem Partitionsetikett der Partition abgeleitet wurde, zu der der entsprechende Datensatzteil gehört, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung über das Netz, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, umfasst, und ansprechend auf das erfolgreiche Speichern aller Datenblöcke des Datensatzes innerhalb der Datendatei durch alle am Speichern des Datensatzes beteiligten Knotenvorrichtungen, Speichern der Zuordnungskartendaten in der Datendatei.
  52. Computerimplementiertes Verfahren nach Anspruch 51, welches ansprechend auf das Fehlen einer von der zumindest einen Knotenvorrichtung empfangenen Angabe, dass der Datensatz partitionierte Daten umfasst, Folgendes umfasst: für jede von einer Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, empfangene Anforderung eines Zeigers: Bestimmen der Stelle innerhalb der Datendatei, an der die Knotenvorrichtung den Datenblock speichern soll, Vergleichen der Datenblockgröße des Datenblocks mit der in den Zuordnungskartendaten angegebenen Datenblockgröße für einen benachbarten Datenblock, der von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichern ist, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf eine Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, ansprechend auf eine Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, umfasst, und Bereitstellen eines Zeigers für die Knotenvorrichtung über das Netz, wobei der Zeiger eine Angabe zur Stelle, an der die Knotenvorrichtung den Datenblock in der Datendatei speichern soll, umfasst.
  53. Computerimplementiertes Verfahren nach Anspruch 51, wobei der zumindest eine Teil der Metadaten die von der zumindest einen Knotenvorrichtung empfangene Angabe umfasst, dass der Datensatz partitionierte Daten umfasst.
  54. Computerimplementiertes Verfahren nach Anspruch 51, wobei: jede Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, eine einzige Anforderung eines Zeigers zum Speichern aller auf die Knotenvorrichtung verteilten Datensatzteile erzeugen muss, und beim Verfahren auf der Grundlage des Empfangs einer einzigen Anforderung eines Zeigers von jeder Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, festgestellt wird, dass alle Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei von allen Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, erzeugt worden sind.
  55. Computerimplementiertes Verfahren nach Anspruch 51, welches Folgendes umfasst: Anfordern eines Zeigers auf eine Stelle innerhalb der Datendatei, an der zumindest ein Datensatzteil als ein Datenblock zu speichern ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen, Erzeugen eines Zeigers ansprechend auf die Anforderung und Speichern des wenigstens einen Datensatzteils an einer Stelle innerhalb der Datendatei, die durch den Zeiger angegeben wird, zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils durch eine andere Knotenvorrichtung, die am Speichern des Datensatzes beteiligt ist, als eine der am Speichern des Datensatzes beteiligten Knotenvorrichtungen.
  56. Computerimplementiertes Verfahren nach Anspruch 51, wobei beim Empfang von Angaben, welche Knotenvorrichtungen von den mehreren Knotenvorrichtungen am Speichern des Datensatzes innerhalb der Datendatei beteiligt sind, Folgendes ausgeführt wird: wiederholtes Empfangen von Angaben zum Status von jeder Knotenvorrichtung von den mehreren Knotenvorrichtungen über das Netz und wiederholtes Aktualisieren einer gespeicherten Angabe, ob jede Knotenvorrichtung von den mehreren Knotenvorrichtungen am Speichern des Datensatzes beteiligt ist.
  57. Computerimplementiertes Verfahren nach Anspruch 51, wobei das Speichern der Zuordnungskartendaten in der Datendatei Folgendes umfasst: Feststellen, ob die Größe der Zuordnungskartendaten eine vorgegebene Datengröße überschreitet, und ansprechend auf eine Feststellung, dass die Größe der Zuordnungskartendaten die vorgegebene Datengröße überschreitet: Unterteilen der Zuordnungskartendaten in eine oder mehrere Zuordnungskartenerweiterungen, Speichern der einen oder mehr als einen Zuordnungskartenerweiterung innerhalb der Datendatei an Stellen, die zwischen den von Knotenvorrichtungen, die am Speichern des Datensatzes beteiligt sind, gespeicherten Datenblöcken verteilt sind, und Speichern einer Basiszuordnungskarte, welche einen oder mehr als einen Zeiger auf die Stelle jeder Zuordnungskartenerweiterung innerhalb der Datendatei umfasst, innerhalb der Datendatei.
  58. Computerimplementiertes Verfahren nach Anspruch 57, wobei die Größe jeder Zuordnungskartenerweiterung, die innerhalb der Datendatei an einer Stelle gespeichert ist, die einer ersten der Zuordnungskartenerweiterungen folgt, doppelt so groß ist wie die Größe einer vorhergehenden Zuordnungskartenerweiterung.
  59. Computerimplementiertes Verfahren nach Anspruch 51, wobei eine Angabe zu einer mit dem Datensatz auszuführenden Aufgabe den am Speichern des Datensatzes beteiligten Knotenvorrichtungen bereitgestellt wird, um es zumindest einer ersten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem ersten Datensatzteil des Datensatzes auszuführen, und es zumindest einer zweiten Knotenvorrichtung von den mehreren Knotenvorrichtungen zu ermöglichen, die Aufgabe mit einem zweiten Datensatzteil des Datensatzes zumindest teilweise parallel auszuführen.
  60. Computerimplementiertes Verfahren nach Anspruch 51, wobei jede gehashte Kennung einen ganzzahligen Wert umfasst, der von einem Hash-Wert abgeleitet wurde, welcher von einem Partitionsetikett genommen wurde, das eine der Partitionen von den mehreren Partitionen eindeutig identifiziert.
  61. Vorrichtung mit einer Prozessorkomponente und einem Speicher zum Speichern von Befehlen, die, wenn sie durch die Prozessorkomponente ausgeführt werden, die Prozessorkomponente veranlassen, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe für eine Steuervorrichtung, dass sie gegenwärtig verfügbar ist, um am Ausführen einer Verarbeitungsaufgabe als eine Knotenvorrichtung von mehreren Knotenvorrichtungen teilzunehmen, Empfangen einer Angabe zur Verarbeitungsaufgabe, die mit einem oder mehr als einem Datensatzteil von mehreren Datensatzteilen eines Datensatzes auszuführen ist, von der Steuervorrichtung, wobei der Datensatz Daten umfasst, die in einer in Metadaten angegebenen Weise organisiert sind, Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Bereitstellen einer Anforderung eines Zeigers auf eine Stelle, an der der eine oder mehr als eine Datensatzteil als ein Datenblock von mehreren Datenblöcken innerhalb einer von einer oder mehr als einer Speichervorrichtung gehaltenen Datendatei zu speichern ist, für die Steuervorrichtung, wobei: die mehreren Datenblöcke innerhalb der Datendatei in einer Art organisiert sind, die in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, ansprechend auf eine Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf lediglich eine einzige Knotenvorrichtung verteilbar sind, jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht und die Verarbeitungsaufgabe mit den Daten innerhalb jeder Partition unabhängig von den Daten innerhalb jeder anderen Partition von den mehreren Partitionen ausgeführt werden kann, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: für jeden Datensatzteil von dem einen oder mehr als einen Datensatzteil: Aufnehmen einer Datenunterblockgröße, welche die Größe des Datensatzteils angibt, in die Anforderung, Ableiten einer gehashten Kennung eines Partitionsetiketts der Partition, zu der der Datensatzteil gehört, von den mehreren Partitionen und Aufnehmen der gehashten Kennung in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und nach dem Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Speichern jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil als einen Datenunterblock innerhalb des Datenblocks beginnend mit der Stelle innerhalb der Datendatei, und ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Ableiten einer Summe von Größen jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil, Aufnehmen der Summe der Größen als Datenblockgröße des Datenblocks in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und nach dem Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Speichern des einen oder mehr als einen Datensatzteils gemeinsam als den Datenblock an der Stelle innerhalb der Datendatei.
  62. Vorrichtung nach Anspruch 61, wobei: die Verarbeitungsaufgabe die Erzeugung des Datensatzes als eine Ausgabe umfasst und die Prozessorkomponente veranlasst wird, zumindest einen Teil der Metadaten zu erzeugen und zumindest den Teil der Metadaten der Steuervorrichtung bereitzustellen.
  63. Vorrichtung nach Anspruch 61, wobei: die Verarbeitungsaufgabe die Verwendung des Datensatzes als Eingabe umfasst und die Prozessorkomponente veranlasst wird, die Metadaten von der Steuervorrichtung zu empfangen.
  64. Vorrichtung nach Anspruch 61, wobei: die Prozessorkomponente mehrere Prozessorkerne umfasst und die Prozessorkomponente veranlasst wird, die Verarbeitungsaufgabe mit jedem Datensatzteil von dem einen oder mehr als einen Datensatzteil unter Verwendung eines getrennten der mehreren Prozessorkerne zumindest teilweise parallel auszuführen.
  65. Vorrichtung nach Anspruch 64, wobei die Prozessorkomponente veranlasst wird, die Verarbeitungsaufgabe mit zumindest einem Datensatzteil von dem einen oder mehr als einen Datensatzteil zumindest teilweise parallel zu dem Ausführen der Verarbeitungsaufgabe mit zumindest einem anderen Datensatzteil von den mehreren Datensatzteilen durch wenigstens eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen auszuführen.
  66. Vorrichtung nach Anspruch 64, wobei: jede Knotenvorrichtung von den mehreren Knotenvorrichtungen eine einzige Anforderung eines Zeigers für alle Datensatzteile erzeugen muss, womit die Verarbeitungsaufgabe von jeder Knotenvorrichtung ausgeführt wird, und die Prozessorkomponente veranlasst wird, die Anforderung zu erzeugen, die allen Datensatzteilen von dem einen oder mehr als einen Datensatzteil, womit die Prozessorkomponente die Verarbeitungsaufgabe ausführt, zuzuordnen ist.
  67. Vorrichtung nach Anspruch 61, wobei die Prozessorkomponente veranlasst wird, den einen oder mehr als einen Datensatzteil innerhalb des Datenblocks innerhalb der Datendatei zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen zu speichern.
  68. Vorrichtung nach Anspruch 67, wobei die Prozessorkomponente veranlasst wird, ansprechend auf den Abschluss des Speicherns des einen oder mehr als einen Datensatzteils innerhalb des Datenblocks innerhalb der Datendatei eine Angabe zum Abschluss des Speicherns der Steuervorrichtung bereitzustellen.
  69. Vorrichtung nach Anspruch 61, wobei: die Knotenvorrichtung eine von jeglichen von der einen oder mehr als einen Speichervorrichtung getrennte und abgesetzte Vorrichtung umfasst, die Knotenvorrichtung die als Steuereinrichtung innerhalb der Knotenvorrichtung implementierte Steuervorrichtung umfasst und die Steuereinrichtung eine Steuereinrichtungsprozessorkomponente und einen Steuereinrichtungsspeicher zum Speichern von Steuereinrichtungsbefehlen umfasst, die, wenn sie von der Steuereinrichtungsprozessorkomponente ausgeführt werden, die Steuereinrichtungsprozessorkomponente veranlassen, Operationen auszuführen, welche Folgende umfassen: Bestimmen der Stelle innerhalb der Datendatei, an der der durch den angeforderten Zeiger angegebene Datenblock zu speichern ist, und Bereitstellen des angeforderten Zeigers für die Prozessorkomponente.
  70. Vorrichtung nach Anspruch 69, wobei die Steuereinrichtungsprozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: ansprechend auf die Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst: Erzeugen eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, Erzeugen einer Datenunterblockanzahl, welche eine Anzahl der von der Knotenvorrichtung innerhalb des Datenblocks zu speichernden Datenunterblöcke angibt, innerhalb des Zuordnungskarteneintrags, wobei jeder Datenunterblock einen Datensatzteil von dem einen oder mehr als einen Datensatzteil umfasst, und Erzeugen eines getrennten Zuordnungskartenuntereintrags für jeden der Datenunterblöcke innerhalb des Zuordnungskarteneintrags, wobei jeder Zuordnungskartenuntereintrag eine Unterblockgröße, welche die Größe eines entsprechenden Datensatzteils angibt, und eine von einem Partitionsetikett der Partition, zu der der entsprechende Datensatzteil gehört, abgeleitete Hash-Kennung umfasst, und Speichern der Zuordnungskartendaten in der Datendatei ansprechend auf die Erzeugung aller Zeiger für das Speichern aller Datensatzteile des Datensatzes in der Datendatei durch alle von den mehreren Knotenvorrichtungen.
  71. Vorrichtung nach Anspruch 69, wobei die Steuereinrichtungsprozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst: Vergleichen der Datenblockgröße des Datenblocks mit der Datenblockgröße eines von einer anderen Knotenvorrichtung von den mehreren Knotenvorrichtungen an einer benachbarten Stelle innerhalb der Datendatei zu speichernden benachbarten Datenblocks, um eine Übereinstimmung zwischen den beiden Datenblockgrößen zu erkennen, ansprechend auf die Erkennung einer Übereinstimmung zwischen den beiden Datenblockgrößen, Inkrementieren einer Datenblockanzahl eines Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem benachbarten Datenblock entspricht, und ansprechend auf die Erkennung eines Fehlens einer Übereinstimmung zwischen den beiden Datenblockgrößen, Erzeugen eines neuen Zuordnungskarteneintrags innerhalb der Zuordnungskartendaten, welcher dem Datenblock entspricht, wobei der neue Zuordnungskarteneintrag eine Datenblockanzahl, welche eine Entsprechung mit einem einzigen Datenblock angibt, und eine Datenblockgröße, welche die Größe des Datenblocks angibt, umfasst.
  72. Computerprogrammprodukt, das gegenständlich in einem nichtflüchtigen maschinenlesbaren Speichermedium verwirklicht ist, wobei das Computerprogrammprodukt Befehle aufweist, die in der Lage sind, eine Prozessorkomponente zu veranlassen, Operationen auszuführen, welche Folgende umfassen: Bereitstellen einer Angabe für eine Steuervorrichtung, dass sie gegenwärtig verfügbar ist, um am Ausführen einer Verarbeitungsaufgabe als eine Knotenvorrichtung von mehreren Knotenvorrichtungen teilzunehmen, Empfangen einer Angabe zur Verarbeitungsaufgabe, die mit einem oder mehr als einem Datensatzteil von mehreren Datensatzteilen eines Datensatzes auszuführen ist, von der Steuervorrichtung, wobei der Datensatz Daten umfasst, die in einer in Metadaten angegebenen Weise organisiert sind, Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Bereitstellen einer Anforderung eines Zeigers auf eine Stelle, an der der eine oder mehr als eine Datensatzteil als ein Datenblock von mehreren Datenblöcken innerhalb einer von einer oder mehr als einer Speichervorrichtung gehaltenen Datendatei zu speichern ist, für die Steuervorrichtung, wobei: die mehreren Datenblöcke innerhalb der Datendatei in einer Art organisiert sind, die in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, ansprechend auf eine Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf lediglich eine einzige Knotenvorrichtung verteilbar sind, jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht und die Verarbeitungsaufgabe mit den Daten innerhalb jeder Partition unabhängig von den Daten innerhalb jeder anderen Partition von den mehreren Partitionen ausgeführt werden kann, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: für jeden Datensatzteil von dem einen oder mehr als einen Datensatzteil: Aufnehmen einer Datenunterblockgröße, welche die Größe des Datensatzteils angibt, in die Anforderung, Ableiten einer gehashten Kennung eines Partitionsetiketts der Partition, zu der der Datensatzteil gehört, von den mehreren Partitionen und Aufnehmen der gehashten Kennung in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und nach dem Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Speichern jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil als einen Datenunterblock innerhalb des Datenblocks beginnend mit der Stelle innerhalb der Datendatei, und ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst, die Prozessorkomponente veranlasst wird, Operationen auszuführen, welche Folgende umfassen: Ableiten einer Summe von Größen jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil, Aufnehmen der Summe der Größen als Datenblockgröße des Datenblocks in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und nach dem Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Speichern des einen oder mehr als einen Datensatzteils gemeinsam als den Datenblock an der Stelle innerhalb der Datendatei.
  73. Computerprogrammprodukt nach Anspruch 72, wobei: die Verarbeitungsaufgabe die Erzeugung des Datensatzes als eine Ausgabe umfasst und die Prozessorkomponente veranlasst wird, zumindest einen Teil der Metadaten zu erzeugen und zumindest den Teil der Metadaten der Steuervorrichtung bereitzustellen.
  74. Computerprogrammprodukt nach Anspruch 72, wobei: die Verarbeitungsaufgabe die Verwendung des Datensatzes als Eingabe umfasst und die Prozessorkomponente veranlasst wird, die Metadaten von der Steuervorrichtung zu empfangen.
  75. Computerprogrammprodukt nach Anspruch 72, wobei die Prozessorkomponente veranlasst wird, die Verarbeitungsaufgabe mit jedem Datensatzteil von dem einen oder mehr als einen Datensatzteil unter Verwendung eines getrennten von mehreren Prozessorkernen der Prozessorkomponente zumindest teilweise parallel auszuführen.
  76. Computerprogrammprodukt nach Anspruch 75, wobei die Prozessorkomponente veranlasst wird, die Verarbeitungsaufgabe mit zumindest einem Datensatzteil von dem einen oder mehr als einen Datensatzteil zumindest teilweise parallel zu dem Ausführen der Verarbeitungsaufgabe mit zumindest einem anderen Datensatzteil von den mehreren Datensatzteilen durch wenigstens eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen auszuführen.
  77. Computerprogrammprodukt nach Anspruch 75, wobei: jede Knotenvorrichtung von den mehreren Knotenvorrichtungen eine einzige Anforderung eines Zeigers für alle Datensatzteile erzeugen muss, womit die Verarbeitungsaufgabe von jeder Knotenvorrichtung ausgeführt wird, und die Prozessorkomponente veranlasst wird, die Anforderung zu erzeugen, die allen Datensatzteilen von dem einen oder mehr als einen Datensatzteil, womit die Prozessorkomponente die Verarbeitungsaufgabe ausführt, zuzuordnen ist.
  78. Computerprogrammprodukt nach Anspruch 73, wobei die Prozessorkomponente veranlasst wird, den einen oder mehr als einen Datenteil innerhalb des Datenblocks innerhalb der Datendatei zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen zu speichern.
  79. Computerprogrammprodukt nach Anspruch 78, wobei die Prozessorkomponente veranlasst wird, ansprechend auf den Abschluss des Speicherns des einen oder mehr als einen Datensatzteils innerhalb des Datenblocks innerhalb der Datendatei eine Angabe zum Abschluss des Speicherns der Steuervorrichtung bereitzustellen.
  80. Computerimplementiertes Verfahren, welches Folgendes umfasst: Bereitstellen einer Angabe für eine Steuervorrichtung, dass sie gegenwärtig verfügbar ist, um am Ausführen einer Verarbeitungsaufgabe als eine Knotenvorrichtung von mehreren Knotenvorrichtungen teilzunehmen, Empfangen einer Angabe zur Verarbeitungsaufgabe, die mit einem oder mehr als einem Datensatzteil von mehreren Datensatzteilen eines Datensatzes auszuführen ist, von der Steuervorrichtung, wobei der Datensatz Daten umfasst, die in einer in Metadaten angegebenen Weise organisiert sind, Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Bereitstellen einer Anforderung eines Zeigers auf eine Stelle, an der der eine oder mehr als eine Datensatzteil als ein Datenblock von mehreren Datenblöcken innerhalb einer von einer oder mehr als einer Speichervorrichtung gehaltenen Datendatei zu speichern ist, für die Steuervorrichtung, wobei: die mehreren Datenblöcke innerhalb der Datendatei in einer Art organisiert sind, die in Zuordnungskartendaten angegeben ist, welche mehrere Zuordnungskarteneinträge umfassen, und jeder Zuordnungskarteneintrag von den mehreren Zuordnungskarteneinträgen einem oder mehr als einem Datenblock von den mehreren Datenblöcken entspricht, ansprechend auf eine Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst, wobei die Daten innerhalb des Datensatzes zu mehreren Partitionen organisiert sind, die jeweils auf lediglich eine einzige Knotenvorrichtung verteilbar sind, jeder Zuordnungskarteneintrag einem einzigen Datenblock entspricht und die Verarbeitungsaufgabe mit den Daten innerhalb jeder Partition unabhängig von den Daten innerhalb jeder anderen Partition von den mehreren Partitionen ausgeführt werden kann, das Verfahren Folgendes umfasst: für jeden Datensatzteil von dem einen oder mehr als einen Datensatzteil: Aufnehmen einer Datenunterblockgröße, welche die Größe des Datensatzteils angibt, in die Anforderung, Ableiten einer gehashten Kennung eines Partitionsetiketts der Partition, zu der der Datensatzteil gehört, von den mehreren Partitionen und Aufnehmen der gehashten Kennung in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung, und nach dem Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Speichern jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil als einen Datenunterblock innerhalb des Datenblocks beginnend mit der Stelle innerhalb der Datendatei, und ansprechend auf das Fehlen einer Angabe in den Metadaten, dass der Datensatz partitionierte Daten umfasst: Ableiten einer Summe von Größen jedes Datensatzteils von dem einen oder mehr als einen Datensatzteil, Aufnehmen der Summe der Größen als Datenblockgröße des Datenblocks in die Anforderung, Empfangen des angeforderten Zeigers, der die Stelle innerhalb der Datendatei angibt, an der der Datenblock zu speichern ist, von der Steuervorrichtung und nach dem Ausführen der Verarbeitungsaufgabe mit dem einen oder mehr als einen Datensatzteil, Speichern des einen oder mehr als einen Datensatzteils gemeinsam als den Datenblock an der Stelle innerhalb der Datendatei.
  81. Computerimplementiertes Verfahren nach Anspruch 80, wobei: die Verarbeitungsaufgabe die Erzeugung des Datensatzes als eine Ausgabe umfasst und beim Verfahren zumindest ein Teil der Metadaten erzeugt wird und zumindest ein Teil der Metadaten der Steuervorrichtung bereitgestellt wird.
  82. Computerimplementiertes Verfahren nach Anspruch 80, wobei: die Verarbeitungsaufgabe die Verwendung des Datensatzes als Eingabe umfasst und beim Verfahren die Metadaten von der Steuervorrichtung empfangen werden.
  83. Computerimplementiertes Verfahren nach Anspruch 80, wobei die Verarbeitungsaufgabe mit jedem Datensatzteil von dem einen oder mehr als einen Datensatzteil unter Verwendung eines getrennten von mehreren Prozessorkernen einer Prozessorkomponente der Knotenvorrichtung zumindest teilweise parallel ausgeführt wird.
  84. Computerimplementiertes Verfahren nach Anspruch 83, wobei die Verarbeitungsaufgabe mit wenigstens einem Datensatzteil von dem einen oder mehr als einen Datensatzteil zumindest teilweise parallel zu dem Ausführen der Verarbeitungsaufgabe mit wenigstens einem anderen Datensatzteil von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen ausgeführt wird.
  85. Computerimplementiertes Verfahren nach Anspruch 83, wobei: jede Knotenvorrichtung von den mehreren Knotenvorrichtungen eine einzige Anforderung eines Zeigers für alle Datensatzteile erzeugen muss, womit die Verarbeitungsaufgabe von jeder Knotenvorrichtung ausgeführt wird, und beim Verfahren die Anforderung erzeugt wird, die allen Datensatzteilen von dem einen oder mehr als einen Datensatzteil, womit die Prozessorkomponente die Verarbeitungsaufgabe ausführt, zuzuordnen ist.
  86. Computerimplementiertes Verfahren nach Anspruch 80, wobei der eine oder mehr als eine Datenteil innerhalb des Datenblocks innerhalb der Datendatei zumindest teilweise parallel zu dem Speichern zumindest eines anderen Datensatzteils von den mehreren Datensatzteilen durch zumindest eine andere Knotenvorrichtung von den mehreren Knotenvorrichtungen gespeichert wird.
  87. Computerimplementiertes Verfahren nach Anspruch 86, wobei ansprechend auf den Abschluss des Speicherns des einen oder mehr als einen Datensatzteils innerhalb des Datenblocks innerhalb der Datendatei eine Angabe zum Abschluss des Speicherns der Steuervorrichtung bereitgestellt wird.
  88. Vorrichtung nach Anspruch 61, wobei: die mehreren Datenblöcke innerhalb der Datendatei in der in den Zuordnungskartendaten angegebenen Art organisiert sind, die durch die Steuervorrichtung anhand von in der Anforderung und in entsprechenden Anforderungen von anderen Knotenvorrichtungen von den mehreren Knotenvorrichtungen bereitgestellten Informationen zu erzeugen sind, die Zuordnungskartendaten von der Steuervorrichtung mit der Datendatei zu speichern sind und die Zuordnungskartendaten mehrere Zuordnungskarteneinträge umfassen.
  89. Vorrichtung nach Anspruch 61, wobei jeder Partition von den mehreren Partitionen lediglich ein einziges Partitionsetikett zugeordnet ist.
  90. Vorrichtung nach Anspruch 61, wobei die Daten innerhalb des Datensatzes zu den mehreren Partitionen organisiert sind, die jeweils auf lediglich die einzige Knotenvorrichtung verteilbar sind, um zu vermeiden, dass für das Ausführen der Verarbeitungsaufgabe mit den Daten innerhalb einer jeglichen Partition von den mehreren Partitionen ein Austausch der Daten innerhalb der Partition zwischen zwei oder mehr Knoten von den mehreren Knoten erforderlich ist.
DE112016001075.3T 2015-07-27 2016-07-27 Verteiltes speichern und abrufen von datensätzen Active DE112016001075B4 (de)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201562197514P 2015-07-27 2015-07-27
US201562197519P 2015-07-27 2015-07-27
US62/197,514 2015-07-27
US62/197,519 2015-07-27
US15/220,182 US9811524B2 (en) 2015-07-27 2016-07-26 Distributed data set storage and retrieval
US15/220,192 2016-07-26
US15/220,034 2016-07-26
US15/220,034 US9619148B2 (en) 2015-07-27 2016-07-26 Distributed data set storage and retrieval
US15/220,182 2016-07-26
US15/220,192 US9703789B2 (en) 2015-07-27 2016-07-26 Distributed data set storage and retrieval
PCT/US2016/044309 WO2017019794A1 (en) 2015-07-27 2016-07-27 Distributed data set storage and retrieval

Publications (2)

Publication Number Publication Date
DE112016001075T5 true DE112016001075T5 (de) 2018-01-04
DE112016001075B4 DE112016001075B4 (de) 2024-05-23

Family

ID=57882504

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016001075.3T Active DE112016001075B4 (de) 2015-07-27 2016-07-27 Verteiltes speichern und abrufen von datensätzen

Country Status (8)

Country Link
US (4) US9811524B2 (de)
CN (1) CN108701076B (de)
CA (1) CA2981521C (de)
DE (1) DE112016001075B4 (de)
HK (1) HK1259159A1 (de)
IL (1) IL254745B (de)
SE (3) SE541999C2 (de)
WO (1) WO2017019794A1 (de)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811524B2 (en) 2015-07-27 2017-11-07 Sas Institute Inc. Distributed data set storage and retrieval
US9946718B2 (en) 2015-07-27 2018-04-17 Sas Institute Inc. Distributed data set encryption and decryption
US10929417B2 (en) * 2015-09-11 2021-02-23 International Business Machines Corporation Transforming and loading data utilizing in-memory processing
US10784901B2 (en) 2015-11-12 2020-09-22 Qualcomm Incorporated Puncturing for structured low density parity check (LDPC) codes
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10324782B1 (en) 2016-03-24 2019-06-18 Emc Corporation Hiccup management in a storage array
US10101934B1 (en) 2016-03-24 2018-10-16 Emc Corporation Memory allocation balancing for storage systems
US10705907B1 (en) 2016-03-24 2020-07-07 EMC IP Holding Company LLC Data protection in a heterogeneous random access storage array
US10291354B2 (en) 2016-06-14 2019-05-14 Qualcomm Incorporated High performance, flexible, and compact low-density parity-check (LDPC) code
US11240111B2 (en) * 2016-06-29 2022-02-01 Nicira, Inc. Analysis of simultaneous multi-point packet capture and display of the analysis
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US10726009B2 (en) 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US12013895B2 (en) 2016-09-26 2024-06-18 Splunk Inc. Processing data using containerized nodes in a containerized scalable environment
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US10152371B1 (en) * 2016-09-30 2018-12-11 EMC IP Holding Company LLC End-to-end data protection for distributed storage
US10223008B1 (en) 2016-09-30 2019-03-05 EMC IP Holding Company LLC Storage array sizing for compressed applications
US10255172B1 (en) 2016-09-30 2019-04-09 EMC IP Holding Company LLC Controlled testing using code error injection
US10447763B2 (en) * 2016-12-08 2019-10-15 Nanning Fugui Precision Industrial Co., Ltd. Distributed storage method and system
US10909173B2 (en) * 2016-12-09 2021-02-02 The Nielsen Company (Us), Llc Scalable architectures for reference signature matching and updating
US10921991B1 (en) 2016-12-20 2021-02-16 Amazon Technologies, Inc. Rule invalidation for a block store management system
US11507283B1 (en) 2016-12-20 2022-11-22 Amazon Technologies, Inc. Enabling host computer systems to access logical volumes by dynamic updates to data structure rules
US10268593B1 (en) 2016-12-20 2019-04-23 Amazon Technologies, Inc. Block store managamement using a virtual computing system service
US10185507B1 (en) * 2016-12-20 2019-01-22 Amazon Technologies, Inc. Stateless block store manager volume reconstruction
US10809920B1 (en) 2016-12-20 2020-10-20 Amazon Technologies, Inc. Block store management for remote storage systems
WO2018200091A1 (en) * 2017-04-27 2018-11-01 Thomson Reuters Global Resources Unlimited Company Systems and methods for distributed data mapping
TWI644229B (zh) * 2017-05-04 2018-12-11 慧榮科技股份有限公司 採加密技術之數據中心與數據中心操作方法
US9870508B1 (en) * 2017-06-01 2018-01-16 Unveiled Labs, Inc. Securely authenticating a recording file from initial collection through post-production and distribution
US10312939B2 (en) 2017-06-10 2019-06-04 Qualcomm Incorporated Communication techniques involving pairwise orthogonality of adjacent rows in LPDC code
CA3213857A1 (en) 2017-06-14 2018-12-20 Sas Institute Inc. Distributed data set encryption and decryption
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US11144613B2 (en) * 2017-09-29 2021-10-12 Blackberry Limited Platform-independent publish-subscribe
US11170000B2 (en) * 2017-10-20 2021-11-09 Intuit Inc. Parallel map and reduce on hash chains
US10866806B2 (en) * 2017-11-14 2020-12-15 Nvidia Corporation Uniform register file for improved resource utilization
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
US11487941B2 (en) * 2018-05-21 2022-11-01 State Street Corporation Techniques for determining categorized text
WO2019231761A1 (en) * 2018-05-31 2019-12-05 Secturion Systems, Inc. Locally-stored remote block data integrity
CN108776634B (zh) * 2018-06-07 2021-10-12 北京云测信息技术有限公司 机柜环境异常处理方法及装置
US10552739B1 (en) * 2018-10-15 2020-02-04 Sas Institute Inc. Intelligent data curation
US11604786B2 (en) * 2019-04-26 2023-03-14 EMC IP Holding Company LLC Method and system for processing unstable writes in a clustered file system
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
EP3983922A1 (de) * 2019-06-14 2022-04-20 Ailia SA Verfahren zur ausführung einer instanz eines intelligenten kontrakts mittels einer blockchain
US10826801B1 (en) 2019-07-31 2020-11-03 Bank Of America Corporation Multi-level data channel and inspection architectures
US11115310B2 (en) 2019-08-06 2021-09-07 Bank Of America Corporation Multi-level data channel and inspection architectures having data pipes in parallel connections
US11470046B2 (en) 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
CN110837516A (zh) * 2019-11-07 2020-02-25 恩亿科(北京)数据科技有限公司 数据割接方法、装置、计算机设备和可读存储介质
CA3093681C (en) 2019-11-26 2021-11-09 Citrix Systems, Inc. Document storage and management
US11221973B2 (en) * 2019-12-20 2022-01-11 Micron Technology, Inc. Parallel iterator for machine learning frameworks
CN111241195B (zh) * 2020-01-02 2023-03-21 腾讯云计算(北京)有限责任公司 分布式系统的数据库处理方法、装置、设备及存储介质
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
CN111522846B (zh) * 2020-04-09 2023-08-22 浙江邦盛科技股份有限公司 一种基于时序中间态数据结构的数据聚合方法
WO2021243594A1 (zh) * 2020-06-03 2021-12-09 铨鸿资讯有限公司 基于集体验证的部分数据验证方法
CN114254034B (zh) * 2020-09-22 2024-05-28 中车株洲电力机车研究所有限公司 基于Redis集群的风电监控对象信息和实时数据存储管理方法
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
CN112751926B (zh) * 2020-12-29 2023-05-26 北京浪潮数据技术有限公司 一种集群中工作节点的管理方法、系统及相关装置
US11483412B2 (en) 2020-12-30 2022-10-25 Blackberry Limited Method for marshalling events in a publish-subscribe system
EP4348437A1 (de) * 2021-05-28 2024-04-10 Xero Limited Verfahren und systeme zur webbasierten datenpräsentation
CN114024979A (zh) * 2021-10-25 2022-02-08 深圳市高德信通信股份有限公司 一种分布式边缘计算数据存储系统
CN114840608B (zh) * 2022-07-04 2022-11-01 深圳市茗格科技有限公司 分布式数据访问方法、设备及存储介质
US11792262B1 (en) 2022-07-20 2023-10-17 The Toronto-Dominion Bank System and method for data movement
US20240143206A1 (en) * 2022-10-26 2024-05-02 Xilinx, Inc. Memory controller to perform in-line data processing and efficiently organize data and associated metadata in memory
US20240202197A1 (en) * 2022-12-16 2024-06-20 Microsoft Technology Licensing, Llc Distributed data storage using materialized intermediate partitions

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295258A (en) 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5271013A (en) 1990-05-09 1993-12-14 Unisys Corporation Fault tolerant computer system
WO1993009494A1 (en) 1991-10-28 1993-05-13 Digital Equipment Corporation Fault-tolerant computer processing using a shadow virtual processor
EP0681721B1 (de) 1993-02-01 2005-03-23 Sun Microsystems, Inc. Archivierungsdateiensystem für datenanbieter in einer verteilten netzwerkumgebung
US6119151A (en) 1994-03-07 2000-09-12 International Business Machines Corp. System and method for efficient cache management in a distributed file system
US5621885A (en) 1995-06-07 1997-04-15 Tandem Computers, Incorporated System and method for providing a fault tolerant computer program runtime support environment
US5802265A (en) 1995-12-01 1998-09-01 Stratus Computer, Inc. Transparent fault tolerant computer system
US5796934A (en) 1996-05-31 1998-08-18 Oracle Corporation Fault tolerant client server system
US6029168A (en) 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6173293B1 (en) 1998-03-13 2001-01-09 Digital Equipment Corporation Scalable distributed file system
DE19836347C2 (de) 1998-08-11 2001-11-15 Ericsson Telefon Ab L M Fehlertolerantes Computersystem
US6393583B1 (en) 1998-10-29 2002-05-21 International Business Machines Corporation Method of performing checkpoint/restart of a parallel program
EP1020797B1 (de) 1999-01-11 2004-05-06 Koken Co., Ltd. Fehlertolerantes Rechnersystem
US6556998B1 (en) 2000-05-04 2003-04-29 Matsushita Electric Industrial Co., Ltd. Real-time distributed file system
US6904599B1 (en) 1999-11-29 2005-06-07 Microsoft Corporation Storage management system having abstracted volume providers
US6993764B2 (en) 2000-06-30 2006-01-31 The Regents Of The University Of California Buffered coscheduling for parallel programming and enhanced fault tolerance
US7406484B1 (en) 2000-09-12 2008-07-29 Tbrix, Inc. Storage allocation in a distributed segmented file system
GB2407417B (en) 2000-11-30 2005-06-29 Coppereye Ltd Database
US6779063B2 (en) 2001-04-09 2004-08-17 Hitachi, Ltd. Direct access storage system having plural interfaces which permit receipt of block and file I/O requests
US20030037149A1 (en) 2001-08-07 2003-02-20 Hess Lawrence D. Distributed and fault tolerant server system and method
EP1365538A1 (de) 2002-05-23 2003-11-26 Benoit Marchand Durchführung eines skalierbaren, dynamischen, fehlertoleranten, auf Mehrfachsendung basierten Dateiübertragungsprotokolls und asynchrones Datenreplikationsprotokoll
US7305585B2 (en) 2002-05-23 2007-12-04 Exludus Technologies Inc. Asynchronous and autonomous data replication
JP4457581B2 (ja) 2003-05-28 2010-04-28 日本電気株式会社 耐障害システム、プログラム並列実行方法、耐障害システムの障害検出装置およびプログラム
US7475274B2 (en) 2004-11-17 2009-01-06 Raytheon Company Fault tolerance and recovery in a high-performance computing (HPC) system
JP4411602B2 (ja) 2004-12-16 2010-02-10 日本電気株式会社 フォールトトレラント・コンピュータシステム
US7657578B1 (en) 2004-12-20 2010-02-02 Symantec Operating Corporation System and method for volume replication in a storage environment employing distributed block virtualization
US20060253726A1 (en) 2005-05-06 2006-11-09 Vikas Kukshya Fault-tolerant architecture for a distributed control system
EP1877901A4 (de) 2005-05-06 2014-05-07 Stratus Technologies Bermuda Ltd Fehlertolerantes computersystem
US7484032B2 (en) 2005-06-30 2009-01-27 Smith Roger A Fault tolerant computer system
US8209363B2 (en) 2007-10-09 2012-06-26 Cleversafe, Inc. File system adapted for use with a dispersed data storage network
US7899989B2 (en) 2005-11-04 2011-03-01 Oracle America, Inc. Method and system for using a block allocation policy
US7360063B2 (en) 2006-03-02 2008-04-15 International Business Machines Corporation Method for SIMD-oriented management of register maps for map-based indirect register-file access
US7437373B2 (en) 2006-03-06 2008-10-14 The Real Time Matrix Corporation Method and system for correlating information
US7941404B2 (en) 2006-03-08 2011-05-10 International Business Machines Corporation Coordinated federated backup of a distributed application environment
US7571347B2 (en) 2006-03-20 2009-08-04 Sun Microsystems, Inc. Method and apparatus for providing fault-tolerance in parallel-processing systems
US7657787B2 (en) 2006-04-11 2010-02-02 Hewlett-Packard Development Company, L.P. Method of restoring communication state of process
US8726242B2 (en) 2006-07-27 2014-05-13 Commvault Systems, Inc. Systems and methods for continuous data replication
US8291419B2 (en) 2006-09-26 2012-10-16 International Business Machines Corporation Fault tolerant system for execution of parallel jobs
US7783847B2 (en) 2006-10-31 2010-08-24 Oracle America Inc. Method and system for reallocating blocks in a storage pool
US20080235497A1 (en) 2006-11-26 2008-09-25 Tomblin Jimmy J Parallel Data Output
US20080228771A1 (en) 2006-12-22 2008-09-18 Commvault Systems, Inc. Method and system for searching stored data
US7610510B2 (en) 2007-02-16 2009-10-27 Symantec Corporation Method and apparatus for transactional fault tolerance in a client-server system
US8335813B2 (en) 2007-05-01 2012-12-18 Illinois Institute Of Technology Systems, methods, and protocols for process migration and group membership management
US7779298B2 (en) 2007-06-11 2010-08-17 International Business Machines Corporation Distributed job manager recovery
US20090019258A1 (en) 2007-07-09 2009-01-15 Shi Justin Y Fault tolerant self-optimizing multi-processor system and method thereof
US8239486B2 (en) 2008-03-19 2012-08-07 Oracle International Corporation Direct network file system
US8731190B2 (en) 2009-06-09 2014-05-20 Emc Corporation Segment deduplication system with encryption and compression of segments
EP2275952A1 (de) 2009-07-01 2011-01-19 Thomson Telecom Belgium Verfahren zum Zugreifen auf Dateien eines Dateisystems gemäß Metadaten und Vorrichtung, die das Verfahren umsetzt
US9900150B2 (en) 2009-10-30 2018-02-20 International Business Machines Corporation Dispersed storage camera device and method of operation
US20110202329A1 (en) 2010-02-12 2011-08-18 James Howard Goodnight Scenario State Processing Systems And Methods For Operation Within A Grid Computing Environment
US8874961B2 (en) 2010-03-22 2014-10-28 Infosys Limited Method and system for automatic failover of distributed query processing using distributed shared memory
US20130011176A1 (en) 2010-03-22 2013-01-10 Horning Jeromy D Rf control module for continuous feed drywall tools
CN102222077A (zh) * 2010-04-14 2011-10-19 中兴通讯股份有限公司 一种语音频数据的存储方法和装置
US8250405B2 (en) 2010-05-27 2012-08-21 International Business Machines Corporation Accelerating recovery in MPI environments
US9411517B2 (en) 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices
US8458413B2 (en) 2010-10-27 2013-06-04 International Business Machines Corporation Supporting virtual input/output (I/O) server (VIOS) active memory sharing in a cluster environment
US8473783B2 (en) 2010-11-09 2013-06-25 International Business Machines Corporation Fault tolerance in distributed systems
US9104326B2 (en) 2010-11-15 2015-08-11 Emc Corporation Scalable block data storage using content addressing
US8271537B2 (en) 2010-11-15 2012-09-18 Sas Institute Inc. Grid computing system alongside a distributed database architecture
US8984328B2 (en) 2011-03-11 2015-03-17 Microsoft Technology Licensing, Llc Fault tolerance in a parallel database system
US9009567B2 (en) 2011-12-12 2015-04-14 Cleversafe, Inc. Encrypting distributed computing data
US20130291080A1 (en) 2012-04-26 2013-10-31 Appsense Limited Systems and methods for data access protection
US9268796B2 (en) 2012-05-29 2016-02-23 Sas Institute Inc. Systems and methods for quantile estimation in a distributed data system
US9720989B2 (en) * 2013-11-11 2017-08-01 Amazon Technologies, Inc. Dynamic partitioning techniques for data streams
US9794135B2 (en) * 2013-11-11 2017-10-17 Amazon Technologies, Inc. Managed service for acquisition, storage and consumption of large-scale data streams
US9483378B2 (en) * 2014-05-21 2016-11-01 Dynatrace Llc Method and system for resource monitoring of large-scale, orchestrated, multi process job execution environments
US9722974B1 (en) 2014-12-18 2017-08-01 AbeBooks Inc. Automated data re-encryption process in multi-tiered encryption system
GB2540220A (en) 2015-07-06 2017-01-11 Barclays Bank Plc Distributed encryption system and method
US9811524B2 (en) 2015-07-27 2017-11-07 Sas Institute Inc. Distributed data set storage and retrieval
TWI611349B (zh) 2015-12-11 2018-01-11 財團法人資訊工業策進會 檢測系統及其方法

Also Published As

Publication number Publication date
US9811524B2 (en) 2017-11-07
SE540908C2 (en) 2018-12-18
US9619148B2 (en) 2017-04-11
US20170031599A1 (en) 2017-02-02
CA2981521A1 (en) 2017-02-02
DE112016001075B4 (de) 2024-05-23
US20180075051A1 (en) 2018-03-15
CA2981521C (en) 2019-07-09
US10185721B2 (en) 2019-01-22
IL254745A0 (en) 2017-11-30
HK1259159A1 (zh) 2019-11-29
US20170031937A1 (en) 2017-02-02
SE541999C2 (en) 2020-02-11
CN108701076A (zh) 2018-10-23
SE1751211A1 (en) 2017-09-29
US20170031936A1 (en) 2017-02-02
CN108701076B (zh) 2020-02-21
SE1751210A1 (sv) 2017-09-29
SE1751212A1 (en) 2017-09-29
IL254745B (en) 2018-02-28
US9703789B2 (en) 2017-07-11
SE540909C2 (en) 2018-12-18
WO2017019794A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
DE112016001075T5 (de) Verteiltes speichern und abrufen von datensätzen
US9852013B2 (en) Distributed data set storage and analysis reproducibility
DE102020208110A1 (de) Verfahren und vorrichtungen zum aggregieren von telemetriedaten in einer edge-umgebung
DE112019001481T5 (de) Selektives bereitstellen gegenseitiger transportschichtsicherheit mittels alternativer servernamen
DE102022203247A1 (de) Disintermedierte Attestierung in einem MEC-Service-MESH-Framework
US9081837B2 (en) Scoped database connections
DE112015005728B4 (de) Automatisches Auffinden von Konfigurationselementen
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE112019004301T5 (de) Verbesserter prozess der programmierung von feldprogrammierbaren gate-arrays unter verwendung einer partiellen rekonfiguration
DE102017213160A1 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102016104478A1 (de) Kryptographische Verfahren, die Arbeitsnachweise in Systemen untereinander verbundener Knoten realisieren
US9742867B1 (en) Network data retrieval
US9785467B1 (en) Threadsafe use of non-threadsafe libraries with multi-threaded processes
DE102022203249A1 (de) Mehrfachzugriff-edge-computing- (mec-) fahrzeug-zu-alles-(v2x-) interoperabilitätsunterstützung für mehrere v2x-nachrichtenbroker
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE112017002940T5 (de) Standard- und Nicht-Standard-Datenzugriff auf verstreute Speichernetzwerke
DE102022121227A1 (de) Dynamische slice-rekonfiguration während fafo(fault-attack-failure-outage)-ereignissen
DE112017005512T5 (de) Datenübertragung innerhalb von geschäftsräumen und ausserhalb von geschäftsräumen
DE112020004801T5 (de) Intelligenter datenpool
DE202023103214U1 (de) Web-Anwendung als Datenbankobjekt erster Klasse
DE202016107380U1 (de) Systeme zum Speichern und Auslesen von Inhalten
DE102021130397A1 (de) Aspektorientiertes streams-computing
DE202021004327U1 (de) Autoskalierung externer Funktionsanforderungen
DE112017000530T5 (de) Konsistentes Speichern von Daten in einem verstreuten Speichernetzwerk
DE112017006730T5 (de) Parkraumbewirtschaftung und kommunikation von parkinformationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R019 Grant decision by federal patent court