DE112016003598T5 - Simultaneous mass processing of tree-based data structures - Google Patents

Simultaneous mass processing of tree-based data structures Download PDF

Info

Publication number
DE112016003598T5
DE112016003598T5 DE112016003598.5T DE112016003598T DE112016003598T5 DE 112016003598 T5 DE112016003598 T5 DE 112016003598T5 DE 112016003598 T DE112016003598 T DE 112016003598T DE 112016003598 T5 DE112016003598 T5 DE 112016003598T5
Authority
DE
Germany
Prior art keywords
operations
nodes
node
tree
heterogeneous
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016003598.5T
Other languages
German (de)
Inventor
Lior Aronovich
Kien Kim Huynh
Gregory Tad Kishi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/918,168 external-priority patent/US10102231B2/en
Priority claimed from US14/918,130 external-priority patent/US10133763B2/en
Priority claimed from US14/918,069 external-priority patent/US10223409B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112016003598T5 publication Critical patent/DE112016003598T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

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

Abstract

Von einem Computer ausgeführte Verfahren zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur beinhalten: Empfangen einer Eingabe an einem Speichersystem, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist, wobei die Eingabe einen Satz von heterogenen Operationen kennzeichnet, die auf die baumbasierte Datenstruktur angewendet werden sollen; Feststellen von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und gleichzeitiges und mengenbasiertes Durchführen von einer oder mehreren Operationen des Satzes von heterogenen Operationen. Systeme und Verfahren zur Durchführung derselben werden ebenfalls offenbart.Computer-implemented methods of concurrently processing operations on a tree-based data structure include: receiving an input to a storage system that manages a storage unit in which the tree-based data structure is stored, the input identifying a set of heterogeneous operations based on the tree-based Data structure to be applied; Determining one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied; and simultaneously and quantitatively performing one or more operations of the set of heterogeneous operations. Systems and methods for carrying them out are also disclosed.

Description

HINTERGRUNDBACKGROUND

Die vorliegende Erfindung betrifft die Verarbeitung von Datenstrukturen und insbesondere betrifft diese Erfindung eine effiziente gleichzeitige Massenverarbeitung von Daten, die in baumbasierten Datenstrukturen, z.B. ausgelagerten Suchbaum-Datenstrukturen, organisiert sind, sowie die Verarbeitung der Datenstrukturen selbst.The present invention relates to the processing of data structures, and more particularly, this invention relates to efficient simultaneous mass processing of data stored in tree-based data structures, e.g. outsourced search tree data structures, and the processing of the data structures themselves.

Auf einem herkömmlichen Speichersystem gespeicherte Daten werden gemäß einer Datenstruktur einer Vielzahl von bekannten Datenstrukturen organisiert. Meist werden die Daten entsprechend baumbasierten Datenstrukturen wie zum Beispiel ausgelagerten Suchbäumen organisiert, die ein sich gabelförmig verzweigendes Netzwerk aus Knoten bilden, welche Daten und/oder Weiterleitungsinformationen speichern, um die Suche nach Daten, die von Interesse sind, zu vereinfachen. In einem ausgelagerten Suchbaum entspricht jeder Knoten üblicherweise einer Plattenseite.Data stored on a conventional storage system is organized according to a data structure of a plurality of known data structures. In most cases, the data is organized according to tree-based data structures, such as paged search trees, that form a forked-branching network of nodes that store data and / or forwarding information to facilitate the search for data of interest. In a paged search tree, each node usually corresponds to a page.

Folglich wäre es vorteilhaft, ein System und Techniken bereitzustellen, um die Wirksamkeit von Änderungen an baumbasierten Datenstrukturen zu verbessern, um die Arbeitsweise und den Durchsatz eines breiten Spektrums an Datenspeichersystemen zu verbessern, indem die Eingabe-/Ausgabe-(E/A)-Leistung erhöht wird und Rechenkosten für die Speicherung, die Organisation, die Suche nach und die Aktualisierung von Dateneinträgen und den entsprechenden Datenstrukturen verringert werden.Accordingly, it would be advantageous to provide a system and techniques to improve the effectiveness of changes to tree-based data structures to improve the operation and throughput of a wide variety of data storage systems by providing input / output (I / O) performance and reduce computational costs for storing, organizing, searching for and updating data entries and the corresponding data structures.

KURZDARSTELLUNGSUMMARY

In einer Ausführungsform beinhaltet ein von einem Computer ausgeführtes Verfahren zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur: Empfangen einer Eingabe an einem Speichersystem, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist, wobei die Eingabe einen Satz von heterogenen Operationen kennzeichnet, die auf die baumbasierte Datenstruktur angewendet werden sollen; Feststellen von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und gleichzeitiges und mengenbasiertes Durchführen von einer oder mehreren Operationen des Satzes von heterogenen Operationen.In one embodiment, a method performed by a computer for concurrently processing operations on a tree-based data structure includes: receiving an input to a storage system that manages a storage unit in which the tree-based data structure is stored, the input identifying a set of heterogeneous operations, to be applied to the tree-based data structure; Determining one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied; and simultaneously and quantitatively performing one or more operations of the set of heterogeneous operations.

In einer weiteren Ausführungsform beinhaltet ein Computerprogrammprodukt zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur ein von einem Computer lesbares Speichermedium mit damit realisierten Programmanweisungen. Das von einem Computer lesbare Speichermedium ist nicht per se ein kurzzeitiges Signal, und die Programmanweisungen können von einem Speichersystem-Manager ausgeführt werden, um den Speichersystem-Manager zu veranlassen, ein Verfahren durchzuführen. Das Verfahren beinhaltet das Empfangen einer Eingabe durch den Speichersystem-Manager, die einen Satz von heterogenen Operationen kennzeichnet, welche auf die baumbasierte Datenstruktur angewendet werden sollen; das Feststellen durch den Speichersystem-Manager von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere der Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und das gleichzeitige und mengenbasierte Durchführen von einer oder mehreren Operationen des Satzes von heterogenen Operationen durch den Speichersystem-Manager.In another embodiment, a computer program product for simultaneously processing operations on a tree-based data structure includes a computer readable storage medium having program instructions implemented therewith. The computer-readable storage medium is not per se a short-term signal, and the program instructions may be executed by a storage system manager to cause the storage system manager to perform a method. The method includes receiving an input by the storage system manager identifying a set of heterogeneous operations to be applied to the tree-based data structure; determining, by the storage system manager, one or more nodes of the tree-based data structure to which one or more of the operations of the set of heterogeneous operations are to be applied; and simultaneously and quantitatively performing one or more operations of the set of heterogeneous operations by the storage system manager.

In noch einer weiteren Ausführungsform enthält ein Speichersystem zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur einen Speichersystem-Manager und Logik, die in den Speichersystem-Manager integriert ist und/oder von dem Speichersystem-Manager ausgeführt werden kann. Die Logik ist so konfiguriert, dass sie das Speichersystem veranlasst: eine Eingabe zu empfangen, die einen Satz von heterogenen Operationen kennzeichnet, welche auf die baumbasierte Datenstruktur angewendet werden sollen; einen oder mehrere Knoten der baumbasierten Datenstruktur festzustellen, auf den beziehungsweise die eine oder mehrere der Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und eine oder mehrere Operationen des Satzes von heterogenen Operationen gleichzeitig und mengenbasiert durchzuführen.In yet another embodiment, a storage system for concurrently processing operations on a tree-based data structure includes a storage system manager and logic that is integrated with the storage system manager and / or that may be executed by the storage system manager. The logic is configured to cause the memory system to: receive an input identifying a set of heterogeneous operations to be applied to the tree-based data structure; determine one or more nodes of the tree-based data structure to which one or more of the operations of the set of heterogeneous operations are to be applied; and perform one or more operations of the set of heterogeneous operations simultaneously and quantity-based.

Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung gehen aus der folgenden ausführlichen Beschreibung hervor, die in Zusammenschau mit den Zeichnungen beispielhaft die Grundgedanken der Erfindung veranschaulicht.Other aspects and embodiments of the present invention will become apparent from the following detailed description which, taken in conjunction with the drawings, exemplifies the principles of the invention.

Figurenlistelist of figures

Ausführungsformen der vorliegenden Erfindung werden nun lediglich anhand eines Beispiels und mit Bezug auf die beiliegenden Zeichnungen beschrieben, bei denen:

  • 1 eine Netzwerkarchitektur gemäß einer Ausführungsform darstellt;
  • 2 eine repräsentative Hardware-Umgebung gemäß einer Ausführungsform zeigt, zu der die Server und/oder die Clients von 1 gehören können;
  • 3 ein mehrschichtiges Datenspeichersystem gemäß einer Ausführungsform darstellt;
  • 4 eine vereinfachte schematische Darstellung eines ausgeglichenen, ausgelagerten Suchbaums mit drei Ebenen gemäß einer Ausführungsform ist;
  • 5 eine vereinfachte schematische Darstellung eines unausgeglichenen, ausgelagerten Suchbaums mit drei Ebenen gemäß einer Ausführungsform ist;
  • 6 eine vereinfachte schematische Darstellung eines unausgeglichenen, ausgelagerten Suchbaums mit mehreren Ebenen gemäß einer Ausführungsform ist;
  • 7 eine vereinfachte schematische Darstellung einer baumbasierten Datenstruktur mit n Ebenen und des Verlaufs der Verarbeitung mit Bezug auf die baumbasierte Datenstruktur während einer Suchphase und einer Aktualisierungsphase gemäß einer bevorzugten Ausführungsform ist;
  • 8 einen Ablaufplan zeigt, der eine Verarbeitung während einer Suchphase gemäß einer bevorzugten Ausführungsform der aktuell offenbarten erfindungsgemäßen Konzepte darstellt;
  • 9 einen Ablaufplan zeigt, der eine Verarbeitung während einer Suchphase gemäß einer bevorzugten Ausführungsform der aktuell offenbarten erfindungsgemäßen Konzepte darstellt;
  • 10 ein Ablaufplan eines von einem Computer ausgeführten Verfahrens zur gleichzeitigen Massenverarbeitung von heterogenen Operationen an einer ausgelagerten Suchbaum-Datenstruktur gemäß einer Ausführungsform ist;
  • 11 ein Ablaufplan eines von einem Computer ausgeführten Verfahrens zur Isolierung von gleichzeitigen Operationen an einer ausgelagerten Suchbaum-Datenstruktur gemäß einer Ausführungsform ist;
  • 12 ein Ablaufplan eines Verfahrens zur effizienten Festlegung der Reihenfolge von Operationen an einer ausgelagerten Suchbaum-Datenstruktur gemäß einer Ausführungsform ist.
Embodiments of the present invention will now be described by way of example only and with reference to the accompanying drawings, in which:
  • 1 represents a network architecture according to an embodiment;
  • 2 shows a representative hardware environment according to an embodiment to which the servers and / or the clients of 1 can belong;
  • 3 a multilayer data storage system according to one embodiment;
  • 4 Figure 5 is a simplified schematic illustration of a balanced, paged, three-level search tree according to one embodiment;
  • 5 Figure 5 is a simplified schematic illustration of an unbalanced paged search tree of three levels according to one embodiment;
  • 6 Figure 5 is a simplified schematic illustration of an unbalanced, multi-level paged search tree according to one embodiment;
  • 7 Figure 5 is a simplified schematic illustration of an n-level tree-based data structure and the history of processing with respect to the tree-based data structure during a search phase and an update phase in accordance with a preferred embodiment;
  • 8th shows a flowchart illustrating processing during a search phase according to a preferred embodiment of the presently disclosed inventive concepts;
  • 9 shows a flowchart illustrating processing during a search phase according to a preferred embodiment of the presently disclosed inventive concepts;
  • 10 FIG. 5 is a flowchart of a computer-executed method for concurrently mass processing heterogeneous operations on a paged search tree data structure, according to one embodiment; FIG.
  • 11 Fig. 10 is a flowchart of a method performed by a computer for isolating concurrent operations on a paged search tree data structure, according to one embodiment;
  • 12 Figure 3 is a flow chart of a method for efficiently determining the order of operations on an offloaded search tree data structure, according to one embodiment.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Die folgende Beschreibung erfolgt zu dem Zweck, die allgemeinen Grundgedanken der vorliegenden Erfindung zu veranschaulichen, und sie ist nicht als Einschränkung der hier beanspruchten erfindungsgemäßen Konzepte zu verstehen. Darüber hinaus können bestimmte hier beschriebene Merkmale in Verbindung mit anderen beschriebenen Merkmalen in einer jeden der verschiedenen möglichen Kombinationen und Permutationen verwendet werden.The following description is for the purpose of illustrating the general principles of the present invention, and is not intended to limit the inventive concepts claimed herein. In addition, certain features described herein may be used in conjunction with other described features in each of the various possible combinations and permutations.

Sofern hier nicht ausdrücklich anders definiert, sind alle Begriffe in ihrer weitestmöglichen Auslegung zu verstehen, die Bedeutungen, welche sich aus der Spezifikation ergeben, sowie Bedeutungen, die der Fachmann versteht und/oder die in Wörterbüchern, Abhandlungen usw. definiert sind, einschließt.Unless expressly defined otherwise, all terms are to be understood in their broadest possible interpretation, including the meanings that result from the specification, as well as meanings that the person skilled in the art understands and / or that are defined in dictionaries, treatises, etc.

Es ist auch anzumerken, dass die Singularformen „ein“, „eine“, „einer“ und „der“, „die“, „das“ in der in der Spezifikation und den beigefügten Ansprüchen verwendeten Weise Pluralbezüge einschließen, sofern nichts anderes angegeben ist. Des Weiteren versteht es sich, dass die Begriffe „aufweist“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen der Vorgenannten jedoch nicht ausschließen.It is also to be understood that the singular forms "a," "an," "an," and "the" include plural referents as the specification and the appended claims, unless otherwise specified , Furthermore, it is understood that the terms "comprising" and / or "having" when used in this specification indicate the presence of specified features, integers, steps, operations, elements and / or components, the presence or absence of however, do not preclude the addition of one or more other features, integers, steps, operations, elements, components, and / or groups of the foregoing.

Die folgende Beschreibung offenbart mehrere bevorzugte Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten für eine effiziente Bearbeitung von baumbasierten Datenstrukturen mittels einer mengenbasierten, gleichzeitigen Verarbeitung von Arten von heterogenen Operationen.The following description discloses several preferred embodiments of systems, methods, and computer program products for efficiently handling tree-based data structures using quantity-based, concurrent processing of types of heterogeneous operations.

In einer allgemeinen Ausführungsform beinhaltet ein von einem Computer ausgeführtes Verfahren zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur: Empfangen einer Eingabe an einem Speichersystem, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist, wobei die Eingabe einen Satz von heterogenen Operationen kennzeichnet, die auf die baumbasierte Datenstruktur angewendet werden sollen; Feststellen von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und gleichzeitiges und mengenbasiertes Durchführen von einer oder mehreren Operationen des Satzes von heterogenen Operationen.In a general embodiment, a method performed by a computer for concurrently processing operations on a tree-based data structure includes: receiving an input to a storage system that manages a storage unit in which the tree-based data structure is stored, the input identifying a set of heterogeneous operations to be applied to the tree-based data structure; Determining one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied; and simultaneously and quantitatively performing one or more operations of the set of heterogeneous operations.

In einer weiteren allgemeinen Ausführungsform beinhaltet ein Computerprogrammprodukt zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur ein von einem Computer lesbares Speichermedium mit damit realisierten Programmanweisungen. Das von einem Computer lesbare Speichermedium ist nicht per se ein kurzzeitiges Signal, und die Programmanweisungen können von einem Speichersystem-Manager ausgeführt werden, um den Speichersystem-Manager zu veranlassen, ein Verfahren durchzuführen. Das Verfahren beinhaltet das Empfangen einer Eingabe durch den Speichersystem-Manager, die einen Satz von heterogenen Operationen kennzeichnet, welche auf die baumbasierte Datenstruktur angewendet werden sollen; das Feststellen durch den Speichersystem-Manager von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere der Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und das gleichzeitige und mengenbasierte Durchführen von einer oder mehreren Operationen des Satzes von heterogenen Operationen durch den Speichersystem-Manager.In another general embodiment, a computer program product for simultaneously processing operations on a tree-based data structure includes a computer-readable storage medium having program instructions implemented therewith. The computer-readable storage medium is not per se a short-term signal, and the program instructions may be executed by a storage system manager to cause the storage system manager to perform a method. The method includes receiving an input from the storage system manager that includes a set of identifies heterogeneous operations to be applied to the tree-based data structure; determining, by the storage system manager, one or more nodes of the tree-based data structure to which one or more of the operations of the set of heterogeneous operations are to be applied; and simultaneously and quantitatively performing one or more operations of the set of heterogeneous operations by the storage system manager.

In noch einer weiteren allgemeinen Ausführungsform enthält ein Speichersystem zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur einen Speichersystem-Manager und Logik, die in den Speichersystem-Manager integriert ist und/oder von dem Speichersystem-Manager ausgeführt werden kann. Die Logik ist so konfiguriert, dass sie das Speichersystem veranlasst: eine Eingabe zu empfangen, die einen Satz von heterogenen Operationen kennzeichnet, welche auf die baumbasierte Datenstruktur angewendet werden sollen; einen oder mehrere Knoten der baumbasierten Datenstruktur festzustellen, auf den beziehungsweise die eine oder mehrere der Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und eine oder mehrere Operationen des Satzes von heterogenen Operationen gleichzeitig und mengenbasiert durchzuführen.In yet another general embodiment, a storage system for concurrently processing operations on a tree-based data structure includes a storage system manager and logic that is integrated with the storage system manager and / or that may be executed by the storage system manager. The logic is configured to cause the memory system to: receive an input identifying a set of heterogeneous operations to be applied to the tree-based data structure; determine one or more nodes of the tree-based data structure to which one or more of the operations of the set of heterogeneous operations are to be applied; and perform one or more operations of the set of heterogeneous operations simultaneously and quantity-based.

Definitionendefinitions

Benachbarte KnotenNeighboring nodes

Entsprechend der Auffassung in diesem Schriftstück grenzen Knoten innerhalb einer baumbasierten Datenstruktur an unmittelbare Nachbarknoten derselben Ebene in dem Baum an, wobei alle Knoten derselben Baumebene die gleiche Entfernung zum Wurzelknoten eines Baums haben und benachbarte Knoten von demselben Elternknoten in der nächsthöheren Baumebene abstammen können oder auch nicht abstammen können. Benachbarte Knoten einer bestimmten Ebene werden auch als gleichgeordnete Knoten bezeichnet.According to this document, nodes within a tree-based data structure are adjacent to immediate neighboring nodes of the same level in the tree, all nodes of the same tree level being the same distance to the root node of a tree and neighboring nodes may or may not be descended from the same parent node in the next higher tree level can descend. Neighboring nodes of a given level are also called siblings.

Gleichzeitige MassenverarbeitungSimultaneous mass processing

Entsprechend der Auffassung in diesem Schriftstück schließt die gleichzeitige Massenverarbeitung die simultane Verarbeitung von mehreren Operationen an einer baumbasierten Datenstruktur ein. Operationen werden gleichzeitig verarbeitet, wenn deren Verarbeitung während desselben Zeitfensters stattfindet. Operationen werden mengenbasiert verarbeitet, wenn mehrere Operationen während desselben Zeitfensters zusammen (und nicht einzeln) verarbeitet werden.As contemplated in this document, concurrent mass processing involves simultaneous processing of multiple operations on a tree-based data structure. Operations are processed simultaneously if their processing occurs during the same time window. Operations are processed quantity-based when multiple operations are processed together (and not individually) during the same time window.

In verschiedenen Ausführungsformen beinhaltet die gleichzeitige Massenverarbeitung die simultane, unabhängige Verarbeitung von mehreren Knoten einer baumbasierten Datenstruktur, die zu derselben Ebene des Baums gehören. In besonders bevorzugten Ausführungsformen schließt die gleichzeitige Massenverarbeitung die parallele Verarbeitung von allen Knoten einer bestimmten Ebene einer baumbasierten Datenstruktur unter Verwendung von unabhängigen Operationsthreads ein.In various embodiments, concurrent mass processing includes simultaneous, independent processing of multiple nodes of a tree-based data structure that belong to the same level of the tree. In particularly preferred embodiments, concurrent mass processing includes parallel processing of all nodes of a particular level of a tree-based data structure using independent operation threads.

Heterogene OperationenHeterogeneous operations

Entsprechend der Auffassung in diesem Schriftstück schließen heterogene Operationen beliebige zwei oder mehrere verschiedene Arten von Operationen ein, die durchgeführt werden können, um Daten zu ändern oder zu verarbeiten, die in einer baumbasierten Datenstruktur gespeichert sind, und/oder um die Organisation der baumbasierten Datenstruktur selbst zu ändern oder zu verarbeiten. Zu beispielhaften Operationen gehören das Aktualisieren, Einfügen oder Entfernen von Dateneinträgen und/oder Weiterleitungseinträgen, die in Knoten einer baumbasierten Datenstruktur gespeichert sind, was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.As contemplated in this document, heterogeneous operations include any two or more different types of operations that may be performed to modify or process data stored in a tree-based data structure and / or to organize the tree-based data structure itself to change or process. Exemplary operations include updating, inserting, or removing data entries and / or routing entries stored in nodes of a tree-based data structure, as those skilled in the art will understand after reading the present descriptions.

Folglich enthält ein Satz von heterogenen Operationen beliebige zwei oder mehrere der beispielhaften Vielfalt an Operationen, die hier beschrieben sind. In bevorzugten Ausführungsformen betreffen heterogene Operationen keine Baumknoten, sondern Dateneinträge. In besonders bevorzugten Ausführungsformen betreffen heterogene Operationen keine inneren Knoten, sondern Blattknoten.Thus, a set of heterogeneous operations includes any two or more of the exemplary variety of operations described herein. In preferred embodiments, heterogeneous operations do not concern tree nodes, but data entries. In particularly preferred embodiments, heterogeneous operations do not involve inner nodes, but leaf nodes.

Löschen von KnotenDelete nodes

Entsprechend der Auffassung in diesem Schriftstück schließt das Löschen von Knoten das Entfernen eines Knotens aus der baumbasierten Datenstruktur ein.As stated in this paper, deleting nodes involves removing a node from the tree-based data structure.

In verschiedenen Ausführungsformen kann das Löschen von Knoten im Anschluss an eine Zusammenführung von Knoten, z.B. das Entfernen des Knotens, der aufgrund dessen entleert wurde, dass sein Inhalt in einen anderen Knoten in der Datenstruktur übernommen wurde, durchgeführt werden. Das Löschen von Knoten kann zum Beispiel das Ändern und/oder Entfernen von Weiterleitungseinträgen in einem oder mehreren Knoten beinhalten, die zu einer oder mehreren Ebenen gehören, von der beziehungsweise von denen der gelöschte Knoten abstammt.In various embodiments, the deletion of nodes following a merge of nodes, e.g. removing the node that was dumped because its contents were taken over into another node in the data structure. The deletion of nodes may include, for example, changing and / or removing forwarding entries in one or more nodes belonging to one or more levels from which the deleted node originated.

Einfügen von Knoten Inserting nodes

Entsprechend der Auffassung in diesem Schriftstück schließt das Einfügen von Knoten das Erzeugen eines zuvor nicht vorhandenen Knotens innerhalb der baumbasierten Datenstruktur ein.As suggested in this document, the insertion of nodes involves creating a previously non-existent node within the tree-based data structure.

In verschiedenen Ausführungsformen kann das Einfügen von Knoten als Reaktion auf die Feststellung, dass ein oder mehrere Knoten in einer bestimmten Ebene überfüllt sind, durchgeführt werden, z.B., indem Dateneinträge von dem überfüllten Knoten an den neuen eingefügten Knoten verschoben werden.In various embodiments, the insertion of nodes may be performed in response to the determination that one or more nodes in a particular level are crowded, e.g., by moving data entries from the crowded node to the new inserted node.

Zusammenführen von KnotenMerging nodes

Entsprechend der Auffassung in diesem Schriftstück schließt eine Zusammenführung von Knoten das Zusammenfassen von zwei oder mehreren vorhandenen Knoten zu einem einzigen Knoten ein.According to the view in this document, a merge of nodes involves the merging of two or more existing nodes into a single node.

In verschiedenen Ausführungsformen kann das Zusammenführen als Reaktion auf die Feststellung durchgeführt werden, dass ein unterfüllter Knoten bereits vorhanden ist oder vorhanden sein wird (z.B. infolge der Durchführung der heterogenen Operation(en) auf einer bestimmten Ebene der Datenstruktur). Eine Zusammenführung von Knoten wird vorzugsweise durchgeführt, indem der unterfüllte Knoten mit einem gleichgeordneten Knoten zusammengefasst wird.In various embodiments, merging may be performed in response to determining that an underfilled node already exists or will be present (e.g., as a result of performing the heterogeneous operation (s) at a particular level of the data structure). A merge of nodes is preferably performed by merging the underfilled node with a sibling node.

Knotenberechtigungnode authorization

Ein Benutzer kann eine Berechtigung für den Zugriff auf einen bestimmten Knoten einer baumbasierten Datenstruktur erhalten, und zwar unteilbar in Bezug auf alle anderen Benutzer, die an derselben Datenstruktur Operationen durchführen.A user may be granted permission to access a particular node of a tree-based data structure indivisible in relation to all other users performing operations on the same data structure.

Die Berechtigung kann geteilt werden, wobei der Knoten in diesem Fall nur gelesen werden kann. Eine geteilte Nur-Lese-Berechtigung können mehrere Benutzer gleichzeitig erhalten.The permission can be shared, in which case the node can only be read. A shared read-only permission can be shared by multiple users.

Alternativ kann die Berechtigung exklusiv sein, wobei der Knoten in diesem Fall auch geändert werden kann. Eine exklusive Berechtigung schließt andere Benutzer, die auf den Knoten zugreifen, gegenseitig aus.Alternatively, the privilege may be exclusive, in which case the node may also be changed. An exclusive privilege mutually excludes other users accessing the node.

Knoten-Neuverteilung (Re-balancing)Node Redistribution

Entsprechend der Auffassung in diesem Schriftstück beinhaltet die Knoten-Neuverteilung die Übertragung von Dateneinträgen von einem vollen Knoten an seine gleichgeordneten Knoten oder an einen unterfüllten Knoten von seinen gleichgeordneten Knoten, um die Knoten in einem erforderlichen Speicherauslastungsbereich zu halten.Correspondingly, in this document, node reallocation involves the transfer of data entries from a full node to its sibling nodes or to an underfilled node from its sibling nodes to keep the nodes in a required memory usage area.

In verschiedenen Ausführungsformen ist die Knoten-Neuverteilung besonders nützlich, um einen angemessenen Speicherauslastungsgrad über die Knoten einer baumbasierten Datenstruktur hinweg aufrechtzuerhalten.In various embodiments, node redistribution is particularly useful to maintain adequate memory utilization across the nodes of a tree-based data structure.

Folglich versteht der Fachmann auf der Grundlage dieser Beschreibungen, dass die Knoten-Neuverteilung einen Prozess beinhalten oder auf die Knoten-Neuverteilung ein Prozess folgen kann, durch den in bevorzugten Ausführungsformen Weiterleitungsinformationen in der baumbasierten Datenstruktur so geändert werden, dass sie etwaigen Veränderungen an der Organisation der Knoten und/oder dem Speicherplatz der Dateneinträge Rechnung tragen.Thus, based on these descriptions, those skilled in the art will understand that nodal reallocation may involve a process or node redistribution may be followed by a process whereby, in preferred embodiments, routing information in the tree-based data structure is changed to accommodate any changes to the organization the node and / or the storage space of the data entries.

Knotenaufteilungnode Distribution

Entsprechend der Auffassung in diesem Schriftstück schließt eine Knotenaufteilungsoperation das Aufteilen eines Knotens in zwei oder mehr Knoten ein, von denen mindestens einer vor der Durchführung der Aufteilungsoperation nicht Teil der Datenstruktur war.According to this document, a node-splitting operation involves splitting a node into two or more nodes, at least one of which was not part of the data structure prior to performing the splitting operation.

In verschiedenen Ausführungsformen kann die Knotenaufteilung als Reaktion auf die Feststellung stattfinden, dass ein vorhandener Knoten einer baumbasierten Datenstruktur überfüllt ist oder überfüllt werden wird, z.B. infolge der Durchführung von einer oder mehreren heterogenen Operationen auf einer bestimmten Ebene der baumbasierten Datenstruktur, was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.In various embodiments, the node partitioning may occur in response to the determination that an existing node of a tree-based data structure is crowded or overcrowded, e.g. as a result of performing one or more heterogeneous operations at a particular level of the tree-based data structure, as those skilled in the art will understand after reading the present descriptions.

Knotenaktualisierungnode update

Das Aktualisieren eines Knotens entsprechend der Auffassung in diesem Schriftstück beinhaltet das Ändern der Nutzlast eines Dateneintrags (z.B. für Blattknoten eines B+-Baums) und/oder das Ändern von einem oder mehreren in dem Knoten gespeicherten Weiterleitungseinträgen (z.B. für innere Knoten eines B+-Baums).Refreshing a node as considered in this document involves changing the payload of a data entry (eg, for leaf nodes of a B + tree) and / or changing one or more forwarding entries stored in the node (eg, for inner nodes of a B + tree). ,

In verschiedenen Ausführungsformen kann eine Knotenaktualisierung als Reaktion darauf durchgeführt werden, dass eine andere Operation eine Veränderung bei der Organisation der Datenstruktur bewirkt, die eine Aktualisierung von Weiterleitungseinträgen erforderlich machen kann, um der Veränderung Rechnung zu tragen.In various embodiments, a node update may be performed in response to another operation causing a change in the organization of the data structure that may require an update of forwarding entries to account for the change.

Zusätzlich und/oder alternativ kann ein Knoten aktualisiert werden, um eine Änderung eines in dem Knoten gespeicherten Dateneintrags vorzunehmen.Additionally and / or alternatively, a node may be updated to reflect a change in a make the data entry saved to the node.

Speicherkennungmemory Specification

Entsprechend der Auffassung in diesem Schriftstück ist eine Speicherkennung ein Datenelement, das den Speicherplatz eines Knotens in einer Speichereinheit kennzeichnet.As is understood in this document, a memory identifier is a data element that identifies the memory location of a node in a memory device.

In verschiedenen Ausführungsformen wird ein Knoten in einer baumbasierten Datenstruktur vorzugsweise einer eindeutigen Speicherkennung zugeordnet. Um beispielsweise vom Knoten N1 auf den Knoten N2 in einer baumbasierten Datenstruktur zu zeigen, wird eine Knotenkennung des Knotens N2 vorzugsweise im Knoten N1 gespeichert.In various embodiments, a node in a tree-based data structure is preferably associated with a unique memory identifier. For example, to point from node N1 to node N2 in a tree-based data structure, a node identifier of node N2 is preferably stored in node N1.

Baumbasierte DatenstrukturTree-based data structure

Entsprechend der Auffassung in diesem Schriftstück beinhalten baumbasierte Datenstrukturen eine beliebige Vielfalt an Datenstrukturen, bei denen Dateneinträge entsprechend einer hierarchischen Verzweigungsstruktur gespeichert und organisiert werden. Vorzugsweise verzweigt die Struktur gabelförmig, jedoch sind Strukturen mit einer Aufteilung höherer Ordnung innerhalb des Umfangs der vorliegenden Offenbarungen zu berücksichtigen, z.B. Vierfachgabelung, Achtfachgabelung usw., was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.As is understood in this document, tree-based data structures include any variety of data structures in which data entries are stored and organized according to a hierarchical branching structure. Preferably, the structure bifurcates, but structures with a higher order division are to be considered within the scope of the present disclosures, e.g. Quad bifurcation, eightfold bifurcation, etc., which a person skilled in the art might understand after having read the present descriptions.

Ausgelagerte Suchbaum-DatenstrukturOutsourced search tree data structure

Entsprechend der Auffassung in diesem Schriftstück sind ausgelagerte Suchbaum-Datenstrukturen für die Organisation und die Suche nach Daten ausgelegt. Bei ausgelagerten Suchbaum-Datenstrukturen werden Daten in Knoten gespeichert, wobei ein Knoten üblicherweise einer Plattenseite entspricht, und die Knoten sind in einer hierarchischen Baumstruktur organisiert und verbunden. Diese Datenstrukturen sind so konzipiert, dass sie eine schnelle und effiziente Suche in großen Datensätzen ermöglichen. Üblicherweise werden solche Datenstrukturen auf Platte gespeichert, und Cachespeicher auf schnelleren Speichern (z.B. Hauptspeicher oder Solid-State-Platte) werden verwendet, um Teile der Datenstruktur zu speichern, um die Leistungsfähigkeit zu verbessern.As stated in this paper, paged search tree data structures are designed to organize and search for data. In offloaded search tree data structures, data is stored in nodes, where a node usually corresponds to a disk side, and the nodes are organized and connected in a hierarchical tree structure. These data structures are designed to enable fast and efficient searches in large datasets. Typically, such data structures are stored on disk and caches on faster memories (e.g., main memory or solid state disk) are used to store portions of the data structure to improve performance.

B+-Bäume sind zum Beispiel eine Variante der ausgelagerten Suchbaum-Datenstruktur. In einem B+-Baum werden Dateneinträge ausschließlich in den Blattknoten gespeichert, während innere Knoten Weiterleitungsinformationen speichern, um Operationen zu den entsprechenden Blattknoten zu leiten. In den Blattknoten gespeicherte Dateneinträge enthalten einen Schlüssel (zur Vereinfachung der Suche) und eine Nutzlast, die die interessierenden Daten enthält. Weiterleitungseinträge enthalten einen Schlüssel und eine interne Verbindungs- oder Knotenkennung, mittels der Operationen zu entsprechenden Blattknoten geleitet werden.For example, B + trees are a variant of the paged search tree data structure. In a B + tree, data entries are stored exclusively in leaf nodes, while inner nodes store forwarding information to direct operations to the corresponding leaf nodes. Data entries stored in the leaf nodes contain a key (to simplify the search) and a payload containing the data of interest. Routing entries include a key and an internal connection or node identifier by which operations are directed to corresponding leaf nodes.

Computer-, Netzwerk- und Speichersystem-ArchitekturComputer, network and storage system architecture

Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein von einem Computer lesbares Speichermedium (oder Speichermedien) beinhalten, auf dem sich von einem Computer lesbare Programmanweisungen befinden, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung umsetzen.The present invention may be a system, a method, and / or a computer program product. The computer program product may include a computer readable storage medium (or storage media) having computer readable program instructions for causing a processor to implement aspects of the present invention.

Das von einem Computer lesbare Speichermedium kann eine physisch greifbare Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit aufnehmen und speichern kann. Das von einem Computer lesbare Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden sein. Eine Liste mit genaueren Beispielen für das von einem Computer lesbare Speichermedium, die keinen Anspruch auf Vollständigkeit erhebt, beinhaltet Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine digitale, vielseitig verwendbare Disk (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen sowie jede beliebige geeignete Kombination des Vorstehenden. Ein von einem Computer lesbares Speichermedium in der hier verwendeten Weise ist nicht so auszulegen, dass es sich dabei um kurzzeitige Signale an sich, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich über einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die durch ein Lichtwellenleiterkabel geleitet werden), oder elektrische Signale, die über ein Kabel übertragen werden, handelt.The computer readable storage medium may be a physically tangible unit that can receive and store instructions for use by an instruction execution unit. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A list of more specific examples of the computer readable storage medium that is not exhaustive includes: a portable computer diskette, a hard disk, random access memory (RAM), read only memory (ROM), an erasable programmable only Read only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, a mechanically coded unit such as punched cards or raised structures in a groove with instructions recorded thereon as well as any suitable combination of the foregoing. A computer-readable storage medium, as used herein, should not be construed to be short-term signals per se, such as radio waves or other free-propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (For example, light pulses that are passed through a fiber optic cable), or electrical signals that are transmitted via a cable acts.

Von einem Computer lesbare Programmanweisungen, die hier beschrieben sind, können von einem Speichermedium, das von einem Computer gelesen werden kann, auf entsprechende Rechen-/Verarbeitungseinheiten oder über ein Netzwerk, zum Beispiel das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netz, auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungsstellen (Switches), Gateway-Rechner und/oder Edge-Server aufweisen. Eine Netzadapterkarte oder Netzschnittstelle in jeder Rechen-/Verarbeitungseinheit empfängt von einem Computer lesbare Programmanweisungen von dem Netzwerk und leitet die von einem Computer lesbaren Programmanweisungen weiter, um sie in einem von einem Computer lesbaren Speichermedium in der jeweiligen Rechen-/ Verarbeitungseinheit zu speichern.Computer-readable program instructions described herein may be downloaded from a storage medium that can be read by a computer to appropriate computing / Processing units or over a network, for example the Internet, a local area network, a wide area network and / or a wireless network, to be downloaded to an external computer or an external storage unit. The network may include copper transmission cables, fiber optics, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing unit receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium in the respective computing / processing unit.

Bei den von einem Computer lesbaren Programmanweisungen zur Durchführung von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, Befehle der Befehlssatzarchitektur (ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache „C“ oder in ähnlichen Programmiersprachen geschrieben sind. Die von einem Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden. In manchen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltkreise, kundenprogrammierbare Universalschaltkreise (FPGA) oder programmierbare logische Anordnungen (PLA) gehören, die von einem Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der von einem Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung umzusetzen.The computer readable program instructions for performing operations of the present invention may be assembly language instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state adjustment data, or either source code or object code as described in U.S. Pat any combination of one or more programming languages including an object-oriented programming language such as Smalltalk, C ++ or the like, as well as in conventional procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partially on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (for example, via the Internet via an Internet Service provider). In some embodiments, electronic circuits including, for example, programmable logic circuits, general purpose custom programmable logic circuits (FPGA), or programmable logic devices (PLA) may execute the computer readable program instructions by using state information of the computer readable program instructions to encode the electronic circuits to personalize aspects of the present invention.

Aspekte der vorliegenden Erfindung werden hier mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern von Programmanweisungen, die von einem Computer gelesen werden können, realisiert werden können.Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It is understood that each block of the representations in the flowcharts and / or the block diagrams as well as combinations of blocks in the representations of the flowcharts and / or the block diagrams of program instructions that can be read by a computer can be realized.

Diese von einem Computer lesbaren Programmanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind. Diese von einem Computer lesbaren Programmanweisungen können auch in einem von einem Computer lesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das von dem Computer lesbare Speichermedium, das über darin gespeicherte Anweisungen verfügt, einen Herstellungsgegenstand aufweist, der Anweisungen enthält, die Aspekte der Funktion/des Vorgangs umsetzen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.These computer readable program instructions may be provided to a processor of a general purpose computer, a special purpose computer, or other programmable data processing device to generate a machine so that the instructions executed via the processor of the computer or other programmable data processing device provide means for Execute the functions / operations specified in the block or blocks of the flowcharts and / or block diagrams. These computer readable program instructions may also be stored in a computer readable storage medium that may instruct a computer, programmable computing device, and / or other devices to function in a particular manner such that the computer readable storage medium having instructions stored therein, having an article of manufacture containing instructions that implement aspects of the function / operation indicated in the block or blocks of the flowcharts and / or the block diagrams.

Die von einem Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf eine andere Einheit geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf einer anderen Einheit zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen/Vorgänge ausführen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.The computer readable program instructions may also be loaded on a computer, other programmable data processing device, or other device to effectuate a series of operations on the computer, other programmable device, or on another device to perform one of To generate a process executed on a computer, so that the instructions that are executed on the computer, another programmable device or another unit, perform the functions / operations specified in the block or the blocks of the flowcharts and / or the block diagrams ,

Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das beziehungsweise der eine oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweist. In manchen alternativen Ausführungsarten treten die in dem Block angegebenen Funktionen gegebenenfalls nicht in der in den Figuren angegebenen Reihenfolge auf. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder und/oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge oder Kombinationen aus Anweisungen von Spezial-Hardware und Computer-Anweisungen durchführen, realisiert werden können.The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, every block in the Schedules or in the block diagrams represent a module, segment or portion of instructions having one or more executable instructions for executing the specified logical function (s). In some alternative embodiments, the functions specified in the block may not occur in the order shown in the figures. For example, depending on the functionality associated with them, two blocks, represented as consecutive blocks, may actually be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order. It will also be noted that each block of the block diagrams and / or the representation in the flowcharts and combinations of blocks in the block diagrams and / or the representation in the flowcharts of systems based on special hardware and the specified functions or operations or combinations can be implemented from instructions of special hardware and computer instructions.

Überdies kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und Logik enthalten, die in den Prozessor integriert ist und/oder von dem Prozessor ausgeführt werden kann, wobei die Logik so konfiguriert ist, dass sie einen oder mehrere der hier genannten Prozessschritte durchführt. Mit „integriert in“ ist gemeint, dass der Prozessor über Logik verfügt, die damit als Hardware-Logik, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein kundenprogrammierbarer Universalschaltkreis (FPGA) usw., eingebettet ist. Mit „von dem Prozessor ausgeführt werden kann“ ist gemeint, dass die Logik Hardware-Logik; Software-Logik wie zum Beispiel Firmware, Teil eines Betriebssystems, Teil eines Anwendungsprogramms; usw. oder eine bestimmte Kombination aus Hardware- und Software-Logik ist, auf die der Prozessor zugreifen kann und die so konfiguriert ist, dass sie den Prozessor veranlasst, nach der Ausführung durch den Prozessor, eine bestimmte Funktionalität auszuführen. Software-Logik kann auf einem lokalen und/oder einem fernen Hauptspeicher eines beliebigen Hauptspeichertyps gespeichert werden, wie in der Technik bekannt ist. Jeder beliebige, in der Technik bekannte Prozessor kann verwendet werden, so zum Beispiel ein Software-Prozessormodul und/oder ein Hardware-Prozessor wie beispielsweise ein ASIC, ein FPGA, eine zentrale Verarbeitungseinheit (CPU), eine integrierte Schaltung (IC), eine Grafikverarbeitungseinheit (GPU) usw.Moreover, a system according to various embodiments may include a processor and logic integrated with the processor and / or executed by the processor, wherein the logic is configured to perform one or more of the process steps recited herein. By "integrated in" is meant that the processor has logic embedded therewith as hardware logic, such as an application specific integrated circuit (ASIC), a custom programmable general purpose circuit (FPGA), and so forth. By "can be executed by the processor" is meant that the logic is hardware logic; Software logic such as firmware, part of an operating system, part of an application program; etc., or a particular combination of hardware and software logic that the processor can access and that is configured to cause the processor to perform certain functionality upon execution by the processor. Software logic may be stored on a local and / or a remote main memory of any major memory type, as known in the art. Any processor known in the art may be used, such as a software processor module and / or a hardware processor such as an ASIC, an FPGA, a central processing unit (CPU), an integrated circuit (IC), a graphics processing unit (GPU) etc.

1 stellt eine Architektur 100 gemäß einer Ausführungsform dar. Wie in 1 gezeigt ist, ist eine Vielzahl von fernen Netzwerken 102 bereitgestellt, zu der ein erstes fernes Netzwerk 104 und ein zweites fernes Netzwerk 106 gehören. Ein Gateway-Rechner 101 kann zwischen den fernen Netzwerken 102 und einem nahen Netzwerk 108 angeschlossen sein. Im Kontext der vorliegenden Architektur 100 kann jedes der Netzwerke 104, 106 eine beliebige Form annehmen, einschließlich, ohne darauf beschränkt zu sein, eines LAN, eines WAN wie beispielsweise des Internets, eines öffentlichen Telefonnetzes (PSTN), eines internen Telefonnetzes usw. 1 represents an architecture 100 according to one embodiment. As in 1 is shown is a variety of remote networks 102 provided to the first remote network 104 and a second remote network 106 belong. A gateway computer 101 can be between the distant networks 102 and a nearby network 108 be connected. In the context of the present architecture 100 can any of the networks 104 . 106 take any form, including but not limited to, a LAN, a WAN such as the Internet, a public switched telephone network (PSTN), an internal telephone network, etc.

Im Betrieb dient der Gateway-Rechner 101 als ein Eintrittspunkt von den fernen Netzwerken 102 in das nahe Netzwerk 108. Somit kann der Gateway-Rechner 101 die Funktion eines Routers, der in der Lage ist, ein bestimmtes Datenpaket weiterzuleiten, das an dem Gateway-Rechner 101 ankommt, und einer Vermittlungsstelle übernehmen, die den tatsächlichen Pfad in den und aus dem Gateway-Rechner 101 für ein bestimmtes Paket bereitstellt.During operation, the gateway computer is used 101 as an entry point from the remote networks 102 in the near network 108 , Thus, the gateway computer 101 the function of a router capable of forwarding a particular packet of data to the gateway computer 101 arrives, and a switch that takes the actual path in and out of the gateway machine 101 for a particular package.

Überdies ist mindestens ein Datenserver 114 enthalten, der mit dem nahen Netzwerk 108 verbunden ist und auf den die fernen Netzwerke 102 über den Gateway-Rechner 101 zugreifen können. Es sei angemerkt, dass zu dem beziehungsweise den Datenservern 114 jede beliebige Art einer Datenverarbeitungseinheit/Groupware gehören kann. Mit jedem Datenserver 114 ist eine Vielzahl von Benutzereinheiten 116 verbunden. Die Benutzereinheiten 116 können auch direkt über eines der Netzwerke 104, 106, 108 angeschlossen sein. Zu diesen Benutzereinheiten 116 kann ein Desktop-Computer, ein Laptop-Computer, ein tragbarer Computer, ein Drucker und/oder jede beliebige andere Art von Logik gehören. Es sei angemerkt, dass eine Benutzereinheit 111 in einer Ausführungsform auch direkt mit einem beliebigen der Netzwerke verbunden sein kann.Moreover, there is at least one data server 114 that is connected to the near network 108 and to the remote networks 102 can access via the gateway computer 101. It should be noted that the data server (s) 114 can belong to any type of data processing unit / groupware. With every data server 114 a plurality of user units 116 are connected. The user units 116 can also directly through one of the networks 104 . 106 . 108 be connected. To these user units 116 may include a desktop computer, a laptop computer, a portable computer, a printer and / or any other type of logic. It should be noted that a user unit 111 in one embodiment, may also be connected directly to any of the networks.

Ein Peripheriegerät 120 oder eine Reihe von Peripheriegeräten 120, z.B. Telefaxgeräte, Drucker, vernetzte und/oder lokale Speichereinheiten oder -systeme usw. können mit einem oder mehreren der Netzwerke 104, 106, 108 verbunden sein. Es sei angemerkt, dass Datenbanken und/oder zusätzliche Komponenten mit einer beliebigen Art eines Netzelements, das mit den Netzwerken 104, 106, 108 verbunden ist, verwendet werden oder darin integriert sein können. Im Kontext der vorliegenden Beschreibung kann sich ein Netzelement auf eine beliebige Komponente eines Netzwerks beziehen.A peripheral device 120 or a set of peripherals 120 For example, facsimile machines, printers, networked and / or local storage devices or systems, etc. may communicate with one or more of the networks 104 . 106 . 108 be connected. It should be noted that databases and / or additional components with any type of network element associated with the networks 104 . 106 . 108 is connected, used or integrated into it. In the context of the present description, a network element may refer to any component of a network.

Manchen Ansätzen entsprechend können hier beschriebene Verfahren und Systeme mit und/oder auf virtuellen Systemen und/oder Systemen realisiert werden, die ein oder mehrere andere Systeme emulieren, wie zum Beispiel einem UNIX-System, das eine IBM-z/OS-Umgebung emuliert, einem UNIX-System, das eine MICROSOFT-WINDOWS-Umgebung virtuell hostet, einem MICROSOFT-WINDOWS-System, das eine IBM-z/OS-Umgebung emuliert, usw. Diese Virtualisierung und/oder Emulation kann in manchen Ausführungsformen durch die Verwendung von VMWare-Software verbessert werden.In accordance with some approaches, methods and systems described herein may be implemented with and / or on virtual systems and / or systems that emulate one or more other systems, such as a UNIX system that emulates an IBM z / OS environment, a UNIX system that virtually hosts a MICROSOFT WINDOWS environment, a MICROSOFT WINDOWS system that emulates an IBM z / OS environment, and so on. This virtualization and / or emulation can be in some embodiments, by the use of VMWare software.

In weiteren Ansätzen können ein oder mehrere Netzwerke 104, 106, 108 einen Systemverbund darstellen, der gemeinhin als „Cloud“ bezeichnet wird. Beim Cloud-Computing werden jedem beliebigen System in der Cloud nach Bedarf gemeinsam genutzte Ressourcen wie zum Beispiel Verarbeitungsleistung, Peripheriegeräte, Software, Daten, Server usw. bereitgestellt, was den Zugriff auf Dienste und die Verteilung von Diensten über viele Datenverarbeitungssysteme hinweg ermöglicht. Das Cloud-Computing schließt üblicherweise eine Internetverbindung zwischen den Systemen, die in der Cloud betrieben werden, ein, doch können auch andere Verfahren zum Verbinden der Systeme verwendet werden.In further approaches, one or more networks may 104 . 106 . 108 represent a system composite commonly referred to as a "cloud". In cloud computing, shared resources such as processing power, peripherals, software, data, servers, etc. are provided to any system in the cloud as needed, allowing access to services and the distribution of services across many computing systems. Cloud computing typically includes an Internet connection between the systems that operate in the cloud, but other methods of connecting the systems may also be used.

2 zeigt eine repräsentative Hardware-Umgebung gemäß einer Ausführungsform, zu der eine Benutzereinheit 116 und/oder ein Server 114 von 1 gehören. Diese Figur veranschaulicht eine typische Hardware-Konfiguration einer Workstation, die über eine zentrale Verarbeitungseinheit 210, wie zum Beispiel einen Mikroprozessor, und mehrere andere Einheiten verfügt, welche über einen Systembus 212 untereinander verbunden sind. 2 shows a representative hardware environment according to an embodiment to which a user unit 116 and / or a server 114 from 1 belong. This figure illustrates a typical hardware configuration of a workstation that has a central processing unit 210 , such as a microprocessor, and several other units which have a system bus 212 are interconnected.

Die in 2 gezeigte Workstation enthält einen Direktzugriffsspeicher (RAM) 214, einen Nur-Lese-Speicher (ROM) 216, einen E/A-Adapter 218, um Peripheriegeräte wie zum Beispiel Plattenspeichereinheiten 220 mit dem Bus 212 zu verbinden, einen Benutzerschnittstellenadapter 222, um eine Tastatur 224, eine Maus 226, einen Lautsprecher 228, ein Mikrofon 232 und/oder andere Benutzerschnittstelleneinheiten wie zum Beispiel einen berührungsempfindlichen Bildschirm und eine Digitalkamera (nicht gezeigt) mit dem Bus 212 zu verbinden, einen Kommunikationsadapter 234, um die Workstation mit einem Übertragungsnetzwerk 235 (z.B. mit einem Datenverarbeitungsnetzwerk) zu verbinden, und einen Bildschirmadapter 236, um den Bus 212 mit einem Bildschirm 238 zu verbinden.In the 2 shown workstation contains a random access memory (RAM) 214 , a read-only memory (ROM) 216 , an I / O adapter 218, to peripherals such as disk storage devices 220 by bus 212 to connect a user interface adapter 222 to a keyboard 224 , a mouse 226 , a speaker 228 , a microphone 232 and / or other user interface units such as a touch screen and a digital camera (not shown) with the bus 212 to connect a communication adapter 234 to the workstation with a transmission network 235 (eg with a data processing network) and a display adapter 236 to the bus 212 with a screen 238 connect to.

Auf der Workstation kann sich ein Betriebssystem wie zum Beispiel das Betriebssystem WindowsⓇ von Microsoft, ein MAC-Betriebssystem, ein UNIX-Betriebssystem usw. befinden. Man wird als vorteilhaft erkennen, dass eine bevorzugte Ausführungsform auch auf anderen als den genannten Plattformen und Betriebssystemen realisiert werden kann. Eine bevorzugte Ausführungsform kann mittels der Sprache XML, C und/oder C++ oder mittels anderer Programmiersprachen in Verbindung mit einem objektorientierten Programmieransatz geschrieben werden. Die objektorientierte Programmierung (OOP), die zunehmend für die Entwicklung komplexer Anwendungen verwendet wird, kann zum Einsatz kommen.The workstation may include an operating system such as Microsoft's Windows® operating system, a MAC operating system, a UNIX operating system, and so on. It will be appreciated that a preferred embodiment may be practiced on platforms other than the named platforms and operating systems. A preferred embodiment may be written using the language XML, C and / or C ++ or other programming languages in conjunction with an object-oriented programming approach. Object Oriented Programming (OOP), which is increasingly being used to develop complex applications, can be used.

Nun Bezug nehmend auf 3 ist gemäß einer Ausführungsform ein Speichersystem 300 gezeigt. Man beachte, dass einige der in 3 gezeigten Elemente gemäß verschiedenen Ausführungsformen als Hardware und/oder Software ausgeführt sein können. Das Speichersystem 300 kann einen Speichersystem-Manager 312 enthalten, um mit einer Vielzahl von Datenträgern auf mindestens einem höheren Speichertier 302 und mindestens einem oberen Speichertier 306 Daten auszutauschen. Das beziehungsweise die höheren Speichertier 302 können vorzugsweise einen oder mehrere Datenträger mit wahlfreiem Zugriff und/oder Direktzugriffsdatenträger 304, wie zum Beispiel Festplatten in Festplattenlaufwerken (HDDs), nicht flüchtiger Speicher (nonvolatile memory, NVM), Solid-State-Speicher in Solid-State-Laufwerken (SSDs), Flashspeicher, SSD-Arrays, Flash-Speicherarrays usw. und/oder andere hier genannte oder in der Technik bekannte Datenträger enthalten. Das beziehungsweise die oberen Speichertier 306 können vorzugsweise einen oder mehrere obere ausführende Speichermedien 308, einschließlich Datenträger mit sequenziellem Zugriff wie zum Beispiel Magnetband in Bandlaufwerken und/oder optische Datenträger, HDDs, SSDs usw. und/oder andere hier genannte oder in der Technik bekannte Datenträger enthalten. Ein oder mehrere zusätzliche Speichertier 316 können eine beliebige Kombination von Hauptspeicherdatenträgern enthalten, wie von einem Entwickler des Systems 300 gewünscht. Auch können beliebige der höheren Speichertier 302 und/oder der oberen Speichertier 306 eine bestimmte Kombination von Speichereinheiten und/oder Speichermedien enthalten.Now referring to 3 In one embodiment, it is a memory system 300 shown. Note that some of the in 3 shown elements according to various embodiments may be implemented as hardware and / or software. The storage system 300 can be a storage system manager 312 included with a variety of disks on at least one higher storage tier 302 and at least one upper storage animal 306 Exchange data. The or the higher storage animal 302 may preferably have one or more random access media and / or random access media 304 such as hard disk drives (HDDs), nonvolatile memories (NVMs), solid state drives in solid state drives (SSDs), flash memories, SSD arrays, flash memory arrays, etc., and / or contain other media mentioned here or known in the art. The or the upper storage animal 306 may preferably have one or more upper executing storage media 308 , including sequential access media such as magnetic tape in tape drives and / or optical media, HDDs, SSDs, etc., and / or other media referred to herein or known in the art. One or more additional storage animals 316 can contain any combination of main storage volumes, such as from a developer of the system 300 desired. Also, any of the higher storage animals 302 and / or the upper storage animal 306 contain a specific combination of storage units and / or storage media.

Der Speichersystem-Manager 312 kann mit den Speichermedien 304, 308 auf dem höheren Speichertier beziehungsweise den höheren Speichertiers 302 und dem oberen Speichertier beziehungsweise den oberen Speichertiers 306 über ein Netzwerk 310, wie zum Beispiel ein Speicherbereichsnetzwerk (Storage Area Network, SAN), das in 3 gezeigt ist, oder eine andere Art eines geeigneten Netzwerks Daten austauschen Der Speichersystem-Manager 312 kann auch mit einem oder mehreren Host-Systemen (nicht gezeigt) über eine Host-Schnittstelle 314, die Teil des Speichersystem-Managers 312 sein kann oder auch nicht sein kann, Daten austauschen. Der Speichersystem-Manager 312 und/oder eine beliebige andere Komponente des Speichersystems 300 kann in Hardware und/oder Software ausgeführt sein und einen Prozessor (nicht gezeigt) verwenden, um Befehle einer in der Technik bekannten Art auszuführen, wie zum Beispiel eine zentrale Verarbeitungseinheit (CPU), einen kundenprogrammierbaren Universalschaltkreis (field programmable gate array, FPGA), eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit, ASIC) usw. Natürlich kann jede beliebige Anordnung eines Speichersystems verwendet werden, wie für den Fachmann offensichtlich ist, nachdem er die vorliegende Beschreibung gelesen hat.The storage system manager 312 can with the storage media 304 . 308 on the higher storage animal or the higher storage animal 302 and the upper storage animal or the upper storage animal 306 over a network 310 , such as a storage area network (SAN) that resides in 3 is shown, or another type of suitable network exchange data The storage system manager 312 can also communicate with one or more host systems (not shown) via a host interface 314, which is part of the storage system manager 312 may or may not be, exchange data. The storage system manager 312 and / or any other component of the storage system 300 may be embodied in hardware and / or software and use a processor (not shown) to execute instructions of a kind known in the art, such as a central processing unit (CPU), a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), etc. Of course, any arrangement of a memory system may be used as well will be apparent to those skilled in the art after having read the present specification.

In weiteren Ausführungsformen kann das Speichersystem 300 eine beliebige Anzahl von Datenspeichertiers enthalten und dieselben oder andere Hauptspeicherdatenträger in jedem Speichertier enthalten. Zum Beispiel kann jedes Datenspeichertier den gleichen Typ von Hauptspeicherdatenträgern enthalten, wie beispielsweise HDDs, SSDs, Datenträger mit sequenziellem Zugriff (Band in Bandlaufwerken, optische Platte in optischen Plattenlaufwerken usw.) Direktzugriffsdatenträger (CD-ROM, DVD-ROM usw.) oder jede beliebige Kombination von Arten von Datenträgerspeichern. In einer solchen Konfiguration kann ein höheres Speichertier 302 eine Mehrheit an SSD-Speichermedien zur Speicherung von Daten in einer höheren ausführenden Speicherumgebung enthalten, und die verbleibenden Speichertiers, einschließlich des oberen Speichertiers 306, sowie zusätzliche Speichertiers 316 können eine beliebige Kombination von SSDs, HDDs, Bandlaufwerken usw. enthalten, um Daten in einer oberen ausführenden Speicherumgebung zu speichern. Auf diese Weise können Daten, auf die häufiger zugegriffen wird, Daten, die eine höhere Priorität haben, Daten, auf die ein schnellerer Zugriff nötig ist, usw. in dem höheren Speichertier 302 gespeichert werden, während Daten, die über keines dieser Attribute verfügen, in den zusätzlichen Speichertiers 316 einschließlich des oberen Speichertiers 306 gespeichert werden. Natürlich kann sich der Fachmann, nachdem er die vorliegenden Beschreibungen gelesen hat, viele andere Kombinationen von Arten von Speichermedien für die Umsetzung in verschiedene Speicherschemata gemäß den hier vorgestellten Ausführungsformen ausdenken.In further embodiments, the storage system 300 contain any number of data stores and contain the same or other main storage volumes in each store. For example, each data storage device may include the same type of main storage media, such as HDDs, SSDs, sequential access media (tape in tape drives, optical disk in optical disk drives, etc.) random access media (CD-ROM, DVD-ROM, etc.) or any one Combination of types of disk storage. In such a configuration, a higher storage animal 302 contain a majority of SSD storage media for storing data in a higher executing storage environment, and the remaining storage animals, including the upper storage tier 306 , as well as additional storage animals 316 can contain any combination of SSDs, HDDs, tape drives, etc., to store data in an upper executing storage environment. In this way, data that is accessed more frequently, data that has a higher priority, data that requires faster access, etc., may be in the higher memory tier 302 while data that does not have any of these attributes is stored in the extra memory tiers 316 including the upper storage animal 306 get saved. Of course, having read the present specifications, those skilled in the art may devise many other combinations of types of storage media for translation into various storage schemes in accordance with the embodiments presented herein.

Gemäß manchen Ausführungsformen kann das Speichersystem (wie zum Beispiel das Speichersystem 300) Logik, die so konfiguriert ist, dass sie eine Anforderung für das Öffnen eines Datensatzes empfängt, Logik, die so konfiguriert ist, dass sie feststellt, ob der angeforderte Datensatz in einem oberen Speichertier 306 eines mehrschichtigen Datenspeichersystems 300 in mehreren zugehörigen Teilen gespeichert ist, Logik, die so konfiguriert ist, dass sie jeden zugehörigen Teil des angeforderten Datensatzes in ein höheres Speichertier 302 des mehrschichtigen Datenspeichersystems 300 verschiebt, und Logik, die so konfiguriert ist, dass sie den angeforderten Datensatz auf dem höheren Speichertier 302 des mehrschichtigen Datenspeichersystems 300 aus den zugehörigen Teilen zusammensetzt, enthalten.According to some embodiments, the storage system (such as the storage system 300 ) Logic configured to receive a request to open a record, logic configured to determine if the requested record is in an upper memory tier 306 a multi-layered data storage system 300 stored in several associated parts, logic that is configured to move any associated portion of the requested record into a higher memory tier 302 the multilayer data storage system 300 shifts, and logic that is configured to place the requested record on the higher storage tier 302 the multilayer data storage system 300 composed of the associated parts.

Natürlich kann diese Logik gemäß verschiedenen Ausführungsformen als ein Verfahren auf einer beliebigen Einheit und/oder auf einem beliebigen System oder als ein Computerprogrammprodukt realisiert werden.Of course, according to various embodiments, this logic may be implemented as a method on any unit and / or on any system or as a computer program product.

Beispielhafte baumbasierte DatenstrukturenExemplary tree-based data structures

Im Allgemeinen betreffen die aktuell offenbarten erfindungsgemäßen Ausführungsformen die Verarbeitung und die Aktualisierung von baumbasierten Datenstrukturen mit praktischer Anwendung auf ausgelagerte Suchbäume, die üblicherweise wirksam eingesetzt werden, um die Organisation von Daten in einem Speichersystem zu vereinfachen. Die hier dargelegte Erörterung betrifft den beispielhaften Fall eines ausgelagerten Suchbaums (z.B. eines „B+-Baums“), bei dem alle Dateneinträge in Endknoten der Datenstruktur (d.h. „Blattknoten“) gespeichert werden, während alle inneren Knoten (d.h. „Verzweigungsknoten“ und „Wurzelknoten“) Weiterleitungsinformationen speichern, die so konfiguriert sind, dass sie das Durchlaufen der Baumstruktur während eines Suchlaufs nach bestimmten darin gespeicherten Daten vereinfachen.In general, the presently disclosed embodiments of the present invention relate to the processing and updating of tree-based data structures with practical application to paged search trees, which are typically used effectively to facilitate the organization of data in a storage system. The discussion presented here concerns the exemplary case of a paged search tree (eg, a "B + tree") in which all data entries are stored in end nodes of the data structure (ie, "leaf nodes"), while all inner nodes (ie, "branch nodes" and "root nodes ") Store forwarding information that is configured to facilitate traversal of the tree during a search for particular data stored therein.

Es sollte sich jedoch von selbst verstehen, dass der Umfang der vorliegenden Offenbarungen nicht auf B+-Bäume, B-Bäume oder irgendeine andere bestimmte Variante einer baumbasierten Datenstruktur beschränkt ist. Vielmehr können die aktuell offenbarten erfindungsgemäßen Konzepte auf jede beliebige geeignete baumbasierte Datenstruktur angewendet werden, die ein Fachmann als vorteilhaft erkennen würde, nachdem er die vorliegenden Beschreibungen gelesen hat.However, it should be understood that the scope of the present disclosures is not limited to B + trees, B trees, or any other particular variant of a tree-based data structure. Rather, the presently disclosed inventive concepts can be applied to any suitable tree-based data structure that a person skilled in the art would find advantageous after reading the present descriptions.

Eine beispielhafte Ausführungsform einer baumbasierten Datenstruktur 400 ist in 4 grafisch dargestellt. In dieser Ausführungsform handelt es sich bei dem Baum 400 um eine ausgeglichene Datenstruktur mit drei Ebenen. Die oberste Ebene des Baums (Wurzelebene 410a) enthält einen Wurzelknoten 402, von dem alle anderen Knoten in dem Baum abstammen. Die erste Knotenebene 410b des Baums 400, die sich direkt unter dem Wurzelknoten 402 befindet, enthält zwei innere Knoten 404, die vom Wurzelknoten 402 gabelförmig verzweigen. In Ausführungsformen, in denen der Baum 400 ein B+-Baum ist, enthalten diese inneren Knoten 404 Weiterleitungsinformationen, aber keine Dateneinträge. In einer Ausführungsform mit einem B+-Baum von 4 werden die Dateneinträge vielmehr ausschließlich in den Blattknoten 406 gespeichert, die sich in der zweiten Knotenebene 410c direkt unter der ersten Knotenebene befinden, wie in 4 gezeigt ist. Natürlich versteht der Fachmann, dass der Baum 400 in anderen Ausführungsformen kein B+-Baum, sondern eine andere geeignete Form einer baumbasierten Datenstruktur sein kann und Dateneinträge in inneren Knoten 404 sowie in Blattknoten 406 speichern kann.An exemplary embodiment of a tree-based data structure 400 is in 4 shown graphically. In this embodiment, tree 400 is a balanced three-level data structure. The topmost level of the tree (root level 410a ) contains a root node 402 from which all other nodes in the tree descend. The first node level 410b of the tree 400 that are directly under the root node 402 contains two inner nodes 404 that from the root node 402 branch forked. In embodiments in which the tree 400 A B + tree contains these inner nodes 404 Forwarding information, but no data entries. In an embodiment with a B + tree of 4 Instead, the data entries are exclusively in the leaf nodes 406 stored in the second node level 410c located just below the first node level, as in 4 is shown. Of course, the expert understands that the tree 400 in other embodiments may not be a B + tree, but may be another suitable form of tree-based data structure and data entries in inner nodes 404 as well as in leaf nodes 406 can save.

Eine ähnliche baumbasierte Datenstruktur 500 ist in 5 gezeigt, gemäß der dargestellten Ausführungsform ist der Baum 500 jedoch unausgeglichen. Wie bei 4 weist der Baum 500 eine Wurzelebene 510a, die einen Wurzelknoten 502 enthält, eine erste Knotenebene 510b unterhalb der Wurzelknotenebene und eine zweite Knotenebene 510c unterhalb der ersten Knotenebene auf. Wie jedoch in 5 gezeigt ist, ist der Baum 500 asymmetrisch und enthält einen inneren Knoten 504 in der ersten Knotenebene 510b, jedoch enthält er auch Blattknoten 506 in mehreren Knotenebenen 510b, 510c des Baums 500. In der Praxis und gemäß verschiedenen Ausführungsformen sind die aktuell offenbarten erfindungsgemäßen Ausführungsformen gleichermaßen auf symmetrische wie auch auf asymmetrische Baumarten anwendbar.A similar tree-based data structure 500 is in 5 shown, according to the illustrated embodiment, the tree 500 however unbalanced. As in 4 points the tree 500 a root plane 510a that have a root node 502 contains, a first node level 510b below the root node level and a second node level 510c below the first node level. However, as in 5 shown is the tree 500 asymmetrical and contains an inner node 504 in the first node level 510b but it also contains leaf nodes 506 in several node levels 510b . 510c of the tree 500 , In practice and in accordance with various embodiments, the presently disclosed embodiments of the invention are equally applicable to symmetric as well as asymmetric tree species.

Weiterhin Bezug nehmend auf die 4 und 5 und entsprechend der Auffassung in diesem Schriftstück enthält die erste Knotenebene 410b, 510b eines jeden Baums 400, 500 jeweils zwei horizontal benachbarte gleichgeordnete Knoten (siehe Knoten 404, wie in 4 gezeigt ist; die Knoten 504 und 506 wie in 5 gezeigt ist). Da diese gleichgeordneten Knoten jeweils direkt von dem entsprechenden Wurzelknoten 402, 502 abstammen, sind sie auch ihrem jeweiligen Wurzelknoten vertikal benachbart.Still referring to the 4 and 5 and according to the opinion in this document contains the first node level 410b . 510b of every tree 400 . 500 two horizontally adjacent siblings (see node 404 , as in 4 is shown; the knots 504 and 506 as in 5 is shown). Since these siblings are each directly from the corresponding root node 402 . 502 They are also vertically adjacent to their respective root nodes.

In manchen Ausführungsformen brauchen gleichgeordnete Knoten jedoch nicht unbedingt von demselben Vorfahrenknoten abzustammen. Wie zum Beispiel in 4 gezeigt ist, enthält die zweite Knotenebene 410c vier Blattknoten 406, die als drei Sätze von gleichgeordneten Knoten enthaltende Blattknoten betrachtet werden können: die beiden äußersten linken gleichgeordneten Knoten stammen von dem äußersten linken inneren Knoten 404 in der ersten Knotenebene 410b ab. Die beiden äußersten rechten gleichgeordneten Knoten stammen von dem äußersten rechten inneren Knoten 404 in der ersten Knotenebene 410b ab. Jeder der mittleren beiden gleichgeordneten Knoten stammt von einem anderen Elternknoten ab, einer von dem äußersten linken inneren Knoten 404 in der ersten Knotenebene 410b und der andere von dem äußersten rechten inneren Knoten 404 in der ersten Knotenebene 410b. In verschiedenen Ausführungsformen sind alle solchen horizontal und unmittelbar benachbarten Paare von Knoten in einer bestimmten Knotenebene als gleichgeordnete Knoten zu betrachten.However, in some embodiments, siblings do not necessarily derive from the same ancestor node. Like in 4 is shown contains the second node level 410c four leaf nodes 406 which can be considered as leaf nodes containing three sets of sibling nodes: the two extreme left sibling nodes are from the far left inner node 404 in the first node level 410b from. The two outermost right siblings are from the outermost right inner node 404 in the first node level 410b from. Each of the middle two siblings originates from another parent node, one from the far left inner node 404 in the first node level 410b and the other from the far right inner node 404 in the first node plane 410b. In various embodiments, all such horizontally and immediately adjacent pairs of nodes in a particular node level are to be considered as siblings.

Ebenso und wie anhand von 6 gezeigt ist, sind die aktuell offenbarten erfindungsgemäßen Ausführungsformen auf wesentlich komplexere Baumstrukturen, z.B. einen asymmetrischen Baum mit n Ebenen, wie die baumbasierte Datenstruktur 600, anwendbar und im Zusammenhang mit diesen nützlich. Gemäß der in 6 gezeigten Struktur hat der Baum 600 in einer Ausführungsform einen Wurzelknoten 602 in einer Wurzelknotenebene 610a und zwei innere Knoten 604 in einer ersten Knotenebene 610b, die sich direkt unter der Wurzelknotenebene 610a befindet.Likewise and as based on 6 4, the presently disclosed embodiments of the present invention are applicable to and useful in connection with much more complex tree structures, eg, an n-level asymmetric tree, such as the tree-based data structure 600. According to the in 6 The structure shown has the tree 600 in one embodiment, a root node 602 in a root node plane 610a and two inner nodes 604 in a first node level 610b located just below the root node level 610a located.

Die nächste Knotenebene, die in manchen Ausführungsformen als zweite Knotenebene 610d bezeichnet werden kann, befindet sich unterhalb der ersten Knotenebene und kann sowohl einen oder mehrere innere Knoten 604 als auch einen oder mehrere Blattknoten 606 enthalten. In verschiedenen Ausführungsformen kann der Baum 600 mit n Ebenen beliebig viele dazwischenliegende zusätzliche Ebenen (nicht gezeigt) haben, wobei jede Ebene innere Knoten 604 und/oder Blattknoten 606 hat, welche zwischen der ersten Knotenebene 610b und der zweiten Knotenebene 610d und/oder zwischen der dritten Knotenebene 610e und der Endknotenebene 610n angeordnet sind, wie in 6 durch die gestricheltgezackten Linien angegeben ist, welche die Verzweigungen zwischen der ersten Knotenebene 610b und der zweiten Knotenebene 610d und zwischen der dritten Knotenebene 610e und der Endknotenebene 610n trennen.The next node level, which in some embodiments is a second node level 610d can be referred to, is located below the first node level and can be both one or more inner nodes 604 as well as one or more leaf nodes 606 contain. In various embodiments, the tree may 600 with n levels any number of intermediate additional levels (not shown), each level having inner nodes 604 and / or leaf nodes 606 has, which is between the first node level 610b and the second node level 610d and / or between the third node level 610e and the end node level 610n are arranged as in 6 is indicated by the dashed lines representing the branches between the first node level 610b and the second node level 610d and between the third node level 610e and the end node level 610n separate.

In bevorzugten Ansätzen werden die aktuell offenbarten Algorithmen in Speichersystemen und/oder Architekturen ausgeführt, die über optimale minimale und maximale Fan-out-Eigenschaften verfügen, d.h., die von dem Speichersystem und/oder der Architektur realisierten baumbasierten Datenstrukturen sind ausgeglichen und optimieren die Anzahl der Knoten pro Ebene des Baums, um die Anzahl der Ebenen in dem Baum zu optimieren. Überdies werden die Algorithmen in bevorzugten Ansätzen auf B+-Bäume angewendet, die über solche Fan-out-Eigenschaften verfügen.In preferred approaches, the currently disclosed algorithms are implemented in memory systems and / or architectures having optimal minimum and maximum fan-out characteristics, ie, the tree-based data structures realized by the memory system and / or architecture are balanced and optimize the number of Nodes per level of the tree to optimize the number of levels in the tree. Moreover, the algorithms are applied in preferred approaches to B + trees that have such fan-out characteristics.

Vorteilhafterweise lässt es die Verwendung von Datenstrukturen, die über Fan-out-Eigenschaften verfügen, wie sie vorstehend beschrieben wurden, üblicherweise zu, dass eine mengenbasierte gleichzeitige Verarbeitung von heterogenen Operationen an Dateneinträgen sowie entsprechende Änderungen an der Baumstruktur in drei oder weniger Iterationen einer Aktualisierungsphase durchgeführt werden, wie nachstehend ausführlicher beschrieben wird. Dieser besonders effiziente Prozess verbessert die Arbeitsweise der Speichersysteme, welche die aktuell offenbarten Techniken umsetzen, noch weiter, indem er die Rechenkosten und die Ausführungszeit für die Bearbeitung von Daten und die Bearbeitung der baumbasierten Datenstrukturen selbst entsprechend mehrerer Ansätze verringert.Advantageously, the use of data structures having fan-out features as described above usually allows for volume-based concurrent processing of heterogeneous operations on data entries as well as corresponding changes to the tree structure in three or fewer iterations of an update phase will be described in more detail below. This highly efficient process further enhances the operation of the memory systems that implement the presently disclosed techniques by reducing the computational cost and execution time of manipulating data and manipulating the tree-based data structures themselves according to multiple approaches.

Gleichzeitige Massenverarbeitung von baumbasierten DatenstrukturenSimultaneous mass processing of tree-based data structures

Wie nachstehend erwähnt, müssen herkömmliche Techniken zur Verarbeitung von Daten und baumbasierten Datenstrukturen wie zum Beispiel ausgelagerten Suchbäumen das Problem einer effizienten gleichzeitigen Verarbeitung von Daten, die in dem Baum/über den Baum gespeichert werden, noch lösen. Ein hier vorgestellter einzigartiger Ansatz schlägt die Verwendung einer gleichzeitigen Massenverarbeitung von Arten von heterogenen Operationen vor, um die E/A und Prozessorkosten in Verbindung mit typischen Techniken zur Verarbeitung von Daten, die in dem Baum/über den Baum gespeichert werden, und zur Verarbeitung der Baumstruktur zu verringern. Kurz gesagt, da die aktuell offenbarten erfindungsgemäßen Techniken die mengenbasierte Verarbeitung von Arten von heterogenen Operationen ermöglichen, notwendige minimale strukturelle Veränderungen an dem Baum feststellen und diese notwendigen minimalen strukturellen Veränderungen in dem Prozess der Änderung der Daten und/oder der Baumstruktur den Baum hinauf weitergeben, lässt sich eine erhebliche Effizienzverbesserung erzielen.As mentioned below, conventional techniques for processing data and tree-based data structures such as paged search trees must address the problem of efficient simultaneous processing of data stored in the tree / tree. A unique approach presented here suggests the use of simultaneous mass processing of types of heterogeneous operations to reduce the I / O and processor costs associated with typical techniques for processing data stored in the tree / tree and processing the data Reduce tree structure. In short, since the presently disclosed techniques of the present invention enable the quantity-based processing of types of heterogeneous operations, detect necessary minimum structural changes to the tree, and pass these necessary minimum structural changes up the tree in the process of changing the data and / or tree structure, can achieve a significant improvement in efficiency.

Die aktuell offenbarten erfindungsgemäßen Konzepte stellen Techniken zur Durchführung von heterogenen Operationen an Dateneinträgen in einer Datenstruktur wie zum Beispiel einem ausgelagerten Suchbaum sowie zur Vornahme von notwendigen Änderungen an der Organisation der Datenstruktur, die sich aus der Durchführung der heterogenen Operationen ergeben, bereit. Die aktuell offenbarten erfindungsgemäßen Konzepte sind einzigartig, da die Verarbeitung von heterogenen Operationen gleichzeitig und mengenbasiert für jede Ebene der Baumdatenstruktur durchgeführt wird, was die Anzahl und die Kosten der Verarbeitungs- und E/A-Operationen, die notwendig sind, um den Satz von heterogenen Operationen durchzuführen, erheblich verringert.The presently disclosed inventive concepts provide techniques for performing heterogeneous operations on data entries in a data structure, such as a paged search tree, as well as making necessary changes to the organization of the data structure resulting from the performance of the heterogeneous operations. The presently disclosed inventive concepts are unique in that the processing of heterogeneous operations is performed concurrently and quantity-based for each level of the tree data structure, which is the number and cost of the processing and I / O operations necessary to set the set of heterogeneous ones To perform operations significantly reduced.

Im Allgemeinen führen die hier beschriebenen Techniken die vorstehend erwähnte gleichzeitige Massenverarbeitung durch, wobei ein Ansatz mit zwei Phasen zur Anwendung kommt. Als Erstes durchläuft eine Suchphase die Baumdatenstruktur und lokalisiert die Blattknoten, auf die eine oder mehrere Operationen eines eingegebenen Satzes von heterogenen Operationen angewendet werden sollen. Als Zweites durchläuft eine Aktualisierungsphase die Baumdatenstruktur ebenenweise und iterativ, wobei sie von der Blatt-Ebene zur Wurzel fortschreitet.In general, the techniques described herein perform the aforementioned simultaneous mass processing using a two-phase approach. First, a search phase traverses the tree data structure and locates the leaf nodes to which one or more operations of an input set of heterogeneous operations are to be applied. Second, an update phase goes through the tree data structure plane-wise and iteratively, proceeding from the leaf level to the root.

Eine Umsetzung von einem der aktuell offenbarten erfindungsgemäßen Konzepte ist beispielsweise schematisch in 7 gezeigt, wo eine aus n Ebenen bestehende baumbasierte Datenstruktur mehrere Ebenen 710a, 710b, 710c ... 710n enthält. Die Wurzelebene 710a hat einen Wurzelknoten 702, von dem vier innere Knoten 704 abstammen, die eine weitere Knotenebene 710b bilden. Ebenso stammen von den Knoten 704 dieser Knotenebene jeweils vier Knoten ab, die noch eine weitere Knotenebene 710c bilden. Der Baum wächst auf diese Weise immer weiter, bis er die n-te Ebene 710n erreicht, die eine Vielzahl von Blattknoten 706 enthält, von denen jeder einen oder mehrere Dateneinträge speichert. Eine beliebige Anzahl von Ebenen kann zwischen der Wurzelebene 710a und der Blattknotenebene 710n liegen, ohne vom Umfang der aktuell offenbarten erfindungsgemäßen Konzepte abzuweichen.An implementation of one of the currently disclosed inventive concepts is for example schematically in 7 where a n-level tree-based data structure has multiple levels 710a . 710b . 710c ... contains 710n. The root level 710a has a root node 702 , of which four inner nodes 704 descend, which is another node level 710b form. Likewise come from the knots 704 This node level from each four nodes, which still another node level 710c form. The tree continues to grow in this way until it reaches the nth level 710n Achieved a variety of leaf nodes 706 each of which stores one or more data entries. Any number of levels can be between the root level 710a and the leaf node plane 710n without departing from the scope of the presently disclosed inventive concepts.

Im Grunde findet die gemäß den vorliegenden Offenbarungen durchgeführte Verarbeitung in zwei Hauptphasen statt. Die Suchphase beginnt auf der Wurzelebene 710a und schreitet ebenenweise zu den Blattknoten 706 in der n-ten Ebene 710n fort.In essence, the processing performed according to the present disclosure takes place in two main phases. The search phase starts at the root level 710a and proceeds step by step to the leaf nodes 706 in the nth level 710n continued.

Umgekehrt beginnt die Aktualisierungsphase auf der Blattknotenebene 710n in einer ersten Iteration (i=0) und schreitet durch eine oder mehrere Iterationen (i≥1 ) in Aufwärtsrichtung fort, möglicherweise den ganzen Weg bis zum Wurzelknoten 702 in einer n-ten Iteration (i=n). Natürlich kann die Aktualisierungsphase in verschiedenen Ausführungsformen enden, bevor sie die Wurzelknotenebene 710a erreicht, z.B. als Reaktion auf die Feststellung, dass keine Knoten in einem aus Knoten und Operationen bestehenden Satz angegeben sind, der während der unmittelbar vorausgehenden Iteration der Aktualisierungsphase erzeugt wurde, z.B. während der Iterationen i=(n-1), i=(n-2), 2<i<(n-2), i>1 usw. wie in 7 gezeigt ist.Conversely, the update phase begins at the leaf node level 710n in a first iteration (i = 0) and progresses through one or more iterations (i≥1) in the upward direction, possibly all the way to the root node 702 in an nth iteration (i = n). Of course, in various embodiments, the update phase may end before the root node level 710a achieved, eg, in response to determining that no nodes are specified in a set of nodes and operations generated during the immediately preceding iteration of the update phase, eg, during iterations i = (n-1), i = (n -2), 2 <i <(n-2), i> 1 etc. as in 7 is shown.

In bevorzugten Ausführungsformen wird während einer jeden Iteration der Aktualisierungsphase eine Ebene der Datenstruktur verarbeitet, und die entsprechenden Operationen werden auf allen entsprechenden Knoten in dieser Ebene gleichzeitig und mengenbasiert durchgeführt. Die Aktualisierungsphase befasst sich mit Knoten, die infolge der Anwendung der heterogenen Operationen voll oder unterfüllt werden. Die Ausgabe einer jeden Aktualisierungsphase besteht in einem Satz von Knoten in der nächsthöheren Ebene des Baums sowie in Operationen, die auf diesen Knoten angewendet werden, wobei diese Operationen das Ergebnis der Operationen sind, die auf den Knoten in der aktuellen Ebene des Baums angewendet werden. Die während einer Aktualisierungsphase erzeugten Operationen, die auf den Knoten der nächsthöheren Ebene des Baums angewendet werden sollen, unterstützen die neue Form der Knoten, die bei der Verarbeitung der aktuellen Ebene des Baums erzeugt, gelöscht und bei denen der Inhalt ihrer Einträge aktualisiert wurde. Der ausgegebene, aus Knoten und Operationen bestehende Satz der aktuellen Aktualisierungsphase wird dann als Eingabe für die nächste Aktualisierungsphase bereitgestellt, nämlich zur Verarbeitung der nächsthöheren Ebene des Baums. Die Verarbeitung des Algorithmus wird abgeschlossen, wenn der aus Knoten und Operationen bestehende Satz leer ist, welcher durch die Verarbeitung einer Ebene des Baums erzeugt wurde.In preferred embodiments, during each iteration of the update phase, one level of the data structure is processed, and the corresponding operations are performed concurrently and quantity based on all corresponding nodes in that level. The update phase deals with nodes that become full or underfull as a result of the application of the heterogeneous operations. The output of each update phase consists of a set of nodes in the next higher level of the tree as well as in operations applied to that node, these operations being the result of the operations applied to the nodes in the current level of the tree. The operations generated during an update phase to be applied to the node of the next higher level of the tree support the new form of the nodes created in the processing of the current level of the tree, and have the contents of their entries updated. The output node-and-operation set of the current update phase is then provided as input to the next update phase, namely, to the next higher level of the tree. The processing of the algorithm is completed when the set of nodes and operations is empty, which was generated by the processing of a level of the tree.

Folglich und mit Bezug auf 10 ist ein Ablaufplan eines Verfahrens 1000 gemäß einer Ausführungsform gezeigt. Das Verfahren 1000 kann gemäß der vorliegenden Erfindung in verschiedenen Ansätzen in einer beliebigen der Umgebungen durchgeführt werden, die unter anderem in den 1 bis 9 gezeigt sind. Natürlich können mehr oder weniger Operationen als diejenigen, die in 10 ausdrücklich beschrieben sind, in das Verfahren 1000 aufgenommen werden, was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat. Consequently and with reference to 10 is a flowchart of a procedure 1000 according to one embodiment. The procedure 1000 can be carried out according to the present invention in various approaches in any of the environments described inter alia in the 1 to 9 are shown. Of course, more or less surgeries can be done than those in 10 are expressly described in the process 1000 what the skilled artisan should understand after reading the present specifications.

Jeder der Schritte des Verfahrens 1000 kann von einer beliebigen geeigneten Komponente der Betriebsumgebung durchgeführt werden. Zum Beispiel kann das Verfahren 1000 in verschiedenen Ausführungsformen ganz oder teilweise von einem Plattenmanager eines hierarchischen Speichersystems oder einer anderen Einheit durchgeführt werden, in der sich ein oder mehrere Prozessoren befinden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software ausgeführt sind und vorzugsweise über mindestens eine Hardware-Komponente verfügen, kann in jeder beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 1000 durchzuführen. Zu Prozessoren, die der Veranschaulichung dienen, gehören, ohne darauf beschränkt zu sein, eine zentrale Verarbeitungseinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), ein kundenprogrammierbarer Universalschaltkreis (FPGA) usw., Kombinationen daraus oder eine beliebige andere geeignete, in der Technik bekannte Datenverarbeitungseinheit.Each of the steps of the procedure 1000 may be performed by any suitable component of the operating environment. For example, the procedure 1000 in various embodiments may be performed in whole or in part by a disk manager of a hierarchical storage system or other device in which one or more processors reside. The processor, eg, one or more processing circuits, one or more chips, and / or one or more modules embodied in hardware and / or software, and preferably having at least one hardware component, may be used in any unit to provide one or several steps of the procedure 1000 perform. Illustrative processors include, but are not limited to, a central processing unit (CPU), an application specific integrated circuit (ASIC), a custom programmable general purpose circuit (FPGA), etc., combinations thereof, or any other suitable ones in which Technology known data processing unit.

Das Verfahren 1000 ist für eine gleichzeitige Verarbeitung von Operationen an einer baumbasierten Datenstruktur, wie beispielsweise einer beliebigen der baumbasierten Datenstrukturen, die in den 4 bis 6 gezeigt sind, unter anderen ähnlichen baumbasierten Strukturen konfiguriert, die von einem Fachmann als vorteilhaft erkannt würden, nachdem er die vorliegenden Beschreibungen gelesen hat. Die Wurzelknotenebene und die Blattknotenebene können durch eine beliebige Anzahl von dazwischenliegenden Ebenen getrennt sein. Die baumbasierte Struktur kann den Definitionen eines B+-Baums, eines B-Baums oder einer beliebigen anderen Art einer baumbasierten Struktur entsprechen.The procedure 1000 is for concurrently processing operations on a tree-based data structure, such as any of the tree-based data structures that exist in the 4 to 6 Configured among other similar tree-based structures that would be appreciated by one skilled in the art after having read the present descriptions. The root node level and leaf node level may be separated by any number of intermediate levels. The tree-based structure may correspond to the definitions of a B + tree, a B-tree, or any other type of tree-based structure.

Ungeachtet der Einzelheiten der baumbasierten Datenstruktur, und wie in 10 gezeigt ist, beinhaltet das Verfahren 1000 die Operation 1002, in der eine Eingabe von einem Speichersystem empfangen wird, in dem die baumbasierte Datenstruktur gespeichert ist. Die Eingabe kennzeichnet einen Satz von heterogenen Operationen, die auf die baumbasierte Datenstruktur angewendet werden sollen.Regardless of the details of the tree-based data structure, and as in 10 is shown, includes the method 1000 the operation 1002 in which an input is received from a storage system in which the tree-based data structure is stored. The input identifies a set of heterogeneous operations to apply to the tree-based data structure.

Vorzugsweise enthält die Eingabe einen Verweis auf die baumbasierte Datenstruktur und eine Liste mit Paaren, wobei jedes Paar einen Dateneintrag und eine zugehörige Operation angibt. Jeder Dateneintrag kann einen Schlüssel und eine Nutzlast enthalten, in der Daten gespeichert sind.Preferably, the input includes a reference to the tree-based data structure and a list of pairs, each pair indicating a data entry and an associated operation. Each data entry may include a key and a payload in which data is stored.

In verschiedenen Ansätzen kann der Satz von heterogenen Operationen eines oder mehr von Folgendem beinhalten: Einfügeoperationen, Löschoperationen und/oder Aktualisierungsoperationen. Eine Einfügeoperation in einen Knoten kann dazu führen, dass der Knoten überläuft, und daher eine Aufteilung des Knotens erforderlich machen, was es wiederum erforderlich machen kann, dass Änderungen auf Einträge in den Baumebenen oberhalb der Blätter angewendet werden. Eine Löschoperation aus einem Knoten kann dazu führen, dass der Knoten unterfüllt wird, und es somit erforderlich wird, den Knoten möglicherweise mit einem anderen Knoten zusammenzuführen, was es wiederum ebenfalls erforderlich machen kann, dass Änderungen auf Einträge in den Baumebenen oberhalb der Blätter angewendet werden. Um Veränderungen an der Organisation der Datenstruktur Rechnung zu tragen, können solche Änderungen das Hinzufügen, Aktualisieren oder Entfernen von Weiterleitungseinträgen beinhalten und sie können hinauf bis zum Wurzelknoten des Baums weitergegeben werden. Die Aktualisierung eines Knotens weist vorzugsweise die Aktualisierung der darin gespeicherten Einträge auf. Natürlich sind die vorstehend erwähnten Beispiele als nicht abschließend zu betrachten, und zu heterogenen Operationen kann jede geeignete Art von Operation gehören, die der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.In various approaches, the set of heterogeneous operations may include one or more of the following: insert operations, delete operations, and / or update operations. An insert operation into a node may cause the node to overflow and therefore require partitioning of the node, which in turn may require changes to be applied to entries in the tree planes above the leaves. A delete operation from one node may cause the node to become underfilled, and thus it may become necessary to merge the node with another node, which in turn may also require changes to be applied to entries in the tree levels above the leaves , To accommodate changes in the organization of the data structure, such changes may include adding, updating, or removing routing entries, and may be passed up to the root node of the tree. The updating of a node preferably comprises updating the entries stored therein. Of course, the above-mentioned examples are not to be considered exhaustive, and heterogeneous operations may include any suitable type of operation which the skilled artisan may understand after having read the present specifications.

In einer Ausführungsform beruhen Entscheidungen, ob und wie die Datenstruktur geändert werden soll, vorzugsweise auf Knotenausgleichskriterien. Knotenausgleichskriterien können auf der Grundlage der gewünschten Auslastung des Systemspeichers, der Leistung usw. vorher festgelegt werden. Zu Knotenausgleichskriterien können in einer Ausführungsform zum Beispiel ein vorher festgelegtes Minimum, ein Durchschnitt usw., eine Speicherauslastung für jede Seite (Knoten) der Speichereinheit, welcher der Baum entspricht, gehören.In one embodiment, decisions as to whether and how the data structure is to be changed are preferably based on node balancing criteria. Node balancing criteria may be predetermined based on the desired system memory utilization, performance, and so on. For example, in one embodiment, node balancing criteria may include a predetermined minimum, an average, etc., a memory utilization for each page (node) of the storage device to which the tree corresponds.

In bevorzugten Ansätzen gehören zu vorher festgelegten Knotenausgleichskriterien ein minimaler Kapazitätsschwellenwert von ungefähr 50%, so dass ein Knoten (Seite) als „unterfüllt“ betrachtet werden kann, wenn weniger als 50% der Seitenkapazität in Anspruch genommen wird. Zu Knotenausgleichskriterien kann auch ein vorher festgelegter durchschnittlicher Kapazitätsschwellenwert von ungefähr 75% gehören.In preferred approaches, predefined node balancing criteria include a minimum capacity threshold of approximately 50% so that a node (page) can be considered "underfilled" if less than 50% of the page capacity is consumed. Node matching criteria may also include a predetermined average capacity threshold of approximately 75%.

Natürlich können Knotenausgleichskriterien auch festgestellt statt vorher festgelegt werden, und sie können während der Verarbeitung auf der Grundlage von Eigenschaften des Speichersystems geändert werden, in dem die baumbasierte Datenstruktur und die aktuell offenbarten Techniken realisiert sind. Of course, node balancing criteria may also be determined instead of predetermined, and may be changed during processing based on properties of the storage system in which the tree-based data structure and techniques currently disclosed are implemented.

Das Speichersystem kann so konfiguriert werden, dass es das Eintreten von einem oder mehreren der nachstehenden beispielhaften Ereignisse oder gleichwertiger Entsprechungen davon feststellt, die der Fachmann verstehen wird, nachdem er die vorliegende Offenbarung gelesen hat, und entsprechende Maßnahmen ergreift, indem es neue optimale Knotenausgleichskriterien festlegt, die für die geänderten Umstände geeignet sind.The storage system may be configured to determine the occurrence of one or more of the following example events or equivalent thereof, which the skilled artisan will understand after reading the present disclosure, and take appropriate action by establishing new optimal node balancing criteria which are suitable for the changed circumstances.

Zusätzlich und/oder alternativ können Knotenausgleichskriterien von einem Benutzer angegeben oder festgelegt werden.Additionally and / or alternatively, node balancing criteria may be specified or specified by a user.

Das Verfahren 1000 beinhaltet auch die Operation 1004, in der Knoten, und vorzugsweise Blattknoten, auf die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen, festgestellt werden. Diese Feststellung beruht zumindest teilweise auf der in der Operation 1002 empfangenen Eingabe. Besser noch beinhaltet die Operation 1004 auf der Grundlage der Liste mit Paaren, die Dateneinträge und zu den Dateneinträgen gehörende Operationen angeben, die Feststellung, welche Knoten der Datenstruktur eine Verarbeitung mit einer oder mehreren der heterogenen Operationen erforderlich machen.The procedure 1000 also includes the surgery 1004 in which nodes, and preferably leaf nodes to which one or more operations of the set of heterogeneous operations are to be applied are detected. This finding is based, at least in part, on that in the operation 1002 received input. Better still, the operation involves 1004 based on the list of pairs indicating data entries and operations associated with the data entries, determining which nodes of the data structure require processing with one or more of the heterogeneous operations.

In besonders vorteilhaften Ansätzen kann die in der Operation 1004 durchgeführte Feststellung als eine Suchphase realisiert sein. Zum Beispiel und mit Bezug auf eine baumbasierte Datenstruktur, wie sie z.B. in 6 dargestellt ist, kann die Suchphase in einer Ausführungsform das Auswerten einer jeden Ebene der baumbasierten Datenstruktur in einer absteigenden Reihenfolge beinhalten. Für jede Ebene kann die Suchphase die gleichzeitige Feststellung, ganz oder teilweise beruhend auf den Dateneinträgen, die in der Liste mit Paaren angegeben sind, beinhalten, ob es sich bei beliebigen der Knoten in der Ebene, die gerade ausgewertet wird, um einen Knoten handelt, auf den oder auf dessen Nachkommenknoten eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen. Die Feststellung kann in manchen Ansätzen den Zugriff auf die Knoten ausschließen, die Dateneinträge speichern (d.h. Blattknoten), und stattdessen auf Weiterleitungsinformationen beruhen, die in inneren Knoten gespeichert sind.In particularly advantageous approaches that in the operation 1004 be carried out determination as a search phase. For example, and with reference to a tree-based data structure, such as in 6 In one embodiment, the search phase may include evaluating each level of the tree-based data structure in a descending order. For each level, the search phase may include concurrently determining, in whole or in part, the data entries specified in the list of pairs, whether any of the nodes in the level being evaluated is a node, one or more operations of the set of heterogeneous operations are to be applied to or on the offspring node thereof. The determination may in some approaches exclude access to the nodes storing data entries (ie, leaf nodes) and instead rely on routing information stored in internal nodes.

Zum Beispiel und entsprechend einem beispielhaften Ansatz kann die Suchphase das gleichzeitig für jedes eingegebene Paar erfolgende absteigende Durchlaufen des Baums und das Abrufen einer Speicherkennung des Blattknotens in der Datenstruktur beinhalten, auf den die von dem eingegebenen Paar angegebene Operation angewendet werden soll. Die Feststellung, dass eine Operation oder ein Satz von heterogenen Operationen auf einen bestimmten Blattknoten angewendet werden soll, kann das Vergleichen von Dateneinträgen, die in dem Knoten gespeichert sind, mit einem Dateneintrag, der von dem eingegebenen Paar angegeben wird und zu dem eine oder mehrere Operationen gehören, beinhalten.For example, and in accordance with an example approach, the search phase may include descending the tree at the same time for each pair entered and retrieving a memory identifier of the leaf node in the data structure to which the operation specified by the input pair is to be applied. The determination that an operation or set of heterogeneous operations is to be applied to a particular leaf node may include comparing data entries stored in the node to a data entry specified by the input pair and to the one or more Include operations.

Vorzugsweise wird die Suche gleichzeitig für alle eingegebenen Paare durchgeführt, wobei geteilte Berechtigungen für den Zugriff auf die Knoten verwendet werden. Die Suchphase kann von einer Zwischenspeicherung im Cachespeicher Gebrauch machen, um Speicherzugriffe weiter zu minimieren und die Funktion des entsprechenden Speichersystems zu verbessern.Preferably, the search is performed concurrently for all input pairs, using shared permissions to access the nodes. The search phase may use caching in order to further minimize memory accesses and improve the function of the corresponding memory system.

In zusätzlichen und/oder alternativen Ansätzen kann die Suchphase in Teilsätzen anstatt einzeln für jedes eingegebene Paar durchgeführt werden. Die eingegebenen Paare können nämlich am Wurzelknoten entsprechend den Knoten in der nächstniedrigen Ebene, auf die zugegriffen werden soll, in Teilsätze aufgeteilt werden und der Zugriff auf einen jeden dieser Knoten kann von einem anderen Operationsthread durchgeführt werden, der den betreffenden Teilsatz verarbeitet, wodurch der Abstieg fortgesetzt wird. Auf diese Weise erlauben die aktuell offenbarten erfindungsgemäßen Konzepte eine Parallelisierung der Suchphase über mehrere Operationsverarbeitungsthreads hinweg, was den für die Durchführung der Suchphase erforderlichen Zeitraum erheblich verringert.In additional and / or alternative approaches, the search phase may be performed in subsets rather than individually for each pair entered. Namely, the inputted pairs may be divided into subscripts at the root node corresponding to the nodes in the next lower level to be accessed, and the access to each of these nodes may be performed by another operation thread processing the subset concerned, whereby the descent will continue. In this way, the presently disclosed inventive concepts allow for parallelization of the search phase across multiple operational processing threads, significantly reducing the time required to complete the search phase.

Ungeachtet dessen, ob dies einzeln für jedes eingegebene Paar oder in Sätzen erfolgt, wird in bevorzugten Ausführungsformen auf die Blattknoten der Datenstruktur, die Dateneinträge speichern, in der Suchphase nicht direkt zugegriffen, sondern nur in der Aktualisierungsphase.Regardless of whether this is done individually for each pair entered or in sets, in preferred embodiments, the leaf nodes of the data structure storing data entries are not directly accessed in the search phase but only in the update phase.

Die Ausgabe der Suchphase ist ein „aus Knoten und Operationen bestehender Satz“, der die in der Suchphase festgestellten Knoten allgemein kennzeichnet, auf die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen, und der vorzugsweise eine Liste mit Speicherkennungen der in der Suchphase festgestellten Knoten enthält, auf die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen.The output of the search phase is a "set consisting of nodes and operations" that generally identifies the nodes identified in the search phase to which one or more operations of the set of heterogeneous operations are to be applied, and which preferably contains a list of memory identifiers Contains detected nodes to which one or more operations of the set of heterogeneous operations are to be applied.

In verschiedenen Ausführungsformen ist in dem aus Knoten und Operationen bestehenden Satz einer jeden der Speicherkennungen von Knoten in der Liste der Speicherkennungen eine Liste mit Paaren zugeordnet, die aus einem eingegebenen Dateneintrag und einer Operation (d.h. Einfügen, Löschen, Aktualisieren) bestehen, wobei diese Liste auf den Knoten angewendet werden soll, der von der zugehörigen Speicherkennung gekennzeichnet wird.In various embodiments, in the set of nodes and operations, each of the memory identifiers of nodes in the list of memory identifiers is a list of Assigned to pairs consisting of an input data entry and an operation (ie insert, delete, update), this list should be applied to the node identified by the associated memory identifier.

In weiteren Ansätzen kann die Suchphase weitgehend gemäß einem Prozessablauf stattfinden, der in 8 gezeigt ist.In further approaches, the search phase can largely take place according to a process flow that is in 8th is shown.

In verschiedenen Ansätzen kann die Operation 1004 des Verfahrens 1000 folglich das Erzeugen einer Ausgabe beinhalten, die einen aus Knoten und Operationen bestehenden Satz aufweist. Der aus Knoten und Operationen bestehende Satz enthält eine Liste mit Speicherkennungen und jede Speicherkennung kennzeichnet einen der Knoten, auf den eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden soll. Überdies wird eine jede der Speicherkennungen in manchen Ansätzen mindestens einem aus Dateneintrag und Operation bestehenden Paar zugeordnet, das in der Eingabe gekennzeichnet ist, welche in der Operation 1002 empfangen wird.In different approaches, the operation can 1004 of the procedure 1000 thus, involve generating an output having a set of nodes and operations. The set of nodes and operations contains a list of memory tags and each memory tag identifies one of the nodes to which one or more operations of the set of heterogeneous operations are to be applied. Moreover, in some approaches, each of the memory identifiers is associated with at least one pair of data entry and operation identified in the input that is in the operation 1002 Will be received.

Das Verfahren 1000 beinhaltet gemäß einer Ausführungsform des Weiteren eine Operation 1006, in der die eine oder die mehreren Operationen des Satzes von heterogenen Operationen gleichzeitig und mengenbasiert durchgeführt werden. Die Baumdatenstruktur wird vorzugsweise iterativ und ebenenweise verarbeitet, wobei alle Knoten, die in dem aus Knoten und Operationen bestehenden Satz gekennzeichnet sind, zu einer bestimmten Ebene gehören, die gleichzeitig und mengenbasiert verarbeitet wird. Diese Verarbeitung wird nachstehend im Kontext der hier offenbarten erfindungsgemäßen Aktualisierungsphase ausführlicher beschrieben.The procedure 1000 further includes an operation according to an embodiment 1006 in which the one or more operations of the set of heterogeneous operations are performed simultaneously and quantity-based. The tree data structure is preferably processed iteratively and level-by-level, with all nodes identified in the set of nodes and operations belonging to a particular level being processed concurrently and quantity-based. This processing will be described in more detail below in the context of the inventive update phase disclosed herein.

In bevorzugten Ausführungsformen wird die Anwendung des Satzes von heterogenen Operationen auf die verschiedenen Knoten der Baumdatenstruktur über eine oder mehrere Iterationen einer „Aktualisierungsphase“ durchgeführt, die eine ebenenweise, gleichzeitige Massenaktualisierung der baumbasierten Datenstruktur beinhaltet. Die Aktualisierungsphase kann beginnen, z.B. für eine baumbasierte Datenstruktur, wie sie in den 4-6 gezeigt ist, indem eine oder mehrere Operationen des Satzes von heterogenen Operationen auf einen oder mehrere Knoten in einer untersten Ebene der baumbasierten Datenstruktur (z.B. der zweiten Knotenebene 410c, 510c, wie in den 4 beziehungsweise 5 gezeigt ist, oder der n-ten Ebene 610n, wie in 6 gezeigt ist) angewendet werden, wo diese Blattknoten eine Speicherkennung haben, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist.In preferred embodiments, the application of the set of heterogeneous operations to the various nodes of the tree data structure is performed over one or more "update phase" iterations involving a planar, simultaneous mass update of the tree-based data structure. The update phase can begin, eg for a tree-based data structure as described in the 4 - 6 by performing one or more operations of the set of heterogeneous operations on one or more nodes in a lowest level of the tree-based data structure (eg, the second node level 410c . 510c as in the 4 5, or the nth level 610n , as in 6 shown) where these leaf nodes have a memory identifier listed in the set of nodes and operations.

Bei jedem der Knoten in der zweiten Knotenebene (d.h. der Ebene über der zuvor verarbeiteten Ebene), der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, welcher durch die Verarbeitung der vorherigen Ebene erzeugt wird, kann folglich der Satz von heterogenen Operationen, die auf den Knoten angewendet werden, auf dem/den aus Dateneintrag/Operation bestehenden Paar(en) beruhen, das/die zu der Speicherkennung dieses Knotens in dem aus Knoten und Operationen bestehenden Satz gehören.Thus, at each of the nodes in the second node level (ie, the level above the previously processed level) having a memory identifier listed in the set of nodes and operations generated by the previous level processing, the set may heterogeneous operations applied to the node on which the data entry / operation pair (s) belong to the memory identifier of that node in the set of nodes and operations.

Bei einem Ansatz wird vor allem der Satz von heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der Knoten in der zweiten Knotenebene angewendet, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist. Vorzugsweise beinhaltet die gleichzeitige Massenverarbeitung das Isolieren eines jeden Knotens, der in der aktuellen Knotenebene verarbeitet wird, in einer Weise, die eine Auswertung und Qualifizierung von Nachbarknoten ermöglicht, welche für eine Beteiligung an Knotenausgleichsoperationen in Frage kommen, welche infolge der Anwendung der heterogenen Operationen auf die Knoten in der aktuellen Ebene erforderlich sind.In one approach, above all, the set of heterogeneous operations is applied simultaneously and quantity-based to each of the nodes in the second node level that has a memory identifier listed in the set of nodes and operations. Preferably, the concurrent mass processing involves isolating each node that is being processed at the current node level in a manner that enables evaluation and qualification of neighboring nodes that are eligible for involvement in node balancing operations due to the application of the heterogeneous operations the nodes in the current level are required.

In verschiedenen Ausführungsformen kann die Anwendung der heterogenen Operation(en) auf den beziehungsweise die Knoten in einer bestimmten Knotenebene das Einfügen von neuen Knoten in eine oder mehrere Ebenen des Baums; das Löschen von vorhandenen Knoten in einer oder mehreren Ebenen des Baums; das Zusammenführen von vorhandenen Knoten in einer oder mehreren Ebenen des Baums; das Aufteilen von einem oder mehreren vorhandenen Knoten in einer oder mehreren Ebenen des Baums; und/oder das Aktualisieren von einem oder mehreren Dateneinträgen von vorhandenen Knoten in einer oder mehreren Ebenen des Baums einschließen.In various embodiments, applying the heterogeneous operation (s) to the node (s) at a particular node level may include inserting new nodes into one or more levels of the tree; deleting existing nodes in one or more levels of the tree; merging existing nodes in one or more levels of the tree; splitting one or more existing nodes into one or more levels of the tree; and / or updating one or more data entries of existing nodes in one or more levels of the tree.

Wenn die Anwendung der heterogenen Operationen(en) auf einer Ebene über der Blattknotenebene das Einfügen eines Eintrags beinhaltet, wird die Einfügeoperation vorzugsweise als Reaktion auf die Feststellung durchgeführt, dass ein oder mehrere vorhandene Knoten in mindestens einer der Ebenen unterhalb der aktuellen Ebene aufgeteilt wurden. Überdies kann die Einfügeoperation das Erzeugen von einem oder mehreren Knoten in der aktuellen Ebene der baumbasierten Datenstruktur erforderlich machen.If the application of the heterogeneous operation (s) at a level above the leaf node level involves the insertion of an entry, the insert operation is preferably performed in response to the determination that one or more existing nodes have been split in at least one of the levels below the current level. Moreover, the insert operation may require the creation of one or more nodes in the current level of the tree-based data structure.

Wenn die Anwendung der heterogenen Operationen(en) auf einer Ebene über der Blattknotenebene das Löschen eines Eintrags beinhaltet, wird die Löschoperation vorzugsweise als Reaktion auf die Feststellung durchgeführt, dass ein oder mehrere vorhandene Knoten in mindestens einer Ebene der baumbasierten Datenstruktur unterhalb der aktuellen Ebene zusammengeführt wurden. Die Löschoperation kann auch das Löschen von einem oder mehreren Knoten in der aktuellen Ebene der baumbasierten Datenstruktur erforderlich machen.If the application of the heterogeneous operation (s) at a level above the leaf node level involves the deletion of an entry, the delete operation is preferably performed in response to the determination that one or more existing nodes in at least one level of the tree-based data structure are below the current one Level were merged. The delete operation may also require the deletion of one or more nodes in the current level of the tree-based data structure.

Die während der Verarbeitung der aktuellen Ebene des Baums erzeugten Einträge und Operationen unterstützen die neue Form der Knoten, die bei der Verarbeitung der aktuellen Ebene des Baums aktualisiert, erzeugt und gelöscht wurden. Drei beispielhafte Fälle, die solche Einträge und Operationen erzeugen, werden unmittelbar nachstehend aufgezeigt.The entries and operations generated during the processing of the current level of the tree support the new shape of the nodes that were updated, created, and deleted when processing the current level of the tree. Three exemplary cases that produce such entries and operations are shown immediately below.

Erstens in einer Ausführungsform neue Knoten, die erzeugt werden, wenn verarbeitete Knoten aufgeteilt werden und Einträge erzeugen, welche zu der nächsthöheren Ebene des Baums hinzugefügt werden sollen.First, in one embodiment, new nodes that are created as processed nodes are split and create entries to be added to the next higher level of the tree.

Zweitens führt in einer weiteren Ausführungsform die vollständige Übertragung von Einträgen (z.B. über eine Zusammenführung) von einem verarbeiteten Knoten an gleichgeordnete Knoten dazu, dass die verarbeiteten Knoten gelöscht werden, und sie erzeugt eine Löschoperation eines Eintrags, der auf diesen gelöschten Knoten in der nächsthöheren Ebene des Baums verweist.Second, in another embodiment, the complete transmission of entries (eg, via a merge) from a processed node to sibling nodes causes the processed nodes to be deleted, and it creates an erase operation of an entry on that deleted node at the next higher level of the tree.

Drittens erzeugt ein verarbeiteter Knoten, bei dem der Inhalt seiner Einträge geändert wurde und dessen repräsentativer Eintrag sich dadurch geändert hat, in weiteren Ausführungsformen Einträge, die gelöscht und in die nächsthöhere Ebene des Baums eingefügt werden sollen.Third, in further embodiments, a processed node in which the contents of its entries have been changed and whose representative entry has changed thereby generates entries to be deleted and inserted into the next higher level of the tree.

Natürlich können in verschiedenen Ausführungsformen einer oder mehrere der beispielhaften Fälle unter anderen Fällen, die der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, in einer einzigen Iteration (oder in mehreren Iterationen) der Verarbeitung der baumbasierten Datenstruktur vorkommen.Of course, in various embodiments, one or more of the exemplary cases in other cases, which one of ordinary skill in the art will understand after reading the present descriptions, may occur in a single iteration (or multiple iterations) of processing the tree-based data structure.

Im Allgemeinen erzeugt die Aktualisierungsphase vorzugsweise eine Ausgabe, die einen Satz von Operationen kennzeichnet, die während einer nächsten Iteration angewendet werden sollen, welche vorzugsweise Knoten einer anderen Ebene der baumbasierten Datenstruktur entsprechen, besser noch einer Ebene über der Ebene, die während der aktuellen Iteration der Aktualisierungsphase verarbeitet wird, und am besten einer Ebene, die sich direkt über der Ebene befindet, die während der aktuellen Iteration der Aktualisierungsphase verarbeitet wird.In general, the update phase preferably generates an output that identifies a set of operations to be applied during a next iteration, which preferably correspond to nodes of another level of the tree-based data structure, more preferably a level above the level that during the current iteration Update phase, and preferably a layer that is directly above the level being processed during the current iteration of the update phase.

In manchen Ausführungsformen erzeugt die Aktualisierungsphase als Ausgabe einen neuen aus Knoten und Operationen bestehenden Satz, der zumindest teilweise darauf beruht, dass der Satz von heterogenen Operationen auf die Knotenebene angewendet wird, die während der Aktualisierungsphase verarbeitet wird. Der neue aus Knoten und Operationen bestehende Satz enthält eine Liste mit Speicherkennungen. Jede Speicherkennung in dem neuen aus Knoten und Operationen bestehenden Satz kennzeichnet einen der Knoten in der nächsten Knotenebene, der aktualisiert werden soll. Die Knoten in der nächsten Knotenebene, die in dem neuen aus Knoten und Operationen bestehenden Satz gekennzeichnet sind, sind Knoten, auf die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen. Vorzugsweise wird jede Speicherkennung der Speicherkennungen in dem neuen aus Knoten und Operationen bestehenden Satz mindestens einem aus Dateneintrag und Operation bestehenden Paar zugeordnet.In some embodiments, the update phase generates as output a new set of nodes and operations based at least in part on applying the set of heterogeneous operations to the node level being processed during the update phase. The new set of nodes and operations contains a list of memory identifiers. Each memory identifier in the new set of nodes and operations identifies one of the nodes in the next node level to be updated. The nodes in the next node level identified in the new set of nodes and operations are nodes to which one or more operations of the set of heterogeneous operations are to be applied. Preferably, each memory identifier of the memory identifiers in the new set of nodes and operations is associated with at least one pair of data entry and operation.

Die Aktualisierungsphase kann beliebig viele Iterationen beinhalten, wobei die baumbasierte Datenstruktur schrittweise Ebene um Ebene in aufsteigender Weise (von unten nach oben) von den Endknoten der baumbasierten Datenstruktur zu dem Wurzelknoten aktualisiert wird.The update phase may include any number of iterations, wherein the tree-based data structure is updated step-by-step level-by-level (bottom-up) from the end nodes of the tree-based data structure to the root node.

In verschiedenen Ausführungsformen kann eine iterative Aktualisierung auf einer untersten Ebene der baumbasierten Datenstruktur beginnen und schrittweise jede Ebene aktualisieren, bis die Ebene erreicht ist, die den Wurzelknoten enthält. Alternativ kann die Aktualisierungsphase schrittweise nur einen Teilsatz der Ebenen der baumbasierten Datenstruktur aktualisieren.In various embodiments, an iterative update may begin at a lowest level of the tree-based data structure and progressively update each level until the level containing the root node is reached. Alternatively, the update phase may progressively update only a subset of the levels of the tree-based data structure.

In weiteren Ansätzen kann der iterative Aktualisierungsvorgang auch dazu führen, dass neue Ebenen der Baumstruktur erzeugt werden, z.B., um Knotenausgleichsoperationen und/oder -kriterien Rechnung zu tragen. Knotenausgleichsoperationen können die Erzeugung neuer Ebenen erforderlich machen, z.B. als Reaktion darauf, dass ein Knotenausgleich die Aufteilung eines Wurzelknotens bewirkt, was einen neuen Wurzelknoten in einer Ebene über dem bisherigen Wurzelknoten erforderlich macht. Knotenausgleichskriterien wie zum Beispiel Knotenauslastungsschwellenwerte können ebenfalls die Erzeugung neuer Knoten erforderlich machen, z.B., indem sie die Aufteilung eines Wurzelknotens erforderlich machen, usw.In other approaches, the iterative update operation may also result in creating new levels of the tree structure, e.g., to account for node balancing operations and / or criteria. Node balancing operations may require the creation of new levels, e.g. in response to node balancing causing the distribution of a root node, requiring a new root node in a plane above the previous root node. Node balancing criteria, such as node utilization thresholds, may also require the creation of new nodes, e.g., by requiring the partitioning of a root node, etc.

Folglich kann der aus Knoten und Operationen bestehende Satz, der von einer Iteration der Aktualisierungsphase erzeugt wird, als Eingabe für die nächste Iteration der Aktualisierungsphase dienen. Vorzugsweise kennzeichnet dieser neue aus Knoten und Operationen bestehende Satz einen Satz von Knoten in einer Ebene über der Ebene, die in der aktuellen Iteration aktualisiert wird, wobei es sich bei den gekennzeichneten Knoten um diejenigen Knoten handelt, auf die eine oder mehrere Operationen eines Satzes von heterogenen Operationen in der nächsten Iteration der Aktualisierungsphase angewendet werden sollen.Thus, the set of nodes and operations generated by an iteration of the update phase may serve as input to the next iteration of the update phase. Preferably, this new set of nodes and operations identifies a set of nodes in a level above the level that is being updated in the current iteration, where the designated nodes are those nodes to which one or more operations of a node Set of heterogeneous operations to be applied in the next iteration of the update phase.

In weiteren Ansätzen können eine oder mehrere Iterationen der Aktualisierungsphase auch die Feststellung, ob der aus Knoten oder Operationen bestehende Eingabesatz leer ist, und wenn ja, den Abschluss der Verarbeitung der baumbasierten Datenstruktur beinhalten, da es keine weiteren Änderungen gibt, die auf die oberen Ebenen der baumbasierten Datenstruktur angewendet werden müssen. In manchen Ausführungsformen kann der Abschluss der Verarbeitung auch die Freigabe einer Berechtigung auf dem Wurzelknoten einschließen, sofern eine solche Berechtigung zuvor auf dem Wurzelknoten beschafft wurde. In weiteren Ausführungsformen kann eine solche Berechtigung eine exklusive Berechtigung sein.In further approaches, one or more iterations of the update phase may also include determining whether the input set consisting of nodes or operations is empty, and if so, completing the processing of the tree-based data structure, since there are no further changes to the upper levels the tree-based data structure. In some embodiments, the completion of the processing may also include the release of a permission on the root node, if such permission was previously obtained on the root node. In other embodiments, such authorization may be exclusive.

Wenn der aus Knoten und Operationen bestehende Eingabesatz nicht leer ist, können die hier erörterten Techniken das Erzeugen eines neuen leeren aus Knoten und Operationen bestehenden Satzes; das Füllen des leeren aus Knoten und Operationen bestehenden Satzes mit den Speicherkennungen der Knoten, auf die eine oder mehrere Operationen eines Satzes von heterogenen Operationen in der nächsten Iteration der Aktualisierungsphase angewendet werden sollen; und das Zuordnen der Speicherkennungen zu einem entsprechenden aus einer oder mehreren heterogenen Operationen bestehenden Satz, welche in der nächsten Iteration der Aktualisierungsphase auf den entsprechenden Knoten durchgeführt werden sollen, beinhalten.If the input set consisting of nodes and operations is not empty, the techniques discussed herein may generate a new empty set of nodes and operations; filling the empty set of nodes and operations with the memory identifiers of the nodes to which one or more operations of a set of heterogeneous operations are to be applied in the next iteration of the update phase; and associating the memory identifiers with a corresponding set of one or more heterogeneous operations to be performed on the corresponding node in the next iteration of the update phase.

In einer Ausführungsform können Iterationen der Aktualisierungsphase die Anwendung von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf jeden Knoten in einer bestimmten Knotenebene beinhalten, der eine Speicherkennung hat, welche in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist, der während einer vorhergehenden Iteration der Aktualisierungsphase für eine nachfolgende (i≥1 ) Iteration der Aktualisierungsphase oder während der Suchphase für die erste (i=0) Iteration der Aktualisierungsphase erzeugt wurde. Wenn die Knoten in der bestimmten Knotenebene, die über Speicherkennungen verfügen, welche in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt sind, Blattknoten enthalten, beruht beziehungsweise beruhen die auf die Blattknoten angewendete(n) heterogene(n) Operation(en) vorzugsweise auf mindestens einem aus Dateneintrag und Operation bestehenden Paar, das der Speicherkennung für den Blattknoten zugeordnet ist und dem Speichersystem als Eingabe bereitgestellt wird. Überdies wird die heterogene Operation beziehungsweise werden die heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der Knoten in der bestimmten Knotenebene angewendet, der eine Speicherkennung hat, welche in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist.In one embodiment, iterations of the update phase may include the application of one or more operations of the set of heterogeneous operations to each node at a particular node level having a memory identifier listed in the new set of nodes and operations during a previous one Iteration of the update phase for a subsequent (i≥1) iteration of the update phase or during the search phase for the first (i = 0) iteration of the update phase. If the nodes in the particular node level having memory tags listed in the new set of nodes and operations contain leaf nodes, the heterogeneous operation (s) applied to the leaf nodes are preferably based at least one pair of data entry and operation associated with the memory identifier for the leaf node and provided as input to the memory system. Moreover, the heterogeneous operation (s) will be applied simultaneously and quantity based on each of the nodes in the particular node level having a memory identifier listed in the new set of nodes and operations.

Bezug nehmend auf 4 und gemäß bevorzugten Ausführungsformen beinhaltet dieser iterative Prozess der Aktualisierungsphase das Aktualisieren von einem oder mehreren Knoten 406 in der ersten Knotenebene 410c während der ersten Iteration (i=0), das Erzeugen eines neuen aus Knoten und Operationen bestehenden Satzes, der einen oder mehrere Knoten 404 in der zweiten Knotenebene 410b kennzeichnet, auf die eine oder mehrere heterogene Operationen angewendet werden sollen, und das Aktualisieren des einen oder der mehreren Knoten 404 der zweiten Knotenebene 410b in der zweiten Iteration (i=1) der Aktualisierungsphase.Referring to 4 and in accordance with preferred embodiments, this iterative process of the update phase includes updating one or more nodes 406 in the first node level 410c during the first iteration (i = 0), generating a new set of nodes and operations that includes one or more nodes 404 in the second node level 410b to which one or more heterogeneous operations are to be applied, and updating the one or more nodes 404 the second node level 410b in the second iteration (i = 1) of the update phase.

In besonders bevorzugten Ausführungsformen sind die Knoten 406 in der ersten Knotenebene 410c Blattknoten, die Dateneinträge speichern, und sie gehören zu einer B+-Baumdatenstruktur. Die Knoten 404 in der zweiten Knotenebene 410b sind innere Knoten, die Weiterleitungsinformationen speichern.In particularly preferred embodiments, the nodes 406 in the first node level 410c Leaf nodes that store data entries and belong to a B + tree data structure. The knots 404 in the second node level 410b are inner nodes that store forwarding information.

Natürlich können zusätzliche Ausführungsformen, die im Umfang der vorliegenden Offenbarungen liegen, baumbasierte Datenstrukturen enthalten, bei denen Knoten von mehreren Ebenen Dateneinträge und/oder Weiterleitungsinformationen speichern, bei denen Knoten Dateneinträge auf mehreren Ebenen des Baums speichern usw., wie es beispielsweise allgemein in den 5 und 6 gezeigt ist. Insbesondere gemäß diesen Ausführungsformen kann die iterative Aktualisierungsphase das Aktualisieren von Dateneinträgen für Knoten auf jeder beliebigen Ebene der baumbasierten Datenstruktur, das Aktualisieren von Weiterleitungsinformationen für Knoten auf jeder beliebigen Ebene der baumbasierten Datenstruktur, das Ändern von Beziehungen zwischen Knoten auf jeder beliebigen Ebene der baumbasierten Datenstruktur, das Übertragen von Informationen zwischen Knoten auf jeder beliebigen Ebene der baumbasierten Datenstruktur usw. beinhalten, was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.Of course, additional embodiments that are within the scope of the present disclosure may include tree-based data structures in which nodes of multiple levels store data entries and / or forwarding information, where nodes store data entries at multiple levels of the tree, etc., such as generally in US Pat 5 and 6 is shown. In particular, according to these embodiments, the iterative update phase may include updating data entries for nodes at any level of the tree-based data structure, updating routing information for nodes at any level of the tree-based data structure, changing relationships between nodes at any level of the tree-based data structure, transmitting information between nodes at any level of the tree-based data structure, etc., as those skilled in the art will understand after reading the present descriptions.

Ungeachtet der jeweiligen Baumstruktur kann die Aktualisierungsphase gemäß verschiedenen Ausführungsformen die Feststellung beinhalten, ob der ursprüngliche und/oder der neue aus Knoten und Operationen bestehende Satz Speicherkennungen aufführt, die einem Knoten in einer nächsthöheren Ebene des Baums entsprechen. Als Reaktion auf die Feststellung, dass der aus Knoten und Operationen bestehende Satz keine Speicherkennungen enthält, die einem Knoten in der nächsthöheren Ebene des Baums entsprechen, wird die Aktualisierungsphase vorzugsweise beendet.Regardless of the particular tree structure, according to various embodiments, the update phase may include determining whether the original and / or new node-and-operation set lists memory identifiers corresponding to a node in a next higher level of the tree. In response to determining that the set of nodes and operations does not contain memory identifiers that correspond to a node in the next higher one Level of the tree, the update phase is preferably terminated.

In besonders bevorzugten Ansätzen erfolgt der Zugriff auf Knoten in der Suchphase mittels einer geteilten Berechtigung und in der Aktualisierungsphase erfolgt der Zugriff auf Knoten mittels einer exklusiven Berechtigung.In particularly preferred approaches, the access to nodes in the search phase takes place by means of a shared authorization, and in the update phase the access to nodes takes place by means of an exclusive authorization.

Die Anwendung von heterogenen Operationen auf Knoten in einer bestimmten Ebene findet gleichzeitig und mengenbasiert statt, was die Anwendung von Operationen auf jeden Knoten mittels eines anderen Prozessthreads einschließt. Besser noch wird jeder Prozessthread parallel ausgeführt, um Rechenzeit zu verringern und das Speichersystem zu verbessern, das die aktuell offenbarten Techniken umsetzt, indem der Prozess des Auffindens und Aktualisierens von Daten in einer baumbasierten Datenstruktur beschleunigt wird, während gleichzeitig weniger Rechenkosten verursacht werden.The application of heterogeneous operations to nodes at a particular level occurs concurrently, and quantity-based, which involves applying operations to each node using a different process thread. Even better, each process thread is executed in parallel to reduce computation time and to improve the memory system that implements the currently disclosed techniques by speeding up the process of finding and updating data in a tree-based data structure while at the same time causing less computational cost.

Indem heterogene Operationen mengenbasiert verarbeitet werden und einem notwendigen Knotenausgleich oder anderen Bearbeitungen der Baumstruktur in einem einzigen iterativen Prozess Rechnung getragen wird, machen es die aktuell offenbarten Techniken beispielsweise überflüssig, eine bestimmte Art von Operation baumübergreifend anzuwenden, dann eine weitere Suche durchzuführen, um Dateneinträge für eine andere Art von Operation aufzufinden, um festzustellen, ob sich irgendwelche der Dateneinträge, die das Ziel der anderen Art von Operation waren, jetzt in einem anderen Speicherplatz befinden als vor der baumübergreifenden Anwendung der jeweiligen Art von Operation.For example, by processing heterogeneous operations on a volume-based basis and accommodating necessary node balancing or other manipulations of the tree in a single, iterative process, the techniques currently disclosed eliminate the need to apply a particular type of operation across trees, then perform another search to obtain data entries for find another type of operation to determine if any of the data entries that were the target of the other type of operation are now in a different location than before the cross-tree application of the particular type of operation.

Die Verarbeitung von Knoten während der Aktualisierungsphase kann gemäß verschiedenen Ausführungsformen auf jede beliebige geeignete Art und Weise durchgeführt werden, die eine gleichzeitige Massenverarbeitung von heterogenen Operationen über mehrere Knoten hinweg in einer bestimmten Ebene der baumbasierten Datenstruktur zulässt. In einer besonders bevorzugten Ausführungsform findet die Verarbeitung während der Aktualisierungsphase weitgehend so statt, wie es in 9 dargestellt ist.The processing of nodes during the update phase may, in various embodiments, be performed in any suitable manner that permits concurrent mass processing of heterogeneous operations across multiple nodes at a particular level of the tree-based data structure. In a particularly preferred embodiment, the processing during the update phase largely takes place as shown in FIG.

In bevorzugten Ausführungsformen werden die Operationen, die dem Knoten in dem aus Knoten und Operationen bestehenden Eingabesatz zugeordnet sind, in einer bestimmten Reihenfolge durchgeführt, welche die aktuell offenbarten erfindungsgemäßen Konzepte noch effizienter macht und die Arbeitsweise des Speichersystems selbst weiter verbessert. Die Reihenfolge der Operationen wird nachstehend ausführlicher erörtert.In preferred embodiments, the operations associated with the node in the input set of nodes and operations are performed in a particular order that makes the presently disclosed inventive concepts even more efficient and further improves the operation of the memory system itself. The order of operations will be discussed in more detail below.

Während einer ersten Iteration einer Aktualisierungsphase, die eine Ebene verarbeiten kann, welche Blattknoten enthält, können Operationen, die einem Knoten in dem aus Knoten und Operationen bestehenden Eingabesatz zugeordnet sind, der von der Suchphase erzeugt wurde, entweder gemäß einer vom Benutzer vorgesehenen Reihenfolge von Operationen oder aber gemäß der hier angegebenen bevorzugten Reihenfolge verarbeitet werden. Die hier angegebene bevorzugte Reihenfolge minimiert vorzugsweise die strukturellen Veränderungen, die sich aus der Anwendung von Operationen auf einen bestimmten Knoten ergeben, und trägt daher zur Effizienz des Algorithmus bei und verbessert weiter die Arbeitsweise des Speichersystems, in der der Algorithmus ausgeführt wird. Ungeachtet der jeweiligen Reihenfolge, die zur Anwendung kommt, kann die Aktualisierungsphase beginnen, indem man exklusiven Zugriff auf den Wurzelknoten erhält.During a first iteration of an update phase that can process a level containing leaf nodes, operations associated with a node in the input set of nodes and operations generated by the search phase may be performed according to a user-provided order of operations or processed according to the preferred order given here. The preferred order given herein preferably minimizes the structural changes that result from the application of operations to a particular node and therefore contributes to the efficiency of the algorithm and further improves the operation of the memory system in which the algorithm is executed. Regardless of the particular order of application, the update phase may begin by obtaining exclusive access to the root node.

Die bevorzugte Reihenfolge beinhaltet die Durchführung von Aktualisierungsoperationen, gefolgt von Löschoperationen und sich daran anschließenden Einfügeoperationen.The preferred order involves performing update operations, followed by delete operations and subsequent insert operations.

Genauer gesagt, die erste Operation, die durchzuführen ist, besteht vorzugsweise in der Aktualisierung der Nutzlast von Dateneinträgen in dem Knoten. Die zweite Operation besteht im Löschen von Einträgen aus dem Knoten. An diesem Punkt brauchen keine weiteren Knotenausgleichs- oder -zusammenführungsoperationen mehr durchgeführt zu werden, bis die Verarbeitung aller Eingabeoperationen abgeschlossen ist. Tatsächlich werden vorzugsweise keine Ausgleichs- oder Zusammenführungsoperationen durchgeführt, außer wenn der Knoten, der gerade verarbeitet wird, infolge dessen, dass alle Eingabeoperationen angewendet werden, unterfüllt wird. Die dritte Operation besteht im Einfügen von Einträgen in den Knoten. Im Falle des Einfügens kann ein Knoten voll werden, bevor alle Eingabeoperationen angewendet werden, und folglich kann es in diesen Situationen notwendig sein, dass während der Einfügeoperationen eine Knoten-Neuverteilung oder Knotenaufteilung zur Anwendung kommt, falls der Knoten voll wird.More specifically, the first operation to be performed is preferably to update the payload of data entries in the node. The second operation is to delete entries from the node. At this point, no further node equalization or merge operations need to be performed until processing of all input operations is completed. In fact, preferably, no equalization or merge operations are performed unless the node being processed is underfilled due to all input operations being applied. The third operation is to insert entries in the nodes. In the case of insertion, a node may become full before all input operations are applied, and thus, in these situations, it may be necessary for node redistribution or node partitioning to be used during the insert operations if the node becomes full.

In verschiedenen Ausführungsformen kann ein Knoten, der voll wird, festgestellt werden, indem ein Knotenauslastungsgrad (d.h. eine in dem Knoten gespeicherte Datenmenge) mit einer maximalen Kapazität des Knotens verglichen wird.In various embodiments, a node that becomes full may be determined by comparing a node utilization level (i.e., an amount of data stored in the node) with a maximum capacity of the node.

Ebenso kann ein Knoten, der unterfüllt wird, festgestellt werden, indem der Knotenauslastungsgrad mit einem minimalen Knotenauslastungsschwellenwert verglichen wird. Der minimale Knotenauslastungsschwellenwert kann entsprechend einer Benutzervorgabe oder entsprechend bestimmten Erfordernissen des Speichersystems, z.B. Anforderungen an die Speicherauslastung und/oder die Leistung, vorher festgelegt werden. In bevorzugten Ansätzen beträgt der minimale Knotenauslastungsschwellenwert ungefähr 50% der gesamten Knotenkapazität. Natürlich können andere Werte unter 100%, z.B. 25%, 30%, 35% usw., verwendet werden, ohne vom Umfang der vorliegenden Offenbarungen abzuweichen.Similarly, a node that is underfilled can be determined by comparing the node utilization level to a minimum node utilization threshold. The minimum node utilization threshold may be predetermined according to user preference or according to specific requirements of the storage system, eg, memory utilization and / or performance requirements. In preferred Approaches, the minimum node utilization threshold is approximately 50% of the total node capacity. Of course, other values below 100%, eg, 25%, 30%, 35%, etc., may be used without departing from the scope of the present disclosures.

Um Situationen zu begegnen, in denen ein Knoten voll wird, kann eine Knoten-Neuverteilung zum Einsatz kommen. Diese Knoten-Neuverteilung schließt vorzugsweise die Feststellung ein, ob der volle Knoten benachbarte Knoten hat, vorzugsweise benachbarte Knoten, die in dem aus Knoten und Operationen bestehenden Satz nicht gekennzeichnet waren, welcher als Eingabe in die aktuelle Iteration bereitgestellt wird. Als Reaktion auf die Feststellung, dass solch ein benachbarter Knoten vorhanden ist, beinhaltet die Knoten-Neuverteilung die Feststellung, ob das Übertragen von Einträgen von dem vollen Knoten dazu führt, dass der benachbarte Knoten selbst voll wird. Als Reaktion auf die Feststellung, dass der benachbarte Knoten nicht voll wird, beinhaltet eine Knoten-Neuverteilung die Feststellung, ob die weiteren Einfügeoperationen, die in dem aus Knoten und Operationen bestehenden Eingabesatz anstehen, aufgrund der Übertragung von Einträgen (alle Einfügeoperationen müssen auf die Knoten angewendet werden, die in dem aus Knoten und Operationen bestehenden Eingabesatz gekennzeichnet sind, und nicht auf die benachbarten Knoten) nicht auf den benachbarten Knoten angewendet werden müssen. Als Reaktion auf die Feststellung, dass die weiteren Einfügeoperationen nicht auf den benachbarten Knoten angewendet werden müssen, beinhaltet eine Knoten-Neuverteilung die Feststellung, ob der benachbarte Knoten aufgrund der Übertragung von Einträgen nicht voll wird. Als Reaktion auf die Feststellung, dass der benachbarte Knoten aufgrund der Übertragung von Einträgen nicht voll wird, beinhaltet eine Knoten-Neuverteilung die Feststellung, ob die Übertragung von Einträgen an den benachbarten Knoten dazu führt, dass der Knotenauslastungsgrad des vollen Knotens innerhalb eines angegebenen Knotenauslastungsbereichs (z.B. über den minimalen Knotenauslastungsschwellenwerten) liegt. Als Reaktion auf die Feststellung, dass die Übertragung dieses Ergebnis erreichen wird, werden die Einträge vorzugsweise übertragen. Besser noch können mehrere Einträge übertragen werden, um Kapazität für die zusätzlichen anstehenden Einfügeoperationen in den Knoten, der gerade verarbeitet wird, zu schaffen.To counter situations in which a node becomes full, a node redistribution can be used. This node redistribution preferably includes determining whether the full node has adjacent nodes, preferably adjacent nodes that were not identified in the set of nodes and operations provided as input to the current iteration. In response to determining that such an adjacent node is present, the node reallocation involves determining whether transmitting entries from the full node results in the adjacent node itself becoming full. In response to determining that the adjacent node is not getting full, node reallocation involves determining whether the further insert operations pending in the input set of nodes and operations are due to the transfer of entries (all insert operations must be performed on the nodes applied in the input set consisting of nodes and operations, and not to the neighboring nodes) need not be applied to the neighboring nodes. In response to determining that the further insert operations do not have to be applied to the neighboring nodes, a node reallocation involves determining whether the adjacent node will not become full due to the transfer of entries. In response to determining that the adjacent node is not becoming full due to the transmission of entries, node reallocation involves determining whether the transmission of entries to the adjacent node results in the node node full node utilization within a specified node utilization range (FIG. eg above the minimum node utilization thresholds). In response to the determination that the transmission will achieve this result, the entries are preferably transmitted. More preferably, multiple entries may be transferred to create capacity for the additional pending insert operations in the node being processed.

Besser noch werden die Knoten, an die die Einträge übertragen werden, nur für die Dauer der Übertragung gesperrt (z.B. durch ausschließlichen Zugriff). Am besten wird diese Knoten-Neuverteilung erst durchgeführt, nachdem alle Einfügeoperationen auf Knoten in der Ebene angewendet wurden, die gerade verarbeitet wird, und keine Einfügeoperationen auf die benachbarten Knoten angewendet wurden, welche die übertragenen Einträge empfangen.Even better, the nodes to which the entries are transferred are only blocked for the duration of the transmission (e.g., by exclusive access). This node redistribution is best performed after all insert operations have been applied to nodes in the layer being processed and no insert operations have been applied to the neighboring nodes that receive the transmitted entries.

In weiteren Ausführungsformen kann eine Knoten-Neuverteilung zur Entlastung eines vollen Knotens das Aufteilen des Knotens beinhalten, z.B., wenn die vorstehende Übertragungsprozedur nicht möglich ist, weil beliebige der vorstehend aufgeführten Feststellungen einen negativen Feststellungsgehalt haben. In further embodiments, node redistribution to relieve a full node may involve splitting the node, for example, if the above transmission procedure is not possible because any of the above-noted findings have a negative detection content.

Insbesondere kann die Anwendung eines Satzes von heterogenen Operationen auf Knoten einer bestimmten Ebene der baumbasierten Datenstruktur unter bestimmten Umständen dazu führen, dass es mehrfach vorkommt, dass ein Knoten, der gerade verarbeitet wird, im Verlauf dieser Iteration der Aktualisierungsphase voll wird, und folglich kann es wünschenswert sein, eine Knoten-Neuverteilung mehrmals je Iteration der Aktualisierungsphase durchzuführen.In particular, the application of a set of heterogeneous operations to nodes of a particular level of the tree-based data structure may, under certain circumstances, result in multiple occurrences of a node being processed becoming full during that iteration of the update phase, and thus it may be desirable to perform a node redistribution multiple times per iteration of the update phase.

Bei Knoten, die während einer Iteration der Aktualisierungsphase unterfüllt werden, kann gemäß mehreren Ausführungsformen analog dazu eine Knoten-Neuverteilung durchgeführt werden. In einer Ausführungsform beispielsweise schließt eine Knoten-Neuverteilung, um dem Problem von unterfüllten Knoten abzuhelfen, die Feststellung ein, ob der unterfüllte Knoten benachbarte Knoten hat, die in dem aus Knoten und Operationen bestehenden Satz nicht gekennzeichnet waren, welcher als Eingabe in die aktuelle Iteration bereitgestellt wird.For nodes that are underfilled during an iteration of the update phase, node redistribution may be performed analogously thereto according to several embodiments. For example, in one embodiment, node redistribution, to address the problem of underfilled nodes, concludes whether the underfilled node has adjacent nodes that were not identified in the set of nodes and operations, which is input to the current iteration provided.

In weiteren Ausführungsformen und als Reaktion auf die Feststellung, dass solch ein benachbarter Knoten vorhanden ist, beinhaltet die Knoten-Neuverteilung die Feststellung, ob das Übertragen von Einträgen von dem benachbarten Knoten dazu führt, dass der benachbarte Knoten selbst unterfüllt wird.In other embodiments, and in response to determining that such an adjacent node exists, the node reallocation includes determining whether transmitting entries from the adjacent node results in the adjacent node itself being underfilled.

In noch weiteren Ausführungsformen und als Reaktion auf die Feststellung, dass der benachbarte Knoten nicht unterfüllt wird, beinhaltet eine Knoten-Neuverteilung die Feststellung, ob die Übertragung von Einträgen an den unterfüllten Knoten dazu führt, dass der Knotenauslastungsgrad des unterfüllten Knotens innerhalb eines angegebenen Knotenauslastungsbereichs (z.B. über den minimalen Knotenauslastungsschwellenwerten) liegt. Als Reaktion auf die Feststellung, dass die Übertragung dieses Ergebnis erreichen wird, werden Einträge vorzugsweise übertragen.In still further embodiments, and in response to determining that the adjacent node is not underfilled, node reallocation includes determining whether the transmission of entries to the underfilled node results in the node utilization level of the underfilled node within a specified node utilization range (Fig. eg above the minimum node utilization thresholds). In response to determining that the transmission will achieve this result, entries are preferably transmitted.

Besser noch werden die Knoten, von denen die Einträge übertragen werden, in manchen Ansätzen nur für die Dauer der Übertragung gesperrt (z.B. durch ausschließlichen Zugriff). Am besten schließt diese Knoten-Neuverteilung ein, dass nur einige Einträge oder eine Menge an Informationen übertragen werden, die notwendig sind, um den unterfüllten Knoten in den gewünschten Knotenauslastungsbereich zu bringen.Even better, the nodes from which the entries are transmitted are in some approaches only blocked for the duration of the transmission (eg by exclusive access). This node redistribution best involves only a few entries or a lot of information being transferred necessary to bring the underfilled node to the desired node utilization area.

In weiteren Ausführungsformen kann eine Knoten-Neuverteilung, um Abhilfe für einen unterfüllten Knoten zu schaffen, das Zusammenführen des unterfüllten Knotens beinhalten, z.B., wenn die vorstehende Übertragungsprozedur nicht möglich ist, weil eine oder mehrere der vorstehend aufgeführten Feststellungen einen negativen Feststellungsgehalt haben. Unter diesen Umständen kann das Zusammenführen eine Reihe von Feststellungen beinhalten. In einem Ansatz schließt das Zusammenführen von Knoten beispielsweise die Feststellung ein, ob der unterfüllte Knoten einen benachbarten Knoten hat, der in dem aus Knoten und Operationen bestehenden Eingabesatz nicht enthalten ist. Als Reaktion auf die Feststellung, dass es einen solchen benachbarten Knoten gibt, beinhaltet das Zusammenführen eines unterfüllten Knotens des Weiteren die Feststellung, ob der benachbarte Knoten aufgrund der Übertragung aller Einträge von dem unterfüllten Knoten an den benachbarten Knoten voll wird. Als Reaktion auf die Feststellung, dass der benachbarte Knoten aufgrund der Übertragung aller Einträge von dem unterfüllten Knoten an den benachbarten Knoten nicht voll wird, beinhaltet das Zusammenführen eines unterfüllten Knotens des Weiteren die Übertragung aller Einträge von dem unterfüllten Knoten an den benachbarten Knoten. Nachdem alle Einträge von dem zuvor unterfüllten, jetzt leeren Knoten übertragen worden sind, kann dieser Knoten gelöscht werden. Einträge können von dem unterfüllten Knoten an mehr als einen benachbarten Knoten übertragen werden, um zu ermöglichen, dass der unterfüllte Knoten geleert werden kann.In further embodiments, to redress an underfilled node, node redistribution may involve merging the underfilled node, for example, if the above transmission procedure is not possible because one or more of the above-noted findings have a negative detection content. Under these circumstances, merging may involve a number of findings. For example, in one approach, merging nodes involves determining whether the underfilled node has an adjacent node that is not included in the input set of nodes and operations. Further, in response to determining that there is such an adjacent node, merging an underfilled node further comprises determining whether the adjacent node becomes full due to the transmission of all entries from the underfilled node to the adjacent node. In response to determining that the adjacent node does not become full due to the transmission of all entries from the underfilled node to the adjacent node, merging an underfilled node further includes transmitting all entries from the underfilled node to the adjacent node. After all entries have been transferred from the previously underfilled, now empty node, this node can be deleted. Entries may be transmitted from the underfilled node to more than one adjacent node to allow the underfilled node to be emptied.

Vorteilhafterweise dient die Ausrichtung der Übertragung in der Zusammenführungsoperation, die unmittelbar vorstehend erörtert wurde, d.h., die Übertragung von Einträgen von dem unterfüllten Knoten an den benachbarten Knoten und nicht von dem benachbarten Knoten an den unterfüllten Knoten, dazu, dass benachbarte Knoten, die an Zusammenführungsoperationen beteiligt sind, nicht gelöscht werden müssen. Dies ist vorteilhaft, weil andere gleichzeitige Operationen möglicherweise gleichzeitig auf diese benachbarten Knoten zugreifen müssen und dieser Zugriff muss in manchen Ansätzen möglich sein, weil auf diese Knoten von einer anderen oberen Baumebene nach wie vor verwiesen wird. Überdies führt die Ausrichtung wünschenswerterweise zu einer Situation, in der der gelöschte Knoten für andere gleichzeitige Operationen nicht benötigt wird, wodurch die Konsistenz mit den anderen gleichzeitigen Operationen gewahrt bleibt.Advantageously, the alignment of the transmission in the merge operation discussed immediately above, ie the transfer of entries from the underfilled node to the adjacent node and not from the adjacent node to the underfilled node, serves to cause adjacent nodes to join merge operations involved, do not need to be deleted. This is advantageous because other concurrent operations may need to simultaneously access these neighboring nodes and this access must be possible in some approaches because these nodes are still referenced from another upper tree level. Moreover, the alignment desirably results in a situation where the deleted node is not needed for other concurrent operations, thereby maintaining consistency with the other concurrent operations.

In bevorzugten Ausführungsformen wird, wenn die Verarbeitung des aktuellen Knotens abgeschlossen ist, eine exklusive Berechtigung für den Knoten, sofern sie zuvor erworben wurde, freigegeben. Während der Verarbeitung einer bestimmten Baumebene wird darüber hinaus der Zugriff auf die anderen, z.B. oberen, Baumebenen zum Zweck des Auffindens von benachbarten Knoten von allen gleichzeitigen Operationen gleichzeitig durchgeführt, wobei beispielsweise geteilte Berechtigungen verwendet werden.In preferred embodiments, when the processing of the current node is complete, an exclusive privilege for the node, if previously acquired, is released. During processing of a particular tree level, access to the other, e.g. upper tree levels are performed concurrently for the purpose of finding neighboring nodes of all concurrent operations using, for example, shared permissions.

Wie vorstehend erwähnt wurde, ist die Ausgabe der gleichzeitigen Verarbeitung von Operationen auf den Knoten der aktuellen Ebene ein neuer aus Knoten und Operationen bestehender Satz, der eine Liste mit Speicherkennungen der Knoten in der nächsten Ebene des Baums aufweist, auf die Operationen angewendet werden sollen. In manchen Ausführungsformen kann der neue aus Knoten und Operationen bestehende Satz aus der Liste der Speicherkennungen und einem Satz von einer oder mehreren heterogenen Operationen bestehen, die einer jeden der Speicherkennungen zugeordnet sind.As mentioned above, the output of concurrent processing of operations on the current level nodes is a new set of nodes and operations having a list of memory identifiers of the nodes in the next level of the tree to which operations are to be applied. In some embodiments, the new set of nodes and operations may consist of the list of memory tags and a set of one or more heterogeneous operations associated with each of the memory tags.

Vorzugsweise sind die in dem neuen aus Knoten und Operationen bestehenden Satz angegebenen Operationen, die auf die nächste Ebene des Baums angewendet werden sollen, das Ergebnis der auf die Knoten in der aktuellen Ebene angewendeten Operationen. In solchen Ausführungsformen enthält der neue aus Knoten und Operationen bestehende Satz Listen mit Paaren, wobei jedes Paar einen Eintrag, z.B. einen Daten- oder Weiterleitungseintrag, und eine zugehörige Operation (z.B. Einfügen, Löschen, Aktualisieren usw.), die darauf angewendet werden soll, enthält. Eine jede solche Liste mit Paaren kann vorteilhafterweise einer Speicherkennung eines Knotens zugeordnet werden, auf den die Operationen in der Liste angewendet werden sollen.Preferably, the operations specified in the new set of nodes and operations that are to be applied to the next level of the tree are the result of the operations applied to the nodes in the current level. In such embodiments, the new set of nodes and operations contains lists of pairs, each pair containing an entry, e.g. a data or forwarding entry, and an associated operation (e.g., insert, delete, update, etc.) to be applied thereto. Each such list of pairs may advantageously be associated with a memory identifier of a node to which the operations in the list are to be applied.

Die während der Verarbeitung der aktuellen Ebene des Baums erzeugten Einträge und Operationen unterstützen ebenfalls vorteilhaft die neue Form der Knoten, die im Laufe der Verarbeitung der aktuellen Ebene des Baums aktualisiert, erzeugt und gelöscht wurden.The entries and operations generated during the processing of the current tree level also advantageously support the new shape of the nodes that have been updated, created, and deleted in the course of processing the current tree level.

In verschiedenen Ausführungsformen gehören zu Situationen, die wahrscheinlich Einträge und Operationen erzeugen, welche die neue Form der Knoten unterstützen, neue Knoten, die erzeugt werden, wenn verarbeitete Knoten aufgeteilt werden. Dies erzeugt Einträge, die zu der nächsthöheren Ebene des Baums hinzugefügt werden sollen. Solche Einträge sind in dem aus Knoten und Operationen bestehenden Satz enthalten, der während der Verarbeitung einer aktuellen Baumebene erzeugt wird.In various embodiments, situations that are likely to include entries and Create operations that support the new shape of the nodes, new nodes that are created when processing nodes are split. This creates entries to be added to the next higher level of the tree. Such entries are contained in the set of nodes and operations generated during processing of a current tree level.

In weiteren Ausführungsformen gehören zu Situationen, die wahrscheinlich Einträge und Operationen erzeugen, welche die neue Form der Knoten unterstützen, Übertragungen von Einträgen, insbesondere die vollständige Übertragung von Einträgen (z.B. durch Zusammenführungsoperationen) von einem verarbeiteten Knoten an benachbarte Knoten. Genauer gesagt, wenn eine solche Übertragung dazu führt, dass der verarbeitete Knoten gelöscht wird, kann es vorteilhaft sein, die Löschung eines Eintrags erforderlich zu machen, der auf diesen gelöschten Knoten in der nächsten Ebene des Baums verweist, da der Verweis auf den gelöschten Knoten jetzt ungültig ist.In further embodiments, situations that are likely to produce entries and operations that support the new form of the nodes include transfers of entries, particularly the complete transmission of entries (e.g., by merge operations) from a processed node to adjacent nodes. More specifically, if such a transfer results in the processed node being deleted, it may be advantageous to require the deletion of an entry referencing that deleted node in the next level of the tree, since the reference to the deleted node is now invalid.

In noch weiteren Ausführungsformen gehören zu Situationen, die wahrscheinlich Einträge und Operationen erzeugen, welche die neue Form der Knoten unterstützen, Aktualisierungsoperationen, die das Ändern von Einträgen in einer Weise einschließen, welche bewirkt, dass sich der repräsentative Eintrag eines Knotens ändert. In diesem Fall ist es vorteilhaft, Einträge zum Löschen aus der und/oder zum Einfügen in die nächsthöhere(n) Ebene des Baums zu erzeugen. Wie der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, kann ein solches Löschen und Einfügen dazu beitragen, die Konsistenz innerhalb der Baumstruktur und innerhalb von Weiterleitungseinträgen zu wahren, indem sichergestellt wird, dass repräsentative Einträge Daten und/oder Weiterleitungsinformationen entsprechend der geänderten Baumstruktur korrekt kennzeichnen.In still further embodiments, situations that are likely to produce entries and operations that support the new form of nodes include update operations that involve changing entries in a manner that causes the representative entry of a node to change. In this case, it is advantageous to create entries for deletion from and / or insertion into the next higher level of the tree. As those skilled in the art will understand after reading the present descriptions, such deletion and insertion may help to maintain consistency within the tree structure and within routing entries by ensuring that representative entries provide data and / or routing information corresponding to the changed one Mark tree structure correctly.

In bevorzugten Ausführungsformen wird der Satz von heterogenen Operationen, die in der empfangenen Eingabe angegeben sind, für die bestimmte Ebene durchgeführt, Knotenausgleichsoperationen werden für die bestimmte Ebene durchgeführt, und nach Abschluss dieser Operationen wird der neue aus Knoten und Operationen bestehende Satz erzeugt und zur Verwendung in einer nachfolgenden Iteration der Aktualisierungsphase verwendet.In preferred embodiments, the set of heterogeneous operations indicated in the received input is performed for the particular level, node balancing operations are performed for the particular level, and upon completion of these operations, the new set of nodes and operations is created and used used in a subsequent iteration of the update phase.

Wenn für die nächste Ebene der baumbasierten Datenstruktur keine Operationen notwendig sind, ist der neue aus Knoten und Operationen bestehende Satz leer. Folglich kann jede Iteration der Aktualisierungsphase die Feststellung, ob der aus Knoten und Operationen bestehende Satz leer ist, und als Reaktion auf diese Feststellung das Beenden der Aktualisierungsphase beinhalten. Die Beendigung der Aktualisierungsphase kann die Freigabe des exklusiven Zugriffs auf den Wurzelknoten der baumbasierten Datenstruktur beinhalten und/oder auf die Beendigung der Aktualisierungsphase kann die Freigabe des exklusiven Zugriffs auf den Wurzelknoten der baumbasierten Datenstruktur folgen.If no operations are required for the next level of the tree-based data structure, the new set of nodes and operations is empty. Thus, each iteration of the update phase may involve determining whether the set of nodes and operations is empty and, in response to that determination, terminating the update phase. The completion of the update phase may involve the release of exclusive access to the root node of the tree-based data structure and / or the completion of the update phase may be followed by the release of exclusive access to the root node of the tree-based data structure.

Gleichzeitige Massenverarbeitung eines B+-Baums mit n EbenenSimultaneous mass processing of a B + tree with n levels

In einem spezielleren Fall, der einen B+-Baum mit n Ebenen einschließt, können die hier beschriebenen Techniken in ähnlicher Weise wirksam eingesetzt werden, um die Leistungsfähigkeit eines Datenspeichersystems beträchtlich zu verbessern, in dem der B+-Baum mit n Ebenen als eine Datenstruktur realisiert ist. Das von einem Computer ausgeführte Verfahren ist dafür gedacht, die gleichzeitige Verarbeitung von heterogenen Operationen an einer ausgelagerten Suchbaum-Datenstruktur zu verei nfachen.Similarly, in a more specific case involving a n-level B + tree, the techniques described herein can similarly be leveraged to significantly improve the performance of a data storage system in which the n-level B + tree is implemented as a data structure , The computer-implemented method is intended to simplify the concurrent processing of heterogeneous operations on a paged search tree data structure.

Das Verfahren beinhaltet vorzugsweise das Empfangen einer Eingabe an einem Speichersystem, in dem die baumbasierte Datenstruktur gespeichert ist; sowie das gleichzeitige und mengenbasierte Durchführen einer Vielzahl von heterogenen Operationen an einem oder mehreren der Blattknoten auf der Grundlage der Eingabe. Die Eingabe kennzeichnet einen Satz von heterogenen Operationen, die auf die ausgelagerte Suchbaum-Datenstruktur angewendet werden sollen.The method preferably includes receiving an input on a storage system in which the tree-based data structure is stored; and simultaneously and quantitatively performing a plurality of heterogeneous operations on one or more of the leaf nodes based on the input. The input identifies a set of heterogeneous operations to be applied to the paged search tree data structure.

Wie beim Verfahren 1000 kann die speziellere Realisierung in verschiedenen Ausführungsformen eine Suchphase einschließen. Die Suchphase beinhaltet vorzugsweise: das Auswerten einer jeden Ebene der baumbasierten Datenstruktur in einer Reihenfolge von der Wurzelknotenebene zur Blattknotenebene; und das gleichzeitige Feststellen der Blattknoten, auf die der Satz von heterogenen Operationen angewendet werden soll.As with the procedure 1000 For example, the more specific implementation in various embodiments may include a search phase. The search phase preferably includes: evaluating each level of the tree-based data structure in an order from the root node level to the leaf node level; and simultaneously determining the leaf nodes to which the set of heterogeneous operations is to be applied.

Ferner erzeugt die Suchphase eine Ausgabe in Form eines aus Knoten und Operationen bestehenden Satzes, der eine Liste mit Speicherkennungen enthält. Jede Speicherkennung kennzeichnet vorzugsweise einen der Blattknoten, auf den eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und jede der Speicherkennungen wird mindestens einem aus Dateneintrag und Operation bestehenden Paar zugeordnet, das in der empfangenen Eingabe gekennzeichnet ist.Further, the search phase generates an output in the form of a set of nodes and operations containing a list of memory IDs. Each memory identifier preferably identifies one of the leaf nodes to which one or more operations of the set of heterogeneous operations are to be applied; and each of the memory identifiers is assigned to at least one pair of data entry and operation identified in the received input.

Ebenfalls in ähnlicher Weise wie beim Verfahren 1000 kann das Verfahren eine Aktualisierungsphase beinhalten, die mit der Anwendung von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf jeden Blattknoten in der Blattknotenebene (z.B. der Blattknotenebene 410c, die in 4 gezeigt ist) verbunden ist, der eine Speicherkennung hat, welche in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist. Genauer gesagt, für jeden der Blattknoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, beruht der Satz von heterogenen Operationen, die auf den bestimmten Blattknoten angewendet werden, in dieser ersten Iteration (d.h. i=0) vorzugsweise auf dem beziehungsweise den aus Dateneintrag und Operation bestehenden Paar(en), die zu der Speicherkennung für diesen Blattknoten gehören. In bevorzugten Ansätzen wird der Satz von heterogenen Operationen überdies gleichzeitig und mengenbasiert auf jeden der Blattknoten angewendet, der eine Speicherkennung hat, welche in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist.Also in a similar way as in the procedure 1000 For example, the method may include an update phase associated with the application of one or more operations of the set of heterogeneous operations to each leaf node at the leaf node level (eg, the leaf node level 410c , in the 4 shown) having a memory identifier listed in the set of nodes and operations. More specifically, for each of the leaf nodes having a memory identifier listed in the set of nodes and operations, the theorem of heterogeneous operations applied to the particular leaf node in this first iteration (ie, i = 0) preferably on the data entry / operation pair (s) associated with the memory identifier for that leaf node. Moreover, in preferred approaches, the set of heterogeneous operations is applied simultaneously and in a quantity-based manner to each of the leaf nodes having a memory identifier listed in the set of nodes and operations.

Die Aktualisierungsphase kann einen neuen aus Knoten und Operationen bestehenden Satz für jede abgeschlossene Iteration erzeugen. Der neue aus Knoten und Operationen bestehende Satz kennzeichnet Knoten in einer höheren Ebene als der Ebene, die in der aktuellen Iteration verarbeitet wird, sowie Operationen, die auf diesen Knoten durchgeführt werden sollen. Vorzugsweise beruht diese Definition auf dem Ergebnis der auf die aktuelle Ebene angewendeten Operationen. Das Erzeugen dieser Ausgabe in jeder Iteration schließt das Erzeugen eines neuen aus Knoten und Operationen bestehenden Satzes ein, der zumindest teilweise auf der Anwendung der heterogenen Operationen auf die Knoten beruht, die eine Speicherkennung haben, welche in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist.The update phase can generate a new set of nodes and operations for each completed iteration. The new set of nodes and operations identifies nodes at a higher level than the level being processed in the current iteration and operations to be performed on that node. Preferably, this definition is based on the result of the operations applied to the current level. Generating this output in each iteration involves generating a new set of nodes and operations based at least in part on the application of the heterogeneous operations to the nodes having a memory identifier listed in the set of nodes and operations ,

In einer Ausführungsform weist der neue aus Knoten und Operationen bestehende Satz, der während der ersten Iteration erzeugt wurde, daher vorzugsweise eine Liste mit Speicherkennungen auf, und jede Speicherkennung kennzeichnet einen der inneren Knoten in der nächsthöheren Knotenebene des B+-Baums, auf den eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden soll. Folglich wird der Satz von heterogenen Operationen in der nächsten Iteration (i=1) der Aktualisierungsphase auf die inneren Knoten in der nächsthöheren Knotenebene angewendet, die eine Speicherkennung haben, welche in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist. Vorzugsweise wird der Satz von heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der inneren Knoten in der zweiten Knotenebene angewendet, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist.Thus, in one embodiment, the new set of nodes and operations generated during the first iteration preferably comprises a list of memory tags, and each memory tag identifies one of the inner nodes in the next higher node level of the B + tree to which one or more several operations of the set of heterogeneous operations should be applied. Thus, the set of heterogeneous operations in the next iteration (i = 1) of the update phase is applied to the inner nodes in the next higher node level that have a memory identifier listed in the new set of nodes and operations. Preferably, the set of heterogeneous operations is applied simultaneously and quantity-based to each of the inner nodes in the second node level having a memory identifier listed in the set of nodes and operations.

Der vorstehend beschriebene iterative Prozess kann fortgesetzt werden, wobei jedwede notwendigen Änderungen an den Einträgen in dem B+-Baum und/oder Änderungen an der Struktur des B+-Baums ebenenweise weitergereicht werden, bis keine weiteren Operationen mehr nötig sind, festgestellt wird, dass der aus Knoten und Operationen bestehende Satz leer ist, und die Aktualisierungsphase folglich endet. Vorzugsweise wird der Satz von heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der Knoten in einer bestimmten Ebene angewendet, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, welcher während der vorhergehenden Iteration der Aktualisierungsphase erzeugt wurde.The iterative process described above may be continued, with any necessary changes to the entries in the B + tree and / or changes to the structure of the B + tree being passed in a plane until no further operations are needed, it is determined that the Node and operations existing sentence is empty, and thus the update phase ends. Preferably, the set of heterogeneous operations is applied simultaneously and quantity-based to each of the nodes in a particular layer having a memory identifier listed in the set of nodes and operations generated during the previous iteration of the update phase.

Isolieren von gleichzeitigen Operationen während der Bearbeitung des BaumsIsolate concurrent operations while editing the tree

Die aktuell offenbarten erfindungsgemäßen Konzepte verbessern die Arbeitsweise von herkömmlichen Speichersystemen, die baumbasierte Datenstrukturen verwenden, indem sie die Rechenkosten für die Aktualisierung von Dateneinträgen und der Baumstruktur verringern. Wie vorstehend erwähnt wurde, rührt ein bedeutender Aspekt dieser verbesserten Effizienz von den erfindungsgemäßen Techniken für eine gleichzeitige Massenverarbeitung von heterogenen Operationen im Kontext von baumbasierten Datenstrukturen her.The presently disclosed inventive concepts enhance the operation of conventional memory systems that use tree-based data structures by reducing the computational cost of updating data entries and the tree structure. As mentioned above, one significant aspect of this improved efficiency stems from the techniques for simultaneous mass processing of heterogeneous operations in the context of tree-based data structures.

Ein zusätzlicher Aspekt der aktuell offenbarten erfindungsgemäßen Techniken steigert die Rechenleistung weiter, indem die Verarbeitung von Knoten, die in einer bestimmten Ebene der baumbasierten Datenstruktur verarbeitet werden, isoliert wird, um die gleichzeitige und mengenbasierte Verarbeitung dieser heterogenen Operationen zu vereinfachen. Diese Technik des Isolierens schließt in verschiedenen Ausführungsformen im Allgemeinen eine Qualifizierung derjenigen Knoten ein, die Einträge von Knoten empfangen können und/oder Einträge an Knoten übergeben können, welche in einer aktuellen Iteration der Aktualisierungsphase verarbeitet werden.An additional aspect of the presently disclosed techniques of the present invention further enhances computational performance by isolating the processing of nodes that are being processed at a particular level of the tree-based data structure to facilitate concurrent and volume-based processing of these heterogeneous operations. This technique of isolating, in various embodiments, generally includes a qualification of those nodes that can receive entries from nodes and / or pass entries to nodes that are being processed in a current iteration of the update phase.

Praktisch ermöglicht dies dem Aktualisierungsprozess einen effizienten Umgang mit vollen und unterfüllten Knoten und vereinfacht dadurch die unabhängige und isolierte Verarbeitung eines jeden Knotens. Insbesondere, wenn dieses Isolieren mit einer Parallelisierung der verschiedenen Prozessthreads einer Operation verbunden ist, verbessert es die Effizienz, zu der eine gleichzeitige Verarbeitung der Knoten einer bestimmten Baumebene ihren Beitrag leistet.In effect, this allows the updating process to deal efficiently with full and underfilled nodes, thereby simplifying the independent and isolated processing of each node. In particular, when this isolation is coupled with parallelization of the various process threads of an operation, it improves the efficiency to which concurrent processing of the nodes of a particular tree level contributes.

Im Allgemeinen isoliert die aktuell offenbarte erfindungsgemäße Isolierungsprozedur die Verarbeitung von Knoten, die für eine Verarbeitung in dem aus Knoten und Operationen bestehenden Eingabesatz für eine bestimmte Ebene angegeben sind, indem Knoten qualifiziert werden, die für eine Beteiligung an einer Knoten-Neuverteilung und anderen strukturellen Veränderungsoperationen, insbesondere der Übertragung von Einträgen, zu berücksichtigen sind.In general, the currently disclosed isolation procedure of the present invention isolates the processing of nodes specified for processing in the node-and-operation input set for a particular level by qualifying nodes that are eligible for node redistribution and other structural change operations , in particular the transfer of entries.

Gemäß einem Aspekt beispielsweise sind die Knoten, die sich qualifizieren können, Knoten, von denen keine der Operationen, die durchgeführt werden, abhängig ist, so dass die Knoten an Übertragungsoperationen, Zusammenführungsoperationen usw. beteiligt sein können, ohne sich störend auf die anderen Operationen auszuwirken, aus denen der gesamte Baumänderungs-/-aktualisierungsprozess besteht. In der Praxis gehören zu diesen sich qualifizierenden Knoten Knoten, die (1) Knoten benachbart sind, welche gerade verarbeitet werden, (2) nicht selbst in dem eingegebenen Satz von Knoten, die verarbeitet werden sollen, enthalten sind, und (3) ein oder mehrere zusätzliche Qualifizierungskriterien erfüllen, die von dem jeweiligen Fall abhängig sind. Diese zusätzlichen Qualifizierungskriterien sind nachstehend ausführlich beschrieben. For example, in one aspect, the nodes that can qualify are nodes that are not dependent on any of the operations that are performed, so that the nodes may be involved in transfer operations, merge operations, and so on, without interfering with the other operations that make up the entire tree change / update process. In practice, these qualifying nodes include nodes that ( 1 ) Are adjacent to nodes currently being processed ( 2 ) are not themselves contained in the input set of nodes to be processed, and ( 3 ) meet one or more additional qualification criteria depending on the case. These additional qualification criteria are described in detail below.

In einer Ausführungsform, in der Einträge von einem verarbeiteten Knoten an einen sich qualifizierenden Knoten übertragen werden können, gehört zu zusätzlichen Qualifizierungskriterien die Frage, ob die vorgeschlagene Übertragung dazu führen würde, dass der benachbarte Knoten voll wird. Wenn ja, kann sich der Knoten nicht für die Übertragung qualifizieren, andernfalls kann sich der Knoten aber für die Übertragung qualifizieren.In an embodiment in which entries may be transferred from a processed node to a qualifying node, additional qualification criteria include the question of whether the proposed transmission would cause the adjacent node to become full. If so, the node can not qualify for the transfer, otherwise the node may qualify for the transfer.

Umgekehrt kann sich ein Knoten in einer Ausführungsform für die Beteiligung an einer Übertragung von Einträgen von dem Knoten an einen benachbarten Knoten, der der Verarbeitung unterliegt, qualifizieren, wenn der Knoten, von dem Einträge übertragen werden sollen, infolge der Übertragung selbst nicht unterfüllt wird. Folglich können zusätzliche Qualifizierungskriterien im Allgemeinen den gewünschten Auslastungsbereich für Knoten einschließen und der Qualifizierungsprozess kann vorzugsweise eine Auswertung von Knotenauslastungsgraden im Vergleich zu dem gewünschten Auslastungsbereich, die Feststellung, ob die vorgeschlagene Übertragung zu einer Verletzung des gewünschten Auslastungsbereichs führt, und die Qualifizierung von Knoten als Reaktion auf die Feststellung, dass die vorgeschlagene Übertragung nicht zu solch einer Verletzung führt, beinhalten.Conversely, in one embodiment, a node may qualify to participate in a transfer of entries from the node to an adjacent node undergoing processing if the node from which entries are to be transmitted is not undermined as a result of the transfer itself. Thus, additional qualification criteria may generally include the desired utilization range for nodes, and the qualification process may preferably include an evaluation of node utilization levels relative to the desired utilization range, determination of whether the proposed transfer results in a violation of the desired utilization range, and the qualification of nodes in response to the finding that the proposed transfer does not result in such an infringement.

In weiteren Ausführungsformen kann zu zusätzlichen Qualifizierungskriterien in diesem Szenario das Kriterium gehören, ob die Übertragung es erforderlich macht, dass weitere anstehende Einfügeoperationen auf den benachbarten Knoten angewendet werden, an den die Übertragung vorgeschlagen wird. Wenn ja, kann sich der Knoten wieder nicht qualifizieren, andernfalls aber kann er sich qualifizieren. In noch einem weiteren Szenario kann zu zusätzlichen Qualifizierungskriterien die Ausrichtung einer vorgeschlagenen Zusammenführungsoperation gehören.In further embodiments, additional qualification criteria in this scenario may include the criterion of whether the transfer requires further pending insert operations to be applied to the neighboring nodes to which the transfer is proposed. If so, the knot can not qualify again, but otherwise it can qualify. In yet another scenario, additional qualification criteria may include targeting a proposed merge operation.

Genauer gesagt, zu einer Qualifizierung kann die Feststellung gehören, ob eine vorgeschlagene Zusammenführung eines verarbeiteten Knotens mit benachbarten Knoten eine Übertragung aller Einträge des verarbeiteten Knotens in die benachbarten Knoten oder umgekehrt einschließt. Als Reaktion auf die Feststellung, dass die vorgeschlagene Zusammenführung die Übertragung aller Einträge des verarbeiteten Knotens in die benachbarten Knoten einschließt, können sich die benachbarten Knoten für die Übertragung von Einträgen qualifizieren. Andernfalls können sich die benachbarten Knoten nicht qualifizieren.More specifically, a qualification may include determining whether a proposed merge of a processed node with adjacent nodes involves a transfer of all entries of the processed node to the adjacent nodes, or vice versa. In response to determining that the proposed merge involves transmitting all entries of the processed node into the adjacent nodes, the neighboring nodes may qualify for the transmission of entries. Otherwise, the neighboring nodes can not qualify.

Zudem bedeutet die einseitig gerichtete Art der erlaubten Zusammenführung, dass nicht die benachbarten Knoten, sondern der verarbeitete Knoten nach der erfolgten Zusammenführungsoperation einer Löschung unterliegt. Vorzugsweise werden die benachbarten Knoten von der Zusammenführungsoperation nicht gelöscht.In addition, the unilateral nature of the allowed merge means that not the neighboring nodes, but the processed node is subject to deletion after the merge operation has been completed. Preferably, the adjacent nodes are not deleted by the merge operation.

Ungeachtet des jeweiligen Szenarios und der Qualifizierungskriterien werden die benachbarten Knoten in bevorzugten Ansätzen durch eine exklusive Berechtigung gesperrt, um zu ermöglichen, dass die Übertragung(en) gleichzeitig mit anderen Operationen durchgeführt wird/werden. Um eine mit einem solch exklusiven Zugriff verbundene Verzögerung zu minimieren, werden die benachbarten Knoten vorzugsweise vorübergehend gesperrt, und besser noch werden sie nur für die Dauer der Übertragungsoperation gesperrt. Nach Abschluss der Übertragung wird der exklusive Zugriff auf den Knoten freigegeben und eine andere gleichzeitige Verarbeitung kann effizient fortgesetzt werden. Ebenso werden Knoten, die von einer Änderungsoperation verarbeitet werden, vorzugsweise durch exklusiven Zugriff nur vorübergehend gesperrt, und noch besser werden sie nur für die Dauer der jeweiligen Änderungsoperation gesperrt.Regardless of the particular scenario and qualification criteria, the adjacent nodes in preferred approaches are locked by an exclusive entitlement to allow the transfer (s) to be performed concurrently with other operations. To minimize delay associated with such exclusive access, the neighboring nodes are preferably temporarily disabled, and more preferably, they are only disabled for the duration of the transfer operation. Upon completion of the transfer, exclusive access to the node is released and other concurrent processing can be continued efficiently. Likewise, nodes that are processed by a change operation are preferably only temporarily disabled by exclusive access, and more preferably, they are locked only for the duration of the respective change operation.

Wie der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, gibt es sicherlich mögliche Szenarien, bei denen ein bestimmter Knoten, der von einer oder mehreren heterogenen Operationen verarbeitet wird, gegebenenfalls keinen sich qualifizierenden benachbarten Knoten hat, der geeignet ist, um einer Übertragung, wie sie hier beschrieben ist, Rechnung zu tragen. In solchen Fällen, wenn die Verarbeitung dazu führt, dass der verarbeitete Knoten voll wird, und als Reaktion auf die Feststellung, dass es keine benachbarten Knoten gibt, die sich für eine Übertragung von Einträgen von dem verarbeiteten Knoten qualifizieren, wird der verarbeitete Knoten vorzugsweise aufgeteilt. Erwähnenswert ist auch, dass es mehrere solche stattfindenden Aufteilungsoperationen geben kann, insbesondere während der Verarbeitung von Einfügeoperationen auf einem verarbeiteten Knoten.As one of ordinary skill in the art will understand after reading the present descriptions, there are certainly possible scenarios in which a particular node being processed by one or more heterogeneous operations may not have a qualifying adjacent node that is suitable for one Transmission as described here. In such cases, if the processing results in the processed node becoming full, and in response to the determination that there are no adjacent nodes that qualify for transmission of entries from the processed node, the processed node is preferably split , It is also worth noting that there may be multiple such splitting operations occurring, particularly during the processing of insert operations on a processed node.

Erwähnenswert ist ferner, dass die aktuell offenbarten erfindungsgemäßen Ausführungsformen gemäß verschiedenen Ansätzen eine hervorragende Gleichzeitigkeit durch eine horizontale gleichzeitige Verarbeitung erreichen, ohne dass eine zusätzliche indirekte Adresszuordnung erforderlich ist. Eine zusätzliche indirekte Adresszuordnung bringt unerwünschterweise einen zusätzlichen Mehraufwand und einen zusätzlichen Ressourcenverbrauch (z.B. zusätzliche E/A-Operationen, zusätzliche Verarbeitungszeit, zusätzlichen Speicher usw.) mit sich, deren Vermeidung die Arbeitsweise des Speichersystems verbessert. It is also worth noting that the presently disclosed embodiments according to various approaches achieve excellent concurrency through horizontal concurrent processing without the need for additional indirect address mapping. Additional indirect address mapping undesirably entails extra overhead and resource consumption (eg, additional I / O operations, extra processing time, extra memory, etc.), the avoidance of which improves the operation of the memory system.

Nun Bezug nehmend auf 11 ist ein Ablaufplan eines Verfahrens 1100 zur Isolierung von Knoten gemäß einer Ausführungsform gezeigt, um deren gleichzeitige Massenverarbeitung zu vereinfachen. Das Verfahren 1100 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen in beliebigen der Umgebungen durchgeführt werden, die unter anderem in den 1 bis 6 gezeigt sind. Natürlich können mehr oder weniger Operationen als diejenigen, die in 11 im Einzelnen beschrieben sind, in das Verfahren 1100 aufgenommen werden, was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.Now referring to 11 is a flowchart of a procedure 1100 for isolating nodes according to an embodiment to facilitate their simultaneous mass processing. The procedure 1100 can be carried out according to the present invention in various embodiments in any of the environments described inter alia in the 1 to 6 are shown. Of course, more or less surgeries can be done than those in 11 are described in detail in the process 1100 what the skilled artisan should understand after reading the present specifications.

Jeder der Schritte des Verfahrens 1100 kann von einer beliebigen geeigneten Komponente der Betriebsumgebung durchgeführt werden. Zum Beispiel kann das Verfahren 1100 in verschiedenen Ausführungsformen ganz oder teilweise von einem Speichersystem-Manager oder einer anderen Einheit durchgeführt werden, in der sich ein oder mehrere Prozessoren befinden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software ausgeführt sind und vorzugsweise über mindestens eine Hardware-Komponente verfügen, kann in jeder beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 1100 durchzuführen. Zu Prozessoren, die der Veranschaulichung dienen, gehören, ohne darauf beschränkt zu sein, eine zentrale Verarbeitungseinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), ein kundenprogrammierbarer Universalschaltkreis (FPGA) usw., Kombinationen daraus oder eine beliebige andere geeignete, in der Technik bekannte Datenverarbeitungseinheit.Each of the steps of the procedure 1100 may be performed by any suitable component of the operating environment. For example, the procedure 1100 in various embodiments may be performed in whole or in part by a storage system manager or other entity in which one or more processors reside. The processor, eg, one or more processing circuits, one or more chips, and / or one or more modules embodied in hardware and / or software, and preferably having at least one hardware component, may be used in any unit to provide one or several steps of the procedure 1100 perform. Illustrative processors include, but are not limited to, a central processing unit (CPU), an application specific integrated circuit (ASIC), a custom programmable general purpose circuit (FPGA), etc., combinations thereof, or any other suitable ones in which Technology known data processing unit.

Wie in 11 gezeigt ist, kann das Verfahren 1100 mit der Operation 1102 beginnen, in der eine Eingabe an einem Speichersystem empfangen wird, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist. Die Eingabe kennzeichnet einen Satz von heterogenen Operationen, die auf die baumbasierte Datenstruktur angewendet werden sollen.As in 11 The procedure can be shown 1100 with the surgery 1102 begin in which an input is received on a storage system that manages a storage unit in which the tree-based data structure is stored. The input identifies a set of heterogeneous operations to apply to the tree-based data structure.

Das Verfahren 1100 beinhaltet auch die Operation 1104, in der ein oder mehrere Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen, gekennzeichnet oder auf andere Weise festgestellt werden. Die Feststellung kann in verschiedenen Ausführungsformen auf jede beliebige geeignete Art und Weise erfolgen, die mit den vorliegenden Beschreibungen in Einklang steht. In bevorzugten Ansätzen beruht die Feststellung darauf, dass die eingegebenen Einträge in der baumbasierten Datenstruktur durchsucht werden, um die Knoten festzustellen, die sie beherbergen, oder sie beruht auf der von der Suchphase oder von einer vorhergehenden Iteration der Aktualisierungsphase erzeugten Ausgabe in Form von Knoten und Operationen, wie vorstehend erörtert wurde.The procedure 1100 also includes the surgery 1104 in which one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied are identified or otherwise determined. The determination may be made in various embodiments in any suitable manner consistent with the present descriptions. In preferred approaches, the determination is based on searching the input entries in the tree-based data structure to determine the nodes that host them, or based on the output generated by the search phase or a previous iteration of the update phase in the form of nodes and Operations, as discussed above.

Des Weiteren beinhaltet das Verfahren 1100 die Operation 1106, in der eine oder mehrere Gruppen des Satzes von heterogenen Operationen, die auf den einen oder die mehreren Knoten angewendet werden sollen, gekennzeichnet oder auf andere Weise festgestellt werden. Die Feststellung kann in verschiedenen Ausführungsformen auf jede beliebige geeignete Art und Weise erfolgen, die mit den vorliegenden Beschreibungen in Einklang steht. Vorzugsweise erfolgt die Feststellung in verschiedenen Ansätzen basierend darauf, auf welche Knoten die eine oder die mehreren Operationen angewendet werden sollen, wobei die Feststellung auf der Grundlage von Daten erfolgen kann, die in dem aus Knoten und Operationen bestehenden Satz enthalten sind.Furthermore, the procedure includes 1100 the operation 1106 in which one or more sets of the set of heterogeneous operations to be applied to the one or more nodes are identified or otherwise determined. The determination may be made in various embodiments in any suitable manner consistent with the present descriptions. Preferably, the determination is made in different approaches based on which nodes the one or more operations are to be applied to, the determination being made on the basis of data contained in the set of nodes and operations.

In bevorzugten Ansätzen beruht die Feststellung zumindest teilweise auf den von der Suchphase oder der vorhergehenden Iteration der Aktualisierungsphase ausgegebenen Knoten und Operationen, wie vorstehend erörtert wurde. Im Einzelnen kann die Feststellung die gruppenweise Zusammenfassung von heterogenen Operationen entsprechend den Knoten, auf die die heterogenen Operationen angewendet werden sollen, beinhalten, was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.In preferred approaches, the determination is based, at least in part, on the nodes and operations issued by the search phase or the previous iteration of the update phase, as discussed above. Specifically, the finding may include grouping together heterogeneous operations corresponding to the nodes to which the heterogeneous operations are to be applied, as those skilled in the art will understand after reading the present descriptions.

In bevorzugteren Ansätzen belegt jeder Knoten in dem aus Knoten und Operationen bestehenden Satz dieselbe Ebene der baumbasierten Datenstruktur.In more preferred approaches, each node in the set of nodes and operations occupies the same level of the tree-based data structure.

In der Operation 1108 beinhaltet das Verfahren 1100 das Isolieren der Verarbeitung eines jeden Knotens in dem aus Knoten und Operationen bestehenden Satzes für eine unabhängige Verarbeitung. Entsprechend der Auffassung in diesem Schriftstück beinhaltet das Isolieren der Knotenverarbeitung jede beliebige geeignete Technik oder jeden beliebigen geeigneten Mechanismus, die beziehungsweise der so konfiguriert ist, dass sie/er die Verarbeitung des Knotens mittels einer oder mehreren heterogenen Operationen ermöglicht, wobei die Verarbeitung unabhängig von der Verarbeitung von heterogenen Operationen auf anderen Knoten in dem aus Knoten und Operationen bestehenden Satz stattfindet. Vorzugsweise beinhaltet eine Knotenisolierung das Isolieren eines jeden Knotens in dem aus Knoten und Operationen bestehenden Satz, so dass der gesamte Satz von heterogenen Operationen, die auf den beziehungsweise die Knoten in dem Satz angewendet werden sollen, durchgeführt werden kann, ohne sich störend auf die Verarbeitung von heterogenen Operationen auf anderen Knoten in dem Baum, insbesondere auf der aktuellen Ebene, auszuwirken. In einer Ausführungsform beinhaltet die unabhängige Verarbeitung von isolierten Knoten beispielsweise die Verarbeitung eines jeden Knotens auf einem anderen Prozessthread.In the operation 1108 includes the procedure 1100 isolating the processing of each node in the set of nodes and operations for independent processing. As is understood in this document, isolating node processing involves any suitable technique or mechanism configured to enable the processing of the node by one or more heterogeneous operations, the processing taking place independently of the processing of heterogeneous operations on other nodes in the set of nodes and operations. Preferably, node isolation involves isolating each node in the set of nodes and operations so that the entire set of heterogeneous operations to be applied to the node (s) in the set can be performed without interfering with the processing of heterogeneous operations on other nodes in the tree, especially at the current level. For example, in one embodiment, independent processing of isolated nodes involves processing each node on a different process thread.

Das Verfahren 1100 beinhaltet daher auch die Operation 1110, in der jeder Knoten in dem aus Knoten und Operationen bestehenden Satz unter Verwendung der einen oder der mehreren Gruppen des Satzes von heterogenen Operationen verarbeitet wird, die für die Anwendung auf den Satz von Knoten bestimmt wurden. Jeder Knoten in dem Satz von Knoten wird vorzugsweise gleichzeitig und unabhängig verarbeitet.The procedure 1100 therefore includes the surgery 1110 in which each node in the set of nodes and operations is processed using the one or more sets of the set of heterogeneous operations designated for application to the set of nodes. Each node in the set of nodes is preferably processed simultaneously and independently.

Vorzugsweise werden alle Knoten gleichzeitig verarbeitet, so dass jeder Prozessthread weitgehend simultan ausgeführt wird. Natürlich können manche Threads mehr Zeit als andere in Anspruch nehmen, bis sie abgeschlossen sind, aber wie der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, schließt eine gleichzeitige, unabhängige Verarbeitung Ausführungsformen ein, in denen die Verarbeitung von allen Threads in dem Satz weitgehend zur selben Zeit gestartet wird und alle Threads während eines weitgehend gleichen Zeitfensters verarbeitet werden.Preferably, all nodes are processed simultaneously, so that each process thread is executed substantially simultaneously. Of course, some threads may take more time than others to complete, but as one skilled in the art will understand after reading the present descriptions, concurrent, independent processing includes embodiments in which the processing of all threads in the Set is started at the same time and all threads are processed during a largely same time window.

Wie der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, sieht das vorstehend dargelegte Verfahren 1100 die unabhängige, isolierte und gleichzeitige Verarbeitung von einem Satz von Knoten unter Verwendung einer Gruppe von einer oder mehreren heterogenen Operationen vor, die für die Anwendung auf einen oder mehrere Knoten in dem Satz bestimmt wurden. Natürlich kann das Verfahren 1100 die Verarbeitung einer Vielzahl von verschiedenen Gruppen von heterogenen Operationen an einer Vielzahl von verschiedenen Sätzen von Knoten in einer ähnlichen Art und Weise beinhalten, wie sie vorstehend dargelegt wurde.As those skilled in the art will understand after reading the present specifications, the method set forth above provides 1100 independent, isolated, and concurrent processing of a set of nodes using a set of one or more heterogeneous operations designated for application to one or more nodes in the set. Of course, the procedure can 1100 comprise processing a plurality of different sets of heterogeneous operations on a plurality of different sets of nodes in a similar manner as set forth above.

In einer beispielhaften Ausführungsform kann das Verfahren 1100 zum Beispiel die Verarbeitung einer Vielzahl von verschiedenen Gruppen von Operationen an verschiedenen Sätzen von Knoten beinhalten, wobei alle Knoten in den verschiedenen Sätzen eine einzige Ebene der baumbasierten Datenstruktur belegen. Der Einfachheit halber nehmen wir an, dass die beispielhafte baumbasierte Datenstruktur eine Ebene hat, die vier Knoten N1, N2, N3 und N4 aufweist (z.B. wie in den 4 bis 6 gezeigt ist).In an exemplary embodiment, the method 1100 For example, processing includes a plurality of different sets of operations on different sets of nodes, where all nodes in the different sets occupy a single level of the tree-based data structure. For the sake of simplicity, we assume that the exemplary tree-based data structure has a plane that has four nodes N1, N2, N3, and N4 (eg, as in FIGS 4 to 6 is shown).

In solch einem beispielhaften Szenario kann das Verfahren 1100 die Feststellung, dass eine Gruppe von heterogenen Operationen, zu denen eine Aktualisierungsoperation und eine Einfügeoperation gehören, auf einen Satz von Knoten, zu denen N1, N2 und N3 gehört, angewendet werden sollen, sowie die Feststellung beinhalten, dass eine andere Gruppe von heterogenen Operationen, zu denen eine Aktualisierungsoperation und eine Löschoperation gehören, auf einen Satz von Knoten, zu denen N3 und N4 gehört, angewendet werden sollen. Wie der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, kann eine beliebige Anzahl solcher Gruppen und Sätze festgestellt und die entsprechenden Knoten für eine gleichzeitige, unabhängige Verarbeitung isoliert werden, wie hier erörtert wird.In such an exemplary scenario, the method 1100 determining that a group of heterogeneous operations, including an update operation and an insert operation, are to be applied to a set of nodes including N1, N2, and N3, as well as determining that another group of heterogeneous operations , which include an update operation and a delete operation, are to be applied to a set of nodes to which N3 and N4 belong. As will be understood by those skilled in the art after reading the present descriptions, any number of such groups and sets may be identified and the corresponding nodes isolated for concurrent, independent processing, as discussed herein.

Natürlich kann das Verfahren 1100 beliebig viele zusätzliche und/oder alternative Merkmale, wie zum Beispiel diejenigen, die vorstehend erörtert wurden, sowie die der Veranschaulichung dienenden Merkmale, die nachstehend aufgezeigt werden, beinhalten.Of course, the procedure can 1100 any number of additional and / or alternative features, such as those discussed above, as well as the illustrative features set forth below.

In einer Ausführungsform kann das Verfahren 1100 die Feststellung beinhalten, ob sich ein oder mehrere Knoten für eine Beteiligung an einer Knoten-Neuverteilungsoperation qualifizieren. Vorzugsweise beruht diese Feststellung auf Knoten-Neuverteilungskriterien und sie kann insbesondere eine beliebige Kombination, Permutation oder Synthese der folgenden Überlegungen beinhalten.In one embodiment, the method 1100 determining whether one or more nodes qualify for participation in a node reallocation operation. Preferably, this determination is based on node redistribution criteria, and may in particular include any combination, permutation, or synthesis of the following considerations.

In einem Ansatz beinhaltet die Feststellung, ob sich ein oder mehrere Knoten für eine Beteiligung an der Knoten-Neuverteilungsoperation qualifizieren: Kennzeichnen von einem oder mehreren Knoten, die mindestens einem Knoten in dem Satz von Knoten benachbart sind; Feststellen, ob beliebige des einen oder der mehreren benachbarten Knoten aus dem Satz von Knoten ausgeschlossen sind; und Qualifizieren von mindestens einem des einen oder der mehreren benachbarten Knoten als Reaktion auf die Feststellung, dass der mindestens eine des einen oder der mehreren benachbarten Knoten aus dem Satz von Knoten ausgeschlossen ist. Vorzugsweise sind die benachbarten Knoten nicht das Ziel von Operationen, die in der von dem Speichersystem empfangenen Eingabe angegeben sind.In one approach, determining whether one or more nodes qualify to participate in the node reallocation operation includes: identifying one or more nodes adjacent to at least one node in the set of nodes; Determining whether any of the one or more adjacent nodes are excluded from the set of nodes; and qualifying at least one of the one or more adjacent nodes in response to determining that the at least one of the one or more adjacent nodes in the set of nodes is excluded. Preferably, the neighboring nodes are not the target of operations specified in the input received from the storage system.

In bevorzugten Ausführungsformen beinhaltet die Knoten-Neuverteilungsoperation mindestens eine Übertragung von Einträgen zwischen einem Knoten in dem Satz von Knoten und einem aus dem Satz von Knoten ausgeschlossenen Knoten. Natürlich kann das Verfahren 1100 ebenso Knoten-Neuverteilungsoperationen wie zum Beispiel Aktualisierungsoperationen, Aufteilungsoperationen, Zusammenführungsoperationen usw. beinhalten, wie der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat. In preferred embodiments, the node reallocation operation includes at least one transfer of entries between a node in the set of nodes and a node excluded from the set of nodes. Of course, the procedure can 1100 also include node redistribution operations such as update operations, partitioning operations, merge operations, etc., as those skilled in the art will understand after reading the present descriptions.

In Ausführungsformen, in denen die Übertragung von Einträgen das Übertragen von Einträgen von dem Knoten in dem Satz von Knoten an den aus dem Satz von Knoten ausgeschlossenen Knoten beinhaltet, kann die Feststellung, ob sich ein oder mehrere Knoten für eine Beteiligung an einer Knoten-Neuverteilungsoperation qualifizieren, eine oder mehrere der folgenden Teiloperationen beinhalten. In einem Ansatz beinhaltet die Feststellung, ob sich Knoten qualifizieren, die Feststellung, ob der aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen voll wird; und eine Qualifizierung des aus dem Satz von Knoten ausgeschlossenen Knotens für die Übertragung als Reaktion auf die Feststellung, dass der aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen nicht voll wird.In embodiments in which the transfer of entries involves transferring entries from the node in the set of nodes to the nodes excluded from the set of nodes, the determination of whether one or more nodes are eligible for participation in a node reallocation operation qualify, include one or more of the following sub-operations. In one approach, determining whether nodes qualify includes determining whether the node excluded from the set of nodes becomes full as a result of the transfer of entries; and qualifying the node excluded from the set of nodes for transmission in response to determining that the node excluded from the set of nodes is not becoming full due to the transmission of entries.

Zudem kann die Feststellung, ob der aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen voll wird, beinhalten: Schätzen eines Auslastungsgrads des aus dem Satz von Knoten ausgeschlossenen Knotens nach der Übertragung; und Vergleichen des geschätzten Auslastungsgrads des aus dem Satz von Knoten ausgeschlossenen Knotens mit einem maximalen Auslastungsschwellenwert oder mit der Speicherkapazität des Knotens. Wenn der geschätzte Auslastungsgrad den maximalen Auslastungsschwellenwert oder die Speicherkapazität des Knotens nicht überschreitet, kann der Knoten qualifiziert werden. Wenn der geschätzte Auslastungsgrad den maximalen Auslastungsschwellenwert oder die Speicherkapazität des Knotens überschreitet, wird der Knoten vorzugsweise nicht qualifiziert.In addition, the determination of whether the node excluded from the set of nodes becomes full as a result of the transfer of entries may include: estimating a utilization level of the node excluded from the set of nodes after the transfer; and comparing the estimated utilization level of the node excluded from the set of nodes with a maximum utilization threshold or the storage capacity of the node. If the estimated utilization level does not exceed the maximum utilization threshold or the storage capacity of the node, the node may be qualified. If the estimated utilization level exceeds the maximum utilization threshold or the storage capacity of the node, the node is preferably not qualified.

Auf ähnliche Weise und bei Ausführungsformen, in denen die Übertragung von Einträgen das Übertragen von Einträgen von dem aus dem Satz von Knoten ausgeschlossenen Knoten an den Knoten in dem Satz von Knoten beinhaltet, kann die Feststellung, ob sich ein oder mehrere Knoten für eine Beteiligung an einer Knoten-Neuverteilungsoperation qualifizieren, Folgendes beinhalten. In einer Ausführungsform schließt der Prozess die Feststellung, ob der aus dem gemeinsamen Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen unterfüllt wird; und die Qualifizierung des aus dem Satz von Knoten ausgeschlossenen Knotens für die Übertragung als Reaktion auf die Feststellung ein, dass der aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen nicht unterfüllt wird.Similarly, and in embodiments in which the transmission of entries involves transmitting entries from the node excluded from the set of nodes to the nodes in the set of nodes, the determination of whether one or more nodes are eligible for participation may be made qualify a node redistribution operation, include the following. In one embodiment, the process concludes whether the node excluded from the common set of nodes is being underfunded as a result of the transfer of entries; and qualifying the node excluded from the set of nodes for transmission in response to determining that the node excluded from the set of nodes is not underfilled due to the transmission of entries.

Folglich kann die Feststellung, ob der aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen unterfüllt wird, beinhalten: Schätzen eines Auslastungsgrads des aus dem Satz von Knoten ausgeschlossenen Knotens nach der Übertragung; und Vergleichen des geschätzten Auslastungsgrads des aus dem Satz von Knoten ausgeschlossenen Knotens mit einem minimalen Auslastungsschwellenwert. Wenn der geschätzte Auslastungsgrad den minimalen Auslastungsschwellenwert erreicht oder überschreitet, kann der Knoten qualifiziert werden. Wenn der geschätzte Auslastungsgrad den minimalen Auslastungsschwellenwert nicht erreicht oder nicht überschreitet, wird der Knoten vorzugsweise nicht qualifiziert.Thus, determining whether the node excluded from the set of nodes is under-populated as a result of the transfer of entries may include: estimating a utilization level of the node excluded from the set of nodes after the transfer; and comparing the estimated utilization level of the node excluded from the set of nodes with a minimum utilization threshold. When the estimated utilization level reaches or exceeds the minimum utilization threshold, the node may be qualified. Preferably, if the estimated utilization level does not reach or exceed the minimum utilization threshold, the node is not qualified.

In noch weiteren Ausführungsformen kann die Knoten-Neuverteilungsoperation eine Zusammenführungsoperation beinhalten. Folglich kann das Verfahren das Übertragen von allen Einträgen in dem Knoten in dem Satz von Knoten an den aus dem Satz von Knoten ausgeschlossenen Knoten beinhalten. Die Feststellung, ob sich ein oder mehrere Knoten für eine Beteiligung an einer Knoten-Neuverteilungsoperation qualifizieren, die Zusammenführungsoperationen einschließt, beinhaltet vorzugsweise: Feststellen, ob der aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen voll wird; und die Qualifizierung des aus dem Satz von Knoten ausgeschlossenen Knotens für die Übertragung als Reaktion auf die Feststellung, dass der aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen nicht voll wird. Um die Zusammenführungsoperation abzuschließen, nachdem alle Einträge an den aus dem Satz ausgeschlossenen Knoten übertragen wurden, wird der Knoten in dem Satz von Knoten, von dem die Einträge übertragen wurden und der leer wurde, gelöscht.In still other embodiments, the node reallocation operation may include a merge operation. Thus, the method may include transmitting all entries in the node in the set of nodes to the nodes excluded from the set of nodes. The determination of whether one or more nodes qualify for participation in a node reallocation operation involving merge operations preferably includes: determining whether the node excluded from the set of nodes becomes full as a result of the transfer of entries; and qualifying the node excluded from the set of nodes for transmission in response to determining that the node excluded from the set of nodes is not becoming full due to the transmission of entries. To complete the merge operation after all entries have been transferred to the node excluded from the set, the node in the set of nodes from which the entries were transferred and which became empty is deleted.

Wie vorstehend erwähnt wurde, kann eine Knoten-Neuverteilung in verschiedenen Ausführungsformen den Erhalt des exklusiven Zugriffs auf einen Knoten beinhalten, der sich für eine Beteiligung an der Knoten-Neuverteilungsoperation qualifiziert. Vorzugsweise erhält man den exklusiven Zugriff, bevor die Aktualisierung der Knoten gestartet wird, die an der Knoten-Neuverteilungsoperation beteiligt sind; und besser noch unmittelbar bevor die Aktualisierung der Knoten gestartet wird, die an der Knoten-Neuverteilungsoperation beteiligt sind. Beispielhafte Ausführungsformen dieses Prozesses können die Durchführung der Knoten-Neuverteilungsoperation unter Verwendung des Knotens, der sich für eine Beteiligung an der Knoten-Neuverteilungsoperation qualifiziert; und die nach Abschluss der Knoten-Neuverteilungsoperation erfolgende Freigabe des exklusiven Zugriffs auf den Knoten, der sich für eine Beteiligung an der Knoten-Neuverteilungsoperation qualifiziert, beinhalten. Folglich gibt es den exklusiven Zugriff vorzugsweise für einen Zeitraum, der weitgehend gleich einer Dauer der Knoten-Neuverteilungsoperation ist.As mentioned above, in various embodiments, node redistribution may include obtaining exclusive access to a node that qualifies to participate in the node reallocation operation. Preferably, the exclusive access is obtained before starting the update of the nodes involved in the node reallocation operation; and, better still, immediately before the update of the nodes involved in the node redistribution operation is started. Exemplary embodiments of this process may include performing the node reallocation operation using the node that is in favor of sharing qualified at the node reallocation operation; and including, upon completion of the node reallocation operation, granting exclusive access to the node qualifying to participate in the node reallocation operation. Consequently, the exclusive access preferably exists for a period substantially equal to a duration of the node reallocation operation.

In noch weiteren Ausführungsformen kann die Knoten-Neuverteilungsoperation eine Übertragung von Einträgen von dem Knoten in dem Satz von Knoten, beispielsweise entsprechend einer Aufteilungsoperation, beinhalten. Die Feststellung, ob sich ein oder mehrere Knoten für eine Beteiligung an einer Knoten-Neuverteilungsoperation qualifizieren, kann folglich beinhalten: Kennzeichnen von einem oder mehreren Knoten, die mindestens einem Knoten in dem Satz von Knoten benachbart sind; Feststellen, ob beliebige des einen oder der mehreren benachbarten Knoten aus dem Satz von Knoten ausgeschlossen sind; Feststellen, ob der benachbarte, aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen voll wird; und Aufteilen des Knotens in dem Satz von Knoten als Reaktion auf die Feststellung, dass der benachbarte, aus dem Satz von Knoten ausgeschlossene Knoten infolge der Übertragung von Einträgen voll wird.In still further embodiments, the node reallocation operation may include transmitting entries from the node in the set of nodes, for example, according to a splitting operation. The determination of whether one or more nodes qualify for participation in a node reallocation operation may thus include: identifying one or more nodes adjacent to at least one node in the set of nodes; Determining whether any of the one or more adjacent nodes are excluded from the set of nodes; Determining whether the adjacent node excluded from the set of nodes becomes full as a result of the transfer of entries; and splitting the node in the set of nodes in response to determining that the adjacent node excluded from the set of nodes becomes full as a result of the transfer of entries.

Natürlich handelt es sich bei den vorstehenden Ausführungsformen lediglich um beispielhafte Ausführungsformen einer erfindungsgemäßen Technik, um Knoten für eine gleichzeitige Massenverarbeitung zu isolieren, und sie sollten nicht als den Umfang der vorliegenden Offenbarungen einschränkende Ausführungsformen betrachtet werden.Of course, the above embodiments are merely exemplary embodiments of a technique of the invention for isolating nodes for concurrent mass processing, and they should not be considered as embodiments limiting the scope of the present disclosure.

Effiziente Festlegung der Reihenfolge von OperationenEfficiently determining the order of operations

Wie vorstehend angegeben, statten die aktuell offenbarten erfindungsgemäßen Konzepte herkömmliche Architekturen von Speichersystemen mit einer verbesserten Funktion aus, indem sie eine neuartige und effiziente Festlegung der Reihenfolge der heterogenen Arten von Operationen ermöglichen, die auf einen Knoten angewendet werden sollen: Die heterogenen Operationen werden entsprechend den Knoten, die sie betreffen, gruppenweise zusammengefasst und dann innerhalb einer jeden Gruppe entsprechend ihrer jeweiligen Art in eine bestimmte Reihenfolge gebracht, die strukturelle Veränderungen minimiert, welche sich aus der Anwendung von Operationen ergeben. Ein vorteilhaftes Ergebnis besteht darin, den Umfang des ausgegebenen Satzes von Operationen beträchtlich zu verringern, der von jeder Phase des Algorithmus erzeugt wird, wodurch die Gesamtzahl der Operationen, die notwendig sind, um die Verarbeitung der baumbasierten Datenstruktur abzuschließen, verringert und zu der verbesserten Rechenleistung beigetragen wird, die mit den vorliegenden Techniken verbunden ist.As noted above, the presently disclosed inventive concepts provide conventional architectures of memory systems having an improved function by allowing a novel and efficient determination of the order of the heterogeneous types of operations to be applied to a node: the heterogeneous operations are performed according to the Groups that affect them are grouped together and then placed in a specific order within each group according to their particular nature, minimizing structural changes resulting from the application of operations. A beneficial result is to significantly reduce the amount of output set of operations generated by each phase of the algorithm, thereby reducing the total number of operations necessary to complete the processing of the tree-based data structure, and to the improved computational power contributed to by the present techniques.

In einer Ausführungsform ist beispielsweise eine bestimmte Gruppe von Knoten von einer Aktualisierungsoperation betroffen, in der Einträge eines jeden Knotens in der bestimmten Gruppe geändert werden sollen. Die Knoten werden zur Verarbeitung gruppenweise zusammengefasst und innerhalb der Gruppe werden jedwede strukturellen Veränderungen, die aufgrund der Durchführung der Aktualisierungsoperationen (z.B. Einfügeoperationen, Löschoperationen usw.) notwendig sind, ausgewertet.For example, in one embodiment, a particular group of nodes is affected by an update operation in which entries of each node in the particular group are to be changed. The nodes are grouped together for processing, and within the group, any structural changes necessary due to the performance of the update operations (e.g., insert operations, delete operations, etc.) are evaluated.

Nachdem der notwendige Satz von Operationen festgestellt wurde, um die Aktualisierung und einen etwaigen wünschenswerten Knotenausgleich vorzunehmen, wird der Satz von Operationen vorzugsweise entsprechend der hier aufgezeigten bevorzugten Reihenfolge durchgeführt. Die bevorzugte Reihenfolge beinhaltet wieder die Durchführung von Aktualisierungsoperationen, gefolgt von Löschoperationen und sich daran anschließenden Einfügeoperationen. In anderen Ausführungsformen kann jedoch eine benutzerdefinierte Reihenfolge vorgegeben (z.B. in der empfangenen Eingabe) und umgesetzt werden.After the necessary set of operations has been determined to perform the update and any desirable node balancing, the set of operations is preferably performed according to the preferred order shown here. The preferred order again involves performing update operations, followed by delete operations and subsequent insert operations. However, in other embodiments, a custom order may be predetermined (e.g., in the received input) and implemented.

Folglich, und wie in 12 gezeigt ist, kann das Verfahren 1200 mit der Operation 1202 beginnen, in der eine Eingabe an einem Speichersystem empfangen wird, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist. Die Eingabe kennzeichnet einen Satz von heterogenen Operationen, die auf die baumbasierte Datenstruktur angewendet werden sollen.Consequently, and as in 12 The procedure can be shown 1200 begin with operation 1202, in which an input is received at a storage system that manages a storage unit in which the tree-based data structure is stored. The input identifies a set of heterogeneous operations to apply to the tree-based data structure.

Das Verfahren 1200 beinhaltet auch die Operation 1204, in der ein oder mehrere Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen, gekennzeichnet oder auf andere Weise festgestellt werden. Die Feststellung kann in verschiedenen Ausführungsformen auf jede beliebige geeignete Art und Weise erfolgen, die mit den vorliegenden Beschreibungen in Einklang steht. In bevorzugten Ansätzen beruht die Feststellung darauf, dass die eingegebenen Einträge in der baumbasierten Datenstruktur durchsucht werden, um die Knoten festzustellen, die sie beherbergen, oder sie beruht auf der von der Suchphase oder von einer vorhergehenden Iteration der Aktualisierungsphase erzeugten Ausgabe in Form von Knoten und Operationen, wie vorstehend erörtert wurde.The procedure 1200 also includes the surgery 1204 in which one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied are identified or otherwise determined. The determination may be made in various embodiments in any suitable manner consistent with the present descriptions. In preferred approaches, the determination is based on searching the input entries in the tree-based data structure to determine the nodes that host them, or based on the output generated by the search phase or a previous iteration of the update phase in the form of nodes and Operations, as discussed above.

Des Weiteren beinhaltet das Verfahren 1200 die Operation 1206, in der eine oder mehrere Gruppen des Satzes von heterogenen Operationen, die auf den einen oder die mehreren Knoten angewendet werden sollen, gekennzeichnet oder auf andere Weise festgestellt werden. Die Feststellung kann in verschiedenen Ausführungsformen auf jede beliebige geeignete Art und Weise erfolgen, die mit den vorliegenden Beschreibungen in Einklang steht.Furthermore, the procedure includes 1200 the operation 1206 in which one or more groups of the set of heterogeneous operations, the to be applied to the one or more nodes, identified or otherwise determined. The determination may be made in various embodiments in any suitable manner consistent with the present descriptions.

In bevorzugten Ansätzen beruht die Feststellung zumindest teilweise auf den von der Suchphase ausgegebenen Knoten und Operationen und/oder dem aus Knoten und Operationen bestehenden Satz, der von einer vorhergehenden Iteration der Aktualisierungsphase ausgegeben wurde, wie vorstehend erörtert wurde. Im Einzelnen kann die Feststellung das Kennzeichnen eines Satzes von Knoten auf der Grundlage von deren Speicherkennungen sowie die Feststellung beinhalten, dass der gesamte Satz von Knoten das Ziel einer Einfügeoperation und/oder einer Löschoperation und/oder einer Zusammenführungsoperation und/oder einer Aufteilungsoperation und/oder einer Aktualisierungsoperation usw. ist, was der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat.In preferred approaches, the determination is based, at least in part, on the nodes and operations output by the search phase and / or the set of nodes and operations output from a previous iteration of the update phase, as discussed above. Specifically, the determination may include identifying a set of nodes based on their memory IDs, and determining that the entire set of nodes has the destination of an insert operation and / or an erase operation and / or a merge operation and / or a split operation and / or an update operation, etc. is what a person skilled in the art might understand after having read the present descriptions.

In bevorzugteren Ansätzen belegt jeder Knoten in dem aus einem oder mehreren Knoten bestehenden Satz dieselbe Ebene der baumbasierten Datenstruktur.In more preferred approaches, each node in the set of one or more nodes occupies the same level of the tree-based data structure.

Das Verfahren 1200 umfasst des Weiteren die Operation 1208, in der die eine oder die mehreren Gruppen des Satzes von heterogenen Operationen angewendet werden. Wichtig ist, dass der Satz von Operationen, die in jeder Gruppe angewendet werden, entsprechend einer vorher festgelegten Reihenfolge angewendet wird. Vorzugsweise ist die vorher festgelegte Reihenfolge die bevorzugte Reihenfolge, wie hier aufgezeigt wird.The procedure 1200 further includes the operation 1208 in which the one or more groups of the set of heterogeneous operations are applied. Importantly, the set of operations used in each group is applied according to a predetermined order. Preferably, the predetermined order is the preferred order, as indicated herein.

Wie der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, kann das Verfahren 1200 natürlich auch beliebig viele zusätzliche Funktionen und/oder Merkmale beinhalten, wie hier beschrieben wird. In verschiedenen Ausführungsformen kann das Verfahren 1200 ein beliebiges oder mehrere der folgenden Merkmale und/oder Funktionalitäten beinhalten.As those skilled in the art will understand, after having read the present specifications, the method may 1200 Of course, also include any number of additional functions and / or features, as described here. In various embodiments, the method 1200 include any one or more of the following features and / or functionalities.

Vorteilhafterweise verbessern die aktuell offenbarten erfindungsgemäßen Ausführungsformen, zu denen die Anwendung des Satzes von heterogenen Operationen auf den Satz von Knoten entsprechend der vorher festgelegten Reihenfolge gehört, die Arbeitsweise von Speichersystemen, indem sie: eine Reihe von strukturellen Veränderungen der baumbasierten Datenstruktur minimieren; und einen Umfang eines aus Knoten und Operationen bestehenden Ausgabesatzes verringern, der infolge der Anwendung des Satzes von heterogenen Operationen auf eine bestimmte Ebene der baumbasierten Datenstruktur erzeugt wurde.Advantageously, the presently disclosed embodiments of the invention, including the application of the set of heterogeneous operations to the set of nodes according to the predetermined order, improve the operation of storage systems by: minimizing a number of structural changes to the tree-based data structure; and reduce a scope of an output set of nodes and operations generated as a result of applying the set of heterogeneous operations to a particular level of the tree-based data structure.

Wie vorstehend allgemein angemerkt wurde, beinhaltet die vorher festgelegte Reihenfolge die Anwendung von Aktualisierungsoperationen, gefolgt von Löschoperationen, gefolgt von Einfügeoperationen. In einer Ausführungsform kann das Verfahren 1200 folglich die Durchführung von Aktualisierungsoperationen beinhalten, die in dem Satz von heterogenen Operationen gekennzeichnet sind, bevor es Löschoperationen durchführt, die in dem Satz von heterogenen Operationen gekennzeichnet sind, und es kann Löschoperationen durchführen, die in dem Satz von heterogenen Operationen gekennzeichnet sind, bevor es Einfügeoperationen durchführt, die in dem Satz von heterogenen Operationen gekennzeichnet sind.As noted above, the predetermined order includes the application of update operations, followed by delete operations followed by insert operations. In one embodiment, the method 1200 Consequently, it may include performing update operations identified in the set of heterogeneous operations before performing delete operations identified in the set of heterogeneous operations, and may perform delete operations identified in the set of heterogeneous operations before it Performs insert operations identified in the set of heterogeneous operations.

Ebenso kann die vorher festgelegte Reihenfolge In weiteren Ausführungsformen beinhalten: Durchführen von Knoten-Neuverteilungsoperationen (z.B. Übertragung von Einträgen, Aufteilungs- oder Zusammenführungsoperationen), nachdem vorzugsweise alle Aktualisierungs-, Lösch- und Einfügeoperationen durchgeführt worden sind, die in dem Satz von heterogenen Operationen für einen bestimmten Knoten gekennzeichnet waren. Die Durchführung der Knoten-Neuverteilung wird vorzugsweise als Reaktion auf die Feststellung durchgeführt, dass ein Knoten in dem Satz von Knoten voll oder unterfüllt ist, nachdem die in der Eingabe angegebene Gruppe von Operationen durchgeführt wurde.Likewise, in other embodiments, the predetermined order may include performing node redistribution operations (eg, transfer of entries, partitioning or merge operations) after preferably performing all update, delete, and insert operations described in the set of heterogeneous operations for a specific node were identified. The implementation of the node reallocation is preferably performed in response to the determination that a node in the set of nodes is full or underfilled after the group of operations specified in the input has been performed.

In weiteren Ansätzen beinhaltet die vorher festgelegte Reihenfolge: Durchführen einer Aufteilungsoperation als Reaktion auf die Feststellung, dass ein Knoten in dem Satz von Knoten im Verlauf der Durchführung der Gruppe von Operationen voll wird.In further approaches, the predetermined order includes performing a partitioning operation in response to determining that a node in the set of nodes becomes full in the course of performing the group of operations.

Wie vorstehend erwähnt wurde, kann die Reihenfolge der Operationen in manchen Ausführungsformen überdies von einem Benutzer angegeben werden, insbesondere, wenn die Operationen auf einen Satz von Knoten angewendet werden sollen, der Dateneinträge speichert, und ganz besonders, wenn die Operationen während einer ersten Iteration einer Aktualisierungsphase auf einen Satz von Blattknoten eines B+-Baums angewendet werden sollen, wie hier beschrieben wird.In addition, as noted above, in some embodiments, the order of the operations may be specified by a user, particularly if the operations are to be applied to a set of nodes storing data entries, and more particularly if the operations during a first iteration of a Update phase to a set of leaf nodes of a B + tree, as described herein.

Folglich kann das Verfahren 1200 zusätzlich und/oder alternativ das Überschreiben der vorher festgelegten Reihenfolge als Reaktion auf die Feststellung, dass eine vom Benutzer vorgegebene Reihenfolge in der Eingabe angegeben war, beinhalten, wobei die vom Benutzer bereitgestellte Eingabe einer oder mehreren Operationen des Satzes von heterogenen Operationen entspricht, die auf die baumbasierte Datenstruktur angewendet werden sollen, welche Dateneinträge speichert.Consequently, the process can 1200 additionally and / or alternatively, overwriting the predetermined order in response to determining that a user-specified order was specified in the input, wherein the user-provided input corresponds to one or more operations of the set of heterogeneous operations that occur on the tree-based data structure to be used, which stores data entries.

Natürlich handelt es sich bei den vorstehenden Ausführungsformen lediglich um beispielhafte Ausführungsformen einer erfindungsgemäßen Technik, um Knoten für eine gleichzeitige Massenverarbeitung zu isolieren, und sie sollten nicht als den Umfang der vorliegenden Offenbarungen einschränkende Ausführungsformen betrachtet werden.Of course, the above embodiments are merely exemplary embodiments of a technique of the invention for isolating nodes for concurrent mass processing, and they should not be considered as embodiments limiting the scope of the present disclosure.

Bei Verwendung der vorstehenden erfindungsgemäßen Konzepte ermöglichen und stellen die aktuell offenbarten Techniken eine Vielzahl von vorteilhaften Merkmalen bereit, die einzeln und in Kombination dahingehend wirken, dass die Arbeitsweise von herkömmlichen Datenspeichersystemen verbessert wird, indem beispielsweise Zugriffsoperationen auf das Speichersystem, E/A und die Prozessorlast verringert wird. Genauer gesagt, die aktuell offenbarten erfindungsgemäßen Konzepte ermöglichen die mengenbasierte Verarbeitung von heterogenen Arten von Operationen auf eine Art und Weise, die für eine effiziente gleichzeitige Verarbeitung von Sätzen von heterogenen Operationen optimiert ist. Darüber hinaus ermöglicht das Isolieren der Verarbeitung eines jeden Knotens, der in einer aktuellen Baumebene verarbeitet wird, eine effiziente gleichzeitige Massenverarbeitung von Operationen. Des Weiteren werden strukturelle Veränderungen, die sich aus der Anwendung von Operationen ergeben, minimiert, indem eine maximal effiziente Reihenfolge der Operationen angegeben wird, was zur Effizienz des Algorithmus beiträgt.Using the above inventive concepts, the presently disclosed techniques provide and provide a variety of advantageous features that act individually and in combination to improve the operation of conventional data storage systems, such as accessing the memory system, I / O, and processor load is reduced. More specifically, the presently disclosed inventive concepts enable the quantity-based processing of heterogeneous types of operations in a manner optimized for efficient concurrent processing of sets of heterogeneous operations. In addition, isolating the processing of each node being processed at a current tree level enables efficient concurrent mass processing of operations. Furthermore, structural changes resulting from the application of operations are minimized by providing a maximum efficient order of operations, which contributes to the efficiency of the algorithm.

Folglich passen die aktuell offenbarten erfindungsgemäßen Konzepte gut und sie bieten eine umfangreiche Lösung für Anwendungen, die über Transaktionen auf Datenstrukturen zugreifen und diese ändern, was eine sehr gebräuchliche Architektur für viele Anwendungsfälle und Anwendungen ist, die Operationen zusammenfassen und die Operationen dann möglicherweise verringern, bevor sie sie auf Datenstrukturen anwenden. Im Einzelnen sind die aktuell offenbarten erfindungsgemäßen Konzepte auf die allgemeine Familie von ausgelagerten Suchbaum-Datenstrukturen anwendbar und sie bieten eine Lösung mit einem breiten Anwendungsspektrum, um die Effizienz einer in großem Umfang eingesetzten Komponente in vielen Anwendungen zu verbessern. Es sollte sich jedoch von selbst verstehen, dass diese Offenbarungen Konzepte vorstellen, die auf viele Systeme anwendbar sind, welche baumbasierte Datenstrukturen nutzen, wie zum Beispiel Datenbanksysteme, Dateisysteme, Speicher- und Deduplizierungssysteme, und daher über eine hohe Anwendungsvielfalt verfügen.Consequently, the presently disclosed inventive concepts fit well and provide a comprehensive solution for applications accessing and modifying data structure transactions, which is a very common architecture for many use cases and applications that aggregate operations and then potentially reduce operations before apply them to data structures. In particular, the presently disclosed inventive concepts are applicable to the general family of paged search tree data structures and provide a solution with a wide range of applications to improve the efficiency of a widely used component in many applications. However, it should be understood that these disclosures provide concepts that are applicable to many systems that utilize tree-based data structures, such as database systems, file systems, storage and deduplication systems, and therefore have a wide variety of applications.

Es dürfte klar sein, dass die verschiedenen Merkmale der vorstehenden Systeme und/oder methodischen Vorgehensweisen beliebig kombiniert werden können und auf diese Weise eine Vielzahl von Kombinationen aus den hier dargelegten Beschreibungen schaffen. Es dürfte sich des Weiteren verstehen, dass Ausführungsformen der vorliegenden Erfindung in Form eines Dienstes bereitgestellt werden können, der im Namen eines Kunden installiert wird, um Service-on-Demand anzubieten.It will be understood that the various features of the foregoing systems and / or methodologies may be combined as desired to create a variety of combinations of the descriptions set forth herein. It should be further understood that embodiments of the present invention may be provided in the form of a service installed on behalf of a customer to provide service-on-demand.

Während nachstehend verschiedene Ausführungsformen beschrieben wurden, sollte es sich verstehen, dass diese lediglich beispielhaft aufgezeigt wurden und nicht als Einschränkung zu verstehen sind. Folglich sollte der Umfang und der Anwendungsbereich einer bevorzugten Ausführungsform nicht durch irgendwelche der nachstehend beschriebenen beispielhaften Ausführungsformen beschränkt werden, sondern lediglich gemäß den folgenden Ansprüchen und ihren Äquivalenten definiert werden.While various embodiments have been described below, it should be understood that they have been presented by way of example only and not limitation. Thus, the scope and scope of a preferred embodiment should not be limited by any of the exemplary embodiments described below, but should be defined only in accordance with the following claims and their equivalents.

Claims (26)

Von einem Computer ausgeführtes Verfahren zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur, das aufweist: Empfangen einer Eingabe an einem Speichersystem, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist, wobei die Eingabe einen Satz von heterogenen Operationen kennzeichnet, die auf die baumbasierte Datenstruktur angewendet werden sollen; Feststellen von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und gleichzeitiges und mengenbasiertes Durchführen von einer oder mehreren Operationen des Satzes von heterogenen Operationen.A computer-executed method for concurrently processing operations on a tree-based data structure, comprising: Receiving an input to a storage system managing a storage unit in which the tree-based data structure is stored, the input identifying a set of heterogeneous operations to be applied to the tree-based data structure; Determining one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied; and performing simultaneous and quantity-based one or more operations of the set of heterogeneous operations. Verfahren nach Anspruch 1, wobei der Satz von heterogenen Operationen eines oder mehr von Folgendem aufweist: Einfügeoperationen, Löschoperationen und Aktualisierungsoperationen.Method according to Claim 1 wherein the set of heterogeneous operations comprises one or more of: insert operations, delete operations, and update operations. Verfahren nach Anspruch 2, wobei die Eingabe aufweist: einen Verweis auf die baumbasierte Datenstruktur und eine Liste mit Paaren, wobei jedes Paar aus einem Dateneintrag und mindestens einer zugehörigen Operation besteht.Method according to Claim 2 wherein the input comprises: a reference to the tree-based data structure and a list of pairs, each pair consisting of a data entry and at least one associated operation. Verfahren nach Anspruch 1, wobei die Feststellung nicht den Zugriff auf Blattknoten der baumbasierten Datenstruktur einschließt; wobei die Blattknoten einen oder mehrere Dateneinträge speichern; und wobei mindestens einige der Dateneinträge in der Eingabe angegeben sind.Method according to Claim 1 wherein the determination does not include access to leaf nodes of the tree-based data structure; wherein the leaf nodes store one or more data entries; and where at least some of the data entries are specified in the input. Verfahren nach Anspruch 1, das eine Suchphase aufweist, wobei die Suchphase aufweist: Auswerten von Knoten in jeder Ebene der baumbasierten Datenstruktur in einer absteigenden Reihenfolge; und wobei die Auswertung für jede Ebene die gleichzeitige Feststellung aufweist, ob beliebige der Knoten in der Ebene, die ausgewertet werden, eines oder mehr von Folgendem sind: ein Knoten, der zur Weiterleitung der Suche in dem Baum verwendet werden soll; und ein Knoten, auf den eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen. Method according to Claim 1 comprising a search phase, the search phase comprising: evaluating nodes in each level of the tree-based data structure in a descending order; and wherein the evaluation for each level comprises simultaneously determining whether any of the nodes in the level being evaluated are one or more of: a node to be used to route the search to the tree; and a node to which one or more operations of the set of heterogeneous operations are to be applied. Verfahren nach Anspruch 5, wobei die Suchphase eine Ausgabe erzeugt, die aufweist: einen aus Knoten und Operationen bestehenden Satz, wobei der aus Knoten und Operationen bestehende Satz eine Liste mit Speicherkennungen aufweist, wobei jede Speicherkennung einen der Knoten kennzeichnet, auf den eine oder mehrere Operationen eines Satzes von heterogenen Operationen angewendet werden sollen; und wobei mindestens einige der Speicherkennungen zu mindestens einer Operation gehören, die von der Suchphase erzeugt wird.Method according to Claim 5 wherein the search phase generates an output comprising: a set of nodes and operations, the set of nodes and operations having a list of memory identifiers, each memory identifier identifying one of the nodes to which one or more operations of a set of heterogeneous operations to be applied; and wherein at least some of the memory identifiers belong to at least one operation generated by the search phase. Verfahren nach Anspruch 6, das eine Aktualisierungsphase aufweist, wobei die Aktualisierungsphase aufweist: Anwenden von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf jeden Knoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, wobei bei jedem der Knoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, die eine oder die mehreren Operationen des Satzes von heterogenen Operationen, die auf den Knoten angewendet werden, auf der mindestens einen Operation beruhen, die der Speicherkennung für den Knoten zugeordnet ist; und wobei die eine oder die mehreren Operationen des Satzes von heterogenen Operationen gleichzeitig, unabhängig und mengenbasiert auf jeden der Knoten angewendet werden, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist.Method according to Claim 6 comprising an update phase, wherein the update phase comprises: applying to each node one or more operations of the set of heterogeneous operations having a memory identifier listed in the set of nodes and operations, wherein each of the nodes, has a memory identifier listed in the set of nodes and operations, the one or more operations of the set of heterogeneous operations applied to the node are based on the at least one operation associated with the memory identifier for the node ; and wherein the one or more operations of the set of heterogeneous operations are applied concurrently, independently, and quantity-based to each of the nodes having a memory identifier listed in the set of nodes and operations. Verfahren nach Anspruch 7, wobei die Anwendung der einen oder der mehreren Operationen des Satzes von heterogenen Operationen auf jeden Knoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, eines oder mehr von Folgendem aufweist: Einfügen von einem oder mehreren neuen Knoten; Löschen von einem oder mehreren vorhandenen Knoten; Zusammenführen von einem oder mehreren vorhandenen Knoten; Aufteilen von einem oder mehreren vorhandenen Knoten; und Aktualisieren von einem oder mehreren Dateneinträgen von einem oder mehreren vorhandenen Knoten.Method according to Claim 7 wherein the application of the one or more operations of the set of heterogeneous operations to each node having a memory identifier listed in the set of nodes and operations comprises one or more of: inserting one or more new nodes ; Delete one or more existing nodes; Merging one or more existing nodes; Splitting one or more existing nodes; and updating one or more data entries from one or more existing nodes. Verfahren nach Anspruch 8, wobei neue Knoten, die erzeugt werden, wenn verarbeitete Knoten aufgeteilt werden, Einträge erzeugen, die zu einer nächsthöheren Ebene der baumbasierten Datenstruktur in einer nächsten Aktualisierungsphase hinzugefügt werden sollen, wobei die vollständige Übertragung von Einträgen von einem verarbeiteten Knoten an gleichgeordnete Knoten eine Löschoperation eines Eintrags in der nächsthöheren Ebene des Baums in der nächsten Aktualisierungsphase erzeugt und wobei ein verarbeiteter Knoten, bei dem der Inhalt seiner Einträge geändert wurde und dessen repräsentativer Eintrag sich dadurch geändert hat, Einträge erzeugt, die in der nächsten Aktualisierungsphase gelöscht und in der nächsthöheren Ebene des Baums eingefügt werden sollen.Method according to Claim 8 wherein new nodes that are generated when processing nodes are split create entries to be added to a next higher level of the tree-based data structure in a next update phase, wherein the complete transmission of entries from a processed node to sibling nodes is an erase operation of a In the next update phase, an entry in the next higher level of the tree is generated, and wherein a processed node, in which the contents of its entries have been changed and whose representative entry has thereby changed, generates entries which are deleted in the next update phase and in the next higher level of the Tree should be inserted. Verfahren nach Anspruch 7, wobei die Aktualisierungsphase ein iterativer Prozess ist; und wobei sich die Operationen, die von jeder Aktualisierungsphase erzeugt werden, aus dem Erzeugen von Knoten, dem Löschen von Knoten und dem Ändern von Knoten in einer aktuellen Iteration der Aktualisierungsphase ergeben.Method according to Claim 7 where the update phase is an iterative process; and wherein the operations generated by each update phase result from generating nodes, deleting nodes, and changing nodes in a current iteration of the update phase. Verfahren nach Anspruch 7, wobei die Aktualisierungsphase das Erzeugen eines neuen aus Knoten und Operationen bestehenden Satzes aufweist, der zumindest teilweise darauf beruht, dass die eine oder die mehreren Operationen des Satzes von heterogenen Operationen auf jeden Knoten angewendet werden, der eine Speicherkennung hat, welche in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist; wobei der neue aus Knoten und Operationen bestehende Satz eine Liste mit Speicherkennungen aufweist und wobei jede Speicherkennung in dem neuen aus Knoten und Operationen bestehenden Satz einen der Knoten kennzeichnet, auf den eine oder mehrere Operationen eines neuen Satzes von heterogenen Operationen angewendet werden sollen.Method according to Claim 7 wherein the update phase comprises generating a new set of nodes and operations based, at least in part, on applying the one or more operations of the set of heterogeneous operations to each node having a memory identifier included in the one of nodes and operations existing sentence is listed; wherein the new set of nodes and operations comprises a list of memory identifiers and wherein each memory identifier in the new set of nodes and operations identifies one of the nodes to which one or more operations of a new set of heterogeneous operations are to be applied. Verfahren nach Anspruch 11, wobei die Aktualisierungsphase aufweist: Anwenden von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf jeden Knoten, der eine Speicherkennung hat, die in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist, und wobei die eine oder die mehreren Operationen des Satzes von heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der Knoten angewendet werden, der eine Speicherkennung hat, die in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist.Method according to Claim 11 wherein the update phase comprises: applying to each node one or more operations of the set of heterogeneous operations having a memory identifier listed in the new set of nodes and operations, and wherein the one or more operations of the set of heterogeneous operations simultaneously and applied to any of the nodes having a memory identifier listed in the new set of nodes and operations. Verfahren nach Anspruch 7, wobei die Aktualisierungsphase aufweist: Feststellen, ob ein neuer aus Knoten und Operationen bestehender Satz, der als Reaktion auf die Anwendung der einen oder der mehreren Operationen des Satzes von heterogenen Operationen auf jeden der Knoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, erzeugt wurde, Speicherkennungen aufweist, die einem Knoten in einer nächsthöheren Ebene der baumbasierten Datenstruktur entsprechen; und als Reaktion auf die Feststellung, dass der neue aus Knoten und Operationen bestehende Satz keine Speicherkennungen aufweist, die einem Knoten in der nächsthöheren Ebene der baumbasierten Datenstruktur entsprechen, Beenden der Aktualisierungsphase.Method according to Claim 7 wherein the update phase comprises: determining whether a new set of nodes and operations is in response to the application of the one or more operations of the set of heterogeneous operations on each of the nodes having a memory identifier that is in the one of nodes and operations existing set is generated, has memory identifiers corresponding to a node in a next higher level of the tree-based data structure; and in response to determining that the new set of nodes and operations does not have memory identifiers corresponding to a node in the next higher level of the tree-based data structure, terminate the update phase. Verfahren nach Anspruch 7, wobei die baumbasierte Datenstruktur eine Vielzahl von Knotenebenen aufweist und das Verfahren die iterative Durchführung der Aktualisierungsphase für eine oder mehrere der Vielzahl der Knotenebenen aufweist; wobei jede Iteration der Aktualisierungsphase einen neuen aus Knoten und Operationen bestehenden Satz für eine Knotenebene erzeugt, die in einer nächsten Iteration der Aktualisierungsphase aktualisiert werden soll; und wobei sich die Knotenebene, die in der nächsten Iteration der Aktualisierungsphase aktualisiert werden soll, über der Knotenebene befindet, auf der die Aktualisierungsphase in einer aktuellen Iteration der Aktualisierungsphase durchgeführt wird.Method according to Claim 7 wherein the tree-based data structure has a plurality of node levels and the method comprises iteratively performing the update phase for one or more of the plurality of node levels; wherein each iteration of the update phase generates a new node-level set of operations to be updated in a next iteration of the update phase; and wherein the node level to be updated in the next iteration of the update phase is above the node level at which the update phase is performed in a current iteration of the update phase. Verfahren nach Anspruch 7, wobei der Zugriff auf Knoten in der Suchphase mittels einer geteilten Berechtigung stattfindet und wobei der Zugriff auf Knoten, auf die die eine oder die mehreren Operationen des Satzes von heterogenen Operationen während der Aktualisierungsphase angewendet werden, mittels einer exklusiven Berechtigung erfolgt.Method according to Claim 7 wherein access to nodes in the search phase takes place by means of a shared privilege, and wherein access to nodes to which the one or more operations of the set of heterogeneous operations are applied during the update phase is done by means of an exclusive privilege. Verfahren nach Anspruch 7, wobei die gleichzeitige und mengenbasierte Anwendung von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf jeden Knoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, die Anwendung von Operationen auf jeden Knoten unter Verwendung eines anderen Prozessthreads aufweist, und wobei jeder Prozessthread parallel verarbeitet wird.Method according to Claim 7 wherein the concurrent and quantity-based application of one or more operations of the set of heterogeneous operations to each node having a memory identifier listed in the set of nodes and operations, applying operations to each node using a different process thread and each process thread is processed in parallel. Von einem Computer ausgeführtes Verfahren zur gleichzeitigen Verarbeitung von heterogenen Operationen an einer baumbasierten Datenstruktur, das aufweist: eine Wurzelknotenebene, die aus einem Wurzelknoten besteht; eine erste Knotenebene, die von der Wurzelknotenebene abstammt und mindestens zwei innere Knoten aufweist; eine zweite Knotenebene, die von der ersten Knotenebene abstammt und mindestens vier innere Knoten aufweist; und eine Blattknotenebene, die von der zweiten Knotenebene abstammt und aus einer Vielzahl von Blattknoten besteht; und wobei das Verfahren aufweist: Empfangen einer Eingabe an einem Speichersystem, in dem die baumbasierte Datenstruktur gespeichert ist, wobei die Eingabe einen Satz von heterogenen Operationen kennzeichnet, die auf einen oder mehrere Blattknoten der baumbasierten Datenstruktur angewendet werden sollen; und gleichzeitiges und mengenbasiertes Durchführen von einer oder mehreren Operationen des Satzes von heterogenen Operationen an einem oder mehreren der Blattknoten auf der Grundlage der Eingabe.A computer-executed method for concurrently processing heterogeneous operations on a tree-based data structure, comprising: a root node layer consisting of a root node; a first nodal plane originating at the root node level and having at least two inner nodes; a second nodal plane derived from the first nodal plane and having at least four inner nodes; and a leaf node plane derived from the second nodal plane and consisting of a plurality of leaf nodes; and the method comprising: Receiving an input at a storage system storing the tree-based data structure, the input identifying a set of heterogeneous operations to be applied to one or more leaf nodes of the tree-based data structure; and simultaneously and quantitatively performing one or more operations of the set of heterogeneous operations on one or more of the leaf nodes based on the input. Verfahren nach Anspruch 17, das eine Suchphase aufweist, wobei die Suchphase aufweist: Auswerten einer jeden Ebene der baumbasierten Datenstruktur in einer absteigenden Reihenfolge von der Wurzelknotenebene zur Blattknotenebene; und gleichzeitiges Feststellen der Blattknoten, auf die der Satz von heterogenen Operationen angewendet werden soll.Method according to Claim 17 comprising a search phase, the search phase comprising: evaluating each level of the tree-based data structure in a descending order from the root node level to the leaf node level; and simultaneously determining the leaf nodes to which the set of heterogeneous operations is to be applied. Verfahren nach Anspruch 18, wobei die Suchphase eine Ausgabe erzeugt, die aufweist: einen aus Knoten und Operationen bestehenden Satz, wobei der aus Knoten und Operationen bestehende Satz eine Liste mit Speicherkennungen aufweist, wobei jede Speicherkennung einen der Blattknoten kennzeichnet, auf den eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und wobei jede der Speicherkennungen mindestens einem aus Dateneintrag/Operation bestehenden Paar zugeordnet ist, das in der empfangenen Eingabe gekennzeichnet ist.Method according to Claim 18 wherein the search phase generates an output comprising: a set of nodes and operations, the set of nodes and operations having a list of memory identifiers, each memory identifier identifying one of the leaf nodes to which one or more operations of the set of heterogeneous operations to be applied; and wherein each of the memory identifiers is associated with at least one data entry / operation pair identified in the received input. Verfahren nach Anspruch 19, das eine Aktualisierungsphase aufweist, wobei die Aktualisierungsphase aufweist: Anwenden von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf jeden Blattknoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, wobei für jeden der Blattknoten, der eine Speicherkennung hat, die in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, die eine oder die mehreren Operationen des Satzes von heterogenen Operationen, die auf den Blattknoten angewendet werden, auf dem mindestens einen aus Dateneintrag/Operation bestehenden Paar beruhen, das zu der Speicherkennung für den Blattknoten gehört; und wobei der Satz von heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der Blattknoten angewendet wird, der eine Speicherkennung hat, welche in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist.Method according to Claim 19 comprising an update phase, the update phase comprising: applying one or more operations of the set of heterogeneous operations to each leaf node having a memory identifier listed in the set of nodes and operations, wherein for each of the leaf nodes, the has a memory identifier that is made up of nodes and Operations, the one or more operations of the set of heterogeneous operations applied to the leaf nodes are based on the at least one data entry / operation pair associated with the memory node for the leaf node; and wherein the set of heterogeneous operations is applied simultaneously and in a quantity-based manner to each of the leaf nodes having a memory identifier listed in the set of nodes and operations. Verfahren nach Anspruch 20, wobei die Aktualisierungsphase aufweist: Erzeugen eines neuen aus Knoten und Operationen bestehenden Satzes, der zumindest teilweise auf der Anwendung der einen oder der mehreren Operationen des Satzes von heterogenen Operationen auf die Blattknoten beruht, die eine Speicherkennung haben, welche in dem aus Knoten und Operationen bestehenden Satz aufgeführt ist, wobei der neue aus Knoten und Operationen bestehende Satz eine Liste mit Speicherkennungen aufweist und wobei jede Speicherkennung einen der inneren Knoten in der zweiten Knotenebene kennzeichnet, auf den eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; Anwenden von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf die inneren Knoten in der zweiten Knotenebene, die eine Speicherkennung haben, welche in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist; und wobei die eine oder die mehreren Operationen des Satzes von heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der inneren Knoten in der zweiten Knotenebene angewendet werden, der eine Speicherkennung hat, die in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist.Method according to Claim 20 wherein the update phase comprises: generating a new set of nodes and operations based at least in part on the application of the one or more operations of the set of heterogeneous operations to the leaf nodes having a memory identifier consisting of nodes and operations existing set, the new set of nodes and operations having a list of memory identifiers and wherein each memory identifier identifies one of the inner nodes in the second node level to which one or more operations of the set of heterogeneous operations are to be applied; Applying one or more operations of the set of heterogeneous operations to the inner nodes in the second node level having a memory identifier listed in the new set of nodes and operations; and wherein the one or more operations of the set of heterogeneous operations are applied concurrently and quantity-based to each of the inner nodes in the second node level having a memory identifier listed in the new set of nodes and operations. Verfahren nach Anspruch 21, wobei die Aktualisierungsphase aufweist: Erzeugen eines zweiten neuen aus Knoten und Operationen bestehenden Satzes, der zumindest teilweise auf der Anwendung der einen oder der mehreren Operationen des Satzes von heterogenen Operationen auf die inneren Knoten beruht, die eine Speicherkennung haben, welche in dem neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist, wobei der zweite neue aus Knoten und Operationen bestehende Satz eine Liste mit Speicherkennungen aufweist und wobei jede Speicherkennung einen der inneren Knoten in der ersten Knotenebene kennzeichnet, auf den eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; Anwenden von einer oder mehreren Operationen des Satzes von heterogenen Operationen auf die inneren Knoten in der ersten Knotenebene, die eine Speicherkennung haben, welche in dem zweiten neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist; und wobei die eine oder die mehreren Operationen des Satzes von heterogenen Operationen gleichzeitig und mengenbasiert auf jeden der inneren Knoten in der ersten Knotenebene angewendet werden, der eine Speicherkennung hat, die in dem zweiten neuen aus Knoten und Operationen bestehenden Satz aufgeführt ist.Method according to Claim 21 wherein the update phase comprises: generating a second new set of nodes and operations based at least in part on the application of the one or more operations of the set of heterogeneous operations to the inner nodes having a memory identifier which is unique in the new one Node and Operations, the second new set of nodes and operations having a list of memory IDs and each memory ID identifying one of the inner nodes in the first node level to which one or more operations of the set of heterogeneous operations are applied should; Applying one or more operations of the set of heterogeneous operations to the inner nodes in the first node level having a memory identifier listed in the second new set of nodes and operations; and wherein the one or more operations of the set of heterogeneous operations are applied simultaneously and quantity-based to each of the inner nodes in the first node level having a memory identifier listed in the second new set of nodes and operations. Von einem Computer ausgeführtes Verfahren zur Verarbeitung von Operationen an einer baumbasierten Datenstruktur, das aufweist: Empfangen einer Eingabe an einem Speichersystem, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist, wobei die Eingabe einen Satz von heterogenen Operationen kennzeichnet, die auf die baumbasierte Datenstruktur angewendet werden sollen; Feststellen von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; Feststellen von einer oder mehreren Gruppen des Satzes von heterogenen Operationen, wobei das Feststellen zumindest teilweise auf dem einen oder den mehreren Knoten beruht, auf den beziehungsweise die die heterogenen Operationen angewendet werden sollen.A computer-executed method of processing operations on a tree-based data structure, comprising: Receiving an input to a storage system managing a storage unit in which the tree-based data structure is stored, the input identifying a set of heterogeneous operations to be applied to the tree-based data structure; Determining one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied; Determining one or more sets of the set of heterogeneous operations, wherein the determining is based, at least in part, on the one or more nodes to which the heterogeneous operations are to be applied. Von einem Computer ausgeführtes Verfahren zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur, wobei das Verfahren aufweist: Empfangen einer Eingabe an einem Speichersystem, das eine Speichereinheit verwaltet, in der die baumbasierte Datenstruktur gespeichert ist, wobei die Eingabe einen Satz von heterogenen Operationen kennzeichnet, die auf die baumbasierte Datenstruktur angewendet werden sollen; Feststellen von einem oder mehreren Knoten der baumbasierten Datenstruktur, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; Feststellen von einer oder mehreren Gruppen des Satzes von heterogenen Operationen entsprechend dem einen oder den mehreren Knoten, auf den beziehungsweise die der Satz von heterogenen Operationen angewendet werden soll; und Anwenden, für jede der einen oder der mehreren Gruppen, des Satzes von heterogenen Operationen entsprechend einer vorher festgelegten Reihenfolge.A computer-executed method for concurrently processing operations on a tree-based data structure, the method comprising: Receiving an input to a storage system managing a storage unit in which the tree-based data structure is stored, the input identifying a set of heterogeneous operations to be applied to the tree-based data structure; Determining one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied; Determining one or more sets of the set of heterogeneous operations corresponding to the one or more nodes to which the set of heterogeneous operations is to be applied; and Applying, for each of the one or more groups, the set of heterogeneous operations according to a predetermined order. Computerprogramm, das Computerprogrammcode aufweist, der auf einem von einem Computer lesbaren Datenträger gespeichert wird, um, wenn es in ein Computersystem geladen und darauf ausgeführt wird, das Computersystem zu veranlassen, alle Schritte eines Verfahrens nach einem der Ansprüche 1 bis 24 durchzuführen.A computer program comprising computer program code stored on a computer readable medium when loaded on a computer system and thereon is executed to cause the computer system, all the steps of a method according to one of Claims 1 to 24 perform. Speichersystem zur gleichzeitigen Verarbeitung von Operationen an einer baumbasierten Datenstruktur, wobei das Speichersystem einen Speichersystem-Manager und Logik aufweist, die in dem Speichersystem-Manager integriert und/oder von diesem ausführbar ist, wobei die Logik so konfiguriert ist, dass sie das Speichersystem veranlasst: eine Eingabe zu empfangen, die einen Satz von heterogenen Operationen kennzeichnet, die auf die baumbasierte Datenstruktur angewendet werden sollen; einen oder mehrere Knoten der baumbasierten Datenstruktur festzustellen, auf den beziehungsweise die eine oder mehrere Operationen des Satzes von heterogenen Operationen angewendet werden sollen; und eine oder mehrere Operationen des Satzes von heterogenen Operationen gleichzeitig und mengenbasiert durchzuführen.A storage system for concurrently processing operations on a tree-based data structure, the storage system having a storage system manager and logic integrated with and / or executable by the storage system manager, the logic being configured to cause the storage system: receive an input identifying a set of heterogeneous operations to be applied to the tree-based data structure; determine one or more nodes of the tree-based data structure to which one or more operations of the set of heterogeneous operations are to be applied; and perform one or more operations of the set of heterogeneous operations simultaneously and quantity based.
DE112016003598.5T 2015-10-20 2016-08-16 Simultaneous mass processing of tree-based data structures Pending DE112016003598T5 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US14/918,168 US10102231B2 (en) 2015-10-20 2015-10-20 Ordering heterogeneous operations in bulk processing of tree-based data structures
US14/918,168 2015-10-20
US14/918,130 US10133763B2 (en) 2015-10-20 2015-10-20 Isolation of concurrent operations on tree-based data structures
US14/918,069 2015-10-20
US14/918,130 2015-10-20
US14/918,069 US10223409B2 (en) 2015-10-20 2015-10-20 Concurrent bulk processing of tree-based data structures
PCT/IB2016/054899 WO2017068438A1 (en) 2015-10-20 2016-08-16 Concurrent bulk processing of tree-based data structures

Publications (1)

Publication Number Publication Date
DE112016003598T5 true DE112016003598T5 (en) 2018-05-30

Family

ID=58556763

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016003598.5T Pending DE112016003598T5 (en) 2015-10-20 2016-08-16 Simultaneous mass processing of tree-based data structures

Country Status (5)

Country Link
JP (1) JP6714692B2 (en)
CN (1) CN108140049B (en)
DE (1) DE112016003598T5 (en)
GB (1) GB2559691B (en)
WO (1) WO2017068438A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189343B (en) * 2018-09-14 2021-08-10 郑州云海信息技术有限公司 Metadata disk-dropping method, device, equipment and computer-readable storage medium
CN109697663A (en) * 2018-11-07 2019-04-30 中国银行股份有限公司 Method and device, storage medium and the electronic equipment of batch transaction
EP3693858A3 (en) * 2019-02-05 2020-10-28 Seagate Technology LLC Data distribution within a failure domain tree
US11157482B2 (en) 2019-02-05 2021-10-26 Seagate Technology Llc Data distribution within a failure domain tree
CN110620902A (en) * 2019-07-05 2019-12-27 中电科新型智慧城市研究院有限公司 Local visualization and management method for mobile law enforcement recorder

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897638A (en) * 1997-06-16 1999-04-27 Ab Initio Software Corporation Parallel virtual file system
US7630998B2 (en) * 2005-06-10 2009-12-08 Microsoft Corporation Performing a deletion of a node in a tree data storage structure
US7761434B2 (en) * 2007-11-19 2010-07-20 Red Hat, Inc. Multiversion concurrency control in in-memory tree-based data structures
US7984450B2 (en) * 2007-11-28 2011-07-19 International Business Machines Corporation Dispatching packets on a global combining network of a parallel computer
US8370394B2 (en) * 2009-07-17 2013-02-05 International Business Machines Corporation Parallel processing of data organized in a tree structure
CN102651007A (en) * 2011-02-28 2012-08-29 国际商业机器公司 Method and device for managing database indexes
EP2751667A4 (en) * 2011-08-29 2015-07-15 Intel Corp Parallel operation on b+ trees
US8706847B2 (en) * 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
CN103365852A (en) * 2012-03-28 2013-10-23 天津书生软件技术有限公司 Concurrency control method and system for document library systems
CN103324466B (en) * 2013-05-24 2017-05-03 浪潮电子信息产业股份有限公司 Data dependency serialization IO parallel processing method

Also Published As

Publication number Publication date
CN108140049A (en) 2018-06-08
JP2018537752A (en) 2018-12-20
CN108140049B (en) 2022-04-22
GB2559691A (en) 2018-08-15
WO2017068438A1 (en) 2017-04-27
JP6714692B2 (en) 2020-06-24
GB201806586D0 (en) 2018-06-06
GB2559691B (en) 2019-02-06

Similar Documents

Publication Publication Date Title
DE102016103359B4 (en) SINGLETON CACHE ADMINISTRATION PROTOCOL FOR HIERARCHICAL VIRTUALIZED STORAGE SYSTEMS
DE112016003598T5 (en) Simultaneous mass processing of tree-based data structures
DE102016105526A1 (en) Fast multi-layer indexing with dynamic update support
DE112020000749T5 (en) Index creation for evolving large data sets in hybrid transaction and analysis processing systems with multiple masters
DE102016119298B4 (en) POINT-IN-TIME COPYING WITH CHAIN CLONING
DE112017002941T5 (en) Workload-optimized data deduplication using phantom fingerprints
DE112020003929B4 (en) VIRTUAL STORAGE METADATA MANAGEMENT
DE102010044531B4 (en) Autonomous storage architecture
DE112018004222T5 (en) Database division
DE112011101317T5 (en) Optimize a file system for different types of applications in a data processing cluster using dynamic block size granularity
DE112013004187T5 (en) Technology for network data transmission through a computer system using at least two communication protocols
DE112019000421B4 (en) WORKLOAD MANAGEMENT WITH DATA ACCESS DISCOVERY IN A COMPUTING CLUSTER
DE112018002955T5 (en) COGNITIVE FILE AND OBJECT MANAGEMENT FOR DISTRIBUTED STORAGE ENVIRONMENTS
DE112019005392T5 (en) INCREASING DATA PERFORMANCE BY TRANSFERRING DATA BETWEEN STORAGE LEVELS USING WORKLOAD CHARACTERISTICS
DE112021001408T5 (en) USING COHERENTLY LINKED INTERFACES IN A NETWORK STACK FRAMEWORK
DE202013012478U1 (en) COMPRESSION OF THE DATA CARD
DE102021127254A1 (en) Content-aware selecting nodes to create containers
DE112018004462T5 (en) QUERY PROCESSING
DE112020006010T5 (en) TRAINING A NEURAL NETWORK BY USING A DATA FLOW GRAPH AND DYNAMIC MANAGEMENT OF MEMORY
DE112018000900T5 (en) Processing a command to free up space in a computer system
DE112018004138T5 (en) ASYNCHRONOUS UPDATE OF METADATA TRACKS IN RESPONSE TO A MECHANISM GENERATED BY AN I / O OPERATION THROUGH A BUS INTERFACE
DE112016000776T5 (en) Efficiently performing insert and point query operations in a column store
DE112020000498T5 (en) MIGRATING DATA FROM A LARGE EXTENT POOL TO A SMALL EXTENT POOL
DE112019000303B4 (en) DATA STORAGE SYSTEM THAT CARRIES OUT DATA MOVEMENT BASED ON TIME PROXIMITY OF ACCESSES
DE112018004415B4 (en) OPTIMIZATION OF CLOUD RESOURCES IN POLICY-BASED OPERATIONS IN TIERED STORAGE

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0016000000

Ipc: G06F0016901000

R016 Response to examination communication