DE60319003T2 - Verfahren zur Neuverteilung von Objekten an Recheneinheiten - Google Patents

Verfahren zur Neuverteilung von Objekten an Recheneinheiten Download PDF

Info

Publication number
DE60319003T2
DE60319003T2 DE60319003T DE60319003T DE60319003T2 DE 60319003 T2 DE60319003 T2 DE 60319003T2 DE 60319003 T DE60319003 T DE 60319003T DE 60319003 T DE60319003 T DE 60319003T DE 60319003 T2 DE60319003 T2 DE 60319003T2
Authority
DE
Germany
Prior art keywords
processing units
data objects
data
data object
processing
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.)
Expired - Lifetime
Application number
DE60319003T
Other languages
English (en)
Other versions
DE60319003D1 (de
Inventor
Volker Sauermann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SAP SE filed Critical SAP SE
Publication of DE60319003D1 publication Critical patent/DE60319003D1/de
Application granted granted Critical
Publication of DE60319003T2 publication Critical patent/DE60319003T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Description

  • Gebiet der Erfindung.
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der Datenverarbeitung, und spezifischer, ohne Einschränkung, auf den Ausgleich von Datenobjektgrößen im Multi-Computing Umfeld.
  • Hintergrund und Stand der Technik
  • Verschiedene Multi-Computing Architekturen sind nach dem Stand der Technik bekannt, bei denen eine Vielzahl von Verarbeitungseinheiten zu einem Cluster zusammengeschlossen werden. Solche Architekturen werden bei der Parallelverarbeitung und auf dem aufstrebenden Gebiet des Blade-Computing verwendet.
  • Blade-Computing stützt sich auf Blade-Server, die modulare Einplatinen-Computer sind. Eine Übersicht über Blade Computing wird gegeben in "Architectures and Infrastructure for Blade Computing", September 2002, Sun Microsystems und "THE NEXT WAVE: BLADE SERVER COMPUTING", Sun Microsystems (www.sun.com/servers/entry/blade).
  • Ein Inhalts-Lastausgleich-Blade ist im Handel verfügbar von Sun Microsystems ("Sun Fire TM B10n"). Dieser Blade liefert Management-Funktionalitäten für Verkehr und Inhalt. Inhalts-Belastungsausgleich wird erreicht basierend auf URLs, CGI Scripts und Cookies; Server-Belastungsausgleich wird erreicht basierend auf Server-Belastung, Antwortzeiten und gewichteten ringverteilten Algorithmen.
  • Die US Patentanmeldung Nr. 20030105903 zeigt einen Web Edge Server, der aus einer Reihe von Blade-Servern besteht. Ein Schalter und ein Informationszuordnungsmodul werden zum Zwecke des Ausgleichs bereitgestellt. Das Informationszuordnungsmodul erhält eine Informationsmitteilung, führt die Verarbeitung der Mitteilung durch, um seinen Bestimmungsort zu bestimmen, und leitet die Mitteilung über ein internes Kommunikationsnetzwerk an den festgestellten Bestimmungsort weiter.
  • Aggarwal, G.; Motwani, R.; Zhu, A.: "The load rebalancing Problem" betrachtet das Problem des Ausgleichs der Prozessorbelastung. Unter der Annahme einer möglicherweise sub-optimalen Zuordnung von Aufgaben zu Prozessoren ist der Zweck des Belastungsausgleichs die Neuzuordnung von Aufgaben zu verschiedenen Prozessoren, um die Bearbeitungszeit zu minimieren, wobei so wenig Aufgaben wie möglich bewegt werden.
  • US 2002/004 6316 A1 zeigt eine Methode der Optimierung von nicht-linearen Randbedingungen in einer Speichersystemkonfiguration. Das Speicherzuordnungsproblem ist als ein Programmierproblem mit nicht-linearen Randbedingungen unter Verwendung verschiedener Heuristikmethoden zur Optimierung formalisiert.
  • Fonlupt, C. et al.: "Data-parallel load balancing strategies" betrachtet die parallele Datenimplementierung von Stapelalgorithmen unter Verwendung eines parallelen Rechenmodells.
  • Lu, E. J.-L., Okunbur, D. I.: "An efficient load balancing technique for parallel FMA in message passing environments" betrachtet die N-Körper-Simulation, die zum Studieren der Dynamik von galaktischen Systemen, Flüssigkeiten und Bio-Molkülen verwendet wird. Um das Ausgleichsproblem für die Computerbelastung zu erleichtern, wird eine Teilungstechnik mit der Bezeichnung gewichtete Unter-Bäume vorgeschlagen, um den Ausgleich für die Prozessorbelastung im Umfeld der Weiterleitung von Mitteilungen zu verbessern. Eine Standardabweichung wird benutzt, um den Belastungsausgleich zwischen den Prozessoren zu messen. Ein niedriger Wert für die Standardabweichung bedeutet eine gute Qualität des Belastungsausgleichs.
  • Kit-Sang, T. et al.: "Optimal File Placement in VOD System using Genetic Algorithm" betrachtet die Platzierung von Multimediadateien auf Video-Servern.
  • Es benutzt eine Kombination von genetischen Algorithmen und modifiziertem Bin-Packing.
  • Übersicht über die Erfindung
  • Die vorliegende Erfindung stellt ein computer-implementiertes Verfahren für die Zuordnung von Datenobjekten zu Verarbeitungseinheiten, ein Computerprogrammprodukt und ein Datenverarbeitungssystem wie in den unabhängigen Ansprüchen beansprucht zur Verfügung. Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen angegeben.
  • Im Besonderen bietet die vorliegende Erfindung bietet eine Methode für die Zuordnung von Datenobjekten zu Verarbeitungseinheiten eines Clusters von Verarbeitungseinheiten, wobei jede Verabeitungseinheit eine bestimmte Speicherkapazität besitzt. Zum Beispiel sind die Verarbeitungseinheiten einander ähnlich oder im Wesentlichen identisch und haben identische Speicherkapazitäten wie im Fall von Blade-Computing.
  • Für die Durchführung der Zuordnung von Datenobjekten zu Verarbeitungseinheiten wird eine vorläufige Zuordnung der Datenobjekte zu den Verarbeitungseinheiten vorgesehen. Das kann eine beliebige willkürliche Zuordnung sein, wie z. B. eine echte aktive Zuordnung von Datenobjekten zu einem vorhandenen Datenverarbeitungssystem, oder eine vorherberechnete Zuordnung mit einer minimalen Anzahl von Verarbeitungseinheiten. Darüber hinaus wird eine geordnete Sequenz von Datenobjekten geliefert. Auf dieser Basis wird eine Neuzuordnung der Datenobjekte durchgeführt, um in einer oder mehreren Iterationen die Gleichmäßigkeit der initialen Verteilung zu verbessern.
  • Die Verarbeitung der Datenobjekte wird gemäß der Reihenfolge der Sequenz durchgeführt. In jeder Iteration wird ein Satz von Verarbeitungseinheiten bestimmt, der aus Verarbeitungseinheiten besteht, die eine Gesamtgröße von zugeordneten Datenobjekten oberhalb eines Grenzwertes aufweisen. Die übrigen Verarbeitungseinheiten bilden eine zweiten Satz von Verarbeitungseinheiten, d. h. Verarbeitungseinheiten mit einer Gesamtgröße and zugeordneten Datenobjekten unterhalb des Grenzwertes.
  • Als Nächstes wird bestimmt, ob das betrachtete Datenobjekt der geordneten Sequenz auf eine Verarbeitungseinheit des zweiten Satzes passt. Mit anderen Worten, eine Bestimmung wird durchgeführt, ob eine Verarbeitungseinheit des zweiten Satzes genügend Speicherkapazität besitzt, um das betrachtete Datenobjekt aufnehmen zu können. Wenn eine solche Verarbeitungseinheit des zweiten Satzes identifiziert werden kann, wird das betrachtete Datenobjekt vorläufig dieser Verarbeitungseinheit des zweiten Satzes neu zugeordnet, und ein statistisches Maß wird berechnet für die resultierende vorläufige Zuordnung. Für den Fall, dass das statistische Maß eine verbesserte Gleichmäßigkeit der vorläufigen Zuordnung im Vergleich mit der Verteilung der vorhergehenden Iteration anzeigt, wird das betrachtete Datenobjekt der Verarbeitungseinheit des zweiten Satzes neu zugeordnet.
  • Die Verarbeitung der Datenobjekte der geordneten Sequenz hört auf, wenn entweder der erste oder der zweite Satz leer ist oder das letzte Element der Sequenz verarbeitet ist. Auf diese Weise kann die Gleichmäßigkeit der initialen Verteilung der Datenobjekte zu der Verarbeitungseinheit erheblich verbessert werden. Das hat den Vorteil, dass die Belastung der individuellen Verarbeitungseinheiten bezüglich ihrer Speicherkapazität etwa gleich verteilt werden kann.
  • Nach einer bevorzugten Ausführungsform der Erfindung wird die geordnete Sequenz der Datenobjekte dargestellt, indem die Datenobjekte nach Größe sortiert werden. Diese geordnete Sequenz kann sowohl für die iterative Neuzuordnung der Datenobjekte zur Verbesserung der Gleichmäßigkeit als auch für die Durchführung der initialen Verteilung benutzt werden.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung wird die initiale Verteilung von Datenobjekten zu Verarbeitungseinheiten mit einem Verfahren durchgeführt, das mit dem größten Datenobjekt in der Sequenz beginnt und so lange fortgeführt wird, bis die verbleibende Speicherkapazität der betrachteten Verarbeitungseinheit unterhalb der Größe des kleinsten verbleibenden Datenobjektes der Sequenz liegt. Wenn diese Bedingung erfüllt ist, wird das Verfahren erneut für die nächste Verarbeitungseinheit durchgeführt, wobei Datenobjekte, die zuvor zugeordnet worden sind, aus der Sequenz gelöscht werden. Auf diese Weise kann eine minimale Anzahl von Verarbeitungseinheiten für die Bearbeitung eines gegebenen Satzes von Datenobjekten bestimmt werden.
  • Nach einer bevorzugten Ausführungsform der Erfindung wird die verbleibende Speicherkapazität einer Verarbeitungseinheit durch die Differenz der Speicherkapazität der Einheit und der Gesamtgröße der Datenobjekte, die der Verarbeitungseinheit zugeordnet worden sind, bestimmt. Auf der Basis dieser Definition der verbleibenden Speicherkapazität wird die minimale Anzahl von Verarbeitungseinheiten bestimmt.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung wird das theoretische Speicherkapazitäts-Minimum pro Verarbeitungseinheit für eine perfekt gleich verteilte Speicherbelastung als Grenzwert für die Unterscheidung zwischen Verarbeitungseinheiten benutzt, die in den ersten und in den zweiten Satz gehören. Dieser Grenzwert wird erhalten, indem die Summe der Größen der Datenobjekte berechnet und durch die Gesamtzahl der Verarbeitungseinheiten dividiert wird.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung basiert das statistische Maß, das für die Bewertung der Qualität der Verteilung der Datenobjekte auf Verarbeitungseinheiten benutzt wird, auf der Gesamtgröße der den Verarbeitungseinheiten zugeordneten Datenobjekte. Mit anderen Worten, die Gesamtgröße der Datenobjekte, die jeder Verarbeitungseinheit zugeordnet sind, wird berechnet. Das liefert eine Gesamtgröße pro Verarbeitungseinheit. Vorzugsweise ist das statistische Maß die Standardabweichung oder Varianz der gesamten Datenobjektgrößen.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung kann es mehr als eine Verarbeitungseinheit des zweiten Satzes geben, die eine ausreichende verbleibende Speicherkapazität für die Aufnahme des betrachteten Datenobjekts besitzt. In diesem Fall wird das betrachtete Datenobjekt vorläufig einer der Verarbeitungseinheiten des zweiten Satzes zugeordnet, die die entsprechendee Anzahl von vorläufigen Zuordnungen bereitstellt. Jede dieser vorläufigen Zuordnungen wird mithilfe des statistischen Maßes untersucht. Auf dieser Basis wird die vorläufige Verteilung ausgewählt, die entsprechend Anzeige durch das statistische Maß die höchste Qualität aufweist, und das Datenobjekt wird entsprechend neu zugewiesen.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung ist jede der Verarbeitungseinheiten ein Blade oder ein Blade-Server. Einer der Blades kann ein Programm besitzen, das die Prinzipien der vorliegenden Erfindung implementiert, um Datenobjekt-Größenausgleich durchzuführen. Auf diese Weise kann die Anzahl der Tauschvorgänge zwischen den Blades minimiert werden.
  • Nach einer weiteren bevorzugten Ausführungsform der Erfindung werden die Prinzipien der Erfindung in einem Anwendungsprogramm implementiert, das auf einem Personal-Computer läuft. Dem Anwendungsprogramm wird eine Liste mit Datenobjekten und den geschätzten Größen der Datenobjekte geliefert, die durch einen Cluster von Verarbeitungseinheiten gehandhabt werden müssen. Auf der Basis der Datenobjektgrößen kann die Mindestanzahl von Verarbeitungseinheiten bestimmt werden, die für die Verarbeitung notwendig ist. Darüber hinaus kann die initiale Verteilung der Datenobjekte zu den Verarbeitungseinheiten durch iterative Neuzuordnung von Datenobjekten zu Verarbeitungseinheiten verbessert werden.
  • Es ist anzumerken, dass die vorliegende Erfindung nicht auf eine bestimmte Art von Datenobjekten beschränkt ist. Zum Beispiel werden Datenobjekte wie z. B. Tabellen, Arrays, Listen und Bäume, Verarbeitungseinheiten wie z. B. Blades entsprechend der vorliegenden Erfindung zugeordnet. Zum Beispiel führt jede der Verarbeitungseinheiten eine Datenverarbeitungsaufgabe durch, zu der ihre entsprechenden Datenobjekte zugeordnet sind.
  • Kurze Beschreibung der Zeichnungen
  • Nachfolgend werden bevorzugte Ausführungsformen der Erfindung in größerem Detail beschrieben, indem Bezug auf die Zeichnungen genommen wird, die Folgendes zeigen:
  • 1 zeigt ein Flussdiagramm einer bevorzugten Ausführungsform einer Methode der Erfindung,
  • 2 ist ein schematisches Blockdiagram eines modularen Computer-Systems, das einen Cluster von Blades besitzt,
  • 3 veranschaulicht ein Flussdiagramm für die Zuordnung von Datenobjekten zu Blades und für die Bestimmung der Mindestanzahl von Blades,
  • 4 ist ein Beispiel für Tabellen, die Blades zugeordnet werden müssen,
  • 5 zeigt das Resultat eines Sortiervorgangs,
  • 6 zeigt den ersten Schritt für die Zuordnung einer Tabelle zu dem ersten der Blades,
  • 7 zeigt einen zweiten Schritt für die Zuordnung einer Tabelle zu dem ersten Blade,
  • 8 zeigt die erste Zuordnung einer Tabelle zu einem zweiten Blade,
  • 9 zeigt eine zweite Zuordnung einer Tabelle zu einem zweiten Blade,
  • 10 zeigt die Zuordnung von 3 weiteren Tabellen zu dem zweiten Blade,
  • 11 zeigt die resultierende Zuordnung von Tabellen zu Blades als Resultat des Zuordnungsvorgangs,
  • 12 veranschaulicht den Unterschied zwischen abgebenden und annehmenden Blades in der initialen Verteilung wie in 11 gezeigt,
  • 13 veranschaulicht die vorläufige Neuzuordnung der Tabelle 16 zu Blade 8,
  • 14 veranschaulicht die vorläufige Neuzuordnung der Tabelle 10 von Blade 7 zu Blade 8,
  • 15 veranschaulicht die vorläufige Neuzuordnung der Tabelle 17 von Blade 5 zu Blade 7,
  • 16 veranschaulicht eine Situation, bei der auf einem empfangenden Blade nicht genügend verbleibende Speicherkapazität vorhanden ist,
  • 17 veranschaulicht eine vorläufige Neuzuordnung der Tabelle 18 von Blade 7 auf Blade 5,
  • 18 veranschaulicht eine vorläufige Neuzuordnung der Tabelle 8 von Blade 8 auf Blade 7,
  • 19 veranschaulicht eine vorläufige Neuzuordnung der Tabelle 19 von Blade 4 auf Blade 8,
  • 20 veranschaulicht eine vorläufige Neuzuordnung der Tabelle 7 von Blade 3 auf Blade 4,
  • 21 veranschaulicht eine vorläufige Neuzuordnung der Tabelle 12 auf empfangende Blades 3 und 5,
  • 22 veranschaulicht mehrfache vorläufige Neuzuordnungen der Tabelle 6 zu Blades 1, 5, 7 und 8,
  • 23 veranschaulicht mehrfache vorläufige Neuzuordnungen der Tabelle 2 zu Blades 5, 7 und 8,
  • 24 zeigt die endgültige Neuzuordnung der Tabelle zu Blades,
  • 25 veranschaulicht ein Flussdiagramm einer bevorzugten Ausführung einer Methode der Erfindung,
  • 26 veranschaulicht ein Computersystem, das die Zuordnung von Datenobjekten zu Blades durchführt.
  • Detaillierte Beschreibung
  • 1 zeigt eine Methode für die Verbesserung der Gleichmäßigkeit einer initialen Verteilung von Datenobjekten zu Verarbeitungseinheiten. In Schritt 50 wird eine geordnete Sequenz von Datenobjekten bereitgestellt. In dem hier betrachteten Beispiel erfordert das erste Element der geordneten Sequenz den größten Speicherplatz. Die geordnete Sequenz ist nach fallender Größe des Datenobjekts sortiert.
  • In Schritt 52 wird eine initiale Verteilung von Datenobjekten zu Verarbeitungseinheiten bereitgestellt.
  • Im folgenden Schritt wird eine Schleife 54 für alle Datenobjekte der Sequenz in der Reihenfolge der Sequenz durchgeführt. In Schritt 56 der Schleife 54 wird eine Bestimmung von abgebenden und annehmenden Verarbeitungseinheiten auf der Basis der augenblicklichen Verteilung von Datenobjekten an Verarbeitungseinheiten gemacht. In der ersten Iteration, wenn das erste Datenobjekt in der geordneten Sequenz betrachtet wird, ist die augenblickliche Verteilung die in Schritt 52 gelieferte initiale Verteilung.
  • Eine abgebende Verarbeitungseinheit ist eine Verarbeitungseinheit die zu dem ersten Satz von Verarbeitungseinheiten gehört, d. h. die eine Gesamtgröße von zugeordneten Datenobjekten hat, die oberhalb eines Grenzwertes liegt. Diejenigen Verarbeitungseinheiten, die nicht abgebende Verarbeitungseinheiten sind, sind per Definition empfangende Verarbeitungseinheiten, d. h. Verarbeitungseinheiten, die zu dem zweiten Satz gehören, die Gesamtgrößen von Datenobjekten haben, die unterhalb des Grenzwertes liegen. Der Grenzwert, der benutzt wird, um zwischen abgebenden und empfangenden Verarbeitungseinheiten zu unterscheiden, wird erhalten durch Berechnung der Summe der Größe aller Datenobjekte, die den Verarbeitungseinheiten zugeordnet werden sollen, geteilt durch die Anzahl der Verarbeitungseinheiten.
  • In Schritt 58 der Schleife 54 wird ein Datenobjekt einer abgebenden Verarbeitungseinheit vorläufig einer empfangenden Verarbeitungseinheit zugeordnet, die eine für das betrachtete Datenobjekt ausreichende Speicherkapazität besitzt. In Schritt 60 wird das statistische Maß für die vorläufige Verteilung von Datenobjekts auf Verarbeitungseinheiten berechnet. Das statistische Maß ist so definiert, dass es einen Grad der Gleichmäßigkeit der Verteilung angibt.
  • In Schritt 62 wird bestimmt, ob die vorläufige Verteilung im Vergleich zur augenblicklichen Verteilung, d. h. die initiale Verteilung für die erste Iteration von Schleife 54, einen höheren Grad an Gleichmäßigkeit besitzt. Wenn das der Fall ist, wird die vorläufige Neuzuordnung bestätigt und das Datenobjekt wird in Schritt 64 neu zu der empfangenden Verarbeitungseinheit zugeordnet, was die neue augenblickliche Verteilung darstellt. Die neue augenblickliche Verteilung stellt die Basis für die nächste Iteration von Schleife 54 bezüglich des nächsten Datenobjekts in der geordneten Sequenz dar.
  • Wenn die Gleichmäßigkeit der vorläufigen Verteilung im Vergleich zur augenblickliche Verteilung nicht verbessert ist, wird die augenblickliche Verteilung für den Zweck der fortlaufenden Iteration beibehalten.
  • Wenn alle Datenobjekte der geordneten Sequenz in Schleife 54 verarbeitet worden sind, oder für den Fall, dass es keine abgebende oder empfangende Verarbeitungseinheiten gibt, hält Schleife 54 an.
  • Als ein Ergebnis ist der Output von Schritt 66, dass die endgültige Verteilung von Datenobjekten zu Verarbeitungseinheiten eine verbesserte Gleichmäßigkeit im Vergleich zur initialen Verteilung besitzt.
  • 2 veranschaulicht eine Anwendung der Methode von 1 auf Blade-Computing. Cluster 100 hat Blades B1, B2, B3, ..., BN. Jeder dieser Blades hat Prozessor 102 und Speicher 104. In dem hier betrachteten Beispiel haben alle Speicher 104 die gleiche Speicherkapazität. Die Blades sind durch ein Netzwerk 106 miteinander verbunden, wie z. B. ein Bussystem. Die Anzahl N von Blades des Clusters 100 muss so gewählt werden, dass eine bestimmte Anzahl von M Datenobjekten verschiedener Größe gehandhabt werden können.
  • Zum Beispiel implementiert Cluster 100 eine so genannte Suchmaschine. In diesem Fall laufen identische Suchprozesse auf jedem der Blades. Die Zuordnung von Datenobjekten wie Indextabellen zu Blades kann in einer Verteilungseinheit (nicht in der Zeichnung gezeigt) von Cluster 100 gespeichert werden. Auf diese Weise werden Datenobjekte und Datenverarbeitungsaufgaben, die auf den Blades laufen, zu Blades zugeordnet.
  • 3 zeigt die entsprechende Prozedur für die Zuordnung der Datenobjekte zu Blades, wodurch der Minimalwert für N bestimmt wird.
  • In Schritt 200 wird ein Sortiervorgang durchgeführt, um M Datenobjekte nach Größe zu sortieren. Die entsprechende Datenobjektsequenz wird in Schritt 202 bereitgestellt. In Schritt 204 wird der Index i für die Blades auf eins initialisiert.
  • In Schritt 206 beginnt das Verarbeiten der Datenobjektsequenz in der Reihenfolge, wobei mit dem größten Datenobjekt der Sequenz begonnen wird. Das erste Datenobjekt der Sequenz, welches per Definition das größte Datenobjekt der Sequenz ist, wird in Schritt 206 Blade B1 zugeordnet. In Schritt 208 wird das erste Datenobjekt, welches zu Blade B1 zugeordnet wurde, aus der Sequenz gelöscht.
  • In Schritt 210 wird die Größe der Datenobjekte, die bereits zu Blade B1 zugeordnet worden sind, aufsummiert, und ein Abstand G zwischen der gesamten Datenobjektgröße und dem Grenzwert berechnet. Wenn die Zuordnungsprozedur von 3 das erste Mal durchgeführt wird, ist der Grenzwert gleich der Speicherkapazität eines der Blades.
  • In Schritt 212 wird bestimmt, ob ein Datenobjekt in der Sequenz verbleibt, das in diesen Abstand G passt. Wenn das der Fall ist, wird in Schritt 214 das größte dieser Datenobjekte dem Blade B1 zugeordnet und aus der Sequenz gelöscht, bevor die Steuerung zu Schritt 210 zurückgeht.
  • Wenn es kein Datenobjekt gibt, das in den Abstand G passt, wird Schritt 218 durchgeführt. In Schritt 218 wird bestimmt, ob alle Datenobjekte bereits zu Blades zugeordnet sind. Mit anderen Worten, in Schritt 218 wird überprüft, ob die Sequenz leer ist. Wenn das nicht der Fall ist, wird in Schritt 220 der Index i erhöht und die Steuerung geht zurück auf Schritt 206, um die verbleibenden Datenobjekte der Sequenz zu dem nächsten Blade B2 zuzuordnen.
  • Wenn das Gegenteil der Fall ist, ist Index i gleich der minimalen Anzahl N von Blades, die notwendig sind, um die M Datenobjekte zu handhaben. Diese Anzahl wird in Schritt 222 ausgegeben. Die minimale Anzahl N von Blades kann die Basis sein für eine Investitionsentscheidung, die entsprechende Anzahl von Blades zu kaufen. Zusätzlich wird die Zuordnung von Datenobjekten zu Blades in Schritt 224 ausgegeben, um die Qualität des Ausgleichs der Datenobjektgröße darzustellen.
  • 4 zeigt ein Beispiel. In dem hier betrachteten Beispiel sind die Datenobjekte eine Anzahl von zwanzig verschiedenen Tabellen, die eine Größe zwischen 50 MB und 3566 MB besitzen, wie in 4 gezeigt. Zum Beispiel hat Tabelle 1 eine Größe von 3250 MB, Tabelle 2 hat 150 MB, Tabelle 3 hat 750 MB, usw. Die Tabellengrößen können entweder die aktuellen Tabellengrößen oder die mittleren Tabellengrößen sein, die dadurch erhalten wurden, dass ein Datenverarbeitungssystem im Einsatz beobachtet wird. Alternativ sind die Tabellengrößen Schätzungen zum Zwecke der Planung von Cluster 100.
  • 5 zeigt das Resultat des Sortiervorgangs, der an den Tabellen 1 bis 20 der 4 durchgeführt wurde (vgl. Schritt 202 von 3).
  • 6 veranschaulicht die Zuordnung des ersten Datenobjekts der Sequenz, d. h. der größten Tabelle 20 zu Blade B1. In dem hier betrachteten Beispiel hat jeder Blade eine Speicherkapazität von 4 GB = 4096 MB Hauptspeicher. Tabelle 20 hat eine Größe von 3566 MB, was einen Abstand G von 530 MB von verbleibender Speicherkapazität freilässt (vgl. Schritt 210 von 3).
  • Als Nächstes wird bestimmt, ob es ein nächstes Datenobjekt in der Sequenz gibt, das in Abstand G passt. Tabelle 12, die eine Größe von 520 MB hat, ist die größte Tabelle, die in Abstand G passt. Diese Tabelle 12 wird daher Blade 1 zugeordnet. Die Gesamtgröße der Datenobjekte, die Blade 1 zugeordnet sind, d. h. Tabelle 20 und Tabelle 12, ist 4068 MB, was einen Abstand G von 10 MB frei lässt (vgl. 7). Dieser Abstand G von 10 MB ist zu klein, um sogar das kleinste verbleibende Datenobjekt der Sequenz von Tabellen aufzunehmen.
  • Da Tabellen in der Sequenz verbleiben, die noch nicht zu einem Blade zugeordnet worden sind, wird der Index i erhöht und die Zuordnungsprozedur geht zum nächste Blade B2 (vgl. Schritte 218 und 220 von 3). In Bezug auf Blade B2 wird die oben erläuterte Prozedur erneut auf der Basis der nicht zugeordneten Tabellen durchgeführt, die in der Sequenz verbleiben.
  • Auf diese Weise wird die größte verbleibende Tabelle der Sequenz, d. h. Tabelle 15, zu Blade B2 zugewiesen, was einen Abstand G von 596 MB frei lässt. Abstand G wird mit den Tabellen 6, 2, 13 und 14 gefüllt, wie in den 8 und 9 gezeigt wird. Die resultierende Zuordnung von Tabellen zu Blade B2 wird in 10 gezeigt.
  • Die Gesamtgröße der Tabellen, die zu Blade B2 zugeordnet worden sind, d. h. Tabellen 15, 6, 2, 13 und 14, lassen einen Abstand G von 76 MB frei, was nicht ausreichend ist, um die kleinste der nicht zugeordneten Tabellen, d. h. Tabelle 11, der Sequenz aufzunehmen. Daher wird der Index i erhöht, und die Zuordnungsprozedur wird für den nächsten Blade B3 weitergeführt. Dieser Prozess geht weiter, bis alle Tabellen der Sequenz zu einem der Blades Bi zugeordnet sind. Das Resultat der Zuordnung von Tabellen zu Blades wird in 11 veranschaulicht.
  • Zusätzlich zu der Zuordnung von Tabellen zu Blades erhält man auf diese Weise die niedrigste Anzahl von Blades, die notwendig sind, um eine vorgegebene Anzahl von Tabellen zu handhaben (vgl. 3). In dem hier betrachteten Beispiel lässt die resultierende Zuordnung von Tabellen zu N = 8 Blades einen Abstand G von 2196 MB auf Blade 8 frei.
  • Die resultierende Verteilung, wie in 11 gezeigt, wird als die initiale Verteilung in die Methode von 1 eingegeben (vgl. Schritt 52 von 1). Zusätzlich wird die geordnete Sequenz der Tabellen, wie in 5 gezeigt, in Schritt 50 der Methode von 1 eingegeben. Auf dieser Basis wird die Methode von 1 durchgeführt, um die Gleichmäßigkeit der initialen Verteilung von 11 zu verbessern. Die entsprechenden Iterationen der Umverteilungsprozedur wird in den 12 bis 24 veranschaulicht: Zuerst wird ein Grenzwert berechnet, der dazu dient, zwischen abgebenden und empfangenden Blades zu unterscheiden. In der hier betrachteten bevorzugten Ausführung ist der Grenzwert die theoretische minimale Speicherkapazität pro Blade, die notwendig wäre, um eine perfekt ausgeglichene Verteilung der Gesamtgrößen der Datenobjekte pro Blade zu erreichen. Die weitere Verarbeitung zielt darauf, sich dieser idealen Situation anzunähern, trotz der Tatsache, dass die Größen der Datenobjekte, d. h. die Größen der Tabellen, endlich und verschieden sind.
  • In der hier betrachteten bevorzugten Ausführung ist die Summe aller Tabellengrößen von Tabellen 1 bis 20 29696 MB. Der Grenzwert ist daher 29696 MB dividiert durch 8, d. h. der Anzahl der Blades, was einen Grenzwert T = 3712 MB ergibt. Blades, die gesamte Tabellengrößen oberhalb des Grenzwerts T haben, sind per Definition abgebende Blades, und Blades, die gesamte Tabellengrößen unterhalb des Grenzwerts T besitzen, sind per Definition empfangende Blades. Wenn die initiale Verteilung von Tabellen zu Blades, die durch die Methode von 3 bereitgestellt wird, als Startpunkt hergenommen wird, sind Blades 1 bis 7 abgebende Blades und Blade 8 ein empfangender Blade.
  • Nachdem die abgebenden und empfangenden Blades identifiziert worden sind, beginnt die Verarbeitung der Tabellen in der Reihenfolge der sortierten Sequenz, beginnend mit der größten Tabelle in der geordnete Sequenz. Mit anderen Worten, die Verarbeitung beginnt mit der am weitesten links liegenden Tabelle in der Sequenz, d. h. Tabelle 20, von wo es zur kleinsten Tabelle in der Sequenz fortschreitet, d. h. Tabelle 14 (vgl. die geordnete Sequenz wie in 5 gezeigt).
  • Empfangender Blade 8 hat die Speicherkapazität 4096 MB. Tabellen 8 und 11, die eine Gesamtgröße von 1900 MB haben, sind zu Blade 8 zugeordnet. Es gibt daher dort einen Abstand G von verbleibender Speicherkapazität des empfangenden Blades 8, die dazu verwendet werden kann, eine Tabelle von einer der abgebenden Blades neu zuzuordnen.
  • Durch Verarbeitung der Tabellen in der Reihenfolge der Sequenz wird bestimmt, dass Tabellen 20, 15, 1, 5 und 4 nicht in den Abstand G des empfangenden Blades 8 passen, und daher nicht neu zugeordnet werden können. Tabelle 16 auf dem abgebenden Blade 6 hat jedoch eine Größe von 2150 was in den Abstand G = 4096 MB – 1900 MB = 2196 MB passt. Tabelle 16 wird daher vorläufig von dem abgebenden Blade 16 zum empfangenden Blade 8 bewegt, wie in 13 veranschaulicht. Um die Qualität der resultierenden vorläufigen Verteilung zu bewerten, werden statistische Maße verwendet.
  • In der hier betrachteten bevorzugten Ausführung ist das statistische Maß die Standardabweichung der gesamten Tabellengrößen pro Blade. Die Standardabweichung S der initialen Verteilung wie in 11 und 12 gezeigt ist 741,06 MB. Die Standardabweichung der vorläufigen Verteilung von Tabellen zu Blades, die erhalten wird, wenn Tabelle 16 zum empfangenden Blade 8 bewegt wird, ist S = 856,42 MB. Wenn also Tabelle 16 zum empfangenden Blade 8 bewegt wird, erhöht sich die Standardabweichung S. Das zeigt, dass die Gleichmäßigkeit der Verteilung von Tabellen zu Blades in der vorläufigen Verteilung verschlechtert wird. Daher wird diese vorläufige Verteilung fallen gelassen und keine Neuzuordnung durchgeführt.
  • Von hier geht die Steuerung auf die Verarbeitung der nächsten Tabelle in der Sequenz, d. h. Tabelle 10 auf dem abgebenden Blade 7. Tabelle 10 passt in den Abstand G und wird daher vorläufig vom abgebenden Blade 7 zum empfangenden Blade 8 bewegt, wie in 14 veranschaulicht. Die Standardabweichung der vorläufigen Verteilung von Tabellen zu Blades, die so erhalten wird, ist S = 673,41 MB, was unterhalb der Standardabweichung der initialen Verteilung liegt.
  • Als eine Folge daraus wird die vorläufige Verteilung von 14 akzeptiert und Tabelle 10 wird daher wirklich von dem abgebenden Blade 7 zum empfangenden Blade 8 bewegt. Diese Bewegung macht Blade 8 zu einem abgebenden Blade, da die gesamte Größe der Tabellen, die Blade 8 zugeordnet sind, den Grenzwert T übersteigt. Gleicherweise macht die Bewegung der Tabelle 10 Blade 7 zu einem empfangenden Blade, da die gesamte Größe der Tabellen, die zu Blade 7 zugeordnet bleiben, unter den Grenzwert T fällt.
  • Die Verarbeitung der Tabellen setzt sich in Übereinstimmung mit der geordneten Sequenz fort. Die nächste Tabelle in der geordneten Sequenz ist Tabelle 17, die dem abgebenden Blade 5 zugeordnet worden ist. Da Tabelle 17 in den Abstand G von dem empfangenden Blade 7 passt, wird es vorläufig dorthin bewegt. Die Standardabweichung der resultierenden vorläufigen Verteilung ist S = 605,02 MB, was unterhalb der Standardabweichung der augenblicklichen Verteilung liegt, die von der vorhergehenden Bewegung von Tabelle 10 zu Blade 8 erhalten wurde. Daher wird die vorläufige Verteilung akzeptiert, und Tabelle 17 wird zum empfangenden Blade 7 bewegt, wie in 15 gezeigt.
  • Die nächste Tabelle in der Sequenz ist Tabelle 9, die Blade 6 zugeordnet worden ist. In der augenblicklichen Verteilung von Tabellen zu Blades, die von der vorhergehenden Iteration erhalten wurde, ist Blade 5 ein empfangender Blade, wobei alle anderen Blades abgebende Blades sind. Tabelle 9 passt in den Abstand G des empfangenden Blades 5, wie in 16 veranschaulicht. Wenn Tabelle 9 vorläufig zu Blade 5 bewegt wird, resultiert das in eine Erhöhung der Standardabweichung von 605,02 MB auf 673,61 MB. Daher wird die Verteilung in dieser Iteration nicht geändert, und die Verarbeitung setzt sich fort mit der kleinsten Tabelle in der Sequenz, d. h. Tabelle 18.
  • Tabelle 18 passt jedoch nicht in Abstand G und wird daher vorläufig von dem abgebenden Blade 7 zum empfangenden Blade 5 bewegt. Die resultierende Standardabweichung S ist 539,09 MB, was unterhalb der aktuellen Standardabweichung von 605,02 MB liegt, die von der vorhergehenden Iteration erhalten wurde. Daher wird die vorläufige Verteilung von 17 akzeptiert und Tabelle 18 wird neu zugeordnet zu Blade 5.
  • Die nächste Tabelle in der Sequenz ist Tabelle 8, die Blade 8 zugewiesen worden war. In der augenblicklichen Verteilung, erhalten aus der vorhergehenden Iteration, sind Blades 5 und 7 empfangende Blades, wobei alle anderen Blades abgebende Blades sind. Tabelle 8 ist auf dem abgebenden Blade 8 und passt nicht in den Abstand G5 des empfangenden Blades 5. Tabelle 8 passt jedoch nicht in Abstand G7 des empfangenden Blades 7 und wird daher vorläufig zu dem empfangenden Blade 7 bewegt. In der resultierenden vorläufigen Verteilung ist die neue Standardabweichung 479,49 MB, was unterhalb der aktuellen Standardabweichung S = 539,09 MB liegt. Die vorläufige Verteilung von 18 wird daher akzeptiert, und Tabelle 18 wird tatsächlich vom abgebenden Blade zum empfangenden Blade 7 bewegt.
  • Die nächste Tabelle in der Sequenz ist Tabelle 19. In der augenblicklichen Verteilung, erhalten aus der vorhergehenden Iteration, sind Blades 5, 7 und 8 empfangende Blades, während alle anderen Blades abgebende Blades sind. Tabelle 19 ist auf einem abgebenden Blade. Abstände G5 und G7 der empfangenden Blades 5 und 7 sind zu klein, um Tabelle 19 aufzunehmen. Tabelle 19 wird daher zum empfangenden Blade 8 bewegt, der einen genügend großen Abstand G8 besitzt, um Tabelle 19 aufzunehmen. Die Standardabweichung für die resultierende vorläufige Verteilung ist 390,36 MB, was unterhalb der aktuellen Standardabweichung liegt, die aus der vorhergehenden Iteration erhalten wurde. Die vorläufige Verteilung von 19 wird daher akzeptiert, und Tabelle 19 wird tatsächlich von dem abgebenden Blade 4 zum empfangenden Blade 8 bewegt.
  • Die nächste Tabelle in der geordneten Sequenz ist Tabelle 7 auf Blade 3. Blades 4, 5, 7 und 8 sind empfangende Blades in der augenblicklichen Verteilung. Tabelle 7 wird vorläufig vom abgebenden Blade 3 zum empfangenden Blade 4 bewegt, da Tabelle 7 zu groß ist, um auf einen der anderen empfangenden Blades zu passen. Die resultierende Standardabweichung der neuen vorläufigen Verteilung ist 263,26 MB, was unterhalb der aktuellen Standardabweichung liegt, die aus der vorhergehenden Iteration erhalten wurde. Tabelle 7 wird daher von dem abgebenden Blade zum empfangenden Blade 4 neu zugeordnet.
  • Die resultierende augenblickliche Verteilung wird in 21 gezeigt. In dieser Verteilung sind Blades 3, 5, 7 und 8 empfangende Blades. Die nächste Tabelle in der Sequenz ist Tabelle 3, die dem empfangenden Blade 7 zugeordnet ist. Tabelle 3 wird daher übergangen. Das Gleiche trifft zu für Tabelle 11, da sie dem empfangenden Blade 8 zugeordnet ist, und daher per Definition nicht zu einem abgebenden Blade bewegt werden kann.
  • Die nächste Tabelle in der geordnete Sequenz, die einem abgebenden Blade zugeordnet ist, ist Tabelle 12 auf Blade 1. Tabelle 12 passt jeweils in die Abstände G3 und G5 der empfangenden Blades 3 und 5, und wird daher vorläufig sowohl zum empfangenden Blade 3 als auch zum empfangenden Blade 5 zugeordnet. Das resultiert in zwei konkurrenzierende vorläufige Verteilungen. Wenn Tabelle 12 vorläufig zu Blade 3 bewegt wird, ist die resultierende neue Standardabweichung der entsprechenden vorläufigen Verteilung 149,53 MB. Wenn im Gegensatz dazu Tabelle 12 zum empfangenden Blade 5 bewegt wird, ist die resultierende neue Standardabweichung der entsprechenden vorläufigen Verteilung 264,39 MB. Daher ist die vorläufige Verteilung, die dadurch erreicht wird, dass Tabelle 12 zu Blade 3 bewegt wird, gleichmäßiger als die alternative vorläufige Verteilung, die durch eine vorläufige Bewegung von Tabelle 12 zu Blade 5 erhalten wird. Daher wird die vorläufige Verteilung, die durch Bewegen von Tabelle 12 zum empfangenden Blade 3 erhalten wird, akzeptiert. Die resultierende neue Verteilung wird in 22 gezeigt.
  • In der neuen Verteilung sind Blades 1, 5, 7 und 8 empfangende Blades. Die nächste Tabelle in der geordneten Sequenz ist Tabelle 6, die dem abgebenden Blade 2 zugeordnet ist. Tabelle 6 ist genügend klein, um in die Abstände G1, G5, G7, und G8 der jeweils empfangenden Blades 1, 5, 7 und 8 zu passen. Das resultiert in vier konkurrenzierende vorläufige Verteilungen:
    Vorläufige Verteilung Neue Standardabweichung
    Tabelle 6 zu Blade 1 87,66 MB
    Tabelle 6 zu Blade 5 89,21 MB
    Tabelle 6 zu Blade 7 129,89 MB
    Tabelle 6 zu Blade 8 96,59 MB
  • Daher ergibt die vorläufige Verteilung, die durch Bewegen der Tabelle 6 zum empfangenden Blade 1 erhalten wird, die kleinste neue Standardabweichung und wird daher akzeptiert.
  • 23 veranschaulicht die resultierende augenblickliche Verteilung. In dieser Verteilung sind Blades 5, 7 und 8 empfangende Blades. Die nächste Tabelle in der geordneten Sequenz ist Tabelle 2 auf dem abgebenden Blade 2. Die konkurrenzierenden vorläufigen Verteilungen, die aus der augenblicklichen Verteilung von 23 erhalten werden, werden wie folgt bewertet:
    Vorläufige Verteilung NeueStandardabweichung
    Tabelle 2 zu Blade 5 71,50 MB
    Tabelle 2 zu Blade 7 103,36 MB
    Tabelle 2 zu Blade 8 77,26 MB
  • Die größte Verringerung der Standardabweichung wird daher durch Bewegen von Tabelle 2 zum empfangenden Blade 5 erreicht. Die entsprechende vorläufige Verteilung wird daher akzeptiert; die resultierende augenblickliche Verteilung wird in 24 gezeigt.
  • In der augenblicklichen Verteilung von 24 sind Blades 2, 7 und 8 empfangende Blades. Die verbleibenden Tabellen in der geordneten Sequenz, d. h. Tabellen 13 und 14, sind dem empfangenden Blade 2 zugeordnet und können daher per Definition nicht neu zugeordnet werden. Daher ist die augenblickliche Verteilung, wie in 24 gezeigt, die endgültige Verteilung, die aus der initialen Verteilung von 11 erhalten wurde. Es ist anzumerken, dass die Gleichmäßigkeit der endgültigen Verteilung drastisch verbessert ist, wie es auch aus dem Abfall der Standardabweichung von 741,06 MB auf 71,50 MB zu erkennen ist.
  • 25 zeigt eine detalliertere Ausführung der entsprechenden Verteilungsmethode.
  • In Schritt 300 wird eine initiale Verteilung der Tabellen zu Blades bereitgestellt. Zum Beispiel kann das durch die Methode von 3 durchgeführt werden. Alternativ kann jede beliebige andere Verteilung als Startpunkt benutzt werden, z. B. die echte Verteilung eines existierenden Blade-Computing-Systems. Es ist anzumerken, dass es für die vorliegende Erfindung nicht wichtig ist, dass die initiale Verteilung die minimale Anzahl von Blades hat (wie sie durch die Methode von 3 bereitgestellt werden kann).
  • In Schritt 302 wird der Satz der abgebenden Blades in der initiale Verteilung bestimmt. Das wird vorzugsweise mithilfe eines Grenzwerts durchgeführt. Zum Beispiel wird der Grenzwert erhalten, indem die Gesamtgröße aller Tabellen berechnet und durch die Gesamtzahl der Blades geteilt wird. Diejenigen Blades, die Tabellen mit einer Gesamtgröße haben, die den Grenzwert überschreiten, sind per Definition abgebende Blades. Die Anzahl der abgebende Blades in der initiale Verteilung wird mit D bezeichnet.
  • Auf die gleiche Weise wird der Satz der empfangenden Blades in der initialen Verteilung bestimmt. Per Definition ist ein Blade, der kein abgebender Blade ist, ein empfangender Blade. Die Anzahl der empfangenden Blades wird mit R bezeichnet.
  • In Schritt 306 wird die größte Tabelle K in der initialen Verteilung identifiziert. Außerdem wird in Schritt 306 die Standardabweichung S der gesamten Tabellengrößen in der initialen Verteilung berechnet.
  • In Schritt 308 wird die Nummer N der augenblicklichen Tabelle auf K initialisiert.
  • In Schritt 310 wird eine Bestimmung durchgeführt, ob D > = 1 und R > = 1 sind. Wenn das nicht der Fall ist, dann gibt es entweder keinen empfangenden oder keinen abgebenden Blade, so dass keine der Tabellen neu zugeordnet werden kann. In diesem Fall kann die initiale Verteilung nicht weiter verbessert werden.
  • Wenn in Schritt 310 festgestellt wird, dass es tatsächlich mindestens einen abgebenden Blade und mindestens einen empfangenden Blade gibt, geht die Steuerung zu Schritt 312. In Schritt 312 wird eine Bestimmung gemacht, ob Tabelle N auf einem abgebenden Blade ist. Wenn das nicht der Fall ist, geht die Steuerung zu Schritt 348. In Schritt 348 wird die nächst kleinere Tabelle K nach Tabelle N gesucht. In Schritt 350 wird entschieden, ob solche kleinere Tabelle K gefunden wurde. Wenn das nicht der Fall ist, hält die Steuerung in Schritt 352 an. Wenn das Gegenteil der Fall ist, geht die Steuerung zurück auf Schritt 308.
  • Wenn in Schritt 312 bestimmt wurde, dass sich Tabelle N tatsächlich auf einem abgebenden Blade befindet, geht der Prozess weiter zu Schritt 314, in dem einer der empfangendem Blades willkürlich aus dem Satz von empfangenden Blades als der augenblickliche Empfänger r ausgewählt wird, um eine entsprechende vorläufige Neuzuordnung der Tabelle N zu untersuchen.
  • In Schritt 316 wird eine Bestimmung gemacht, ob Tabelle N auf Empfänger r passt. Wenn das der Fall ist, wird die Standardabweichung s(r) der resultierenden vorläufigen Verteilung, die durch Bewegen der Tabelle N von dem augenblicklichen Blade C zu Blade r erhalten wird, berechnet. In Schritt 320 wird bestimmt, ob die Standardabweichung s(r) unterhalb der Standardabweichung S der augenblicklichen Verteilung liegt.
  • Wenn das der Fall ist, wird Blade r ein Anwärter-Blade als Ziel für die Neuzuordnung der Tabelle N. Blade r und die entsprechende Standardabweichung s(r) werden in Schritt 322 in Array A gespeichert. Es ist anzumerken, dass anstelle von Array A eine andere geeignete Datenstruktur für die Speicherung von Tuplen r, s(r) benutzt werden können, wie z. B. eine lineare Adressenliste, eine Datei oder eine andere Datenstruktur. Von dort geht die Steuerung zu Schritt 324, wo die Bestimmung gemacht wird, ob weitere empfangende Blades in der augenblicklichen Verteilung existieren, die verarbeitet werden müssen. Wenn das der Fall ist, geht die Steuerung zu Schritt 326, wo r auf die Zahl des nächsten empfangenden Blades in dem Satz von empfangenden Blades gesetzt wird, der bis jetzt noch nicht verarbeitet worden ist. Vom Schritt 326 geht die Steuerung zurück zu Schritt 316.
  • Wenn es sich in Schritt 316 herausstellt, dass Tabelle N nicht auf den Empfänger r passt oder falls es sich in Schritt 320 herausstellt, dass s(r) nicht unterhalb von S liegt, geht die Steuerung direkt vom Schritt 316 zu Schritt 320 zu Schritt 324.
  • Nachdem alle Empfänger in dem Satz der empfangenden Blades verarbeitet worden sind, geht die Steuerung zu Schritt 328. Falls es kein Paar r, s(r) im Array R gibt, geht die Steuerung direkt vom Schritt 328 zu Schritt 348, um die aufeinanderfolgende Iteration zu initiieren, falls erforderlich.
  • Wenn es mindestens eine Eingabe in Array A gibt, geht die Steuerung vom Schritt 328 zu Schritt 330. In Schritt 330 wird die Eingabe in Array A identifiziert, die das kleinste s(r) besitzt. Im nachfolgenden Schritt 332 wird der angezielte empfangende Blade T für die Bewegung von Tabelle N auf r eingestellt. In Schritt 334 wird Tabelle N vom abgebenden Blade C zum empfangenden Blade T bewegt, und S wird auf s(T) eingestellt.
  • In Schritt 336 wird eine Bestimmung durchgeführt, ob Blade C durch die Bewegung zu einem empfangenden Blade geworden ist. Wenn das der Fall ist, werden in Schritt 338 die Zahlen D und R entsprechend angepasst. Blade C wird in Schritt 340 aus dem Satz der abgebende Blades entfernt und zu dem Satz der empfangenden Blades hinzugefügt, von wo die Steuerung zu Schritt 342 geht. Falls Blade C kein empfangender Blade geworden ist, geht die Steuerung direkt von Schritt 336 zu Schritt 342.
  • In Schritt 342 wird bestimmt, ob Blade T ein abgebender Blade geworden ist. Wenn das der Fall ist, werden die Zahlen D und R in Schritt 344 entsprechend angepasst, und Blade C wird von dem Satz der empfangenden Blades entfernt und in Schritt 346 zu dem Satz der abgebenden Blades hinzugefügt. Von hier geht die Steuerung zu Schritt 348. Falls in Schritt 342 bestimmt wird, dass Blade T kein abgebender Blade geworden ist, geht die Steuerung direkt von Schritt 342 zu Schritt 348.
  • Die aus den Schritten 308 bis 350 bestehende Schleife wird so lange durchgeführt, bis alle Tabellen in fallender Reihenfolge verarbeitet worden sind. Die so erhaltene endgültige Verteilung wird in Schritt 352 ausgegeben.
  • 26 zeigt Computer 108, der Prozessor 110 besitzt, um Programm 112 zu betreiben. Programm 112 hat Modul 114 zum Sortieren der Datenobjekte nach Größe und Modul 116 für die Zuordnung von Datenobjekten zu Blades.
  • Weiter hat Computer 108 Speicher 118 zum Speichern einer Tabelle, die die Datenobjekte und Datenobjektgrößen, die Blades zugeordnet werden sollen, auflistet, Speicher 120 zum Speichern mit einem Speicherkapazitätswert der Blades und Speicher 122 zum Speichern der Anzahl der Blades. Weiter hat Computer 108 Schnittstelle 124 zur Anbindung an Workstation 126.
  • Im Betrieb wird die Tabelle mit den Datenobjektnamen/-nummern und Datenobjektgrößen über Schnittstelle 124 eingegeben und in Speicher 118 gespeichert. Dies entspricht der Information, die in 4 gezeigt wird.
  • Weiter wird ein Speicherkapazitätswert für die Speicherkapazität jedes einzelnen Blades über Schnittstelle 124 eingegeben und in Speicher 120 gespeichert. In dem hier betrachteten Beispiel ist der Speicherkapazitätswert 4 GB für alle Blades.
  • Als Nächstes wird Programm 112 aufgerufen. Programm 112 sortiert die Tabelle von Speicher 118 nach Größe, um eine Sequenz von Datenobjekten bereitzustellen (vgl. 5). Als Nächstes führt Modul 116 die Methode von 3 durch, um die minimal notwendige Anzahl von Blades zu bestimmen. Diese minimale Anzahl wird in Speicher 122 gespeichert, und wird über Nutzerschnittstelle 124 ausgegeben. Diese Zahl kann als Basis für eine Investmententscheidung des Nutzers dienen für den Kauf der notwendigen Anzahl von Blades, um ein Datenverarbeitungssystem zu realisieren, das in der Lage ist, die Datenobjekte wie in der Tabelle aufgelistet zu handhaben.
  • Als Nächstes führt Modul 116 die Methode von 1 und/oder 25 zur Verfeinerung des Ausgleichs der Datenobjektgröße durch.
  • Alternativ ist Computer 108 einer der Blades. In diesem Fall kann Computer 108 die Zuordnung von Datenobjekten zu Blades dynamisch ändern, wenn die Größe der Datenobjekte sich ändert. Auf diese Weise können häufige Tauschvorgänge für den Tausch von Datenobjekten zwischen Blades vermieden werden.
  • 100
    Cluster
    102
    Prozessor
    104
    Speicher
    106
    Netzwerk
    108
    Computer
    110
    Prozessor
    112
    Programm
    114
    Modul
    116
    Modul
    118
    Speicher
    120
    Speicher
    122
    Speicher
    124
    Schnittstelle
    126
    Workstation

Claims (12)

  1. Computerimplementiertes Verfahren zum Zuordnen von Datenobjekten (1, 2, 3, ..., 20) zu Verarbeitungseinheiten eines Clusters (100) von Verarbeitungseinheiten (102), wobei jedes Datenobjekt eine Tabelle, Datei, Array, Liste oder Baum sein kann, wobei jede der Verarbeitungseinheiten eine Speicherkapazität (104) aufweist, wobei das Verfahren umfasst: (a) Bereitstellung (50) einer geordneten Sequenz von Datenobjekten, wobei die geordnete Sequenz nach der Datenobjektgröße geordnet ist, (b) Bereitstellung (52; 302) einer initialen Verteilung der Datenobjekte zu den Verarbeitungseinheiten (102), (c) Verarbeitung (54) der Datenobjekte (102) gemäß der Reihenfolge der Sequenz durch: – Bestimmung (56; 302) eines ersten Satzes von Verarbeitungseinheiten, wobei jede Verarbeitungseinheit des ersten Satzes eine Gesamtgröße von zugeordneten Datenobjekten oberhalb eines Grenzwertes aufweist, wobei der Grenzwert das theoretische Speicherkapazitäts-Minimum pro Verarbeitungseinheit angibt, welches erhalten wird durch Berechnung der Summe der Größen aller Datenobjekte, welche den Verarbeitungseinheiten zugeordnet werden sollen, geteilt durch die Anzahl der Datenverarbeitungseinheiten, – Bestimmung (56; 304) eines zweiten Satzes von Verarbeitungseinheiten, wobei jede Verarbeitungseinheit des zweiten Satzes eine Gesamtgröße an zugeordneten Datenobjekten unterhalb des Grenzwerts aufweist, – im Falle dessen, dass ein Datenobjekt einer Verarbeitungseinheit des ersten Satzes zugeordnet ist und dass eine Verarbeitungseinheit des zweiten Satzes existiert, welche ausreichend verfügbare Speicherkapazität für das Datenobjekt aufweist – vorläufiges Zuordnen (58) des Datenobjektes zu der Verarbeitungseinheit des zweiten Satzes, Berechnung (60; 318) eines statistischen Maßes für die resultierende vorläufige Verteilung der Datenobjekte zu den Verarbeitungseinheiten, wobei das statistische Maß die Qualität der Verteilung der Datenobjekte zu den Verarbeitungseinheiten angibt, und erneutes Zuordnen (64) des Datenobjekts zu den Verarbeitungseinheiten des zweiten Satzes im Falle dessen (62), dass das statistische Maß eine verbesserte Qualität der vorläufigen Verteilung angibt.
  2. Verfahren nach Anspruch 1, wobei die initiale Verteilung der Datenobjekte zu den Verarbeitungseinheiten gegeben ist durch Durchführung der folgenden Schritte für jede Verarbeitungseinheit des Clusters: – Zuordnung (206) von einem oder mehreren der Datenobjekte zu der Verarbeitungseinheit beginnend mit dem größten Datenobjekt in Sequenz bis (212) eine verfügbare Speicherkapazität der Verarbeitungseinheiten unterhalb des kleinsten Datenobjekts der Sequenz liegt; – Löschen (208) der Datenobjekte, welche zu einer Verarbeitungseinheit zugeordnet sind, aus der Sequenz.
  3. Verfahren nach einem der vorigen Ansprüche 1 oder 2, wobei der Grenzwert die Gesamtgröße der Datenobjekte geteilt durch die Anzahl der Verarbeitungseinheiten ist.
  4. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 3, wobei das statistische Maß auf Basis der gesamten Größen der Datenobjekte berechnet wird, welche Verarbeitungseinheiten zugeordnet sind.
  5. Verfahren nach Anspruch 4, wobei das statistische Maß die Varianz oder Standardabweichung der gesamten Größen der Datenobjekte ist, welche Verarbeitungseinheiten zugeordnet sind.
  6. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 5, des Weiteren umfassend die folgenden Schritte im Falle dessen, dass mehr als eine Verarbeitungseinheit des zweiten Satzes existiert, welche ausreichend verfügbare Speicherkapazität für das Datenobjekt aufweist: – Bestimmung von vorläufigen Verteilungen durch vorläufiges Zuordnen des Datenobjekts zu jeder der Verarbeitungseinheiten des zweiten Satzes, – Berechnung (318) des statistischen Maßes für jede vorläufige Verteilung, – Erneute Zuordnung des Datenobjekts zu einer der Verarbeitungseinheiten des zweiten Satzes zu welcher es vorläufig zugeordnet wurde und für welche das statistische Maß die größte Verbesserung der Qualität angibt.
  7. Computerprogrammprodukt umfassend Programmmittel (112, 114, 116) zur Zuordnung von Datenobjekten (1, 2, 3, ..., 20) zu Verarbeitungseinheiten (102) eines Clusters (100) von Verarbeitungseinheiten, wobei jedes Datenobjekt eine Tabelle, Datei, Array, Liste oder Baum sein kann, wobei jede der Verarbeitungseinheiten eine Speicherkapazität (104) aufweist, wobei das Computerprogrammprodukt Anweisungen zur Durchführung der folgenden Schritte aufweist: (a) Bereitstellung (50) einer geordneten Sequenz von Datenobjekten, wobei die geordnete Sequenz nach der Datenobjektgröße geordnet ist, (b) Bereitstellung (52; 302) einer initialen Verteilung der Datenobjekte zu den Verarbeitungseinheiten, (c) Verarbeitung (54) der Datenobjekte gemäß der Reihenfolge der Sequenz durch: – Bestimmung (56; 302) eines ersten Satzes von Verarbeitungseinheiten, wobei jede Verarbeitungseinheit des ersten Satzes eine Gesamtgröße von zugeordneten Datenobjekten oberhalb eines Grenzwerts aufweist, wobei der Grenzwert das theoretische Speicherkapazitäts-Minimum pro Verarbeitungseinheit angibt, welches erhalten wird durch Berechnung der Summe der Größen aller Datenobjekte, welche den Verarbeitungseinheiten zugeordnet werden sollen, geteilt durch die Anzahl der Verarbeitungseinheiten, – Bestimmung (56; 304) eines zweiten Satzes von Verarbeitungseinheiten, wobei jede Verarbeitungseinheit des zweiten Satzes eine Gesamtgröße von zugeordneten Datenobjekten unterhalb des Grenzwerts aufweist, – im Falle dessen, dass ein Datenobjekt zu einer Verarbeitungseinheit des ersten Satzes zugeordnet ist, und dass eine Verarbeitungseinheit des zweiten Satzes existiert, welche ausreichende verfügbare Speicherkapazität für das Datenobjekt aufweist: – vorläufiges Zuordnen (58) des Datenobjektes zu der Verarbeitungseinheit des zweiten Satzes, Berechnen (60; 318) eines statistischen Maßes für die resultierende vorläufige Verteilung der Datenobjekte zu den Verarbeitungseinheiten, und erneutes Zuordnen (64) des Datenobjektes zu den Verarbeitungseinheiten des zweiten Satzes im Falle dessen (62), dass das statistische Maß eine verbesserte Qualität angibt.
  8. Computerprogrammprodukt nach Anspruch 7, wobei die Programmmittel dazu ausgebildet sind, um die folgenden Schritte durchzuführen, im Falle dessen, dass es mehr als eine Verarbeitungseinheit des zweiten Satzes gibt, welche ausreichende verfügbare Speicherkapazität für das Datenobjekt aufweist: – Bestimmung von vorläufigen Verteilungen durch vorläufiges Zuordnen des Datenobjektes zu jedem der Verarbeitungseinheiten des zweiten Satzes, – Berechnung (318) des statistischen Maßes für jede vorläufige Verteilung, – erneutes Zuordnen des Datenobjektes zu einer der Verarbeitungseinheiten des zweiten Satzes zu welcher es vorläufig zugeordnet wurde und für welche das statistische Maß die größte Verbesserung der Qualität angibt.
  9. Datenverarbeitungssystem zur Zuordnung von Datenobjekten (1, 2, 3, ..., 20) zu Verarbeitungseinheiten (102) eines Clusters (100) von Verarbeitungseinheiten, wobei jedes Datenobjekt eine Tabelle, Datei, Array, Liste oder Baum sein kann, wobei jede der Verarbeitungseinheiten eine Speicherkapazität (104) aufweist, wobei das Datenverarbeitungssystem umfasst: (a) Mittel (118) zur Speicherung einer geordneten Sequenz von Datenobjekten, wobei die geordnete Sequenz nach der Datenobjektgröße geordnet ist, (b) Mittel (118) zur Speicherung einer initialen Verteilung der Datenobjekte zu den Verarbeitungseinheiten, (c) Mittel (110, 112, 116) zur Verarbeitung der Datenobjekte gemäß der Reihenfolge der Sequenz durch: – Bestimmung (56; 302) eines ersten Satzes von Verarbeitungseinheiten, wobei jede Verarbeitungseinheit des ersten Satzes eine Gesamtgröße von zugeordneten Datenobjekten oberhalb eines Grenzwerts aufweist, wobei der Grenzwert das theoretische Speicherkapazitäts-Minimum pro Verarbeitungseinheit angibt, welches erhalten wird durch Berechnung der Summe der Größen aller Datenobjekte, welche den Verarbeitungseinheiten zugeordnet werden sollen, geteilt durch die Anzahl von Verarbeitungseinheiten – Bestimmung (56; 304) eines zweiten Satzes von Verarbeitungseinheiten, wobei jede Verarbeitungseinheit des zweiten Satzes eine Gesamtgröße von zugeordneten Datenobjekten unterhalb des Grenzwerts aufweist, – im Falle dessen, dass ein Datenobjekt einer Verarbeitungseinheit des ersten Satzes zugeordnet ist und dass eine Verarbeitungseinheit des zweiten Satzes existiert, welche eine ausreichend verfügbare Speicherkapazität für das Datenobjekt aufweist: – vorläufiges Zuordnen (58) des Datenobjektes zu der Verarbeitungseinheit des zweiten Satzes, Berechnen (60; 318) eines statistischen Maßes für die resultierende vorläufige Verteilung der Datenobjekte zu den Verarbeitungseinheiten, und erneutes Zuordnen (64) des Datenobjektes zu den Verarbeitungseinheiten des zweiten Satzes im Falle dessen (62), dass das statistische Maß eine verbesserte Qualität der vorläufigen Verteilung angibt.
  10. Datenverarbeitungssystem nach Anspruch 9, wobei die Mittel zur Verarbeitung der Datenobjekte dazu ausgebildet sind um eine initiale Verteilung der Datenobjekte der Verarbeitungseinheit zur Verfügung zu stellen durch Durchführung der folgenden Schritte für jede Verarbeitungseinheit des Clusters: – Zuordnung (206) einer oder mehrerer Datenobjekte zu der Verarbeitungseinheit beginnend mit dem größten Datenobjekt in der Sequenz, bis sich eine verfügbare Speicherkapazität des Verarbeitungssystems unterhalb des kleineren Datenobjektes der Sequenz befindet, – Löschen (208) der Datenobjekte, welche einer Verarbeitungseinheit zugeordnet sind, aus der Sequenz.
  11. Datenverarbeitungssystem nach Anspruch 9 oder 10, wobei die Mittel zur Verarbeitung der Datenobjekte dazu ausgebildet sind um die folgenden Schritte durchzuführen im Falle dessen, dass es mehr als eine Verarbeitungseinheit des zweiten Satzes gibt, welche ausreichend verfügbare Speicherkapazität für das Datenobjekt aufweist: – Bestimmung von vorläufigen Verteilungen durch vorläufiges Zuordnen des Datenobjektes zu jeder der Verarbeitungseinheiten des zweiten Satzes, – Berechnen (318) des statistischen Maßes für jede vorläufige Verteilung, – erneutes Zuordnen des Datenobjekts zu einer der Verarbeitungseinheiten des zweiten Satzes zu welcher es vorläufig zugeordnet wurde und für welches das statistische Maß die größte Verbesserung der Qualität angibt.
  12. Blade-Server mit einem Datenverarbeitungssystem gemäß den Ansprüchen 9, 10 oder 11 zur Zuordnung von Datenobjekten (1, 2, 3, ..., 20) zu einer Vielzahl von Blade-Servern (B1, B2, B3, ..., BN).
DE60319003T 2003-10-16 2003-10-16 Verfahren zur Neuverteilung von Objekten an Recheneinheiten Expired - Lifetime DE60319003T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP03023374A EP1524599B1 (de) 2003-10-16 2003-10-16 Verfahren zur Neuverteilung von Objekten an Recheneinheiten

Publications (2)

Publication Number Publication Date
DE60319003D1 DE60319003D1 (de) 2008-03-20
DE60319003T2 true DE60319003T2 (de) 2009-02-05

Family

ID=34354468

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60319003T Expired - Lifetime DE60319003T2 (de) 2003-10-16 2003-10-16 Verfahren zur Neuverteilung von Objekten an Recheneinheiten

Country Status (4)

Country Link
US (1) US7647592B2 (de)
EP (1) EP1524599B1 (de)
AT (1) ATE385590T1 (de)
DE (1) DE60319003T2 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60319003T2 (de) 2003-10-16 2009-02-05 Sap Ag Verfahren zur Neuverteilung von Objekten an Recheneinheiten
ATE386978T1 (de) 2004-02-10 2008-03-15 Sap Ag Verfahren zur neuverteilung von objekten an recheneinheiten
US7900206B1 (en) 2004-03-31 2011-03-01 Symantec Operating Corporation Information technology process workflow for data centers
US8326990B1 (en) * 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
US11113303B2 (en) 2016-05-09 2021-09-07 Sap Se Ownership transfer of database artifacts between files
US10776330B2 (en) 2017-06-29 2020-09-15 Sap Se Optimized re-deployment of database artifacts
US11093443B2 (en) 2017-06-29 2021-08-17 Sap Se Database-level container group management
US10674438B2 (en) 2017-06-29 2020-06-02 Sap Se Restricting access to external schemas from within a database level container by whitelisting allowed schemas
US10984021B2 (en) 2017-06-29 2021-04-20 Sap Se Deployment of independent database artifact groups
US10657114B2 (en) 2017-11-28 2020-05-19 Sap Se Reserving key specifications
US11030164B2 (en) 2018-01-18 2021-06-08 Sap Se Artifact deployment for application managed service instances

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173306B1 (en) * 1995-07-21 2001-01-09 Emc Corporation Dynamic load balancing
US6366931B1 (en) * 1998-11-20 2002-04-02 Hewlett-Packard Company Apparatus for and method of non-linear constraint optimization in storage system configuration
US20030033463A1 (en) * 2001-08-10 2003-02-13 Garnett Paul J. Computer system storage
US7765299B2 (en) * 2002-09-16 2010-07-27 Hewlett-Packard Development Company, L.P. Dynamic adaptive server provisioning for blade architectures
DE60319003T2 (de) 2003-10-16 2009-02-05 Sap Ag Verfahren zur Neuverteilung von Objekten an Recheneinheiten
ATE386978T1 (de) 2004-02-10 2008-03-15 Sap Ag Verfahren zur neuverteilung von objekten an recheneinheiten

Also Published As

Publication number Publication date
EP1524599B1 (de) 2008-02-06
US20050125799A1 (en) 2005-06-09
DE60319003D1 (de) 2008-03-20
US7647592B2 (en) 2010-01-12
EP1524599A1 (de) 2005-04-20
ATE385590T1 (de) 2008-02-15

Similar Documents

Publication Publication Date Title
DE602004011890T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
DE602004003361T2 (de) System und verfahren zur erzeugung von verfeinerungskategorien für eine gruppe von suchergebnissen
DE69938339T2 (de) Ein skalierbares system zum gruppieren von grossen datenbänken
DE60301202T2 (de) Verfahren und vorrichtung zur verkehrssteuerung einer web-farm
DE4218025C2 (de) Vorrichtung und Verfahren zur automatischen Zuordnung von Datenspeichereinrichtungen in einem Computersystem
DE69815819T2 (de) Adaptives verteiltes informationsnetzwerk
DE60319003T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
EP0959407B1 (de) Verfahren zum Zuteilen von Aufträgen Datenverarbeitungssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE10152970A1 (de) Halbleiterbauelement mit Systembus und externem Bus sowie zugehörige Verfahren und Vorrichtungen
DE102004023267A1 (de) Bestimmen eines Richtlinienparameters für eine Entität einer Lieferkette
DE4110144A1 (de) Rohstoff-produktgruppen-zuweisungskoordinator
DE10244731A1 (de) Dynamischer Auslastungsausgleich unter Verwendung einer semantischen Verkehrsüberwachung
DE4221073A1 (de) Datenspeichersystem und -verfahren mit geraeteunabhaengigen dateiverzeichnissen
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
EP1654647B1 (de) Verfahren zum zuweisen von objekten zu verarbeitungseinheiten
EP1711892B1 (de) Verfahren zum bestimmen eines übernahmeszenarios der softwareeinheiten bei einem rechnerausfall in einer serverfarm
DE202014010920U1 (de) Datenverkehrsgestaltung für groß angelegte Datencenter-Netze
DE102021127324A1 (de) Planung von aufträgen auf grafischen verarbeitungseinheiten
DE60222233T2 (de) Prozessor und Verfahren zur Erhaltung der Verarbeitungsreihenfolge von Paketen basierend auf Paketstromkennungen
WO2021190921A1 (de) Computerimplementiertes verfahren für eine produktionsplanung und/oder -steuerung eines produktionssystems und produktionsplanung und/oder-steuerungssystem zur produktionsoptimierung
DE112012006412T5 (de) System zur verteilten Datensuche, Verfahren zur verteilten Datensuche und Managementcomputer
DE69826126T2 (de) Verfahren und vorrichtung zur berechnung einer erforderlichen werkstoffmenge
DE112011103259T5 (de) Verfahren, Programm und Vorrichtung zum Gruppieren einer Vielzahl von Elementen
CN106649385A (zh) 基于HBase数据库的数据排序方法和装置

Legal Events

Date Code Title Description
8364 No opposition during term of opposition