DE112016003598T5 - Simultaneous mass processing of tree-based data structures - Google Patents
Simultaneous mass processing of tree-based data structures Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, 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 von1 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.
-
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 of1 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.
Im Betrieb dient der Gateway-Rechner
Überdies ist mindestens ein Datenserver
Ein Peripheriegerät
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
Die in
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
Der Speichersystem-Manager
In weiteren Ausführungsformen kann das Speichersystem
Gemäß manchen Ausführungsformen kann das Speichersystem (wie zum Beispiel das Speichersystem
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
Eine ähnliche baumbasierte Datenstruktur
Weiterhin Bezug nehmend auf die
In manchen Ausführungsformen brauchen gleichgeordnete Knoten jedoch nicht unbedingt von demselben Vorfahrenknoten abzustammen. Wie zum Beispiel in
Ebenso und wie anhand von
Die nächste Knotenebene, die in manchen Ausführungsformen als zweite Knotenebene
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
Im Grunde findet die gemäß den vorliegenden Offenbarungen durchgeführte Verarbeitung in zwei Hauptphasen statt. Die Suchphase beginnt auf der Wurzelebene
Umgekehrt beginnt die Aktualisierungsphase auf der Blattknotenebene
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
Jeder der Schritte des Verfahrens
Das Verfahren
Ungeachtet der Einzelheiten der baumbasierten Datenstruktur, und wie in
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
In besonders vorteilhaften Ansätzen kann die in der Operation
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
In verschiedenen Ansätzen kann die Operation
Das Verfahren
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
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
In besonders bevorzugten Ausführungsformen sind die Knoten
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
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
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
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 (
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
Jeder der Schritte des Verfahrens
Wie in
Das Verfahren
Des Weiteren beinhaltet das Verfahren
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
Das Verfahren
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
In einer beispielhaften Ausführungsform kann das Verfahren
In solch einem beispielhaften Szenario kann das Verfahren
Natürlich kann das Verfahren
In einer Ausführungsform kann das Verfahren
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
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
Das Verfahren
Des Weiteren beinhaltet das Verfahren
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
Wie der Fachmann verstehen wird, nachdem er die vorliegenden Beschreibungen gelesen hat, kann das Verfahren
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
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
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)
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)
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)
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 |
-
2016
- 2016-08-16 DE DE112016003598.5T patent/DE112016003598T5/en active Pending
- 2016-08-16 JP JP2018515311A patent/JP6714692B2/en active Active
- 2016-08-16 GB GB1806586.2A patent/GB2559691B/en active Active
- 2016-08-16 WO PCT/IB2016/054899 patent/WO2017068438A1/en active Application Filing
- 2016-08-16 CN CN201680059766.4A patent/CN108140049B/en active Active
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 |