DE112012003503T5 - Skalierbares Deduplizierungssystem mit kleinen Blöcken - Google Patents

Skalierbares Deduplizierungssystem mit kleinen Blöcken Download PDF

Info

Publication number
DE112012003503T5
DE112012003503T5 DE112012003503.8T DE112012003503T DE112012003503T5 DE 112012003503 T5 DE112012003503 T5 DE 112012003503T5 DE 112012003503 T DE112012003503 T DE 112012003503T DE 112012003503 T5 DE112012003503 T5 DE 112012003503T5
Authority
DE
Germany
Prior art keywords
spectrum
small data
data chunk
signature
characters
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.)
Ceased
Application number
DE112012003503.8T
Other languages
English (en)
Inventor
c/o IBM Meiri Ehud
c/o IBM Klein Shmuel T.
c/o IBM Atidim Industrial Park Bui Toaff Yair
c/o IBM Building 7 Hirsch Michael
c/o IBM Israel Asher Ron
c/o IBM Toronto Software Lab Aronovich Lior
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012003503T5 publication Critical patent/DE112012003503T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • H03M7/3093Data deduplication using fixed length segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Es werden beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogrammprodukten für eine skalierbare Datendeduplizierung bereitgestellt, die mit kleinen Daten-Chunks in einer Datenverarbeitungsumgebung arbeitet. In einer Ausführungsform wird lediglich beispielhaft für jeden der kleinen Daten-Chunks beruhend auf einer Verknüpfung einer Darstellung von in dem kleinen Daten-Chunk vorkommenden Zeichen mit einer Darstellung von Häufigkeiten des kleinen Daten-Chunks eine Signatur erzeugt. Eine Signatur wird beruhend auf einer Verknüpfung einer Darstellung von auftauchenden Zeichen erzeugt. Die Signatur wird dazu verwendet, beim Auswählen der zu deduplizierenden Daten zu helfen. Zusätzliche Ausführungsformen von Systemen und Computerprogrammprodukten werden dargelegt, die zugehörige Vorteile bereitstellen.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein Computer und konkret eine skalierbare Deduplizierung, bei der eine differenzierte (fine-grained) Auflösung benötigt wird, um Zugriff auf kleine Datenblöcke in einer Datenverarbeitungsspeicherumgebung zu ermöglichen.
  • Beschreibung des verwandten Fachgebiets
  • In der heutigen Gesellschaft sind Computersysteme alltäglich. Computersysteme findet man beispielsweise am Arbeitsplatz, zu Hause oder in der Schule. Zu Computersystemen können Datenspeichersysteme bzw. Plattenspeichersysteme zum Verarbeiten und Speichern von Daten gehören. Täglich müssen große Datenmengen verarbeitet werden, und die aktuelle Tendenz deutet darauf hin, dass diese Mengen in absehbarer Zukunft weiter ansteigen werden. Eine wirksame Weise zum Lösen des Problems besteht in der Verwendung von Deduplizierung. Der einem Deduplizierungssystem zu Grunde liegende Gedanke besteht darin, die Tatsache auszunutzen, dass große Teile der verfügbaren Daten immer wieder kopiert und ohne irgendwelche Änderungen weitergeleitet werden, indem wiederholte Daten ausfindig gemacht und lediglich beim ersten Vorkommen gespeichert werden. Nachfolgende Kopien werden mit Verweisen auf das gespeicherte Vorkommen ersetzt, wodurch die Speicheranforderungen erheblich verringert werden, wenn sich die Daten tatsächlich wiederholen.
  • ZUSAMMENFASSUNG DER BESCHRIEBENEN AUSFÜHRUNGSFORMEN
  • Datendeduplizierung bezieht sich auf das Verringern und/oder Beseitigen von redundanten Daten. Bei der Datendeduplizierung wird ein Datenobjekt, bei dem es sich um eine Datei, einen Datenstrom oder eine andere Datenform handeln kann, es sich um eine Datei, einen Datenstrom oder eine andere Datenform handeln kann, unter Verwendung eines Chunking-Verfahrens in einen oder mehrere Chunks genannte Teile aufgeteilt. Bei einem Datendeduplizierungsprozess werden doppelte Datenkopien verringert oder beseitigt, wodurch eine minimale Menge von redundanten Kopien bzw. eine einzelne Kopie der Daten übrigbleiben. Die Verwendung von Deduplizierungsprozessen stellt eine Vielfalt von Vorteilen wie zum Beispiel eine Verringerung der benötigten Speicherkapazität und eine höhere Netzwerkbandbreite bereit. Aufgrund dieser und anderer Vorteile ging die Deduplizierung in den letzten Jahren als äußerst wichtiges Technologiefeld in Datenverarbeitungsspeichersystemen hervor. Es wurden mehrere Ansätze zur Deduplizierung vorgeschlagen, von denen viele Hashing-Techniken verwenden.
  • Eine der größten Herausforderungen bei der Verwendung von Hashing-Techniken besteht darin, das richtige Gleichgewicht zwischen Einheitlichkeit auf der einen Seite, wobei eine Funktion eine Verteilung von Werten ergeben sollte, die so einheitlich wie möglich ist, um die Anzahl von Kollisionen (falschen Übereinstimmungen) zu minimieren, und Empfindlichkeit auf der anderen Seite zu finden, wobei geringfügige Änderungen in dem Chunk den entsprechenden Hash-Wert gar nicht oder lediglich geringfügig beeinflussen sollten.
  • Entsprechend, und angesichts des Vorangehenden, werden verschiedene beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogrammprodukten für eine skalierbare Datendeduplizierung bereitgestellt, die mit kleinen Daten-Chunks in einer Datenverarbeitungsumgebung arbeitet. In einer Ausführungsform wird lediglich beispielhaft für jeden der kleinen Daten-Chunks beruhend auf einer Verknüpfung einer Darstellung von in dem kleinen Daten-Chunk vorkommenden Zeichen mit einer Darstellung von Häufigkeiten des kleinen Daten-Chunks eine Signatur erzeugt. Eine Signatur wird beruhend auf einer Verknüpfung einer Darstellung von auftauchenden Zeichen erzeugt. Die Signatur wird dazu verwendet, beim Auswählen der zu deduplizierenden Daten zu helfen.
  • Zusätzlich zu der vorangegangenen beispielhaften Ausführungsform eines Verfahrens werden andere beispielhafte Ausführungsformen von Systemen und Computerprodukten bereitgestellt, die ähnliche Vorteile bereitstellen. Die vorangegangene Zusammenfassung wurde bereitgestellt, um eine Auswahl von Konzepten in vereinfachter Form vorzustellen, die nachfolgend in der ausführlichen Beschreibung näher beschrieben werden. Weder soll diese Zusammenfassung Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands bestimmen, noch soll sie als Hilfe beim Ermitteln des Umfangs des beanspruchten Gegenstands verwendet werden. Der beanspruchte Gegenstand ist nicht auf Ausführungen beschränkt, die eine beliebige oder alle im Abschnitt Hintergrund genannten Nachteile lösen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Damit die Vorteile der Erfindung ohne Weiteres verstanden werden, wird eine ausführlichere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf spezifische Ausführungsformen angeführt, die in den beigefügten Zeichnungen veranschaulicht werden. Unter dem Verständnis, dass diese Zeichnungen Ausführungsformen der Erfindung abbilden und deshalb nicht als deren Umfang einschränkend anzusehen sind, wird die Erfindung durch die Verwendung der beigefügten Zeichnungen mit zusätzlicher Genauigkeit und Ausführlichkeit erläutert, in denen:
  • 1 eine Datenverarbeitungssystemumgebung mit einer beispielhaften Speichereinheit veranschaulicht, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
  • 2 ein Ablaufplan ist, der ein beispielhaftes Verfahren für eine skalierbare Datendeduplizierung mit kleinen Blöcken veranschaulicht;
  • 3 ein beispielhaftes Schaubild veranschaulicht, das eine schematische Darstellung einer Aufteilung in Blöcke von Zeichenhäufigkeiten in einer Datenverarbeitungsumgebung zeigt, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
  • 4 ein beispielhaftes Schaubild veranschaulicht, das eine Anordnung verschiedener Bestandteile der approximativen Hash-Funktion zeigt, in der Aspekte der vorliegenden Erfindung umgesetzt werden können;
  • 5 ein Graph ist, der die Wahrscheinlichkeit zeigt, mit der man mit einer Prüfdatenbank mit einer Größe von 32 GB ein 1-Bit an jeder der 32 Bitstellen der definierten Signatur erhält;
  • 6 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Definieren von Daten-Chunks veranschaulicht;
  • 7a ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Definieren des Zeichenteils der Signaturdefinition veranschaulicht;
  • 7b ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Definieren des Häufigkeitsteils der Signaturdefinition veranschaulicht;
  • 7c ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Definieren des Zeichenpaarteils der Signaturdefinition veranschaulicht; und
  • 8 die in den Ablaufplänen aus den 7a, 7b und 7c verwendeten Verschiebungskonstanten definiert.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Wie vorher erwähnt, bezieht sich Datendeduplizierung auf das Verringern und/oder Beseitigen von redundanten Daten. Bei einem Datendeduplizierungsprozess werden doppelte Datenkopien verringert oder beseitigt, wodurch eine minimale Menge von redundanten Kopien bzw. eine einzelne Kopie der Daten übrigbleiben. Die Verwendung von Deduplizierungsprozessen stellt eine Vielfalt von Vorteilen wie zum Beispiel eine Verringerung der benötigten Speicherkapazität und eine höhere Netzwerkbandbreite bereit.
  • Ein Ansatz zur Deduplizierung beruhend auf Hashing kann schematisch wie folgt beschrieben werden. Die verfügbaren Daten werden in Chunks genannte Teile aufgeteilt (z. B. Ci und Cj). Diese Chunks können eine feste oder variable Größe aufweisen, und die (durchschnittliche) Größe eines Chunk kann klein wie zum Beispiel 4 bis 8 Kilobyte (KB) bis hin zu ziemlich groß wie zum Beispiel 16 Megabyte (MB) sein. Auf diese Chunks wird eine kryptografisch sichere Hash-Funktion (h) angewendet, was bedeutet, dass bei h(Ci) = h(Cj) mit einer äußerst geringen Fehlerwahrscheinlichkeit angenommen werden kann, dass die Chunks Ci und Cj identisch sind. Der Satz (S) verschiedener Hash-Werte wird gemeinsam mit Verweisen auf die entsprechenden Chunks in einer einen schnellen Zugriff und eine einfache Aktualisierung gestattenden Datenstruktur (D) gespeichert, üblicherweise in einer Hash-Tabelle oder einem B-Baum. Für jeden neuen zu behandelnden Chunk wird dessen Hash-Wert in D gesucht, und falls er dort auftaucht, kann man annehmen, dass es sich bei diesem bestimmten Chunk um ein Duplikat handelt und dieser somit nicht erneut gespeichert wird, sondern stattdessen durch einen Verweis auf sein früheres Vorkommen ersetzt wird. Wenn sich der Hash-Wert nicht in D befindet, wird dieser bestimmte Chunk als neu erachtet und somit gespeichert, und sein Hash-Wert wird zu dem Satz S hinzugefügt.
  • Beruhend darauf, wie die Chunk-Grenzen definiert sind, und aufgrund der vorgeschlagenen Größe der Chunks können jedoch Unterschiede auftreten. Die Chunk-Größe hat einen wesentlichen Einfluss auf die Leistungsfähigkeit, und die Anzahl verschiedener Chunks kann im Falle von zu kleinen Chunk-Größen so groß sein, dass sie den Deduplizierungsansatz gefährdet, da die Datenstruktur D möglicherweise nicht in den RAM passt und das System somit möglicherweise nicht skalierbar ist. Andererseits nimmt die Wahrscheinlichkeit, identische Chunks zu erhalten, ab, wenn die Chunk-Größe zu groß gewählt wird, und in vielen Fällen gibt es zahlreiche Chunks, die dedupliziert hätten werden können, wenn die Chunk-Größe kleiner gewesen wäre, aber wenn die Chunk-Größe größer ist, müssen viele dieser Chunks beibehalten werden.
  • Der Deduplizierungsprozess kann auch nach gleichartigen und nicht nur nach identischen Chunks suchen. Wenn ein gleichartiger Chunk gefunden wird, wird lediglich der Unterschied aufgezeichnet, der allgemein viel kleiner als ein vollständiger Chunk ist. Dies ermöglicht die Verwendung viel größerer Chunks als in auf Identität beruhenden Systemen. Trotzdem sind die Daten für viele Anwendungen differenzierter, und es kann ein wirksamerer Deduplizierungsprozess mit wesentlich kleineren Chunks durchgeführt werden. Eine einfache Verallgemeinerung eines Systems, in dem die Chunk-Größe zum Beispiel um den Faktor 2000 von 16 MB auf 8 K verringert werden könnte, ohne irgendetwas anderes in der Ausführung zu ändern, könnte zum Beispiel eine 2000-fache Erhöhung der Größe des Index von 4 GB auf etwa 8 TB mit sich bringen. Von diesem kann man jedoch annehmen, dass er nicht in den RAM passt. Außerdem führt das Beibehalten der Definition der Idee von Gleichartigkeit und das Verringern der Größe der Chunks zu einer erhöhten Anzahl von Kollisionen, die den Ansatz insgesamt unwirksam machen könnten.
  • Im Gegensatz dazu und zum Angehen der vorher beschriebenen Ineffizienzen dienen die Mechanismen der veranschaulichten Ausführungsformen dazu, die benötigte Gleichartigkeit durch etwas umzusetzen, das als approximatives Hash-Schema bezeichnet werden soll. Der Grundgedanke besteht darin, dass eine derartige approximative Hash-Funktion nicht anfällig für „kleine” Änderungen innerhalb des Chunk ist, sondern sich wie andere Hash-Funktionen verhält, was die nahezu einheitliche Verteilung seiner Werte angeht. Folglich können die Mechanismen den Satz approximativer Hash-Werte so handhaben, wie es normalerweise in Hash-Anwendungen durchgeführt wird (unter Verwendung einer Hash-Tabelle oder durch Speichern der Werte in einem B-Baum), aber sowohl gleichartige als auch identische Blöcke erkennen. Wenn ein bestimmter Chunk eine erweiterte, aber noch immer geringfügige Aktualisierung erfährt, kann sein neuer Hash-Wert nahe an dem ursprünglichen Wert liegen, was darauf schließen lässt, dass die in der Nähe des bestimmten Elements in der Hash-Tabelle gespeicherten Werte im Falle eines Fehltreffers überprüft werden sollten. Derartige Suchen in der Nähe sind in einem normalen Hash-Ansatz nutzlos.
  • Ein allgemeiner Algorithmus zum Speichern des Repository kann das Verwenden einer Hash-Tabelle H mit beispielsweise 232 Einträgen als grundlegende Datenstruktur beinhalten. Während des Aufbauprozesses wird jedem Chunk C sein approximativer Hash-Wert ah(C) zugewiesen, und der Index oder die Adresse des Chunk werden in H[ah(C)] gespeichert, wobei der Eintrag in H durch den Hash-Wert des Chunk indexiert ist. Wenn die Position in der Tabelle nicht frei ist, kann sie überschrieben werden. Dies kann geschehen, wenn der neue Chunk identisch oder äußerst ähnlich wie ein Chunk ist, auf den man früher bereits gestoßen ist; wobei es in diesem Fall bevorzugt sein kann, die Adresse des jüngeren Chunk, falls benötigt, für eine spätere Bezugnahme zu speichern. Eine Kollision kann jedoch auch die Folge von zwei vollständig unterschiedlichen Chunks sein, die denselben Hash-Wert aufweisen, wobei dann der Verweis auf den älteren Chunk, der überschrieben wurde, verloren geht.
  • In einer Ausführungsform wenden die Mechanismen der vorliegenden Erfindung spezifische Umwandlungen auf Daten an und ermitteln eine Signatur, mit deren Hilfe es möglich ist, die zu deduplizierenden Daten auszuwählen. Die Mechanismen teilen die Daten in relativ kleine Chunks (C) mit fester oder variabler Länge, mit einer (durchschnittlichen) Größe von etwa 8 bis 16 K auf. Jeder Chunk kann im Hinblick auf die Verteilung der Zeichen, durch die er gebildet wird, und deren entsprechenden Häufigkeiten des Vorkommens analysiert werden. Die Folge verschiedener Zeichen, angeordnet nach deren Häufigkeit des Vorkommens in dem Chunk, wird als c-Spektrum von C definiert, und die entsprechende Folge von Häufigkeiten wird als f-Spektrum von C definiert. Außerdem berücksichtigen die Mechanismen der vorliegenden Erfindung die Folge verschiedener Zeichenpaare, angeordnet nach deren Häufigkeit des Vorkommens in dem Chunk, und diese Folge von Paaren wird als p-Spektrum von C definiert. Die vorgeschlagene approximative Hash-Funktion (als ah(C) bezeichnet) ist eine Verknüpfung bestimmter Elemente dieser Spektren. In einer Ausführungsform kann die Größe der Hash-Werte lediglich beispielhaft im Voraus festgesetzt werden, um den Raum der zugeordneten Hash-Tabelle auszunutzen. Es kann zum Beispiel entschieden werden, dass die Tabelle etwa 4 Milliarden Einträge haben wird, was einem Hash-Wert von 32 Bits entspricht. Die gewählten Elemente der Spektren und genauer lediglich ein Teil der Bits der gewählten Elemente der Spektren können entsprechend angeordnet werden, indem sie an die gewünschten Positionen verschoben werden und dann eine logische XOR-Operation an den Bit-Folgen durchgeführt wird. In einer Ausführungsform wird eine approximative Hash-Funktion beruhend auf einer Verknüpfung von Zeichen und deren Häufigkeiten erzeugt. Die approximative Hash-Funktion wird dazu verwendet, die zu deduplizierenden Daten auszuwählen.
  • In 1 ist eine beispielhafte Architektur 10 einer Datenverarbeitungssystem-Umgebung abgebildet. Das Computersystem 10 beinhaltet eine zentrale Verarbeitungseinheit (CPU) 12, die mit einem Datenübertragungsanschluss 18 und einer Hauptspeichereinheit 16 verbunden ist. Der Datenübertragungsanschluss 18 tauscht mit einem Datenübertragungsnetzwerk 20 Daten aus. Das Datenübertragungsnetzwerk 20 und das Speichernetzwerk können so konfiguriert sein, dass sie mit einem Server (Hosts) 24 und Speichersystemen, zu denen die Speichereinheiten 14 gehören können, Daten austauschen. Zu den Speichersystemen können Festplattenlaufwerks-(HDD-, Hard-Disk-Drive-)Einheiten, Halbleitereinheiten (SSD, Solid-State Devices) usw. gehören, die in einer redundanten Anordnung unabhängiger Festplatten (RAID, Redundant Array of Independent Disks) konfiguriert sein können. Die unten beschriebenen Operationen können auf der/den Speichereinheit(en) 14 ausgeführt werden, die sich in dem System 10 oder andernorts befindet/befinden und mehrere Hauptspeichereinheiten 16 aufweisen kann/können, die unabhängig und/oder in Verbindung mit anderen CPU-Einheiten 12 arbeiten. Zu der Hauptspeichereinheit 16 kann Hauptspeicher wie zum Beispiel elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM, Electrically Erasable Programmable Read Only Memory) oder ein Host verwandter Einheiten gehören. Die Hauptspeichereinheit 16 und die Speichereinheiten 14 sind über ein signalführendes Medium mit der CPU 12 verbunden. Außerdem ist die CPU 12 über den Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 verbunden, das eine angeschlossene Vielzahl zusätzlicher Computer-Host-Systeme 24 aufweist. Außerdem können die Hauptspeichereinheit 16 und die CPU 12 in jeder Komponente des Datenverarbeitungssystems 10 eingebettet und darin enthalten sein. Jedes Speichersystem kann ebenfalls separate und/oder verschiedene Hauptspeichereinheiten 16 und die CPU 12 beinhalten, die gemeinsam oder als separate Hauptspeichereinheit 16 und/oder CPU 12 arbeiten.
  • 2 ist ein Ablaufplan, der ein beispielhaftes Verfahren 200 für eine skalierbare Datendeduplizierung mit kleinen Blöcken veranschaulicht. Das Verfahren 200 beginnt (Schritt 202) mit dem Erzeugen einer Signatur, die das Ergebnis aus dem Anwenden einer approximativen Hash-Funktion auf einen kleinen Datenblock darstellt, beruhend auf einer Verknüpfung von Zeichen, Häufigkeiten und Zeichenpaarverteilungen (Schritt 204). Die approximative Hash-Funktion wird dazu verwendet, für einen bestimmten Datenblock zu entscheiden, ob der Datenblock dedupliziert werden kann (Schritt 206). Das Verfahren 200 endet (Schritt 208).
  • Um die Mechanismen aus 2 näher zu veranschaulichen, wird in einer Ausführungsform ein Satz von Zeichen wie zum Beispiel a1, a2, ..., an als Folge von verschiedenen Zeichen in dem Chunk bzw. genauer als ASCII-Darstellung dieser Zeichen definiert, angeordnet nach nichtansteigender Häufigkeit in dem Chunk. Die Beziehungen in den Häufigkeiten dieser Zeichen können aufgelöst werden, indem die Zeichen mit identischer Häufigkeit nach ihren ASCII-Werten sortiert werden. Die Mechanismen verwenden f1 ≥ f2 ≥ ... ≥ fn als entsprechende Häufigkeiten. Die Anzahl n verschiedener Zeichen in dem Chunk kann zwischen 1 (für Chunks mit identischen Zeichen wie lauter Nullen oder Leerzeichen) und k, der Größe des Chunk, schwanken. Da diese Größe meistens viel größer als das ASCII-Alphabet ist, kann man annehmen, dass 1 ≤ n ≤ 256.
  • Die Elemente ai können in Blöcke aufgeteilt werden. Die Mechanismen können mehrere Zeichen gemeinsam ansammeln und diese symmetrisch behandeln, da es häufig vorkommen kann, dass Häufigkeiten bestimmter Zeichen gleich oder ziemlich nahe beieinander sein können. In einem derartigen Fall kann eine geringfügige Störung die Reihenfolge der Zeichen ändern und einen vollständig anderen Hash-Wert ergeben, was dem Ziel widerspricht, dass die approximative Hash-Funktion gegen geringfügige Änderungen immun ist. Die ASCII-Darstellung sämtlicher Elemente in einem Block kann mit derselben Verschiebung ausgerichtet werden, und für die Elemente kann eine XOR-Operation durchgeführt werden, so dass die interne Reihenfolge innerhalb der Blöcke willkürlich sein kann.
  • In einer Ausführungsform untersuchen die Mechanismen zum Definieren der Blöcke die Größen di der Lücken zwischen benachbarten Häufigkeiten, di = fi – fi+1 für i = 1, ..., n – 1. Das Sortieren der Lücken ausschließlich gemäß di kann jedoch die Definition der Lücken stark dahingehend verzerren, dass Blöcke mit einzelnen Elementen hervorgerufen werden, da die größten Lücken möglicherweise tendenziell zwischen den größten Werten vorkommen. Die Größen der Lücken werden durch Teilung durch eine entsprechende Gewichtung und Anwendung harmonischer Gewichtungen 1 / i für i ≥ 1 gemäß dem Zipfschen Gesetz normalisiert.
  • Die Lücken werden folglich in Bezug auf i × di = i(fi – fi+1) sortiert, was den Vorteil hat, dass lediglich ganzzahliges Rechnen benötigt wird. Die l – 1 (l stellt die Anzahl von Blöcken dar) Lücken mit den größten Gewichtungen werden ausgewählt (zum Beispiel durch Setzen von l = 10), und die l Sätze von aufeinanderfolgenden Elementen, die durch den Anfang der Folge, diese l – 1 Lücken, und das Ende der Folge begrenzt sind, werden als Blöcke definiert.
  • 3 veranschaulicht ein beispielhaftes Blockschaubild, das eine schematische Darstellung einer Aufteilung in Blöcke in einer Datenverarbeitungsumgebung zeigt, in der Aspekte der vorliegenden Erfindung umgesetzt werden können. Lediglich beispielhaft ist in 3 l = 8. Die Quadrate stellen Elemente q dar, die Pfeile stellen die gewichteten Lücken i(fi – fi+1) dar, und bei den Zahlen unter den Pfeilen handelt es sich um die gewichteten Lücken in nichtansteigender Reihenfolge. In 3 bestünden die hervorgerufenen Blöcke lediglich beispielhaft aus 3, 1, 3, 2, 4, 1, 4 bzw. 5 Elementen.
  • 4 veranschaulicht ein beispielhaftes Blockschaubild, das eine Anordnung verschiedener Bestandteile der approximativen Hash-Funktion zeigt, in der Aspekte der vorliegenden Erfindung umgesetzt werden können. In einer Ausführungsform veranschaulichen die verschiedenen Bausteine der vorgeschlagenen approximativen Hash-Funktion 32 Spalten, welche die 32 Bits der Signatur darstellen, wie gezeigt von rechts (0) nach links (31) durchnummeriert. Die Blöcke mit der von oben rechts nach unten links laufenden Schraffur stellen Blöcke der Zeichen q dar und geben an, dass die ASCII-Darstellung der Zeichen in ihrer ursprünglichen Form verwendet wird. Die Blöcke mit der von oben links nach unten rechts laufenden Schraffur geben an, dass die ASCII-Darstellung der Zeichen in umgekehrter Reihenfolge verwendet wird, z. B. 11101010 an Stelle von 01010111 für den Buchstaben W in ASCII. Der Block mit Kreuzschraffur stellt einen Block von Zeichenpaaren dar. Die kleineren Balken im rechten unteren Teil der Figur stellen die Häufigkeiten dar (d. h. die Elemente des f-Spektrums.)
  • In einer Ausführungsform beträgt die Anzahl von Blöcken l = 10, und die Größe des letzten Blocks wird bei Bedarf abgeschnitten, damit er höchstens 10 Zeichen beinhaltet. Es kann auch kleinere Grenzen bezüglich der Anzahl des Vorkommens eines zu betrachtenden Zeichens wie zum Beispiel (15) und bezüglich der Größe di einer Lücke (5) geben. Wenn die Anzahl von Blöcken in einem bestimmten Chunk nach diesen Anpassungen kleiner als 10 ist, kann eine andere Anordnung gewählt werden, die an die gegebene Anzahl von Blöcken angepasst ist. Die Anordnung in 4 geht davon aus, dass l = 10 Blöcke gegeben sind. Eine vollständige Beschreibung, die alle möglichen Werte von l behandelt, kann in dem Ablaufdiagramm aus 7 gefunden werden.
  • Außerdem kann jeder aus dem c-Spektrum entnommene Datenblock eine Größe von 8 Bits aufweisen und die volle ASCII-Darstellung verwenden, mit Ausnahme des ersten Blocks der häufigsten Zeichen, für welche die ersten 2 Bits (ganz links) gelöscht werden können. Jeder dieser Blöcke kann verschoben werden, und konkret kann der erste Block um 26 Bits nach links verschoben werden (z. B. linksbündig in der 32-Bit-Anordnung), und der nächste Block kann um 24 Bits verschoben werden, danach 18, 16, 13, 11, 9, 7, 5 und 3 Bits. Die direkten und die umgekehrten Darstellungen der Zeichen können sich abwechseln.
  • Die Elemente des f-Spektrums können wie nachfolgend beschrieben in die Signatur aufgenommen werden. Für jeden Häufigkeitswert, der eine ganze Zahl zwischen 1 und 8192 betragen darf, betrachten die Mechanismen zuerst den Häufigkeitswert als eine Standard-Binärdarstellung (z. B. in 16 Bits) und erweitern diese Zeichenfolge um 8 zusätzliche Nullen nach rechts. Somit weisen die Mechanismen jeder Häufigkeit fi eine 24-Bit-Zeichenfolge Fi zu, wenn zum Beispiel fi = 5 ist, dann ist Fi = 00000000 00000101 00000000. Die Mechanismen legen Di als Unterzeichenfolge von Fi mit einer Länge von 3 Bits fest, angefangen an der direkt auf das höchstwertige 1-Bit folgende Stelle, also 00000000 00000101 00000000 für das oben genannte Beispiel, wobei die Di bildenden Bits hervorgehoben sind. Zur Veranschaulichung wird ein anderes Beispiel mit einem Wert von mehr als 8 Bits angeführt, indem fi = 759 betrachtet wird, wobei 00000010 11110111 00000000 dann sowohl Fi als auch Di zeigt. (mit hinzugefügter Hervorhebung). In einer Ausführungsform wird die Größe sämtlicher Elemente als 3 Bits gewählt, mit Ausnahme des ersten, das lediglich eine Länge von 2 Bits aufweist, und zusätzlich zu der unteren Grenze der Werte in dem f-Spektrum von 15 bedeutet dies, dass das Auffüllen nach rechts mit Nullen niemals benötigt wird. Andere Ausführungsformen können jedoch die Grenze herabsetzen und die Bit-Größe der Werte erhöhen. Die Verschiebungen in Bits dieser Elemente werden angezeigt als: 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6 und 6., wobei die erste (größte) Häufigkeit als niedrigstes Element in der Figur abgebildet ist.
  • Der Block des p-Spektrums von C kann 12 Bits lang sein und in der Anordnung linksbündig platziert werden. In einer Ausführungsform kann das p-Spektrum von C definiert werden, indem die Paare nach nichtansteigenden Häufigkeiten angeordnet und diejenigen als 5, 6, 7, 8 und 9 indexierten (d. h. der 5. bis 9. Block) in dieser Reihenfolge betrachtet werden. Der Grund dafür, nicht die häufigsten Paare aus der Durchführung als Zeichen zu wählen, besteht darin, dass deren Verteilung wesentlich mehr verzerrt ist, wobei die Paare (0, 0) und (255, 255) in einer überwältigenden Mehrheit der von uns geprüften Fälle am häufigsten auftreten.
  • Für jedes der 5 Paare kann die folgende Bitfolge aufgebaut werden. Mit den 2 Bytes A = a7a6a5a4a3a2a1a0 und B = b7b6b5b4b3b2b1b0 können die Mechanismen A zyklisch um 3 Bits nach links und B zyklisch um 3 Bits nach rechts rotieren. Die Bytes können so ausgerichtet werden, dass die am weitesten rechts liegenden 4 Bits von A die am weitesten links liegenden 4 Bits von B überlappen, und dann kann eine logische XOR-Operation auf die Bit-Folgen angewendet werden. Folglich können die 12 sich ergebenden Bits nun als a4,a3,a2,a1,a0^b2,a7^b1,a6^b0,a5^b7,b6,b5,b4,b3 veranschaulicht werden, wobei die Schreibweise a^b für a XOR b verwendet wird. Die höchst- und niedrigstwertigen Bits sowohl von A als auch von B befinden sich in dem sich überlappenden Teil, und so haben sie eine zusätzliche Möglichkeit, wenn ihre Verteilung verzerrt ist, die Verzerrung durch die zusätzliche logische XOR-Operation zu korrigieren. Schließlich kann eine logische XOR-Operation auf alle Elemente der Anordnung angewendet werden, was eine 32-Bitfolge ergibt, die eine Zahl zwischen 0 und 232 – 1 darstellt, die als Hash-Wert des gegebenen Chunk C dienen kann.
  • Lediglich beispielhaft und zur Veranschaulichung der Leistungsfähigkeit der Signatur, die Einheitlichkeit der Verteilung zu zeigen, wurden eine Exchange-Datenbank mit etwa 27 GB und eine Datei mit etwa 5 GB gewählt. In der gewählten Ausführungsform hatte der Chunk eine Größe mit variabler Länge. Die Grenze eines Chunk wurde definiert, indem auf die d am weitesten rechts liegenden Bytes des betrachteten Chunk ein einfacher Rabin-Karp-Rolling-Hash-Algorithmus angewendet wurde. Wenn dieser Hash-Wert gleich ist wie eine gewisse vorher definierte Konstante c, wurde der Chunk nach diesen d Bytes abgeschnitten; andernfalls wurden ein Byte hinzugefügt und die Prüfung mit dem Rolling-Hash-Algorithmus wiederholt. In der gewählten Ausführungsform waren d = 25, c = 2718 und die Hash-Funktion lautete RK(x) = x mod P, wobei RK der Rabin-Karp-Rolling-Hash-Wert ist, x eine Variable ist, P = 248 – 257 eine Primzahl ist und mod für die Modulo-Funktion steht, definiert durch A mod B ist der Rest aus der Teilung von A durch B, wobei sowohl A als auch B ganze Zahlen sind, bzw. in einer mathematischen Schreibweise: A mod B = A – B × [A/B]
  • Zur Vermeidung von Extremwerten für die Chunk-Länge werden als Beispiel eine Untergrenze von 2 K und eine Obergrenze von 64 K auferlegt. Die durchschnittliche Größe eines Chunk betrug dann für die Prüfdatenbanken etwa 12 K.
  • 5 veranschaulicht einen Graphen, der die Wahrscheinlichkeit zeigt, mit der man mit einer beispielhaften Prüfdatenbank ein 1-Bit an jeder der 32 Bitstellen der Signaturen erhält. Die senkrechte Achse zeigt die Wahrscheinlichkeitswerte von 0 bis 1 an, und die waagrechte Achse zeigt die 32 Bitstellen, indexiert von 0 bis 31, an. Wie in 5 ersichtlich ist, liegen die Wahrscheinlichkeiten für sämtliche Bitstellen bei einer zufälligen Verteilung sehr nahe an dem erwarteten Wert von 0,5.
  • 6 ist ein Ablaufplan, der ein beispielhaftes Verfahren 600 zum Definieren von Daten-Chunks veranschaulicht. Das Verfahren 600 beginnt (Schritt 602) mit dem Lesen der Parameter Kmin, Kmax, P, s, Const, wobei Kmin und Kmax die kleinsten und größten Größen darstellen, die wir für einen Chunk zulassen (Schritt 604), P die in dem Rabin-Karp-Hash-Algorithmus verwendete Primzahl ist, s die Anzahl von Bytes darstellt, auf welche der Rabin-Karp-Hash-Algorithmus angewendet wird, und Const eine feste ganzzahlige Konstante ist 0 ≤ Const < P·Kmin Bytes werden in den Puffer gelesen (Schritt 606). S soll den Wert der letzten s gelesenen Bytes angeben, wenn sie als eine ganze Zahl darstellend betrachtet werden (Schritt 608). Das Verfahren 600 ermittelt dann, ob (Schritt 610). Falls dem so ist, legt das Verfahren 600 den aktuellen Puffer als Chunk fest (Schritt 616). Falls dem nicht so ist, liest das Verfahren 600 ein weiteres Byte (Schritt 612). Das Verfahren 600 ermittelt dann, ob die Puffergröße gleich dem Parameter Kmax ist (Schritt 614). Falls dem nicht so ist, kehrt das Verfahren 600 zu Schritt 608 zurück. Falls dem so ist, legt das Verfahren 600 den aktuellen Puffer als Chunk fest (Schritt 616), und das Verfahren 600 endet (Schritt 618).
  • Die 7a, 7b und 7c veranschaulichen ein Verfahren 700 zum Definieren von Signaturen. Aus technischen Gründen ist der Ablaufplan des Verfahrens 700 in drei Teile aufgeteilt, in 7a, 7b und 7c, die sich jeweils mit Zeichen, Häufigkeiten bzw. Zeichenpaaren befassen, wobei die 7a, 7b und 7c trotzdem alle Teil des Verfahrens 700 sind. 7a ist ein Ablaufplan, der ein beispielhaftes Verfahren zum Definieren des Zeichenteils der Signaturdefinition veranschaulicht. In 7a, die sich mit den Zeichen befasst, beginnt das Verfahren 700 in Schritt 702 und initialisiert dann die Parameter durch Lesen eines Chunk, Definieren des Satzes von Zeichen a1, a2, ..., an, bei denen es sich um die Folge von verschiedenen Zeichen in dem Chunk handelt, die nach nichtansteigender Reihenfolge deren Häufigkeiten innerhalb des Chunk indexiert sind, Definieren von f2 ≥ f2 ≥ ... ≥ fn als entsprechende Häufigkeiten, Definieren der Größen di der Lücken zwischen den Häufigkeiten als di = fi – fi+1 für i = 1, ..., n – 1, Löschen von Elementen ai für die fi < 15 oder di < 5 ist, Definieren der Anzahl von Blöcken K durch K ← 1 + min(9, number of elements in sequence di), Sortieren der Folge i di und Verwenden von nK = nK-1 + 10 als Indizes der K – 1 größten Elemente in der Folge i di, Definieren von n0 = 0, und nK = nK-1 + 10 und Definieren von K Häufigkeitsblöcken als fn₀+1, ... fn (erster Block), fn₁+1 ... fn₂ (zweiter Block), ...,
    Figure DE112012003503T5_0002
    (K-ter Block) (Schritt 704). Die aufzubauende Signatur, sig, wird als 32-Bit lange ganze Zahl initialisiert, die lediglich aus Nullen besteht. Weiter zu Schritt 708, wo, nachdem das Verfahren 700 einen Parameter] festgelegt hat, der den Index des Blocks als Null darstellt, und einen Parameter is, der den Index des aktuellen Zeichens als nj + 1 darstellt (Schritt 708), das Verfahren 700 ermittelt, ob j = 0 ist (Schritt 724). Falls dem so ist, schneidet das Verfahren 700 die 2 am weitesten links liegenden Bits von ai ab (Schritt 726) und fährt dann mit Schritt 728 fort. In jedem Fall ermittelt das Verfahren 700 dann, ob j ungerade ist (Schritt 728). Falls dem so ist, wird die ASCII-Darstellung von ai umgekehrt (Schritt 730). In jedem Fall führt das Verfahren 700 dann die Funktion sig ← sig XOR shift(ai, cshift[K, j]) aus (Schritt 732), die eine logische XOR-Operation des aktuellen in sig gespeicherten Werts mit der ASCII-Darstellung des Zeichens ai durchführt, das an eine Stelle verschoben wurde, die durch den Index j des Blocks und die Gesamtanzahl von Blöcken K bestimmt ist. Die genauen Umfänge dieser Verschiebungen sind in der Tabelle cshift[K, j] angegeben, bei der es sich um einen externen Parameter des Signaturschemas handelt (unabhängig von einem konkreten Chunk), und sind in 8 angegeben. Das Verfahren 700 inkrementiert dann i um 1 (Schritt 734). Das Verfahren 700 ermittelt dann, ob es in dem aktuellen als j indexierten Block noch zu verarbeitende Elemente gibt, indem es überprüft, ob i ≤ nj+1 ist (Schritt 736). Falls dem so ist, kehrt das Verfahren 700 zu Schritt 724 zurück. Falls dem nicht so ist, versucht das Verfahren 700 zum nächsten Block überzugehen, indem es j um 1 inkrementiert (Schritt 738). Das Verfahren 700 ermittelt dann, ob es noch zu verarbeitende Blöcke gibt, indem es überprüft, ob j < K ist (Schritt 740). Falls dem so ist, kehrt das Verfahren 700 zu Schritt 724 zurück und führt eine zusätzliche Wiederholung der Schleife durch. Falls dem nicht so ist, geht das Verfahren 700 zum Verbindungspunkt A über (Schritt 742), bei dem es sich um den Eingangspunkt zu dem nächsten Teil des Ablaufplans handelt, der sich mit den Häufigkeiten befasst und in 7b gezeigt ist.
  • 7B ist ein Ablaufplan, der ein beispielhaftes Verfahren 700 zum Definieren des Häufigkeitsteils der Signaturdefinition veranschaulicht. In 7b, die sich mit den Häufigkeiten befasst, beginnt das Verfahren 700 bei Eingangspunkt A (Schritt 742) und wählt die Anzahl von Häufigkeiten, die mit der Definition der Signatur einhergeht, gemäß der Anzahl K von verfügbaren Blöcken aus. Wenn K > 6 ist (Schritt 750), wird die Anzahl lim von Häufigkeiten auf 16 festgesetzt (Schritt 754); andernfalls wird, wenn K > 2 ist (Schritt 752), die Anzahl lim von Häufigkeiten auf 20 festgesetzt (Schritt 756); in noch einem anderen Fall, das heißt, wenn K = 2 oder K = 1 oder K = 0 ist, wird die Anzahl lim von Häufigkeiten auf 23 festgesetzt (Schritt 758). In allen Fällen geht das Verfahren 700 zu Schritt 760 über und initialisiert den Parameter i, der den Index der Häufigkeit fi darstellt, wobei es ihn auf 1 setzt. In Schritt 762 wird aus der binären Darstellung der Häufigkeit fi eine Unterfolge mit 3 Bits Länge entnommen, wie oben in 4 erläutert wird. Konkret ist F das Ergebnis des Auffüllens von fi mit 8 Nullen auf ihrer rechten Seite, was dem Multiplizieren von fi mit 256 entspricht. Man beachte, dass fi und somit auch F nicht Null sein können. Das Verfahren 700 setzt dann den Parameter h auf ⌊log2F⌋ fest, wobei es sich um den Index des am weitesten links liegenden 1-Bit in der binären Darstellung von F handelt, wobei das Zählen ab dem am weitesten rechts liegenden Bits beginnt, das als 0 indexiert ist. Schließlich erhält man die 3 Bits nach dem führenden 1-Bit von F in e durch Subtrahieren von 2h von F, wodurch das führende 1-Bit aufgehoben wird, und durch Teilen durch 2h-3, wodurch die h – 3 am weitesten rechts liegenden Bits gelöscht werden und wie gewünscht lediglich 3 Bits übrig bleiben. Das Verfahren 700 prüft dann in Schritt 764, ob man es mit der ersten Häufigkeit zu tun hat, indem es überprüft, ob i = 1 ist, und falls dem so ist, wird der Wert von e in Schritt 766 halbiert, was gleichbedeutend mit dem Löschen seiner am weitesten rechts liegenden 3 Bits ist. In jedem Fall führt das Verfahren 700 dann die Funktion sig ← sig XOR shift(e, fshift[K, i]) aus (Schritt 768), die eine logische XOR-Operation des aktuellen in sig gespeicherten Werts mit den 2 oder 3 Bits des Werts e durchführt, der an eine Stelle verschoben wurde, die durch den Index i des Elements und die Gesamtanzahl von Blöcken K bestimmt ist. Die genauen Umfänge dieser Verschiebungen sind in der Tabelle fshift[K, i] angegeben, bei der es sich um einen externen Parameter des Signaturschemas handelt (unabhängig von einem konkreten Chunk), und sind in 8 angegeben. Das Verfahren 700 inkrementiert dann i um 1 (Schritt 770) und ermittelt, ob es weitere zu verarbeitende Häufigkeiten gibt, indem es ermittelt, ob i ≤ lim ist (Schritt 772). Falls dem so ist, kehrt das Verfahren 700 zu Schritt 762 zurück und führt eine zusätzliche Wiederholung der Schleife durch. Falls dem nicht so ist, geht das Verfahren 700 zum Verbindungspunkt B über (Schritt 774), bei dem es sich um den Eingangspunkt zu dem nächsten Teil des Ablaufplans handelt, der sich mit den Zeichenpaaren befasst und in 7c gezeigt ist.
  • 7c ist ein Ablaufplan, der ein beispielhaftes Verfahren 700 zum Definieren des Zeichenpaarteils der Signaturdefinition veranschaulicht. In 7c, die sich mit den Zeichenpaaren befasst, beginnt das Verfahren 700 an Eingangspunkt B (Schritt 774). In Schritt 776 werden die Zeichenpaare zuerst in einer nichtansteigenden Reihenfolge gemäß ihrer Häufigkeit des Auftretens innerhalb des Chunk sortiert. Die durch das Verfahren 700 zu betrachtenden Paare sind die in der durch die Sortierung erhaltenen Reihenfolge als 5 oder höher indexierten. Die Paare werden in Clustern von mehreren Paaren verarbeitet. Die Anzahl von Clustern pnum und welche Paare jedem Cluster zugehören, wird gemäß der Anzahl K von verfügbaren Blöcken ermittelt. Die Aufteilung der Paare in Cluster wird mit Hilfe einer Anordnung plim[j] umgesetzt, wobei 1 ≤ j ≤ pnum ist, wobei plim[j] den Index des letzten Paars in Cluster j ergibt. Wenn K ≥ 8 ist (Schritt 778), wird die Anzahl pnum von Clustern auf 1 gesetzt, und plim[1] wird auf 9 gesetzt, damit der einzige Cluster in diesem Fall aus den 5 Paaren besteht, die mit 5, 6, 7, 8 und 9 indexiert sind (Schritt 781); andernfalls, wenn K > 1 ist (Schritt 780), wird die Anzahl pnum von Clustern auf 2 gesetzt, plim[1] wird auf 8 gesetzt, und plim[2] wird auf 12 gesetzt, damit der erste der beiden Cluster in diesem Fall aus den 4 Paaren besteht, die mit 5, 6, 7 und 8 indexiert sind, und der zweite Cluster aus den 4 Paaren besteht, die mit 9, 10, 11 und 12 indexiert sind (Schritt 782); in noch einem anderen Fall, das heißt, wenn K = 1 oder K = 0 ist, wird die Anzahl pnum von Clustern auf 3 gesetzt, plim[1] wird auf 8 gesetzt, plim[2] wird auf 12 gesetzt, und plim[3] wird auf 16 gesetzt, damit der erste der drei Cluster in diesem Fall aus den 4 Paaren besteht, die mit 5, 6, 7 und 8 indexiert sind, der zweite Cluster aus den 4 Paaren besteht, die mit 9, 10, 11 und 12 indexiert sind, und der dritte Cluster aus den 4 Paaren besteht, die mit 13, 14, 15 und 16 indexiert sind (Schritt 783). In allen Fällen geht das Verfahren 700 dann zu Schritt 784 über und initialisiert den Parameter i, der den Index des Paars darstellt, und setzt diesen auf 5, sowie den Parameter], der den Index des Clusters darstellt, und setzt diesen auf 1.
  • In Schritt 785 beginnt das Verfahren 700 dann eine Schleife, wobei es in jeder Wiederholung ein einzelnes Paar pi verarbeitet. u und v sind als Zeichen definiert, die das Paar pi bilden. In Schritt 786 wird eine Zeichenfolge w mit einer Länge von 12 Bits als Funktion der ASCII-Darstellung von u und v gebildet. Konkret wird u zyklisch um 3 Bits nach links rotiert, v wird zyklisch um 3 Bits nach rechts rotiert, und das Ergebnis w erhält man durch Anwenden einer logischen XOR-Operation auf die rotierten Zeichenfolgen, nachdem u um 4 Bits nach links verschoben wurde. Das Verfahren 700 führt dann die Funktion sig ← sig XOR shift(w, pshift [K, j] aus (Schritt 787), die eine logische XOR-Operation des aktuellen in sig gespeicherten Werts mit den 12 Bits des Werts w durchführt, die an eine Stelle verschoben wurden, die durch den Index j des Clusters und die Gesamtanzahl von Blöcken K bestimmt ist. Die genauen Umfänge dieser Verschiebungen sind in der Tabelle pshift[K, j] angegeben, bei der es sich um einen externen Parameter des Signaturschemas handelt (unabhängig von einem konkreten Chunk), und diese sind in 8 angegeben. Das Verfahren 700 inkrementiert dann i um 1 (Schritt 788) und ermittelt, ob es weitere zu verarbeitende Paare innerhalb dieses Clusters gibt, indem es ermittelt, ob i ≤ plim[j] ist (Schritt 789). Falls dem so ist, kehrt das Verfahren 700 zu Schritt 785 zurück und führt eine zusätzliche Wiederholung der Schleife mit einem anderen Paar desselben Clusters durch. Falls dem nicht so ist, inkrementiert das Verfahren 700 j um 1 (Schritt 790) und ermittelt, ob es noch weitere zu verarbeitende Cluster gibt, indem es überprüft, ob j ≤ pnum ist (Schritt 791). Falls dem so ist, kehrt das Verfahren 700 zu Schritt 785 zurück und führt eine zusätzliche Wiederholung der Schleife mit einem anderen Cluster durch. Falls dem nicht so ist, gibt das Verfahren 700 die ausgewertete Signatur sig aus (Schritt 792) und endet (Schritt 799).
  • 8 definiert die in den Ablaufplänen aus den 7a, 7b und 7c verwendeten Verschiebungskonstanten. Die Tabellen sind in C-Stil aufgeführt, wobei Indizes mit 0 anfangen, so dass die erste Zeile und die erste Spalte nicht verwendet werden. Der erste Parameter stellt die gegebene Anzahl von Blöcken K dar. Der zweite Parameter lautet:
    • a) Für cshift: Index j des Zeichenblocks;
    • b) für fshift: Index i der Häufigkeit;
    • c) für pshift: Index pnum der Anzahl von verwendeten Paaren (1 bis 3) Für K ≥ 8 wird nur ein Paar verwendet, mit Elementen als 5-6-7-8-9 indexiert Für 2 ≤ K ≤ 7 werden 2 Paare verwendet: 5-6-7-8 und 9-10-11-12 Für K = i werden 3 Paare verwendet: 5-6-7-8, 9-10-11-12 und 13-14-15-16
    Der letzte Index dieser Elementblöcke ist in plim[j] gegeben.
  • Der Fachmann wird verstehen, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, im Speicher befindliche Software, Mikrocode, usw.) oder einer Software- und Hardware-Aspekte kombinierenden Ausführungsform annehmen, die hierin alle allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein können. Des Weiteren können Aspekte der Ausführungsformen die Form eines auf einem oder mehreren durch einen Computer lesbaren Medien enthaltenen Computerprogrammprodukts annehmen, die durch einen Computer lesbaren Programmcode enthalten.
  • Es kann jede Kombination aus einem oder mehreren durch einen Computer lesbaren Medien verwendet werden. Bei dem durch einen Computer lesbaren Medium kann es sich um ein durch einen Computer lesbares Signalmedium oder ein durch einen Computer lesbares Speichermedium handeln. Bei einem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (eine nicht erschöpfende Liste) des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine mobile Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein Lichtwellenleiter, ein mobiler Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination daraus. In dem Kontext dieses Dokuments kann es sich bei einem durch einen Computer lesbaren Speichermedium um jedes beliebige physische Medium handeln, das ein Programm enthalten bzw. speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen verwendet wird.
  • Auf einem durch einen Computer lesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw. oder jede geeignete Kombination daraus, jedoch nicht auf diese beschränkt. Computerprogrammcode für das Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o. ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung wurden oben unter Bezugnahme auf Ablaufpläne und/oder Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch Computerprogrammanweisungen ausgeführt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.
  • Diese Computerprogrammanweisungen können auch auf einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Computer lesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungen, welche die/den in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebene(n) Funktion/Schritt umsetzen. Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten geladen werden, um das Ausführen einer Folge von Prozessschritten auf dem Computer, der anderen programmierbaren Vorrichtung bzw. den anderen Einheiten zu veranlassen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Verfahren zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Schritte erzeugen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den obigen Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. Es sei auch angemerkt, dass in einigen alternativen Ausführungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden können. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder durch Kombinationen aus Spezial-Hardware und Computeranweisungen.
  • Obgleich eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich beschrieben wurden, wird ein Fachmann verstehen, dass Abänderungen und Anpassungen dieser Ausführungsformen durchgeführt werden können, ohne von dem in den folgenden Ansprüchen festgelegten Umfang der vorliegenden Erfindung abzuweichen. Konkret kann durch Änderung einer der Konstanten Kmin, Kmax, P, s, Const, die in Schritt 604 aus 6 auftauchen, oder der Konstanten, die in den Ablaufplänen aus den 7a, 7b oder 7c in den Schritten 704, 726, 750, 752, 754, 756, 758, 762, 766, 776, 778, 780, 781, 782, 783, 784, 786 auftreten, oder eines beliebigen Werts in den Tabellen cshift, fshift und pshift in 8 zu einer vollkommen anderen Signatur sig führen, die ebenfalls die Ziele der vorliegenden Erfindung erreichen könnte. Die oben verwendeten konkreten Konstanten werden somit lediglich als Beispiel für eine mögliche Umsetzung angeführt und sollten nicht als Beschränkung des Umfangs der Erfindung auf lediglich diese Werte verstanden werden.

Claims (23)

  1. Verfahren für eine skalierbare Datendeduplizierung, die mit einem kleinen Daten-Chunk arbeitet, aufweisend: Erzeugen einer Signatur für jeden der kleinen Daten-Chunks beruhend auf einer Verknüpfung einer Darstellung von in dem kleinen Daten-Chunk vorkommenden Zeichen mit einer Darstellung von Häufigkeiten des kleinen Daten-Chunks, wobei die Signatur dazu verwendet wird, beim Auswählen der zu deduplizierenden Daten zu helfen.
  2. Verfahren nach Anspruch 1, wobei die Signatur eine Eigenschaft aufweist, die es ermöglicht, dass geringfügige Abänderungen in dem kleinen Daten-Chunk entweder geringfügige Änderungen oder keine Änderungen in der Signatur verursachen.
  3. Verfahren nach Anspruch 1, wobei die Signatur auf einem c-Spektrum des kleinen Daten-Chunks, einem f-Spektrum des kleinen Daten-Chunks und einem p-Spektrum des kleinen Daten-Chunks beruht, wobei das c-Spektrum des kleinen Daten-Chunks eine Folge von Darstellungen verschiedener Zeichen darstellt, die nach einer Häufigkeit des Vorkommens in dem kleinen Daten-Chunk angeordnet sind, das f-Spektrum des kleinen Daten-Chunks eine entsprechende Folge von Häufigkeiten der verschiedenen Zeichen in dem kleinen Daten-Chunk darstellt und das p-Spektrum des kleinen Daten-Chunks eine Folge verschiedener Zeichenpaare darstellt, die nach der Häufigkeit des Vorkommens in dem kleinen Daten-Chunk angeordnet sind.
  4. Verfahren nach Anspruch 3, ferner aufweisend das Durchführen eines oder mehrerer der folgenden Schritte in Verbindung mit dem Erzeugen der Signatur beruhend auf einem c-Spektrum, f-Spektrum und p-Spektrum: Verknüpfen von Zeichen des c-Spektrums mit gleichartigen Häufigkeiten in Blöcke durch Gewichten von Lücken di = fi – fi+1 zwischen Häufigkeiten fi von Zeichen, die in einer angeordneten Folge benachbart sind, wobei die Lücken beruhend auf Gewichtungen normalisiert werden, Auswählen einer Teilmenge der Lücken zum Definieren von Grenzen von Zeichenblöcken des c-Spektrums, Durchführen einer logischen XOR-Operation auf eine Verknüpfung von Zeichen in Zeichenblöcken des c-Spektrums, Auswählen einer Teilmenge von Bits einer Teilmenge von Häufigkeiten des f-Spektrums, und Auswählen einer Teilmenge von Paaren des p-Spektrums und Durchführen von logischen Operationen auf Paare von Darstellungen von Zeichen für jedes aus der ausgewählten Teilmenge von Paaren des p-Spektrums.
  5. Verfahren nach Anspruch 4, ferner aufweisend das Durchführen von Verschiebeoperationen an der ausgewählten Teilmenge von Bits und der ausgewählten Teilmenge von Paaren und das Durchführen einer logischen XOR-Operation durch Verknüpfen der ausgewählten Teilmengen in eine eine Signatur darstellende Bitfolge.
  6. Verfahren nach Anspruch 5, ferner aufweisend das Durchführen der Verschiebeoperationen gemäß Parametertabellen.
  7. Verfahren nach Anspruch 4, wobei Gewichtungen wi, durch welche die Lücken di = fi – fi+1 geteilt werden, wi = 1 / i sind.
  8. Verfahren nach Anspruch 4, wobei die an Paaren von Darstellungen von Zeichen durchgeführten logischen Operationen mindestens eins der Folgenden beinhalten: zyklisches Rotieren einer Folge von Bits, Verschieben der Folge von Bits, und Durchführen einer logischen XOR-Operation.
  9. System für eine skalierbare Datendeduplizierung, die mit einem kleinen Daten-Chunk in einer Datenverarbeitungsumgebung arbeitet, aufweisend: zumindest eine Prozessoreinheit, die in der Datenverarbeitungsspeicherumgebung betreibbar ist, wobei die zumindest eine Prozessoreinheit für Folgendes eingerichtet ist: Erzeugen einer Signatur für jeden der kleinen Daten-Chunks beruhend auf einer Verknüpfung einer Darstellung von in dem kleinen Daten-Chunk vorkommenden Zeichen mit einer Darstellung von Häufigkeiten des kleinen Daten-Chunks, wobei die Signatur dazu verwendet wird, beim Auswählen der zu deduplizierenden Daten zu helfen.
  10. System nach Anspruch 9, wobei die Signatur eine Eigenschaft aufweist, die es ermöglicht, dass geringfügige Abänderungen in dem kleinen Daten-Chunk entweder geringfügige Änderungen oder keine Änderungen in der Signatur verursachen.
  11. System nach Anspruch 9, wobei die Signatur auf einem c-Spektrum des kleinen Daten-Chunks, einem f-Spektrum des kleinen Daten-Chunks und einem p-Spektrum des kleinen Daten-Chunks beruht, wobei das c-Spektrum des kleinen Daten-Chunks eine Folge von Darstellungen verschiedener Zeichen darstellt, die nach einer Häufigkeit des Vorkommens in dem kleinen Daten-Chunk angeordnet sind, das f-Spektrum des kleinen Daten-Chunks eine entsprechende Folge von Häufigkeiten der verschiedenen Zeichen in dem kleinen Daten-Chunk darstellt und das p-Spektrum des kleinen Daten-Chunks eine Folge verschiedener Zeichenpaare darstellt, die nach der Häufigkeit des Vorkommens in dem kleinen Daten-Chunk angeordnet sind.
  12. System nach Anspruch 11, wobei die Prozessoreinheit ferner für das Durchführen eines oder mehrerer der folgenden Schritte in Verbindung mit dem Erzeugen der Signatur beruhend auf einem c-Spektrum, f-Spektrum und p-Spektrum eingerichtet ist: Verknüpfen von Zeichen des c-Spektrums mit gleichartigen Häufigkeiten in Blöcke durch Gewichten von Lücken di = fi – fi+1 Häufigkeiten fi von Zeichen, die in einer angeordneten Folge benachbart sind, wobei die Lücken beruhend auf Gewichtungen normalisiert werden, Auswählen einer Teilmenge der Lücken zum Definieren von Grenzen von Zeichenblöcken des c-Spektrums, Durchführen einer logischen XOR-Operation auf eine Verknüpfung von Zeichen in Zeichenblöcken des c-Spektrums, Auswählen einer Teilmenge von Bits einer Teilmenge von Häufigkeiten des f-Spektrums, und Auswählen einer Teilmenge von Paaren des p-Spektrums und Durchführen von logischen Operationen auf Paare von Darstellungen von Zeichen für jedes aus der ausgewählten Teilmenge von Paaren des p-Spektrums.
  13. Verfahren nach Anspruch 12, wobei die Prozessoreinheit ferner für das Durchführen von Verschiebeoperationen an der ausgewählten Teilmenge von Bits und der ausgewählten Teilmenge von Paaren und das Durchführen einer logischen XOR-Operation durch Verknüpfen der ausgewählten Teilmengen in eine eine Signatur darstellende Bitfolge eingerichtet ist.
  14. System nach Anspruch 13, wobei die Prozessoreinheit ferner für das Durchführen der Verschiebeoperationen gemäß Parametertabellen eingerichtet ist.
  15. System nach Anspruch 12, wobei Gewichtungen n, durch welche die Lücken di = fi – fi+1 geteilt werden, wi = 1 / i sind.
  16. System nach Anspruch 12, wobei die an Paaren von Darstellungen von Zeichen durchgeführten logischen Operationen mindestens eins der Folgenden beinhalten: zyklisches Rotieren einer Folge von Bits, Verschieben der Folge von Bits, und Durchführen einer logischen XOR-Operation.
  17. Computerprogrammprodukt für eine skalierbare Datendeduplizierung, die mit einem kleinen Daten-Chunk arbeitet, durch eine Prozessoreinheit, wobei das Computerprogrammprodukt ein nichtflüchtiges, durch einen Computer lesbares Speichermedium aufweist, auf dem durch einen Computer lesbare Programmcodeteile gespeichert sind, wobei die durch einen Computer lesbaren Programmcodeteile aufweisen: einen ersten ausführbaren Teil für das Erzeugen einer Signatur für jeden der kleinen Daten-Chunks beruhend auf einer Verknüpfung einer Darstellung von in dem kleinen Daten-Chunk vorkommenden Zeichen mit einer Darstellung von Häufigkeiten des kleinen Daten-Chunks, wobei die Signatur dazu verwendet wird, beim Auswählen der zu deduplizierenden Daten zu helfen.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die Signatur eine Eigenschaft aufweist, die es ermöglicht, dass geringfügige Abänderungen in dem kleinen Daten-Chunk entweder geringfügige Änderungen oder keine Änderungen in der Signatur verursachen.
  19. Computerprogrammprodukt nach Anspruch 17, wobei die Signatur auf einem c-Spektrum des kleinen Daten-Chunks, einem f-Spektrum des kleinen Daten-Chunks und einem p-Spektrum des kleinen Daten-Chunks beruht, wobei das c-Spektrum des kleinen Daten-Chunks eine Folge von Darstellungen verschiedener Zeichen darstellt, die nach einer Häufigkeit des Vorkommens in dem kleinen Daten-Chunk angeordnet sind, das f-Spektrum des kleinen Daten-Chunks eine entsprechende Folge von Häufigkeiten der verschiedenen Zeichen in dem kleinen Daten-Chunk darstellt und das p-Spektrum des kleinen Daten-Chunks eine Folge verschiedener Zeichenpaare darstellt, die nach der Häufigkeit des Vorkommens in dem kleinen Daten-Chunk angeordnet sind.
  20. Computerprogrammprodukt nach Anspruch 19, ferner aufweisend einen dritten ausführbaren Teil für das Durchführen eines oder mehrerer der folgenden Schritte in Verbindung mit dem Erzeugen der Signatur beruhend auf einem c-Spektrum, f-Spektrum und p-Spektrum: Verknüpfen von Zeichen des c-Spektrums mit gleichartigen Häufigkeiten in Blöcke durch Gewichten von Lücken di = fi – fi+1 Häufigkeiten fi von Zeichen, die in einer angeordneten Folge benachbart sind, wobei die Lücken beruhend auf Gewichtungen normiert werden, Auswählen einer Teilmenge der Lücken zum Definieren von Grenzen von Zeichenblöcken des c-Spektrums, Durchführen einer logischen XOR-Operation auf eine Verknüpfung von Zeichen in Zeichenblöcken des c-Spektrums, Auswählen einer Teilmenge von Bits einer Teilmenge von Häufigkeiten des f-Spektrums, und Auswählen einer Teilmenge von Paaren des p-Spektrums und Durchführen von logischen Operationen auf Paare von Darstellungen von Zeichen für jedes aus der ausgewählten Teilmenge von Paaren des p-Spektrums.
  21. Computerprogrammprodukt nach Anspruch 20, ferner beinhaltend einen dritten ausführbaren Teil für mindestens eines der Folgenden: Durchführen von Verschiebeoperationen an der ausgewählten Teilmenge von Bits und der ausgewählten Teilmenge von Paaren und Durchführen einer logischen XOR-Operation durch Verknüpfen der ausgewählten Teilmengen in eine eine Signatur darstellende Bitfolge und Durchführen der Verschiebeoperationen gemäß Parametertabellen.
  22. Computerprogrammprodukt nach Anspruch 20, wobei Gewichtungen wi, durch welche die Lücken di = fi – fi+1 geteilt werden, wi = 1 / i sind.
  23. Computerprogrammprodukt nach Anspruch 20, wobei die an Paaren von Darstellungen von Zeichen durchgeführten logischen Operationen mindestens eins der Folgenden beinhalten: zyklisches Rotieren einer Folge von Bits, Verschieben der Folge von Bits, und Durchführen einer logischen XOR-Operation.
DE112012003503.8T 2011-09-19 2012-09-10 Skalierbares Deduplizierungssystem mit kleinen Blöcken Ceased DE112012003503T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
USUS-13/236,552 2011-09-19
US13/236,552 US8484170B2 (en) 2011-09-19 2011-09-19 Scalable deduplication system with small blocks
PCT/CN2012/081168 WO2013040993A1 (en) 2011-09-19 2012-09-10 Scalable deduplication system with small blocks

Publications (1)

Publication Number Publication Date
DE112012003503T5 true DE112012003503T5 (de) 2014-09-25

Family

ID=47881629

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012003503.8T Ceased DE112012003503T5 (de) 2011-09-19 2012-09-10 Skalierbares Deduplizierungssystem mit kleinen Blöcken

Country Status (6)

Country Link
US (5) US8484170B2 (de)
JP (1) JP2014534486A (de)
CN (1) CN103814361B (de)
DE (1) DE112012003503T5 (de)
GB (1) GB2508325A (de)
WO (1) WO2013040993A1 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924366B2 (en) * 2011-09-16 2014-12-30 Symantec Corporation Data storage deduplication systems and methods
US8935222B2 (en) 2013-01-02 2015-01-13 International Business Machines Corporation Optimizing a partition in data deduplication
US9509736B2 (en) 2013-01-16 2016-11-29 Cisco Technology, Inc. Method for optimizing WAN traffic
US9300748B2 (en) * 2013-01-16 2016-03-29 Cisco Technology, Inc. Method for optimizing WAN traffic with efficient indexing scheme
US9306997B2 (en) 2013-01-16 2016-04-05 Cisco Technology, Inc. Method for optimizing WAN traffic with deduplicated storage
US9244937B2 (en) * 2013-03-15 2016-01-26 International Business Machines Corporation Efficient calculation of similarity search values and digest block boundaries for data deduplication
US9116941B2 (en) 2013-03-15 2015-08-25 International Business Machines Corporation Reducing digest storage consumption by tracking similarity elements in a data deduplication system
US9678975B2 (en) * 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
US9547662B2 (en) 2013-03-15 2017-01-17 International Business Machines Corporation Digest retrieval based on similarity search in data deduplication
US10296597B2 (en) * 2013-07-15 2019-05-21 International Business Machines Corporation Read ahead of digests in similarity based data deduplicaton
US10133502B2 (en) 2013-07-15 2018-11-20 International Business Machines Corporation Compatibility and inclusion of similarity element resolutions
US10073853B2 (en) * 2013-07-17 2018-09-11 International Business Machines Corporation Adaptive similarity search resolution in a data deduplication system
EP3015999A4 (de) 2013-09-29 2016-08-17 Huawei Tech Co Ltd Datenverarbeitungsverfahren, -system und -client
EP3026585A4 (de) * 2014-02-14 2017-04-05 Huawei Technologies Co., Ltd. Serverbasiertes verfahren zur suche nach einem datenflussunterbrechungspunkt und server
KR20150121505A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 데이터 중복 제거 방법 및 장치
KR102172321B1 (ko) * 2014-05-20 2020-10-30 삼성전자주식회사 데이터 중복 제거 방법
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
US9760578B2 (en) 2014-07-23 2017-09-12 International Business Machines Corporation Lookup-based data block alignment for data deduplication
US9996603B2 (en) * 2014-10-14 2018-06-12 Adobe Systems Inc. Detecting homologies in encrypted and unencrypted documents using fuzzy hashing
US10372695B2 (en) * 2014-12-27 2019-08-06 Intel Corporation Technologies for computing rolling hashes
US20160335294A1 (en) * 2015-05-15 2016-11-17 Bjorn J. Gruenwald System and Method for Organizing Data
US9665287B2 (en) 2015-09-18 2017-05-30 Alibaba Group Holding Limited Data deduplication using a solid state drive controller
US10242021B2 (en) 2016-01-12 2019-03-26 International Business Machines Corporation Storing data deduplication metadata in a grid of processors
US10261946B2 (en) 2016-01-12 2019-04-16 International Business Machines Corporation Rebalancing distributed metadata
US10255288B2 (en) 2016-01-12 2019-04-09 International Business Machines Corporation Distributed data deduplication in a grid of processors
WO2017182062A1 (en) * 2016-04-19 2017-10-26 Huawei Technologies Co., Ltd. Concurrent segmentation using vector processing
US10922280B2 (en) * 2018-04-10 2021-02-16 Nutanix, Inc. Policy-based data deduplication
US11153094B2 (en) * 2018-04-27 2021-10-19 EMC IP Holding Company LLC Secure data deduplication with smaller hash values
CN109444570B (zh) * 2018-09-18 2021-01-01 中国人民解放军第五七一九工厂 一种基于存储器的电子产品故障诊断模块及方法
US11003629B2 (en) * 2018-10-31 2021-05-11 EMC IP Holding Company LLC Dual layer deduplication for application specific file types in an information processing system

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3694813A (en) * 1970-10-30 1972-09-26 Ibm Method of achieving data compaction utilizing variable-length dependent coding techniques
US3717851A (en) * 1971-03-03 1973-02-20 Ibm Processing of compacted data
US4192010A (en) * 1977-11-28 1980-03-04 Kerner William R Data reduction system
US4359286A (en) * 1980-11-20 1982-11-16 International Business Machines Corporation Character set expansion
US4516246A (en) * 1982-02-26 1985-05-07 Prentice Corporation Data compression system
US4672679A (en) * 1983-08-16 1987-06-09 Wang Laboratories, Inc. Context redundancy text compression
US5469354A (en) * 1989-06-14 1995-11-21 Hitachi, Ltd. Document data processing method and apparatus for document retrieval
JPH04280517A (ja) * 1991-03-08 1992-10-06 Fujitsu Ltd データ圧縮および復元方式
US5276741A (en) * 1991-05-16 1994-01-04 Trw Financial Systems & Services, Inc. Fuzzy string matcher
GB2305746B (en) * 1995-09-27 2000-03-29 Canon Res Ct Europe Ltd Data compression apparatus
JP2840589B2 (ja) * 1996-02-09 1998-12-24 富士通株式会社 データ圧縮装置及びデータ復元装置
JP3276860B2 (ja) * 1996-09-02 2002-04-22 富士通株式会社 データ圧縮/復元方法
US5870750A (en) * 1997-05-29 1999-02-09 Matsushita Electric Industrial Co., Ltd. Information retrieval system for retrieving a record of data including a keyword
CN1167014C (zh) * 1999-08-13 2004-09-15 富士通株式会社 文件处理方法和数据处理装置
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US7259751B2 (en) * 2003-02-03 2007-08-21 The Board Of Trustees Of The Leland Stanford Junior University Input systems and methods for the evaluation and optimization of same
KR20050053996A (ko) * 2003-12-03 2005-06-10 삼성전자주식회사 허프만 코드를 효율적으로 복호화하는 방법 및 장치
JP2005333233A (ja) * 2004-05-18 2005-12-02 Mitsubishi Electric Corp 電子署名装置および署名検証装置
MX2007002071A (es) * 2004-08-18 2007-04-24 Nielsen Media Res Inc Metodos y aparatos para generar firmas.
US7689633B1 (en) * 2004-09-15 2010-03-30 Data Domain, Inc. Network file system-based data storage system
US20060106769A1 (en) * 2004-11-12 2006-05-18 Gibbs Kevin A Method and system for autocompletion for languages having ideographs and phonetic characters
US7664323B2 (en) * 2005-01-28 2010-02-16 Microsoft Corporation Scalable hash-based character recognition
EP1846922A4 (de) * 2005-02-03 2009-04-08 Pitney Bowes Inc Verfahren zur zweikanal-kodierung einer nachricht
US8224830B2 (en) * 2005-03-19 2012-07-17 Activeprime, Inc. Systems and methods for manipulation of inexact semi-structured data
US7516130B2 (en) * 2005-05-09 2009-04-07 Trend Micro, Inc. Matching engine with signature generation
WO2006123429A1 (ja) * 2005-05-20 2006-11-23 Fujitsu Limited 情報検索方法、装置、プログラム、該プログラムを記録した記録媒体
JP4456554B2 (ja) * 2005-10-31 2010-04-28 富士通株式会社 データ圧縮方法及び圧縮データ送信方法
US8141149B1 (en) * 2005-11-08 2012-03-20 Raytheon Oakley Systems, Inc. Keyword obfuscation
JP2009516252A (ja) * 2005-11-15 2009-04-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ テキストの表現を取得する方法
US7617231B2 (en) * 2005-12-07 2009-11-10 Electronics And Telecommunications Research Institute Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm
US7814111B2 (en) * 2006-01-03 2010-10-12 Microsoft International Holdings B.V. Detection of patterns in data records
US7516418B2 (en) * 2006-06-01 2009-04-07 Microsoft Corporation Automatic tracking of user data and reputation checking
US7831531B1 (en) * 2006-06-22 2010-11-09 Google Inc. Approximate hashing functions for finding similar content
US8015162B2 (en) * 2006-08-04 2011-09-06 Google Inc. Detecting duplicate and near-duplicate files
US8099415B2 (en) * 2006-09-08 2012-01-17 Simply Hired, Inc. Method and apparatus for assessing similarity between online job listings
JP5007743B2 (ja) * 2007-05-24 2012-08-22 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
US8055599B1 (en) * 2007-07-13 2011-11-08 Werth Larry J Pattern recognition using cycles or traces in an associative pattern memory (APM), vertical sensors, amplitude sampling, adjacent hashes and fuzzy hashes
US8209334B1 (en) * 2007-12-28 2012-06-26 Don Doerner Method to direct data to a specific one of several repositories
US8515909B2 (en) * 2008-04-29 2013-08-20 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US8645333B2 (en) * 2008-05-29 2014-02-04 International Business Machines Corporation Method and apparatus to minimize metadata in de-duplication
US8751462B2 (en) * 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
US7733247B1 (en) * 2008-11-18 2010-06-08 International Business Machines Corporation Method and system for efficient data transmission with server side de-duplication
US8346736B2 (en) 2009-03-16 2013-01-01 International Business Machines Corporation Apparatus and method to deduplicate data
US8205065B2 (en) 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
US8254698B2 (en) * 2009-04-02 2012-08-28 Check Point Software Technologies Ltd Methods for document-to-template matching for data-leak prevention
US8484148B2 (en) * 2009-05-28 2013-07-09 Microsoft Corporation Predicting whether strings identify a same subject
US8412848B2 (en) * 2009-05-29 2013-04-02 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication
CN101630290B (zh) * 2009-08-17 2011-06-08 成都市华为赛门铁克科技有限公司 重复数据处理方法和装置
US8321648B2 (en) 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US8121993B2 (en) * 2009-10-28 2012-02-21 Oracle America, Inc. Data sharing and recovery within a network of untrusted storage devices using data object fingerprinting
US8156306B1 (en) * 2009-12-18 2012-04-10 Emc Corporation Systems and methods for using thin provisioning to reclaim space identified by data reduction processes
US20120011115A1 (en) * 2010-07-09 2012-01-12 Jayant Madhavan Table search using recovered semantic information
GB2482128A (en) * 2010-07-19 2012-01-25 Quantum Corp Delta chunks and delta hashes
US8898114B1 (en) * 2010-08-27 2014-11-25 Dell Software Inc. Multitier deduplication systems and methods
CN101908077B (zh) 2010-08-27 2012-11-21 华中科技大学 一种适用于云备份的重复数据删除方法
US8666998B2 (en) * 2010-09-14 2014-03-04 International Business Machines Corporation Handling data sets
US20120089579A1 (en) * 2010-10-08 2012-04-12 Sandeep Ranade Compression pipeline for storing data in a storage cloud
US20120089775A1 (en) * 2010-10-08 2012-04-12 Sandeep Ranade Method and apparatus for selecting references to use in data compression
CN102185889B (zh) * 2011-03-28 2014-01-22 北京邮电大学 基于iSCSI的重复数据删除方法
JPWO2012150637A1 (ja) * 2011-05-02 2014-07-28 富士通株式会社 抽出方法、情報処理方法、抽出プログラム、情報処理プログラム、抽出装置、および情報処理装置
US8521759B2 (en) * 2011-05-23 2013-08-27 Rovi Technologies Corporation Text-based fuzzy search

Also Published As

Publication number Publication date
US9747055B2 (en) 2017-08-29
US20130073529A1 (en) 2013-03-21
US20130290278A1 (en) 2013-10-31
US9075842B2 (en) 2015-07-07
US20130290279A1 (en) 2013-10-31
US8478730B2 (en) 2013-07-02
GB2508325A (en) 2014-05-28
JP2014534486A (ja) 2014-12-18
US20150286443A1 (en) 2015-10-08
WO2013040993A1 (en) 2013-03-28
US20130073528A1 (en) 2013-03-21
US9081809B2 (en) 2015-07-14
CN103814361A (zh) 2014-05-21
US8484170B2 (en) 2013-07-09
GB201406218D0 (en) 2014-05-21
CN103814361B (zh) 2016-06-29

Similar Documents

Publication Publication Date Title
DE112012003503T5 (de) Skalierbares Deduplizierungssystem mit kleinen Blöcken
DE112013001905B4 (de) Erhöhte Inline-Deduplizierungseffizienz
DE102016013248A1 (de) Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement
DE69926305T2 (de) Rechnerlesbarer Speicher zum Speichern einer Datenbank und Indizes
DE112008003826B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112013000734B4 (de) Multiplex-Klassifizierung zum Komprimieren von Tabellendaten
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112013006339B4 (de) Kompression hoher Bandbreite um Datenströme zu Verschlüsseln
DE112007003678B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112012005557B4 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE102013208930A1 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE102014204827A1 (de) Auflösen ähnlicher Entitäten aus einer Transaktionsdatenbank
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE112013000392T5 (de) Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112018000485T5 (de) Komprimierer/Dekomprimierer für nicht binäre Kontextmischung
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE102013205738A1 (de) Erfassung von tabellengrenzen in datenblöcken zur kompression
EP2940924A1 (de) PUF basierende Ableitung eines gerätespezifischen Wertes
DE112020000748B4 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE102008016179A1 (de) Automatische Generierung von Kompaktcodetabellen
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE102021108455B4 (de) Erzeugen von Snapshots eines Schlüssel-Wert-Index
WO2018051696A1 (ja) データ圧縮方法、データ圧縮装置、コンピュータプログラム及びデータベースシステム
DE112016002305T5 (de) Reduktion der Schreibverstärkung in einem Objektspeicher

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0009440000

R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final