-
1. Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index.
-
Beschreibung der zugrunde liegenden Technik
-
Daten-Deduplizierung ist eine Datenreduzierungstechnik zum Entfernen redundanter Daten, um die Speicherauslastung zu verbessern. Durch das Deduplizieren wird die benötigte Speicherkapazität verringert, weil nur eine Kopie einer bestimmten Dateneinheit, die auch als Datenblock bekannt ist, gespeichert wird. Bei Plattenspeichersystemen wie beispielsweise einem Speicherverwaltungs-Server oder einem virtuellen Bandarchiv (Virtual Tape Library, VTL) kann eine Deduplizierungs-Technologie angewandt werden, um redundante Datenblöcke zu erkennen und Doppeleinträge infolge des redundanten Speicherns solcher Datenblöcke zu vermeiden. Die Daten-Deduplizierung in Speichern sorgt für die Verringerung des für einen bestimmten Satz von Dateien benötigten Speichervolumens und ist bei Anwendungen am wirksamsten, bei denen Kopien sehr ähnlicher oder sogar identischer Daten auf einer einzigen Platte gespeichert sind, was oft vorkommt. Bei Datensicherungen, die laufend zum Schutz von Datenverlusten durchgeführt werden, haben sich die meisten Daten bei einer bestimmten Datensicherung gegenüber der vorhergehenden Datensicherung nicht geändert und können oft Anlass zur Deduplizierung geben, um das redundante Speichern von Daten zu umgehen.
-
Daten-Deduplizierung kann auf Datei- oder Blockebene stattfinden. Durch Datei-Deduplizierung werden doppelte Dateien entfernt. Bei einem Block-Deduplizieren wird eine Datei durchsucht und das einmalige Vorkommen jedes Blocks gespeichert. Ein Block-Deduplizierungs-System teilt eine Datei in eine Folge von Datenblöcken ein. Das Deduplizierungs-System ermittelt, ob einige der Datenblöcke bereits gespeichert sind und speichert dann nur diese nichtredundanten Datenblöcke. Die Redundanzprüfung kann mit den Datenblöcken durchgeführt werden, die entweder gerade in der Datei gespeichert werden oder bereits im System gespeichert sind.
-
Ein Objekt kann unter Verwendung einer elektronischen Fingerabdrucktechnik wie beispielsweise der Rabin-Karp-Fingerabdrucktechnik in Datenblöcke eingeteilt werden. Redundante Datenblöcke werden unter Anwenden eines Hash-Algorithmus wie beispielsweise MD5 (Message-Digest-Algorithmus 5) oder SHA-1 (Secure-Hash-Algorithmus 1) auf jeden Datenblock erkannt, um einen Hashwert für die Datenblöcke zu erzeugen und diese Hashwerte dann mit dem Hashwerten bereits im System gespeicherter Datenblöcke zu vergleichen. Üblicherweise werden die Hashwerte für gespeicherte Datenblöcke in einem Index (Deduplizierungs-Index) verwaltet. Ein Datenblock kann durch einen Hashwert und/oder einen Fingerabdruck eindeutig gekennzeichnet werden. Wenn für einen Hashwert ein Eintrag gefunden wird, wird ein redundanter Datenblock erkannt, und dieser Datenblock in dem Datenobjekt oder Objekt kann durch einen Zeiger auf den im Speicher verwalteten übereinstimmenden Datenblock ersetzt werden. Die Größe des Deduplizierungs-Indexes kann durch ein für den Index verfügbares Speichervolumen begrenzt sein. Dadurch kann die Anzahl von auf den Speicher verweisenden Hashwerten begrenzt sein, die in dem Deduplizierungs-Index verwaltet werden können. Durch das Einrichten eines kleineren Indexes kann sichergestellt werden, dass der Index in das zugeordnete Speichervolumen passt.
-
In der Technik besteht ein Bedarf an verbesserten Techniken zum Durchführen von Deduplizierungs-Operationen.
-
Kurzdarstellung
-
Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index bereitgestellt. Ein Index weist Datenblocksignaturen auf, die aus Datenblöcken von Daten in den Datenobjekten in dem Speicher berechnet wurden, wobei jeder Indexeintrag mindestens eine der Datenblocksignaturen und einen Verweis auf den Datenblock aufweist, von dem die Signatur berechnet wurde. Es werden Einträge in dem Index zum Zusammenfassen ausgewählt, und mit den Datenblocksignaturen in den ausgewählten Einträgen wird eine Zusammenfassungsoperation ausgeführt, um eine zusammengefasste Signatur zu erzeugen. In den Index wird ein Eintrag eingefügt, der die zusammengefasste Signatur und einen Verweis auf die Datenblöcke in dem Speicher enthält, auf die in den zusammengefassten ausgewählten Einträgen verwiesen wird. Der Index der Signaturen wird bei den Deduplizierungs-Operationen verwendet, wenn Datenobjekte in den Speicher eingefügt werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht eine Datenverarbeitungsumgebung, in der Ausführungsformen realisiert werden.
-
2 veranschaulicht eine Ausführungsform von Objektdaten.
-
3 veranschaulicht eine Ausführungsform eines Eintrags des Deduplizierungs-Indexes.
-
4 veranschaulicht ein Beispiel eines Deduplizierungs-Indexes mit zusammengefassten Einträgen.
-
5 veranschaulicht eine Ausführungsform von Operationen zum Einfügen eines Datenblocks in den Deduplizierungs-Index.
-
6 veranschaulicht ein Beispiel von Operationen zum Zusammenfassen von Indexeinträgen in dem Deduplizierungs-Index.
-
7a und 7b veranschaulichen eine Ausführungsform von Operationen zum Verarbeiten eines empfangenen Datenobjekts zum Deduplizieren durch Berechnen zusammengefasster Signaturen.
-
8 veranschaulicht eine Ausführungsform einer Zuordnung von Datenblöcken in einem empfangenen Datenobjekt mit einer zusammengefassten oder Datenblocksignatur, die von einem oder mehreren Datenblöcken in dem empfangenen Datenobjekt berechnet wurden.
-
9 veranschaulicht eine Ausführungsart eines Computerknotens in der Datenverarbeitungsumgebung.
-
DETAILLIERTE BESCHREIBUNG
-
Beschriebene Ausführungsformen stellen Techniken zum Zusammenfassen von Einträgen in einem Deduplizierungs-Index bereit, um die Anzahl von Indexeinträgen durch Ausführen einer Zusammenfassungsoperation mit den in mehreren Einträgen enthaltenen Signaturen zu verringern, um eine in einem neuen zusammengefassten Eintrag enthaltene zusammengefasste Signatur zu erzeugen, die auf die mehreren Datenblöcke verweist, auf die die von der Zusammenfassungsoperation betroffenen Signaturen verweisen. Wenn bei beschriebenen Ausführungsformen ein empfangendes Datenobjekt zum Speicher hinzugefügt wird, werden aus den Datenblöcken in dem empfangenen Datenobjekt Datenblocksignaturen berechnet und aus mehreren Signaturen in dem empfangenen Datenobjekt zusammengefasste Signaturen berechnet, um diese mit zusammengefassten und Datenblocksignaturen in dem Deduplizierungs-Index zu vergleichen, um nicht doppelt vorkommende oder nicht übereinstimmende Datenblöcke in dem empfangenen Datenobjekt zu ermitteln, d. h. einen oder mehrere Datenblöcke mit Signaturen, die nicht mit den Signaturen in dem Index übereinstimmen. Es werden nur die nicht doppelt oder nur einmalig vorkommenden und keine duplizierten Datenblöcke in den Speicher geschrieben, um das Schreiben von redundanten Daten zu vermeiden.
-
1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung mit einem Server 2, der Datenobjekte über ein Netzwerk 6 von Clients 4 empfängt und verarbeitet. Die Objekte bestehen aus Datenblöcken 8 von Daten, die der Server 2 in einem Speicher 10 speichert. Der Server 2 weist einen Speichermanager 12 zum Verwalten der Speicherung von Datenobjekten in dem Speicher 10 auf. Der Speichermanager 12 verwaltet Objektdaten 14, die Informationen über die Objekte in dem Speicher 10 aufweisen. Die Objektdaten 14 können eine geordnete Liste von Datenblöcken 8 und der/die Adressen dieser Datenblöcke 8 in dem Speicher 10 bereitstellen. Die in den Objektdaten 14 dargestellten Objekte, deren Datenblöcke 8 von Daten in dem Speicher 10 gespeichert sind, können Dateien, Datenbanktabellen, Multimediainhalte, Programme, Datensätze oder beliebige andere Datenanordnungen aufweisen, die zur Speicherung vorgesehen werden können. Der Speichermanager 12 kann Speicherplatz für aktive Datenobjekte bereitstellen, die von den Clients 4 in Echtzeitoperationen verwendet werden, und/oder einen Sicherungsmanager zum Sichern und Archivieren von Datenobjekten des Clients 4 aufweisen.
-
Der Speichermanager 12 verwaltet einen Deduplizierungs-Index 16, der Informationen über die Datenblöcke 8 in dem Speicher 10 aufweist, um sicherzustellen, dass beim Speichern von empfangenen Datenobjekten, die Datenblöcke aufweisen, nur eine Kopie eines Datenblocks 8, d. h. keine doppelten Kopien, in dem Speicher 10 gespeichert wird, obwohl in mehreren Datenobjekten auf einen Datenblock 8 verwiesen werden kann. Der Speichermanager 12 kann ferner Datenblockdaten 18 verwalten, die Informationen über den Speicherplatz der Datenblöcke 8 in dem Speicher 10 aufweisen. Aufgrund begrenzter Speicherressourcen des Servers kann der Deduplizierungs-Index 14 einen Eintrag nicht für jeden einzelnen Datenblock 8 in dem Speicher verwalten, auf den in Datenobjekten verwiesen wird, die in den Objektdaten 14 angezeigt werden. Die Datenblockdaten 16 enthalten Informationen über alle Datenblöcke 8 in dem Speicher 10, um auf die Datenblöcke 8 zugreifen zu können.
-
Der Server 2 kann Daten mit Clients 4 über ein Netzwerk 6 austauschen, beispielsweise über ein lokales Netzwerk (LAN), ein Netzwerk für den Speicherbereich (SAN), ein Weitverkehrsnetz (WAN), ein Cloud-Computing-Modell usw. Gemäß weiteren Ausführungsformen können der Server 2 und der Client 4 über eine Direktleitung miteinander verbunden sein oder Komponenten auf der Plattform eines Einzelcomputersystems aufweisen und Daten über einen Bus oder über einen Speicher austauschen.
-
Der Speicher 10 kann Speichermedien aufweisen, die in einer oder mehreren in der Technik bekannten Speichereinheiten implementiert sind, beispielsweise miteinander verbundene Festplattenlaufwerke (die z. B. als DASD, RAID, JBOD usw. konfiguriert sind), Halbleiterspeichereinheiten (z. B. EEPROM (elektrisch löschbare programmierbare Nur-Lese-Speicher), Flash-Speicher, Flash-Plattenspeicher, Speicherklassenspeicher (storage-class memory, SCM)), elektronische Speicher, Magnetbandmedien, Bandkassetten usw.
-
Der Speichermanager 12 kann ein Softwareprogramm in einem Speicher aufweisen, das durch einen Prozessor des Servers 2 ausgeführt wird. Gemäß einer alternativen Ausführungsform kann der gesamte Speichermanager 12 oder ein Teil davon als Hardwarekomponente implementiert werden, beispielsweise als integrierter Spezialschaltkreis, z. B. anwendungsspezifischer Schaltkreis (ASIC), Erweiterungskarte usw.
-
2 veranschaulicht eine Ausführungsform eines Exemplars von Objektdaten 50 für ein Datenobjekt, das in den Objektdaten 14 enthalten ist. Die Objektdaten 50 für ein Datenobjekt enthalten einen Datenobjektnamen 52, der dem Datenobjekt durch den Client 4 zugewiesen wird, beispielsweise eine eindeutige Kennung und eine oder mehrere Datenblockkennungen (Ci) 54a, 54b...54n von Datenblöcken, die den Datenobjekten 52 des Clients zugewiesen wurden. Die Datenblöcke selbst können eine variable Länge, d. h. dieselben oder unterschiedliche Längen, oder eine fest vorgegebene Länge aufweisen. Die Objektdaten 50 können eine geordnete Liste der Datenblockkennungen (C1...Cn) enthalten, die eine Folge von 1...n anzeigt, in der die Datenblöcke in dem Datenobjekt vorkommen.
-
Gemäß einer Ausführungsform wird die Datenblockkennung (Ci) 54a...54n durch Verarbeiten der Datenblockdaten berechnet, um einen eindeutigen Wert für den Datenblock zu erzeugen, beispielsweise unter Verwendung des Algorithmus MD5 (Message-Digest Algorithm 5) oder SHA-1 (Secure Hash Algorithm 1), der kryptografische Hashwerte von Datenblöcken in einem Datenobjekt berechnet. Gemäß einer alternativen Ausführungsform kann die Datenblockkennung 54a, 54b...54n anstelle eines Hashwertes der Daten einen direkten Verweis auf einen Speicherplatz in dem Speicher 8 aufweisen.
-
3 veranschaulicht eine Ausführungsform eines Eintrags 70 im Deduplizierungs-Index 16 für Datenblöcke 8 in dem Speicher 10. Der Eintrag 70 kann auf einen einzigen Datenblock oder eine Vielzahl von Datenblöcken 8 für einen zusammengefassten Eintrag verweisen. Der Indexeintrag 70 enthält eine Signatur (Si) 72, die von einem einzigen Datenblock 8 berechnet werden kann, beispielsweise gemäß der zum Berechnen der Datenblockkennungen 54a, 54b...54n verwendeten Technik oder durch Ausführen einer Zusammenfassungsoperation, z. B. eine Multiplikation oder eine andere Operation, mit zuvor berechneten Datenblocksignaturen 72 von vorhandenen Indexeinträgen 70, um eine zusammengefasste Datenblocksignatur zu ermitteln. Ein Speicherverweis 74 verweist auf den einen oder mehrere aufeinander folgende Datenblöcke 8 in dem Speicher 10, die der Signatur 72 zugehörig sind. Eine Zusammenfassungsebene 76 zeigt ein Ausmaß an, in dem die Signatur (Si) 72 direkt aus einem einzigen Datenblock 8 oder aus mehreren Signaturen 72 in bereits vorhandenen Einträgen 70 berechnet wurde. Zum Beispiel zeigt eine Zusammenfassungsebene 76 null eine Datenblocksignatur 72 an, die direkt aus dem Datenblock 8 berechnet wurde und einen Speicherverweis 74 aufweist, der auf den Datenblock 8 verweist, aus dem die Signatur berechnet wurde. Eine Zusammenfassungsebene 76 eins zeigt an, dass es sich bei der Signatur 72 in dem Eintrag 70 um eine zusammengefasste Signatur handelt, die durch Ausführen einer Zusammenfassungsoperation mit zwei oder mehreren Datenblocksignaturen 72 der ersten Zusammenfassungsebene 0 berechnet wurde, die direkt aus dem Datenblock 8 berechnet wurden. Eine Zusammenfassungsebene n zeigt an, dass die Datenblocksignatur aus zusammengefassten oder Datenblocksignaturen berechnet wurde, die auf der (n-1)ten oder einer vorhergehenden Zusammenfassungsebene berechnet wurden. Zum Beispiel zeigt eine Zusammenfassungsebene zwei an, dass die zusammengefassten Signaturen aus den zusammengefassten Signaturen auf der ersten Zusammenfassungsebene berechnet wurden.
-
Gemäß bestimmten Ausführungsformen wird eine Zusammenfassungsoperation mit Signaturen 72 in Einträgen 70 ausgeführt, die auf aufeinanderfolgende Datenblöcke 8 in dem Speicher 10 verweisen 74, sodass der Speicherverweis 74 für die zusammengefasste Signatur auf aufeinanderfolgende Datenblöcke 8 verweist.
-
4 veranschaulicht ein Beispiel von Einträgen 70 in dem Deduplizierungs-Index 16. Die Datenblockeinträge 80 der ersten Ebene, der Zusammenfassungsebene 0, werden durch Berechnen der Signaturen direkt aus den Datenblöcken 82 erzeugt, die im Einzelnen mit 82a bis 82i bezeichnet sind. Die Einträge 84 der zweiten Ebene von zusammengefassten, der Zusammenfassungsebene 1, werden durch Ausführen einer Zusammenfassungsoperation (z. B. einer Multiplikation) mit den Signaturen von zwei Einträgen berechnet, die auf aufeinanderfolgende Datenblöcke von der vorhergehenden Zusammenfassungsebene 1 verweisen. Die Einträge 86 der dritten Zusammenfassungsebene, der Zusammenfassungsebene 2, weisen zusammengefasste Signaturen auf, die durch Ausführen der Zusammenfassungsoperation mit der zusammengefassten Signatur von zwei Einträgen 84 der vorhergehenden zweiten Zusammenfassungsebene berechnet wurden, die auf aufeinanderfolgende Datenblöcke verweisen. Und schließlich weisen die Einträge 88 der vierten Zusammenfassungsebene zusammengefasste Signaturen auf, die durch Ausführen der Zusammenfassungsoperation mit den Einträgen 86 der vorhergehenden Ebene berechnet wurden, die auf aufeinanderfolgende Datenblöcke verweisen. Auf diese Weise weist jede weitere Zusammenfassungsebene Einträge auf, die mehrere Einträge in sich vereinen, die auf aufeinanderfolgende Sätze von einem oder mehreren Datenblöcken verweisen, um einen zusammengefassten Eintrag zu bilden, der alle aufeinanderfolgenden Datenblöcke darstellt, auf welche die mehreren Einträge verweisen, die der Zusammenfassungsoperation unterworfen wurden.
-
Zum Beispiel verweisen die Deduplizierungs-Einträge 80a und 80b auf die Datenblöcke 82a und 82b. Der Eintrag 84a wird durch Zusammenfassen der Signaturen in den Einträgen 80a und 80b gebildet, und der Eintrag 84a verweist auf die aufeinanderfolgenden Datenblöcke 82a und 82b, auf welche die zusammengefassten Einträge 80a und 80b verweisen, die der Eintrag 84a ersetzen kann. Der Deduplizierungs-Eintrag 86a wird durch Zusammenfassen der Signaturen in den Einträgen 84a und 84b gebildet, sodass der Eintrag 86a auf die aufeinanderfolgenden Datenblöcke 82a, 82b, 82c und 82d verweist, auf welche die zusammengefassten Einträge 84a und 84b verweisen, die der Eintrag 86a ersetzen kann. Der Deduplizierungs-Eintrag 88a wird durch Zusammenfassen der Signaturen in den Einträgen 86a und 86b gebildet, sodass der Eintrag 88a auf aufeinanderfolgende Datenblöcke 82a, 82b, 82c, 82d, 82e, 82f, 82g und 82h verweist, auf welche die zusammengefassten Einträge 86a und 86b verweisen, die der Eintrag 88a ersetzen kann. Da der Deduplizierungs-Index 16 zum Speichern der Deduplizierungs-Einträge 70 zusätzlichen Speicherplatz benötigt, kann auf diese Weise Speicherplatz freigegeben werden, sodass weniger Einträge, d. h. Signaturen, auf dieselben Datenblöcke 8 in dem Speicher 10 verweisen.
-
Gemäß den obigen Ausführungsformen findet bei der Zusammenfassungsoperation das Zusammenfassen von zwei Einträgen auf einer vorhergehenden Zusammenfassungsebene statt, die auf aufeinanderfolgende Datenblöcke verweisen. Gemäß weiteren Ausführungsformen kann bei einer Zusammenfassungsoperation eine Operation mit mehr als zwei Einträgen stattfinden, die auf aufeinanderfolgende Datenblöcke verweisen, sodass ein zusammengefasster Eintrag mehr als zwei Einträge ersetzen und damit auf die aufeinanderfolgenden Datenblöcke verweisen kann, auf die mehr als zwei zusammengefasste Einträge verweisen. Darüber hinaus kann bei bestimmten Ausführungsformen eine Zusammenfassungsoperation mit Einträgen auf verschiedenen Ebenen ausgeführt werden, solange die Einträge auf verschiedenen Ebenen auf aufeinanderfolgende Datenblöcke verweisen.
-
Die Zusammenfassungsoperation mit Blocksignaturen oder zusammengefassten Signaturen kann eine Verkettung oder andere Operation aufweisen. Bei einer Ausführungsform können durch die Zusammenführungsoperation zwei Signaturen mit m und n Bytes verkettet werden, um eine neue zusammengefasste Signatur mit m plus n Bytes zu bilden. Bei weiteren Ausführungsformen können zusätzliche Operationen an den verketteten Signaturen ausgeführt werden, beispielsweise indem ein weiterer Hash-Wert genommen wird, um die letztendliche Signatur zu erzeugen. Bei noch weiteren Ausführungsformen können zur der Zusammenfassungsoperation andere geeignete Arten von Operationen gehören, darunter Multiplikationen usw., ohne auf diese beschränkt zu sein.
-
Bei Ausführungsformen, bei denen zwei Einträge zusammengefasst werden, kann die Anzahl von Datenblöcken, auf die ein Eintrag auf einer Zusammenfassungsebene n, (n = 0, 1, 2, 3...) verweist, durch den Ausdruck 2n ausgedrückt werden.
-
5 veranschaulicht eine Ausführungsform durch den Speichermanager 12 ausgeführter Operationen zum Einfügen eines Datenblocks von einem empfangenen Datenobjekt in den Speicher 10. Bei einem einzufügenden Datenblock kann es sich um einen Datenblock variabler Länge handeln, der durch Anwenden eines Fingerabdruckalgorithmus wie beispielsweise des Rabin-Fingerabdruckschemas auf das Datenobjekt zum Ermitteln der Datenblockgrenzen ermittelt werden kann, oder um einen Datenblock fester Länge, sodass die Grenzen der Datenblöcke in dem Datenobjekt fester Länge ermittelt werden. Nach dem Empfangen des in den Speicher 10 einzufügenden Datenblocks (in Block 100) erzeugt der Speichermanager 12 (in Block 102) eine Signatur für den Datenblock und schreibt diesen (in Block 104) in den Speicher 10. Der Speichermanager 12 fügt (in Block 104) einen Eintrag 70 in den Deduplizierungs-Index 16 ein, der die Signatur 72, einen Verweis auf den in den Speicher 10 geschriebenen Datenblock und eine Zusammenfassungsebene 0 anzeigt.
-
6 veranschaulicht eine Ausführungsform von Operationen, die durch den Speichermanager 12 ausgeführt werden, um Einträge 70 des Deduplizierungs-Indexes 16 zusammenzufassen. Der Speichermanager 12 startet (in Block 120) eine Operation zum Zusammenfassen der Einträge 70 des Indexes 16 als Reaktion auf ein Ereignis. Zum Beispiel kann der Speichermanager 12 Einträge zusammenfassen, wenn der verfügbare Speicherplatz im Speicher des Servers 2 einen Schwellenwert erreicht. Alternativ kann der Speichermanager 12 periodisch Einträge zusammenfassen, nachdem der Index 16 eine bestimmte Größe erreicht hat oder nach einer bestimmten Zeitspanne. Nach dem Starten der Zusammenfassungsoperation (in Block 120) ermittelt der Speichermanager 14 (in Block 122) in dem Index 16 zusammenzufassende Einträge 70 auf der Grundlage eines Kriteriums der Datenblöcke 8, auf welche die Einträge 70 verweisen, sodass die vom Zusammenfassen betroffenen und nicht betroffenen Einträge auf alle Datenblöcke 8 in dem Speicher verweisen, die in Datenobjekten 50 enthalten sind. Der Speichermanager 12 wählt (in Block 126) mehrere der ermittelten Einträge 70 aus, die das Kriterium erfüllen und auf aufeinanderfolgende Datenblöcke 8 in dem Speicher 10 verweisen, die zusammengefasst werden sollen. Die ausgewählten zusammenzufassenden Einträge, die auf aufeinanderfolgende Datenblöcke verweisen, können sich auf ein und derselben oder auf verschiedenen Zusammenfassungsebenen befinden.
-
Das Kriterium zum Auswählen der zusammenzufassenden Datenblöcke kann ein Alter der Datenblöcke in dem Speicher aufweisen, sodass Datenblöcke, die längere Zeit im Speicher waren, ohne aktualisiert zu werden, eher zum Zusammenfassen ausgewählt werden als Datenblöcke, die vor kürzerer Zeit eingefügt oder aktualisiert worden sind. Es können weitere Kriterien verwendet werden, um weniger nachgefragte Datenblöcke auszuwählen, wobei die Nachfrage nach einem Datenblock ermittelt werden kann: anhand der Häufigkeit von Eingabe/Ausgabe-(E/A-)Zugriffen auf die Datenblöcke in dem Speicher, sodass Datenblöcke stärker nachgefragt sind, auf die häufiger zugegriffen wird; anhand einer Häufigkeit, mit der die Datenblöcke in dem Speicher in Datenobjekten erscheinen, die in den Speicher eingefügt werden, sodass Datenblöcke, die in mehreren Datenobjekten erscheinen, stärker nachgefragt sind; anhand eines Speicherbereichs, in dem die Datenblöcke gespeichert sind, sodass Datenblöcke, die in einem aktuellerem Bereich gespeichert sind, auf den häufiger zugegriffen wird, stärker nachgefragt sind; und anhand eines Datentyps in den Datenblöcken, wobei Datenblöcke, deren Datentyp wichtiger ist und auf die häufiger zugegriffen wird, als stärker nachgefragt angesehen werden können.
-
Der Speichermanager 12 führt (in Block 128) eine Zusammenfassungsoperation mit den Datenblocksignaturen 72 in den ausgewählten Einträgen 70 aus, um eine zusammengefasste Signatur zu erzeugen. Die Zusammenfassungsoperation kann das Multiplizieren der Signaturwerte oder das Ausführen anderer Operationen beinhalten, um einen neuen zusammengefassten Signaturwert zu bestimmen. In den Index 16 wird (in Block 130) ein Eintrag 70 eingefügt, der die zusammenfasste Signatur 72, einen Verweis 74 auf die Datenblöcke in dem Speicher 10, aus denen die verarbeitete zusammengefasste und/oder Datenblocksignatur erzeugt wurde, und eine Zusammenfassungsebene 76 enthält, die von der Zusammenfassungsebene der ausgewählten Einträge aus, die von der Zusammenfassungsoperation betroffen sind, eine nächste Ebene aufweist. Die ausgewählten Einträge, die von dem Zusammenfassen betroffen sind, werden (in Block 132) entfernt, um in dem Deduplizierungs-Index 16 Platz zu schaffen. Wenn es (in Block 134) mehrere Einträge gibt, die noch nicht zusammengefügt wurden, geht der Prozess zurück zu Block 126, um weitere ermittelte Einträge zum Zusammenfassen auszuwählen, andernfalls ist der Prozess beendet.
-
7a und 7b veranschaulichen eine Ausführungsform durch den Speichermanager 12 ausgeführter Operationen zum Verarbeiten eines empfangenen Datenobjekts unter Verwendung des Deduplizierungs-Indexes 16 zum Ermitteln nicht doppelt vorkommender Datenblöcke in dem empfangenen Datenobjekt, die in den Speicher 10 eingefügt werden sollen. Nach dem Empfangen eines Objekts (in Block 150), verarbeitet der Speichermanager 12 (in Block 152) das empfangene Datenobjekt, um Datenblöcke (mit fester oder variabler Größe) der Daten in dem empfangenen Datenobjekt zu ermitteln. Zum Ermitteln von Datenblöcken mit variabler Größe kann der Speichermanager 12 einen Fingerabdruckalgorithmus wie beispielsweise das Rabin-Fingerabdruckschema anwenden. Dann kann der Speichermanager 12 einen Prozess zum Berechnen von Signaturwerten für einzelne Datenblöcke und Kombinationen von Datenblöcken starten, um diese mit den zusammengefassten Signaturen 72 für zusammengefasste Einträge 70 zu vergleichen. Ein Zähler für Zusammenfassungsebenen wird (in Block 154) auf null gesetzt. Der Speichermanager 12 ermittelt (in Block 156) Datenblocksignaturen für die ermittelten Datenblöcke durch Verarbeiten der Daten in den ermittelten Datenblöcken des empfangenen Datenobjekts, wobei jede ermittelte Datenblocksignatur dem Datenblock zugehörig ist, der zum Ermitteln der Signatur verarbeitet wurde. 8 zeigt, wie der Speichermanager 12 Signaturdaten 190 der Datenblöcke des empfangenen Objekts für jede berechnete Signatur und Daten über den einen oder mehrere Datenblöcke 194 verwalten kann, die der berechneten Signatur 194 zugehörig sind.
-
Nach dem Ermitteln der Datenblocksignaturen für jeden einzelnen Datenblock in dem empfangenen Objekt ermittelt der Speichermanager 12 (in Block 158) aus dem Deduplizierungs-Index 16 eine höchste Zusammenfassungsebene 76 in den Einträgen 70 des Deduplizierungs-Indexes 16, d. h. die höchste Zusammenfassungsebene, für die Signaturen berechnet worden sind. Wenn (in Block 160) die höchste ermittelte Zusammenfassungsebene den Wert des Zählers für Zusammenfassungsebenen überschreitet, führt der Speichermanager 12 (in Block 162) die Zusammenfassungsoperation mit den zusammengefassten oder Datenblocksignaturen 190 aus, die für die letzte betrachtete Zusammenfassungsebene berechnet wurden, um eine weitere Ebene von zusammengefassten Signaturen zu erzeugen. Der Speichermanager 12 kann dieselbe Zusammenfassungsoperation wie zum Erzeugen des Deduplizierungs-Indexes in 6 ausführen, um einen Wert für eine zusammengefasste Signatur aus mindestens zwei anderen Signaturwerten zu erzeugen, z. B. durch Multiplizieren der Signaturwerte. Der Zählerwert für Zusammenfassungsebenen wird (in Block 164) erhöht, und der Prozess geht zurück zu Block 160, um zu ermitteln, ob aus den zuvor berechneten zusammengefassten Signaturen auf der vorhergehenden Ebene eine nächste Ebene von zusammengefassten Signaturen berechnet werden soll, was durch die Variable des Zählers für Zusammenfassungsebenen angezeigt wird. Auf diese Weise berechnet der Speichermanager 16 Signaturwerte von empfangenen Datenobjekten, um Datenblocksignaturen aus den Datenblöcken in dem Datenobjekt und zusammengefasste Signaturen zu erzeugen, die durch Ausführen der Zusammenfassungsoperation (Multiplizieren) mit zuvor berechneten zusammengefassten oder Datenblocksignaturen berechnet wurden.
-
Wenn die (in Block 160) ermittelte höchste Zusammenfassungsebene den Zusammenfassungszählerwert nicht überschreitet, was nach dem Erzeugen von zusammengefassten und Datenblocksignaturen für das empfangene Datenobjekt bis zur höchsten Zusammenfassungsebene in dem Deduplizierungs-Index 16 geschieht, geht der Prozess (von Block 166) weiter zu Block 170 in 7b. Der Speichermanager 12 ermittelt (in Block 170), ob die von den Datenblöcken in dem empfangenen Datenobjekt ermittelten Datenblocksignaturen und zusammengefassten Signaturen mit Signaturen 72 in den Einträgen 70 des Deduplizierungs-Indexes 16 übereinstimmen. Eine Übereinstimmung zeigt an, dass die Datenblöcke in dem empfangenen Datenobjekt, das der zusammengefassten oder Datenblocksignatur zugehörig ist, Kopien von aufeinanderfolgenden Datenblöcken 8 sind, die bereits im Speicher 10 gespeichert sind, und eine nicht übereinstimmende Signatur zeigt an, dass die der nicht übereinstimmenden zusammengefassten oder Datenblocksignatur zugehörigen Datenblöcke keine Kopien von Daten sind, die in dem Speicher 10 gespeichert sind. Wenn es (in Block 172) nicht übereinstimmende Signaturen gibt, die aus den zusammengefassten oder Datenblocksignaturen des empfangenen Datenobjekts berechnet wurden, die nicht mit Signaturen im Index 16 übereinstimmen, werden die Datenblöcke in dem empfangenen Datenobjekt, die den ermittelten nicht übereinstimmenden Signaturen zugehörig sind, gemäß den Operationen von 5 (in Block 174) in den Speicher geschrieben. Datenblöcke in dem empfangenen Datenobjekt, die den zusammengefassten und Datenblocksignaturen zugehörig sind, die mit den Signaturen in dem Index übereinstimmen, werden nicht in den Speicher 10 geschrieben, da sie Kopien bereits im Speicher 10 gespeicherter Daten darstellen.
-
Gemäß den beschriebenen Ausführungsformen werden Einträge eines Deduplizierungs-Indexes zusammengefasst, um in dem Index freien Platz zu schaffen und zu ermöglichen, dass Verweise auf Datenblöcke in dem Speicher in Verbindung mit anderen Datenblöcken durch eine zusammengefasste Signatur in dem Deduplizierungs-Index erhalten bleiben. Wenn der Platz im Deduplizierungs-Index begrenzt werden muss, ermöglichen die beschriebenen Ausführungsformen, dass Datenblöcke in dem Deduplizierungs-Index dargestellt bleiben, wenn vermieden werden soll, dass Daten doppelt in den Speicher geschrieben werden. Gemäß bestimmten Ausführungsformen können Einträge des Deduplizierungs-Indexes, die auf seltener abgerufene Datenblöcke verweisen, zusammengefasst werden, um Platz in dem Deduplizierungs-Index zu schaffen, um auf neu in den Speicher aufgenommene Datenblöcke zu verweisen und gleichzeitig zu gewährleisten, dass zum Deduplizieren Indexeinträge weiterhin auf diese seltener abgerufenen aufeinanderfolgenden Datenblöcke verweisen können.
-
Die beschriebenen Ausführungsformen zum Verwalten des Deduplizierungs-Indexes 16 und zum Zusammenfassen von Einträgen können im Server 2 ausgeführt werden, wenn dieser Datenobjekte von den Clients 4 empfängt. Alternativ können die Clients 4 den Deduplizierungs-Index 16 von Daten in dem Speicher 10 verwalten, um dadurch die Anzahl der im Speicher 10 zu speichernden Datenblöcke zu minimieren, die zum Server 4 übertragen werden. Der Client 4 kann den Deduplizierungs-Index 16 dazu verwenden, durch Ausführen der Operationen von 7a und 7b Datenblöcke in einem Datenobjekt zu ermitteln, die Kopien von Datenblöcken in dem Speicher 10 sind, und dann die Daten durch die Signaturen in den Indexeinträgen für die Datenblöcke zu ersetzen, auf die in den Einträgen des Deduplizierungs-Indexes 16 verwiesen wird, um das über das Netzwerk 6 zum Server 2 übertragene Datenvolumen zu minimieren.
-
9 veranschaulicht eine Ausführungsform eines Computerknotens 302, der eine Ausführungsart des Serversystems 2 und der Clientsysteme 4 aufweisen kann. Der Serverknoten 2 und die Clientknoten 4 können in einer Cloud-Computing-Umgebung implementiert sein, in welcher der Server 2 Speicher- und Deduplizierungs-Dienste für die Clients 4 bereitstellt. Der Computerknoten 302 stellt lediglich ein Beispiel eines geeigneten Datenverarbeitungsknotens dar und ist nicht als Einschränkung des Schutzumfangs der Verwendung oder Funktionalität von hierin beschriebenen Ausführungsformen der Erfindung anzusehen. Vielmehr kann der Computerknoten 302 so implementiert werden, dass er jede oben dargelegte Funktionalität ausführt.
-
Der Computerknoten 302 kann mit zahlreichen weiteren Umgebungen oder Konfigurationen von Universal- oder Spezialdatenverarbeitungssystemen betrieben werden. Als Beispiele für allgemein bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung mit dem Computerknoten 302 geeignet sind, kommen infrage, ohne darauf beschränkt zu sein, Personal Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, tragbare oder Laptopeinheiten, Mehrprozessorsysteme, Systeme auf Mikroprozessorbasis, Set-Top-Boxen, programmierbare Heimelektronik, Netz-PCs, Kleincomputersysteme, Großcomputersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der obigen Systeme oder Einheiten enthalten, und dergleichen.
-
Der Computerknoten 302 kann allgemein in Verbindung mit ausführbaren Anweisungen eines Computersystems beschrieben werden, beispielsweise Programmmodule, die durch ein Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Tasks ausführen oder bestimmte abstrakte Datentypen implementieren. Der Computerknoten 302 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, in denen Tasks durch ferne Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetz miteinander verknüpft sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule in Speichermedien sowohl von lokalen als auch fernen Computersystemen angeordnet sein, darunter in Speichereinheiten.
-
Der Computerknoten 302 gemäß 9 ist in Form einer Universaldatenverarbeitungseinheit dargestellt. Die Komponenten des Computersystems/Servers 302 können, ohne darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Zentraleinheiten 304, einen Systemspeicher 306 und einen Bus 308 enthalten, der verschiedene Systemkomponenten miteinander verbindet, darunter den Systemspeicher 306 mit dem Prozessor 304.
-
Der Bus 308 stellt einen oder mehrere von verschiedenen Typen von Busstrukturen dar, darunter eine Speicherbus- oder Speichersteuereinheit, einen peripheren Bus, einen beschleunigten Grafikanschluss und einen Prozessor- oder lokalen Bus unter Verwendung einer aus einer Vielfalt von Busarchitekturen. Als Beispiele kommen infrage, ohne darauf beschränkt zu sein, der ISA-Bus (Industriestandard-Architektur), der MCA-Bus (Mikrokanalarchitektur), der EISA-Bus (Weiterentwicklung der Industriestandard-Architektur), der lokale VESA-Bus (Video Electronics Standards Association) und der PCI-Bus (Verbindungsbus für Erweiterungskomponenten).
-
Üblicherweise enthält der Computerknoten 302 eine Vielfalt von computerlesbaren Medien. Bei solchen Medien kann es sich um beliebige verfügbare Medien handeln, auf die der Computerknoten 302 zugreifen kann und die sowohl flüchtige als auch permanente Medien, austauschbare und fest eingebaute Medien enthalten und zum Speichern der Objektdaten 14, des Deduplizierungs-Indexes 16, der Datenblockdaten 18 und des Programms des Speichermanagers 12 verwendet werden können.
-
Der Systemspeicher 306 kann computerlesbare Medien in Form eines flüchtigen Speichers wie beispielsweise eines Direktzugriffsspeichers (RAM) 310 und/oder eines Cachespeichers 312 enthalten. Der Computerknoten 302 kann ferner weitere austauschbare/fest eingebaute, flüchtige/nichtflüchtige Speichermedien des Computersystems enthalten. Lediglich beispielhaft kann das Speichersystem 313 zum Lesen von einem (nicht gezeigten und üblicherweise als „Festplattenlaufwerk” bezeichneten) fest eingebauten permanenten magnetischen Medium und zum Schreiben darauf bereitgestellt werden. Es können auch ein nicht gezeigtes Magnetplattenlaufwerk zum Lesen von einer austauschbaren permanenten Magnetplatte (z. B. einer „Diskette”) und zum Schreiben darauf sowie ein optisches Plattenlaufwerk zum Lesen von einer austauschbaren permanenten optischen Platte wie beispielsweise einer CD-ROM, einer DVD-ROM oder anderen optischen Medien und zum Schreiben darauf bereitgestellt werden. In solchen Fällen kann jede Einheit durch eine oder mehrere Medienschnittstellen mit dem Bus 308 verbunden sein. Wie unten näher dargestellt und beschrieben kann der Speicher 306 mindestens ein Programmprodukt enthalten, das einen Satz (z. B. mindestens ein) von Programmmodulen aufweist, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Beispielsweise können, ohne darauf beschränkt zu sein, ein Programm/Dienstprogramm 314, das einen Satz (mindestens ein) von Programmmodulen 316 aufweist, sowie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten im Speicher 306 gespeichert sein. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, weitere Programmmodule und Programmdaten oder bestimmte Kombinationen derselben können jeweils eine Ausführungsart einer vernetzten Umgebung enthalten. Die Programmmodule 316 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von hierin beschriebenen Ausführungsformen der Erfindung aus, beispielsweise Operationen des Speichermanagers 12.
-
Der Computerknoten 302 kann auch Daten austauschen mit einer oder mehreren externen Einheiten 318 wie beispielsweise einer Tastatur, mit einer Zeigeeinheit, einem Bildschirm 320 usw.; mit einer oder mehreren Einheiten, die einen Benutzer zum Einwirken auf den Computerknoten 302 befähigen; und/oder mit beliebigen Einheiten (z. B. einer Netzwerkkarte, einem Modem usw.), die das Computersystem/den Server 302 befähigen, Daten mit einer oder mehreren weiteren Datenverarbeitungseinheiten auszutauschen. Ein solcher Datenaustausch kann über Eingabe/Ausgabe-(E/A-)Schnittstellen 322 erfolgen. Weiterhin kann der Computerknoten 302 über einen Netzadapter 324 Daten mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z. B. dem Internet) austauschen. Der gezeigte Netzadapter 324 tauscht Daten über den Bus 308 mit den anderen Komponenten des Computersystems/des Servers 302 aus. Es sollte klar sein, dass in Verbindung mit dem Computersystem/Server 302 auch weitere Hardware- und/oder Softwarekomponenten verwendet werden können, die hier nicht gezeigt sind. Als Beispiele kommen infrage, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Prozessoreinheiten, externe Plattenlaufwerkanordnungen, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
-
Die beschriebenen Operationen können unter Verwendung von Standardprogrammier- und/oder -konstruktionstechniken als Verfahren, Vorrichtung oder Computerprogrammprodukt implementiert werden, um Software, Firmware, Hardware oder beliebige Kombinationen derselben zu erzeugen. Demgemäß können Aspekte der Ausführungsformen die Form einer vollständigen Hardwareausführungsform, einer vollständigen Softwareausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte in sich vereint und die hierin sämtlich allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Darüber hinaus können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf gespeicherten computerlesbaren Programmcode verkörpert ist.
-
Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln. Als spezielle Beispiele für das computerlesbare Speichermedium (eine nicht erschöpfende Aufzählung) kommen unter anderem infrage: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination derselben. In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel im Basisband oder als Trägerwelle. Ein solches weitergeleitetes Signal kann eine Vielfalt von Formen annehmen, darunter, ohne darauf beschränkt zu sein, elektromagnetisch, optisch oder eine beliebige geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten oder transportieren kann.
-
Ein auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben.
-
Ein Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, 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 durch einen beliebigen Typ von Netzwerk verbunden sein, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internetdienstanbieters).
-
Aspekte der vorliegenden Erfindung werden oben unter Bezugnahme auf Ablaufpläne und/oder Funktionsschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufpläne und/oder Funktionsschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Funktionsschaubildern durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen des Computerprogramms können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenbankvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenbankvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Funktionsschaubilder angegebenen Funktionen/Aktionen erzeugen.
-
Diese Anweisungen eines Computerprogramms können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenbankvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise derart zu funktionieren, dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt erzeugen, das Anweisungen enthält, die die in dem Block oder den Blöcken in den Ablaufplänen und/oder Funktionsschaubildern angegebenen Funktionen/Aktionen umsetzen.
-
Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenbankvorrichtung oder andere Einheiten geladen werden, um die Ausführung einer Folge von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder anderen Einheiten zu veranlassen, um einen computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken in den Ablaufplänen und/oder Funktionsschaubildern angegebenen Funktionen/Aktionen bereitstellen.
-
Die Variable „n” dient zum Darstellen einer variablen positiven Ganzzahl eines Elements, beispielsweise einer variablen Anzahl von Datenblockkennungen in Objektdaten, einer variablen Anzahl von Zusammenfassungsebenen usw. Diese verschiedenen Elementen zugehörigen Variablen können einen gleichen oder verschiedenen ganzzahligen Wert aufweisen.
-
Die Begriffe „eine beliebige Ausführungsform”, „Ausführungsform”, „Ausführungsformen”, „die Ausführungsform”, „die Ausführungsformen”, „eine oder mehrere Ausführungsformen”, „einige Ausführungsformen” und „eine Ausführungsform” bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)”, sofern nicht ausdrücklich anders angegeben.
-
Die Begriffe „enthalten”, „aufweisen”, „haben” und deren Varianten bedeuten „einschließlich, ohne darauf beschränkt zu sein”, sofern nicht ausdrücklich anders angegeben.
-
Die nummerierte Aufzählung von Objekten ist nicht dahingehend auszulegen, dass beliebige oder alle Objekte sich gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
-
Die Begriffe „ein”, „eine” und „der, die, das” bedeuten ”eins oder mehrere”, sofern nicht ausdrücklich anders angegeben.
-
Einheiten, die Daten miteinander austauschen, brauchen nicht ständig Daten miteinander auszutauschen, sofern nicht ausdrücklich anders angegeben. Darüber hinaus können Einheiten, die Daten miteinander austauschen, Daten direkt oder indirekt über eine oder mehrere Vermittlungseinheiten austauschen.
-
Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die Daten miteinander austauschen, ist nicht dahingehend auszulegen, dass alle diese Komponenten erforderlich sind. Vielmehr wird eine Vielfalt von optionalen Komponenten beschrieben, um die breite Vielfalt an möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
-
Obwohl Arbeitsschritte, Verfahrensschritte, Algorithmen und dergleichen in einer Reihenfolge beschrieben werden, können solche Prozesse, Verfahren und Algorithmen ferner so konfiguriert sein, dass sie in einer anderen Reihenfolge abgewickelt werden. Mit anderen Worten, jede Folge oder Reihenfolge von Schritten, die beschrieben werden kann, bedeutet nicht unbedingt, dass die Schritte in dieser Reihenfolge ausgeführt werden müssen. Die Schritte der hierin beschriebenen Prozesse können in jeder geeigneten Reihenfolge ausgeführt werden. Ferner können manche Schritte gleichzeitig ausgeführt werden.
-
Wenn hierin eine einzelne Einheit oder ein einzelner Gegenstand beschrieben wird, ist es ganz offensichtlich, dass anstelle einer einzigen Einheit oder eines einzigen Gegenstands mehr als eine Einheit oder ein Gegenstand verwendet werden kann (unabhängig davon, ob diese zusammenwirken). Wenn hierin mehr als eine Einheit oder ein Gegenstand beschrieben werden (unabhängig davon, ob diese zusammenwirken) ist es ebenso ganz offensichtlich, dass anstelle der mehr als einen Einheit oder des mehr als einen Gegenstands eine einzige Einheit oder ein einziger Gegenstand oder dass anstelle der gezeigten Anzahl von Einheiten oder Programmen eine verschiedene Anzahl von Einheiten/Gegenständen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten umgesetzt werden, die nicht ausdrücklich so beschrieben werden, als hätten sie eine solche Funktionalität oder solche Merkmale. Somit brauchen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht zu enthalten.
-
Die dargestellten Operationen der Figuren zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge ablaufen. Gemäß alternativen Ausführungsformen, können bestimmte Operationen in einer anderen Reihenfolge ausgeführt, geändert oder entfernt werden. Darüber hinaus können zu der oben beschriebenen Logik Schritte hinzugefügt und dennoch mit den beschriebenen Ausführungsformen im Einklang stehen. Ferner können hierin beschriebene Operationen nacheinander erfolgen, oder bestimmte Operationen können parallel abgewickelt werden. Weiterhin können Operationen durch eine einzige Prozessoreinheit oder durch verteilte Prozessoreinheiten ausgeführt werden.
-
Die obige Beschreibung verschiedener Ausführungsformen der Erfindung wurde zur Veranschaulichung und Beschreibung vorgelegt. Sie erhebt keinen Anspruch auf Vollständigkeit oder Einschränkung der Erfindung genau auf die offenbarte Form. Im Hinblick auf die obigen Lehren sind viele Änderungen und Varianten möglich. Der Schutzumfang der Erfindung soll nicht durch diese detaillierte Beschreibung, sondern durch die beiliegenden Ansprüche eingeschränkt werden. Die obige Beschreibung, die angegebenen Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Anwendung der gesamten Erfindung bereit. Da viele Ausführungsformen der Erfindung erstellt werden können, ohne vom Wesensgehalt und Schutzumfang der Erfindung abzuweichen, ist die Erfindung in den folgenden Ansprüchen niedergelegt.