DE202009019149U1 - Asynchron verteilte Speicherbereinigung für replizierte Speichercluster - Google Patents

Asynchron verteilte Speicherbereinigung für replizierte Speichercluster Download PDF

Info

Publication number
DE202009019149U1
DE202009019149U1 DE202009019149.4U DE202009019149U DE202009019149U1 DE 202009019149 U1 DE202009019149 U1 DE 202009019149U1 DE 202009019149 U DE202009019149 U DE 202009019149U DE 202009019149 U1 DE202009019149 U1 DE 202009019149U1
Authority
DE
Germany
Prior art keywords
negotiation
message
storage
new
messages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE202009019149.4U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202009019149U1 publication Critical patent/DE202009019149U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • 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/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems

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)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

Gerät oder eine Vielzahl an Geräten in einem verteilten System zur Datenreplizierung, wobei das System Folgendes umfasst: Mittel zum Identifizieren eines Objektes in einem Datenspeicher, das mit einer Verhandlungsnachricht in Verbindung steht; Mittel zum Verknüpfen einer neuen Verhandlungsnachricht mit dem Objekt, wobei die neue Verhandlungsnachricht auf dem Status des Objekts basiert; Mittel zum Replizieren der neuen Verhandlungsnachricht in einem Speichercluster; Mittel zum Empfangen anderer Verhandlungsnachrichten, die mit der Kopie des Objekts verknüpft sind; und Mittel zum Löschen des Objekts, wenn die andere Verhandlungsnachricht auf eine erfolgreiche Verhandlung hindeutet.

Description

  • HINTERGRUND
  • Innerhalb der Computerumgebung von Unternehmen kam es zu einem wesentlichen Wandel der Speicherarchitektur, insofern als das die zentralisierte Architektur durch verteilte Speichercluster ersetzt wurde. Da Unternehmen zusehend nach Möglichkeiten suchen, um ihre Speichereffizienz zu erhöhen, können derartige Cluster aus Commodity-Computern eine hohe Leistung, Verfügbarkeit und Skalierbarkeit für neue, datenintensive Anwendungen zu einem Bruchteil der Kosten von monolithischen Disk Arrays bieten. Um das vollständige Potential von Speicherclustern auszuschöpfen, werden die Daten über mehrere geografische Standorte repliziert, um die Verfügbarkeit zu steigern und den Netzwerkabstand von Clients zu reduzieren.
  • Speicherbereinigung bei administrativ dezentralisierten Speichersystemen, die große Mengen verteilter Objekte verwalten, könnte ein Problem darstellen. Ein Garbage Collector ist verantwortlich für die Speicherbereinigung auf Laufwerken durch das Löschen von nicht länger benötigten Objekten. Die verteilte Speicherbereinigung in Speicherclustern wird durch normales Maschinenversagen und Netzwerkpartitionierungen weiter erschwert, die es schwer, wenn nicht sogar unmöglich machen, eine unternehmensweite synchrone Ansicht der Objekte und deren Referenzen zu erhalten.
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • ZUSAMMENFASSUNG
  • Laut einer Implementierung könnte ein Verfahren durch ein Gerät oder eine Gruppe an Geräten in einem verteilten System zur Datenreplizierung durchgeführt werden. Das Verfahren könnte auch Folgendes umfassen: Die Speicherung von Objekten in einem Datenspeicher, das Replizieren von mindestens einem Objekt mit dem verteilten System zur Datenreplizierung; die Durchführung eines Scans der Objekte im Datenspeicher, die Identifizierung eines Objekts ohne darauf verweisende Referenz; die Speicherung einer Löschverhandlungsnachricht als Metadaten in Verbindung mit einem der Objekte sowie das Replizieren von Metadaten mit der Löschverhandlungsnachricht auf einem oder mehreren Geräten der Gruppe an Geräten.
  • Laut einer anderen Implementierung könnte ein Gerät aus einer Gruppe an Geräten in einem verteilten System zur Datenreplizierung auch Mittel zur Identifizierung eines Objektes in einem Datenspeicher umfassen, wobei das Objekt über eine Löschverhandlungsnachricht verfügt. Gleichzeitig umfasst es aber auch Wege zur Zuweisung einer neuen Verhandlungsnachricht zu dem Objekt, wobei die neue Verhandlungsnachricht auf dem Status des Objektes basiert; Mittel für das Replizieren der neuen Verhandlungsnachricht auf einem Speichercluster; Mittel zum Empfang anderer Verhandlungsnachrichten in Verbindung mit der Nachbildung des Objekts, sowie Mittel zum Löschen des Objektes, wenn die anderen Verhandlungsnachrichten auf eine erfolgreiche Verhandlung hinweisen.
  • Laut einer wieder anderen Implementierung könnte ein System einen Speicher zur Speicherung von Anweisungen umfassen, sowie einen Datenspeicher und einen Prozessor. Der Prozessor kann Anweisungen im Speicher umsetzen, um einen Status eines Objektes innerhalb des Datenspeicher zu identifizieren, den Status in Verbindung mit einer bestehenden Referenz des Objektes identifizieren und bestimmen, ob eine Löschverhandlungsnachricht mit dem Objekt in Verbindung steht. Gleichzeitig kann er eine neue Verhandlungsnachricht an die Objektmetadaten basierend auf dem Status des Objektes schreiben, die Metadaten mit der neuen Verhandlungsnachricht an ein oder mehrere Geräte replizieren und von einem oder mehreren Geräten anderen Verhandlungsnachrichten in Verbindung mit dem Objekt empfangen, sofern die neue Verhandlungsnachricht und die anderen Verhandlungsnachrichten zu einer Übereinstimmung für eine Löschverhandlung für das Objekt kommen.
  • Laut einer noch anderen Implementierung könnte ein Verfahren Folgendes umfassen: Austausch von einer oder mehreren Löschverhandlungsnachrichtungen zwischen Speicherclustern innerhalb eines verteilten, Multimaster-Systems zur Datenreplizierung, wobei jede der Löschverhandlungsnachrichten in die Metadaten des Objektes integriert werden, das der Löschverhandlungsnachricht unterliegt, und wobei die Löschverhandlungsnachricht unter den Speicherclustern mithilfe einer Replikationsebene des verteilten Multimaster-Systems zur Datenreplizierung verschickt wird, wenn es zu einer Übereinstimmung zwischen den Speicherclustern basierend auf einer oder mehreren Löschverhandlungsnachrichten kommt.
  • Laut einer anderen Implementierung könnte ein durch den Computer lesbarer Speicher Anweisungen umfassen, die vom Computer ausgeführt werden können. Der durch den Computer lesbare Speicher könnte Folgendes umfassen: Eine oder mehrere Anweisungen zur Identifizierung eines Objektstatus in einem Datenspeicher, wobei sich der Status darauf bezieht, ob eine Löschverhandlungsnachricht mit dem Objekt in Verbindung steht; eine oder mehrere Anweisungen, um eine neue Verhandlungsnachricht zu den Metadaten eines Objektes zu schreiben, die auf dem Status des Objektes basiert; eine oder mehrere Anweisungen zur Replikation der Objektmetadaten mit der neuen Verhandlungsnachricht auf einem Speichercluster; eine oder mehrere Anweisungen zum Empfang anderer Verhandlungsnachrichten von einem oder mehreren Geräten in Verbindung mit dem Objekt; sowie eine oder mehrere Anweisungen zur Feststellung, ob es eine Übereinstimmung für eine Löschverhandlung des Objektes basierend auf den anderen Verhandlungsnachrichten in Verbindung mit dem Objekt gibt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die beiliegenden Zeichnungen, die in diese Spezifikation integriert sind und einen Teil dieser Spezifikation darstellen, veranschaulichen eine oder mehrere der hierin beschriebenen Ausführungsformen und dienen zusammen mit der Beschreibung als Erklärung der Ausführungsformen. Die Zeichnungen umfassen Folgendes:
  • 1 ist ein Diagramm eines exemplarischen Netzwerks, in dem die hierin beschriebenen Systeme und Verfahren implementiert werden können;
  • 2 ist ein Diagramm einer exemplarischen Konfiguration eines Dateisystems von 1;
  • 3 ist ein Diagramm von exemplarischen Komponenten eines Speicherclusters von 1;
  • 4 ist ein Funktionsblockschaltbild eines exemplarischen Speicherclusters von 1;
  • 5 ist ein exemplarisches Diagramm einer Nachrichtenstruktur, die laut einer Implementierung verwendet werden könnte, die mit den hierin beschriebenen Systemen und Verfahren konsistent ist;
  • 6 ist ein Flussdiagramm eines exemplarischen Prozesses zur Durchführung einer Speicherbereinigung in einem verteilten Multimaster-System zur Datenreplizierung in Übereinstimmung mit einer Implementierung, die den hierin beschriebenen Systemen und Verfahren entspricht;
  • 7 ist ein Flussdiagramm für einen exemplarischen Prozess zum Schreiben einer Verhandlungsnachricht in Übereinstimmung mit einer Implementierung, die mit den hierin beschriebenen Systemen und Verfahren konsistent ist;
  • 8 ist ein Flussdiagramm für einen exemplarischen Prozess zum Erstellen einer neuen Referenz für ein Objekt in Übereinstimmung mit einer Implementierung, die mit den hierin beschriebenen Systemen und Verfahren konsistent ist;
  • 9 ist ein Diagramm zur Darstellung eines Teils einer exemplarischen Löschverhandlung in Übereinstimmung mit einer Implementierung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende detaillierte Beschreibung bezieht sich auf die begleitenden Zeichnungen. Die gleichen Bezugsziffern in verschiedenen Zeichnungen können die gleichen oder ähnliche Elemente identifizieren. Darüber hinaus soll die folgende detaillierte Beschreibung nicht als Beschränkung der Erfindung angesehen werden.
  • Die hierin beschriebenen Systeme und/oder Verfahren könnten eine asynchron verteilte Speicherbereinigung für replizierte Speichercluster ausführen. Die hierin beschriebenen Implementierungen könnten die zugrundeliegende Replizierungsebene eines verteilten Multimaster-Systems zur Datenreplizierung nutzen, um Löschverhandlungsnachrichten zwischen verschiedenen Clustern des verteilten Multimaster-Systems zur Datenreplizierung zu transportieren. Ein Objekt kann gelöscht werden, wenn ein verteiltes Einvernehmen erreicht wird, dass weder aktive Referenzen noch replizierte Referenzen im System vorhanden sind.
  • EXEMPLARISCHE NETZWERKONFIGURATION
  • 1 ist ein Diagramm eines exemplarischen Systems 100, in dem die hierin beschriebenen Systeme und Verfahren implementiert sein können. System 100 könnte die Clients 110-1 bis 110-N (zusammen nachstehend Clients 110 genannt) und die Speichercluster 120-1 bis 120-1 (zusammen nachstehend Speichercluster 120 genannt) umfassen, die über ein Netzwerk 130 verbunden sind. Speichercluster 120 können ein Dateisystem 140 formen (wie durch die gepunktete Linie in 1 gezeigt).
  • Netzwerk 130 könnte eines oder mehrere Netzwerke umfassen, sowie ein lokales Netzwerk (LAN), ein Wide Area Network (WAN), ein Telefonnetzwerk, wie ein öffentliches Telefonnetzwerk (PSTN), ein Intranet, das Internet, ein gleiches oder ungleiches Netzwerk oder eine Kombination aus Netzwerken. Clients 110 und Speichercluster 120 können über Kabel- und/oder drahtlose Verbindungen mit dem Netzwerk 130 verbunden werden.
  • Clients 110 könnten eines oder mehrere Arten an Geräten umfassen, wie einen PC, ein Schnurlostelefon, einen Minicomputer (PDA), einen Laptop oder anderen Arten an Kommunikationsgeräten, einen Thread oder einen Prozess, der auf einem dieser Geräte läuft und/oder Objekte, die durch diese Geräte ausgeführt werden können. In einer Implementierung enthält Client 110 eine Anwendung oder ist mit einer Anwendung verknüpft, in dessen Auftrag Client 110 mit dem Speichercluster 120 kommuniziert, um Dateidaten zu lesen oder zu verändern (z. B. schreiben).
  • Speichercluster 120 können ein oder mehrere Servergeräte oder andere Arten an Rechen- oder Kommunikationsgeräten umfassen, die Informationen auf die hierin beschriebene Art speichern, verarbeiten, suchen und/oder bereitstellen können. In einer Implementierung könnten Speichercluster 120 einen oder mehrere Server (z. B. Computersysteme und/oder Anwendungen) umfassen, die einen großen Datenspeicher für Dateien mit zufälligem Lese-/Schreibzugriff pflegen können. Der Datenspeicher von Speichercluster 120 könnte ein Indexsystem zulassen, um bei Änderungen schnell Teile eines Index aktualisieren zu können. Der Datenspeicher von Speichercluster 120 könnte eine oder mehrere Tabellen umfassen (z. B. eine Dokumenttabelle, die eine Zeile pro Uniform Resource Locator (URL) umfassen kann oder Hilfstabellen, die durch andere Werte als URLs verschlüsselt werden etc.). In einem Beispiel könnte Speichercluster 120 in einem verteilten Speichersystem integriert sein (z. B. „Bigtable” gemäß Chang et al. „Bigtable: A Distributed Storage System for Structured Data", Proc. of the 7th OSDI, Seiten 205–218 (Nov. 2006) für die Verwaltung strukturierter Daten (z. B. einem Direktzugriffs-Speichercluster von Dokumenten), die zur Erweiterung auf eine sehr große Größe entwickelt wurden (z. B. Petabyte an Daten innerhalb von tausenden an Servern).
  • Obwohl nicht in 1 gezeigt, könnte das System 100 eine Reihe anderer Komponenten umfassen, wie beispielsweise einen oder mehrere dedizierte Verbraucherserver oder Hubs. Wie hier verwendet, könnte eine Komponente Hardware oder eine Kombination aus Hardware und Software umfassen. Ein Verbraucherserver könnte beispielsweise eine Kopie der Daten mit reinem Lesezugriff von einem oder mehreren Speicherclustern 120 auf einem Datenspeicher speichern, um Zugriff für die Clients 110 zu ermöglichen. Ein Hub könnte beispielsweise eine Kopie der Daten mit reinem Lesezugriff von einem oder mehreren Speicherclustern 120 auf einem Datenspeicher speichern, um an einen oder mehrere Verbraucherserver verteilt zu werden.
  • EXEMPLARISCHE SPEICHERCLUSTER-KONFIGURATION
  • 2 ist ein Diagramm einer exemplarischen Konfiguration eines Dateisystems 140. Wie in 2 gezeigt, könnte das Dateisystem 140 die Speichercluster 120-1, 120-2, 120-3 und 120-4 umfassen. In einer Implementierung könnte das Dateisystem 140 ein verteiltes Multimaster-System zur Datenreplizierung sein, wobei jeder Speichercluster 120-1, 120-2, 120-3 und 120-4 als Master-Server für die anderen Speichercluster agieren könnte. Im Dateisystem 140 können Daten aus den Speicherclustern 120-1, 120-2, 120-3 und 120-4 repliziert werden (z. B. an mehreren geografischen Standorten), um die Datenverfügbarkeit zu erhöhen und den Netzwerkabstand von den Clients (z. B. Clients 110) zu verringern. Im Allgemeinen können verteilte Objekte und Referenzen dynamisch erstellt, mutiert, geclont und in verschiedenen Speicherclustern 120 gelöscht werden und eine zugrundeliegende Ebene zur Datenreplizierung (nicht gezeigt) erhält die Write-Order-Fidelity, um sicherzustellen, dass alle Speichercluster 120 die gleiche Version der Daten erhalten. Somit respektiert die Datenreplizierungsebene die Reihenfolge der Schreibvorgänge für die gleiche Replika eines einzelnen Objektes.
  • Obwohl 2 exemplarische Funktionskomponenten des Dateisystems 140 zeigt, könnte das Dateisystem 140 in anderen Implementierungen weniger, weitere, unterschiedliche oder anders angeordnete Komponenten haben, als in 2 dargestellt ist. In wieder anderen Implementierungen könnten eine oder mehrere Komponenten des Dateisystems 140 eine oder mehrere der Aufgaben durchführen, die laut Beschreibung von einer oder mehreren der Komponenten von Dateisystem 140 durchgeführt werden.
  • 3 ist ein Diagramm von exemplarischen Komponenten von Speichercluster 120. Speichercluster 120 könnte einen Bus 310, einen Prozessor 320, einen Hauptspeicher 330, einen ROM 340, ein Speichergerät 350, ein Eingabegerät 360, ein Ausgabegerät 370 und eine Kommunikationsschnittstelle 380 umfassen. Bus 310 könnte eine oder mehrere Leiter umfassen, die eine Kommunikation zwischen den Komponenten des Speicherclusters 120 zulassen.
  • Prozessor 320 könnte eine Art Prozessor oder Mikroprozessor umfassen, der Anweisungen interpretiert und ausführt. Der Hauptspeicher 330 könne einen RAM oder eine andere Art dynamischen Speichergerätes umfassen, das Informationen und Anweisungen für die Ausführung durch den Prozessor 320 speichern könnte. Der ROM 340 könne einen ROM-Gerät oder eine andere Art statischen Speichergerätes umfassen, das Informationen und Anweisungen für die Verwendung durch den Prozessor 320 speichern könnte. Das Speichergerät 350 könnte ein magnetisches und/oder optisches Aufzeichnungsmedium sowie das dazugehörige Laufwerk umfassen. Ein Speichergerät 350 könnte beispielsweise eine oder mehrere lokale Festplatten 355 umfassen, die eine dauerhafte Speicherung bieten. In einer Implementierung könnte ein Speichercluster 120 Metadaten für gespeicherte Objekte pflegen, die im Dateisystem 140, auf einem oder mehreren durch den Computer lesbaren Medien, sowie auf einem Hauptspeicher 330 und/oder einem Speichergerät 350 gespeichert sind. Ein Speichercluster 120 könnte beispielsweise die Versionsnummer, Zeitstempel, Kategorien und/oder Referenzindikatoren für Objekte innerhalb des Speichergerätes 350 speichern.
  • Das Eingabegeräte 360 könne einen oder mehrere Mechanismen umfassen, über die der Betrieb Informationen in das Speichercluster 120 eingeben kann, wie eine Tastatur, ein Tastenfeld, eine Taste, eine Maus, einen Stift etc. Das Ausgabegerät 370 könnte einen oder mehrere Mechanismen umfassen, die Informationen für den Betreiber ausgeben, einschließlich eines Displays, einer Leuchtdiode (LED) etc. Die Kommunikationsschnittstelle 380 könnte alle empfangerähnlichen Mechanismen umfassen, die Speicherclustern 120 die Kommunikation mit anderen Geräten und/oder Systemen ermöglichen. Die Kommunikationsschnittstelle 380 könnte beispielsweise Mechanismen zur Kommunikation misst anderen Speicherclustern 120 und/oder Clients 110 umfassen.
  • 4 ist ein Funktionsblockschaltbild eines Speicherclusters 120. Wie in 4 gezeigt ist, können Speichercluster 120 auch einen Datenspeicher 410 und eine Speicherbereinigungslogik 420 umfassen. In einer Implementierung, wie in 4 gezeigt, könnte ein Datenspeicher 410 mit einem Speichercluster 120 bereitgestellt werden. In anderen Implementierungen könnte ein Datenspeicher 410 in einem oder mehreren anderen Geräten von System 100 bereitgestellt werden, die mit dem Speichercluster 120 kommunizieren, wie externe Speichergeräte oder Geräte, die mit einem Indexsystem verbunden sind (nicht angezeigt).
  • Der Datenspeicher 410 kann eine Dokumenttabelle und sekundäre Tabellen umfassen, um einen oder mehrere Indexe für ein Suchsystem bereitzustellen. In einem Beispiel können die Dokumenttabelle und die sekundären Tabellen durch eine Eigenschaft einer URL verschlüsselt werden, um beim Zugriff und/oder der Aktualisierung von Informationen in Verbindung mit der URL zu helfen. Mindestens ein Teil jedes Datenspeichers 410 kann auf mehreren Speicherclustern 120 repliziert werden. Die Anzahl an Repliken für jeden Datenspeicher 410 kann durch den Benutzer vorgegeben werden.
  • Die Garbage Collector Logik 420 kann eine Logik zum Entfernen von nicht referenziertem Inhalt, wie zuvor gelöschte Dateien, umfassen. Die Garbage Collector Logik 420 kann nicht referenzierten Inhalt zum Beispiel von einem Datenspeicher 410 entfernen. Die Garbage Collector Logik 420 kann beispielsweise bestimme, ob ein Objekt (z. B. ein Dokument) in einem Datenspeicher 410 nicht länger referenziert ist (d. h. ein Objekt ohne Links, die auf das Objekt verweisen) und kann aus dem Speichercluster 120 jegliche Objekte (z. B. ein Dokument) entfernen, die nicht länger über eine Funktion referenziert werden (z. B. eine MapReduce-Funktion), die Speichercluster 120 durchläuft und nicht referenzierte Objekte entfernt. Ein Objekt ist „referenziert” oder „aktiv”, wenn eine Verknüpfung auf dieses Objekt besteht. Somit kann die Garbage Collector Logik 420 unnötige Informationen von Speicherclustern 120 entfernen, während aktive Objekte erhalten bleiben.
  • Das Entfernen eines Objektes ist nicht so einfach, wie das Löschen des Objektes, da das Objekt in anderen Speicherclustern 120 bestehen könnte. Somit kann die Garbage Collector Logik 420 Löschverhandlungsnachrichten zusammenstellen, die zwischen verschiedenen Speicherclustern 120 von Dateisystemen 140 verschickt werden können. Die Garbage Collector Logik 420 kann ein Objekt löschen, wenn ein verteiltes Einvernehmen erreicht wird (z. B. zwischen allen Speicherclustern 120 an Dateisystemen 140, die eine Replika des Objektes enthalten), dass weder aktive Referenzen noch replizierte Referenzen im System vorhanden sind. Die Garbage Collector Logik 420 kann die Löschverhandlungsnachrichten aus den Metadaten des Objektes löschen, das der Löschverhandlung unterliegt. Die Nachrichten können dann asynchron auf alle anderen Speichercluster 120 repliziert werden, die Repliken dieses Objektes enthalten.
  • Eine von der Garbage Collector Logik 420 erstellte Nachricht könnte beispielsweise einen „Löschen”-Indiz zum Einleiten einer Löschverhandlung, eine Bestätigungsindiz („ACK”) zur Bereitstellung einer positiven Bestätigung für eine Löschverhandlung, eine negative Bestätigungsindiz („NACK”) für die Bereitstellung einer negativen Bestätigung für eine Löschverhandlung und eine Synchronisationsindiz („GotAll”) zur Bereitstellung einer Zusage umfassen, dass die Bestätigungen von anderen Speicherclustern 120 empfangen wurden. In einer Implementierung können einem Objekt keine neuen Referenzen hinzugefügt werden, für das eine Lösch- oder ACK-Nachricht ausstehend ist. Die Nachrichtenformate und Verwendungen sind nachstehend detaillierter erläutert.
  • Obwohl 3 exemplarische Funktionskomponenten des Speicherclusters 120 zeigt, könnten die Speichercluster 120 in anderen Implementierungen weniger, weitere, unterschiedliche oder anders angeordnete Funktionskomponenten haben, als in 3 dargestellt ist. In wieder anderen Implementierungen könnten eine oder mehrere Funktionskomponenten des Speicherclusters 120 eine oder mehrere der Aufgaben durchführen, die laut Beschreibung von einer oder mehreren der Funktionskomponenten durchgeführt werden.
  • EXEMPLARISCHE NACHRICHTENSTRUKTUR
  • 5 bietet eine Darstellung einer exemplarischen Nachrichtenstruktur 500 für eine Verhandlungsnachricht, die in einer exemplarischen Implementierung verwendet werden kann. Wie in 5 gezeigt, könnte eine Nachrichtenstruktur 500 einen Nachrichtenteil 510, einen Teil zur Speicherclusteridentifizierung 520 und einen Teil zur Verhandlungsanfragenidentifizierung 530 enthalten. Der Nachrichtenteil 510 könnte beispielsweise eine „Delete”-Indiz, eine „ACK”-Indiz, eine „NACK”-Indiz oder eine „GotAll”-Indiz umfassen. Der Teil zur Speicherclusteridentifizierung 520 könnte eine eindeutige Kennung (z. B. eine Cluster-ID) für den Speichercluster 120 umfassen, die die Nachricht im Nachrichtenteil 510 initiiert. Der Teil zur Verhandlungsanfragenidentifizierung 530 könnte eine einmalige Kennung (z. B. ReqID) für die ursprüngliche Löschverhandlung umfassen.
  • Die Nachrichtenstruktur 500 könnte aufgelistet sein in Form von Nachricht:Cluster:ID:ReqID. Eine Löschverhandlung für ein Objekt könnte beispielsweise durch das Speichercluster 120-1 initiiert werden, mit der Nachricht „Delete:01:5555”, wobei „01” die Cluster-ID für das Speichercluster 120-1 ist und „5555” die ReqID. Eine Bestätigung für die Verhandlung von Speichercluster 120-2 könnte „ACK:02:5555” sein, wobei „02” die Cluster-ID für das Speichercluster 120-2 ist und „5555” die ReqID für die Bestätigung bleibt (und alle zukünftigen Nachrichten, die zur ursprünglichen Verhandlung gehören).
  • EXEMPLARISCHE PROZESSABLÄUFE
  • 6 ist ein Flussdiagramm eines exemplarischen Prozesses 600 zur Durchführung einer Speicherbereinigung in einem verteilten Multimaster-System zur Datenreplizierung (z. B. Dateisystem 140). In einer Implementierung kann der Prozess 600 durch einen der Speichercluster 120 durchgeführt werden. In einer anderen Implementierung können einige oder alle Bestandteile von Prozess 600 von einem anderen Gerät oder einer Gruppe an Geräten durchgeführt werden, inklusive oder exklusive des Speicherclusters 120. Der Prozess 600 kann periodisch in jedem Speichercluster 120 implementiert werden und könnte einen Scan aller oder eines Teils der Objekte im Speichercluster 120 umfassen. Für spezielle, unten beschriebene Beispiele des Prozesses 600 kann auf das Speichercluster 120-1 des Dateisystems 140 verwiesen werden, wobei das Speichercluster 120-1 eine Cluster-ID von „01” umfasst.
  • Wie in 6 gezeigt ist, kann der Prozess 600 mit der Durchführung eines Scans der Objekte (Block 610) und der Identifizierung nicht-referenzierter und verhandelter Objekte (Block 620) beginnen. Beispielsweise könnte das Speichercluster 120-1 (beispielsweise mithilfe der Garbage Collector Logik 420) einen Scan aller oder eines Teils der Objekte durchführen, die im Speichercluster 120-1 (z. B. im Datenspeicher 410) gespeichert sind. Der Scan könnte beispielsweise Objekte ohne Referenzen sowie Objekte mit Löschverhandlungsnachrichten identifizieren, indem die Metadaten der entsprechenden Objekte ausgelesen werden.
  • Es könnte bestimmt werden, ob eine abgeschlossene Löschverhandlung für ein Objekt identifiziert wurde (Block 630). Eine abgeschlossene Löschverhandlung könnte beispielsweise auf eine erfolgreiche oder fehlgeschlagene Löschverhandlung hinweisen. Beispielsweise könnte Speichercluster 120-1 ein Objekt mit Metadaten identifizieren, die entweder eine erfolgreiche oder eine fehlgeschlagene Löschverhandlung bestätigen.
  • Wenn eine abgeschlossene Löschverhandlung für ein Objekt identifiziert wird (Block 630 – YES), kann das Objekt von der erfolgreichen Löschverhandlung oder der fehlgeschlagenen Löschverhandlungsnachricht durch Einleitung von Speichercluster (Block 640) gelöscht werden. Wenn das Speichercluster 120-1 in einer exemplarischen Implementierung Metadaten in einem Objekt identifiziert, die darauf hinweisen, dass das Speichercluster 120-1 zuvor eine Löschverhandlung für das Objekt eingeleitet hat und wenn alle anderen Speichercluster, die eine Replika des Objektes gespeichert haben, die Löschung des Objektes anerkennen (z. B. durch das Schreiben einer ACK-Nachricht und/oder einer GotAll-Nachricht an die Objektmetadaten), kann Speichercluster 120-1 das Objekt und die dazugehörigen Metadaten löschen. Wenn der Scan in Speicher 120-1 beispielsweise ein Objekt mit „Delete:01:ReqID” und „GotAll:*:ReqID” (wobei „*” die Speichercluster-ID für jeden Speichercluster 120) in allen anderen Speicherclustern erkennt, in denen eine Replika des Objektes gespeichert ist (z. B. Speichercluster 120-2, 120-3 und 120-4) können das Objekt und die Metadaten gelöscht werden. Somit kann das Speichercluster 120-1 der Initiator einer erfolgreichen Verhandlung sein.
  • Weiterhin in Referenz zu Block 640 aber in einer anderen exemplarischen Implementierung, wenn ein Speichercluster Metadaten in einem Objekt identifiziert, die darauf hinweisen, dass Speichercluster 120-1 zuvor eine Löschverhandlung für das Objekt eingeleitet hat und mindestens ein anderes Speichercluster 120 darauf hingewiesen hat, dass das Objekt nicht gelöscht werden darf (durch das Schreiben einer NACK-Nachricht), kann das Speichercluster 120-1 die Metadaten löschen, die die originale Verhandlungsnachricht enthalten, sowie alle dazugehörigen Nachrichten von dem anderen Speichercluster 120. Wenn der Scan in Speichercluster 120-1 beispielsweise ein Objekt mit „Delete:01:ReqID”, „ACK:*:ReqID” und „NACK:*:ReqID” (wobei „*” die Speichercluster-ID angibt) von allen anderen Speicherclustern 120 erkennt und es mindestens eine NACK-Nachricht gibt, können alle entsprechenden Delete-, ACK- und NACK-Nachrichten aus den Metadaten des entsprechenden Objekts gelöscht werden. Somit kann das Speichercluster 120-1 der Initiator einer fehlgeschlagenen Verhandlung sein.
  • Wenn keine abgeschlossene Löschverhandlung für ein Objekt (Block 630 – NO) identifiziert wird, kann eine Verhandlungsnachricht basierend auf dem Objektstatus (Block 650) an die Objektmetadaten geschrieben werden. Wie hierin weiter beschrieben ist, können Nachrichten basierend auf einem Objektstatus (z. B. „Delete”, „ACK”, „NACK”, „GotAll”) für die Objektmetadaten in einem Cluster geschrieben und für alle Cluster repliziert werden, die eine Replika des Objektes enthalten. In Abhängigkeit mit dem Objektstatus kann Speichercluster 120-1 beispielsweise eine neue Verhandlungsnachricht zum Löschen eines Objektes schreiben. Das Speichercluster 120-1 kann alternativ eine ACK-Nachricht, eine NACK-Nachricht oder eine GotAll-Nachricht als Antwort auf eine laufende Verhandlung schreiben. Verwendung von Verhandlungsnachrichten gemäß weiterer Beschreibung in Bezug auf 7.
  • Die Objektmetadaten können für andere Speichercluster (Block 660) repliziert werden. Speichercluster 120-1 könnte beispielsweise die zugrundeliegende Replizierungsebene des verteilten Multimaster-Systems zur Datenreplizierung 140 nutzen, um die Verhandlungsnachrichten) für Speichercluster 120-2, Speichercluster 120-3, Speichercluster 120-4 etc. zu replizieren. Somit können die Verhandlungsnachrichten an andere Cluster mit Repliken der Objektmetadaten verteilt werden und müssen nicht als separate Nachrichten verteilt werden.
  • Der Prozess 600 kann wiederholt werden, bis alle Objekte im Speichercluster (z. B. Speichercluster 120-1) gescannt wurden und kann periodisch wiederholt werden. Der Prozess 600 kann von jedem der anderen Speichercluster (z. B. Speichercluster 120-2, 120-3, ..., 120-M) im verteilten Multimaster-System zur Datenreplizierung (z. B. Dateisystem 140) ähnlich durchgeführt werden. Somit können die von anderen Speicherclustern replizierten Objektmetadaten Verhandlungsnachrichten als Antwort auf die Verhandlungsnachrichten von Speichercluster 120-1 enthalten. Jedes der Speichercluster könnte auch weiterhin Verhandlungsnachrichten in der Replizierungsebene des Dateisystems austauschen, um asynchrone Verhandlungen für Objekte auszuführen, die durch ein anderes Speichercluster zur Löschung markiert wurden.
  • 7 ist ein Flussdiagramm für einen exemplarischen Prozess 650 zum Schreiben der Verhandlungsnachricht aus 6. Der Prozess 650 kann von einem Speichercluster (z. B. einem der Speichercluster 120) im verteilten Multimaster-System zur Datenreplizierung (z. B. Dateisystem 140) durchgeführt werden. Für spezielle Beispiele des Prozesses 650, kann auf das Speichercluster 120-1 (mit Cluster-ID „01 ”) und Speichercluster 120-2 (mit Cluster-ID „02”) des verteilten Multimaster-Systems zur Datenreplizierung verwiesen werden.
  • Es kann bestimmt werden, ob es laufende Verhandlungen gibt (Block 710). Beispielsweise kann das Speichercluster 120-1 (mithilfe von z. B. Garbage Collector Logik 420) bestimmen, ob die Metadaten für ein Objekt eine Löschverhandlungsnachricht umfassen. In einer Implementierung könnte eine Löschverhandlung für ein Objekt zuvor von Speichercluster 120-1 oder beispielsweise auch durch ein anderes Speichercluster (z. B. Speichercluster 120-2, 120-3 oder 120-4) eingeleitet worden sein.
  • Wenn bestimmt wurde, dass es keine laufenden Verhandlungen gibt (Block 710 – NO) kann bestimmt werden, ob Referenzen auf das Objekt (Block 715) verweisen. Beispielsweise könnte Speichercluster 120-1 (z. B. mithilfe der Garbage Collector Logik 420) bestimmen, ob ein bestimmtes Objekt über Referenzen verfügt (z. B. durch Analyse eines gerichteten Referenzdiagramms). Wenn bestimmt wird, dass keine Referenzen auf das Objekt verweisen (Block 715 – NO), kann eine neue „Delete”-Nachricht geschrieben werden (Block 720). Wenn der Scan in Speichercluster 120-1 beispielsweise ein Objekt ohne Referenz findet und keine laufende Verhandlung besteht (z. B. keine „Delete”-Nachricht), kann das Speichercluster 120-1 eine einmalige ReqID erstellen und eine neue Löschverhandlungsnachricht (z. B. „Delete:01:ReqID”) für das Objekt schreiben. Wenn bestimmt wird, dass Referenzen auf das Objekt verweisen (Block 715 – JA), ist keine Nachricht erforderlich (Block 790). Wenn der Scan im Speichercluster 120-1 beispielsweise ein Objekt mit einer Referenz findet und es keine laufenden Löschverhandlungen gibt, erfordert da Objekt zu diesem Zeitpunkt möglicherweise keine weitere Bearbeitung.
  • Wenn bestimmt wurde, dass es laufende Verhandlungen gibt (Block 710 – JA) kann bestimmt werden, ob Referenzen auf das Objekt verweisen (Block 730). Beispielsweise könnte Speichercluster 120-1 (z. B. mithilfe der Garbage Collector Logik 420) bestimmen, ob ein bestimmtes Objekt über Referenzen verfügt. Wenn bestimmt wird, dass Referenzen auf das Objekt verweisen (Block 730 – JA), kann bestimmt werden, ob eine vorherige negative Bestätigung bereits in den Metadaten des Objekts gespeichert ist (Block 735). So könnte beispielsweise Speichercluster 120-1 (z. B. mithilfe der Garbage Collector Logik 420) bestimmen, bereits eine NACK-Nachricht von Speichercluster 120-1 (z. B. „NACK:01:ReqID”) in die Metadaten des Objekts integriert ist.
  • Wenn festgestellt wird, dass noch keine vorherige negative Bestätigung in den Metadaten des Objekts gespeichert wurde (Block 735 – NEIN), kann eine negative Bestätigung („NACK”-Nachricht) geschrieben werden (Block 740). Wenn der Scan in Speichercluster 120-1 beispielsweise ein Objekt mit Referenzen und einer laufenden Verhandlung (z. B. „Delete:02:ReqID”) von einem anderen Speichercluster (z. B. Speichercluster 120-2) findet, kann das Speichercluster 120-1 eine negative Bestätigung (z. B. „NACK:01-.ReqID”) in die Metadaten des Objektes schreiben. Wenn bestimmt wird, dass eine vorherige negative Bestätigung bereits in den Metadaten des Objekts gespeichert ist (Block 735 – JA), ist zu diesem Zeitpunkt keine weitere Bearbeitung des Objektes erforderlich (Block 790).
  • Wenn bestimmt wurde, dass es keine Referenzen auf das Objekt verweisen (Block 730 – NEIN) kann bestimmt werden, ob alle ACKs empfangen wurden (Block 750). So könnte beispielsweise Speichercluster 120-1 (z. B. mithilfe der Garbage Collector Logik 420) bestimmen, ob Bestätigungen von allen Speicherclustern 120 im System 140 (z. B. „ACK:*:ReqID”, wobei „*” die Cluster-ID ist) in die Metadaten des Objekts integriert wurden. Wenn bestimmt wird, dass alle ACKs empfangen wurden (Block 750 – JA), kann eine „GotAll”-Nachricht geschrieben werden (Block 760).
  • Wenn ein Scan in Speichercluster 120-1 beispielsweise ein Objekt mit einer Delete-Nachricht (z. B. „Delete:02:ReqID”) und Bestätigungen von jedem Speichercluster 120 im System 140 findet (z. B. „ACK:*:ReqID”, wobei „*” die Cluster-ID ist), kann das Speichercluster 120-1 eine Bestätigungsnachricht (z. B. „GotAlkOl:ReqID”) zur Verwendung durch das einleitende Speichercluster 120-2 schreiben. Wenn bestimmt wird, dass alle ACKs nicht empfangen wurden (Block 750 – NEIN), kann bestimmt werden, ob eine vorherige Bestätigung bereits in den Metadaten des Objekts gespeichert ist (Block 770). So könnte beispielsweise Speichercluster 120-1 (z. B. mithilfe der Garbage Collector Logik 420) bestimmen, ob bereits eine ACK-Nachricht von Speichercluster 120-1 (z. B. „ACK:01:ReqID”) in die Metadaten des Objekts integriert ist.
  • Wenn festgestellt wird, dass noch keine vorherige Bestätigung in den Metadaten des Objekts gespeichert wurde (Block 770 – NEIN), kann eine neue Bestätigung („ACK”-Nachricht) geschrieben werden (Block 780). Wenn der Scan in Speichercluster 120-1 beispielsweise ein Objekt ohne Referenzen und eine laufende Verhandlung (z. B. „Delete:02:ReqID”) von einer anderen Replika (z. B. Speichercluster 120-2) findet, kann das Speichercluster 120-1 eine Bestätigung (z. B. „ACK:01:ReqID”) in die Metadaten des Objektes schreiben. Wenn bestimmt wird, dass eine vorherige Bestätigung bereits in den Metadaten des Objekts gespeichert ist (Block 770 – JA), ist zu diesem Zeitpunkt keine weitere Bearbeitung des Objektes erforderlich (Block 790).
  • 8 ist ein Flussdiagramm für einen exemplarischen Prozess 800 zum Erstellen einer neuen Referenz für ein Objekt in Übereinstimmung mit einer Implementierung, die mit den hierin beschriebenen Systemen und Verfahren konsistent ist. Der Prozess 800 kann von einem Speichercluster (z. B. einem der Speichercluster 120) im verteilten Multimaster-System zur Datenreplizierung (z. B. Dateisystem 140) durchgeführt werden. Für spezielle Beispiele des Prozesses 800 kann auf das Speichercluster 120-1 (mit einer Cluster-ID von „01”) des Dateisystems 140 verwiesen werden.
  • Ein Referenzindiz für ein Objekt könnte empfangen werden (Block 810). Beispielsweise könnte Speichercluster 120-1 eine Anfrage zum Hinzufügen einer neuen Referenz für ein Objekt erhalten. Die Objektmetadaten können für die Verhandlungsnachrichten geprüft werden, die durch das Speichercluster eingeleitet wurden (Block 820). Speichercluster 120-1 könnte beispielsweise die Metadaten des Objektes prüfen, um jegliche Löschverhandlungsnachrichten sowie insbesondere Delete- oder ACK-Verhandlungsnachrichten zu identifizieren, die zuvor durch das Speichercluster 120-1 eingeleitet wurden (z. B. „Delete:01:ReqID” oder „ACK:01:ReqID”). In hierin beschriebenen Implementierungen könnte Speichercluster 120-1 keine neue Referenz zu einem Objekt schreiben, für das eine laufende Verhandlung in den Objektmetadaten existiert, mit einer Delete- oder ACK-Nachricht, die durch das Speichercluster 120-1 eingeleitet wurde.
  • Es könnte bestimmt werden, ob Delete- oder ACK-Nachrichten vorliegen (Block 830). Wenn eine Delete- oder ACK-Nachricht vorliegt (Block 830 – JA), kann eine Replika in einem anderen Speichercluster als Failover verwendet werden (Block 840). Wenn Speichercluster 120-1 beispielsweise eine „Delete:01:ReqID”-Nachricht in den Metadaten des Objektes identifiziert, blockiert die Nachricht das Speichercluster 120-1 vom Schreiben einer neuen Referenz für das Objekt. Somit wird eine Anfrage zum Schreiben einer Referenz für ein Objekt im Speichercluster 120-1 an ein anderes Speichercluster (z. B. Speichercluster 120-2) weitergeleitet.
  • Wenn keine Delete- oder ACK-Nachrichten vorhanden sind (Block 830 – NEIN), kann eine neue Referenz für das Objekt geschrieben werden (Block 850). Beispielsweise könnte Speichercluster 120-1 einfach die angeforderte Referenz für das aktive Objekt schreiben.
  • BEISPIELE
  • 9 bietet ein exemplarisches Netzwerk, das einen Teil einer exemplarischen Löschverhandlung in Übereinstimmung mit den hierin beschriebenen Implementierungen implementiert. Ein Algorithmus zur Bereinigung könnte periodisch auf allen Speicherclustern XX, YY und ZZ ausgeführt werden und könnte alle Objekte in dem Speichercluster scannen. Nachrichten (z. B. Delete, ACK, NACK, GotAll) können vom Garbage Collector für die Metadaten eines Objektes in einem Cluster (z. B. Speichercluster YY) geschrieben und auf alle anderen Cluster (z. B. Speichercluster XX und ZZ) repliziert werden, die Objektrepliken enthalten.
  • Der Algorithmus der Speicherbereinigung, der mit dem Garbage Collector verwendet wird, kann in Übereinstimmung mit Richtlinien verwendet werden, die auf den hierin beschriebenen Prinzipien basieren. Wenn der Garbage Collector Scan in Speichercluster YY ein Objekt ohne Referenz findet und keine laufende Verhandlung besteht (z. B. keine „Delete:YY:ReqID”-Nachricht), kann der Garbage Collector in Speichercluster YY eine einmalige ReqID (z. B. 22222) erstellen und „Delete:YY:22222” für die Metadaten des Objektes schreiben. Wenn der Garbage Collector Scan im Speichercluster XX zum ersten Mal eine Löschverhandlung (z. B. Delete:YY:22222) von einer anderen Replika (z. B. von Speichercluster YY) findet, schreibt der Garbage Collector „ACK:XX:22222” wenn das Objekt keine Referenz hat, oder anderenfalls „NACK:XX:22222”. Der Speichercluster XX kann einem Objekt keine neuen Referenzen hinzufügen, für das eine Delete:XX:ReqID- oder 20 ACK:XX:ReqID-Nachricht ausstehend ist. Wenn der Garbage Collector Scan im Speichercluster XX zum ersten Mal Delete:YY:22222 und ACK:*:22222 von allen anderen Repliken findet, könnte der Gasgabe Collector GotAll:XX:22222 schreiben. In diesem Fall ist das Speichercluster XX nicht der Initiator. Wenn der Garbage Collector Scan in Speichercluster YY Delete:YY:22222 und GotAll:*:22222 von allen anderen Repliken findet, werden das Objekt und die Metadaten gelöscht. (Speichercluster YY ist der Initiator einer erfolgreichen Verhandlung.) Wenn der Garbage Collector Scan in Speichercluster YY Delete:YY:22222, ACK:XX:22222 und NACK:ZZ:22222 von allen anderen Repliken findet und es mindestens eine NACK-Nachricht gibt, werden alle Delete-, ACK- und NACK-Nachrichten gelöscht, die zu ReqID 22222 gehören, aus den Metadaten des Objekts gelöscht. In diesem Fall ist das Speichercluster YY der Initiator einer fehlgeschlagenen Verhandlung.
  • Im Dateisystem aus 9 können die Speichercluster XX, YY und ZZ jeweils zum Speichern von Repliken der Objektdaten zugewiesen sein. 9 zeigt eine Replika („Metadaten 1A”) der Metadaten eines Objektes, „Objekt 1”. Metadaten 1A umfassen eine Löschverhandlung, die von Speichercluster YY eingeleitet wird und an Speichercluster XX geschickt wird. Als Antwort könnte Speichercluster XX eine Antwortnachricht zu den Metadaten des Objekts hinzufügen und die Metadaten-Replika („Metadaten 1B”) an das Speichercluster YY schicken. In dem Dateisystem von 9 würden die Metadaten 1A und Metadaten 1B auch an Speichercluster ZZ repliziert (nicht gezeigt). Anschließende Metadaten-Repliken (nicht gezeigt), die zwischen Speicherclustern XX, YY und ZZ verschickt werden, könnten weitere Verhandlungsnachrichten in den Metadaten von Objekt 1 umfassen, bis eine verteilte Übereinstimmung zur Löschung von Objekt 1 oder zum Belassen von Objekt 1 sowie dem Löschen der Nachrichten in Verbindung mit der Verhandlung, die von Speichercluster YY eingeleitet wurde, erreicht wird.
  • Die Anwendung der hierin beschriebenen Systeme und/oder Verfahren kann eine Garantie zur Protokollverfügbarkeit bieten, sodass ein Objekt mit einer aktiven Replika nicht gelöscht werden kann und immer verfügbar ist. Wenn es beispielsweise, weiterhin in Bezug auf 9, eine aktive Replika von Objekt 1 im Speichercluster XX gibt, wird die Löschverhandlung des Objektes nicht positiv durch das Speichercluster XX bestätigt, sodass Objekt 1 nicht gelöscht werden kann. Auch wenn eine Löschverhandlung, die von Speichercluster YY eingeleitet wurde, im Gange ist, werden Clone-Anfragen (z. B. Anfragen zum Erstellen einer neuen Objektreferenz) im Speichercluster YY per Failover (z. B. automatisches Umschalten) an die aktive Replika von Objekt 1 im Speichercluster XX fortgesetzt.
  • Die Anwendung der hierin beschriebenen Systeme und/oder Verfahren kann eine Garantie zur Protokollaktivität bieten. Für eine eingeleitete Löschverhandlungsanfrage, Delete:XX:ReqID, wird der Garbage Collector Scan-Prozess in Speichercluster YY beispielsweise letztendlich ACK:YY:ReqID oder NACK:YY:ReqID schreiben und der Verhandlungsprozess im Speichercluster XX wird mit einer Ja/Nein-Entscheidung abgeschlossen, wenn alle diese ACKs und/oder NACKs repliziert wurden. Dann kann GotAll:*:ReqID durch alle Speichercluster in die Metadaten des Objekts geschrieben werden, wenn die Entscheidung positiv ist, was letztendlich die tatsächliche Löschung durch Speichercluster XX auslösen wird, dass dies über die zugrundeliegenden Replizierungsebene an die anderen Speichercluster YY und ZZ verbreiten wird. Sollte eine aktive Replika bestehen, beispielsweise in Speichercluster ZZ, wird die Entscheidung negativ sein und der Initiator (z. B. Speichercluster XX) kann die Objektmetadaten durch Löschen der Verhandlungsnachrichten bereinigen. Die bereinigten Metadaten werden letztendlich an alle Speichercluster verbreitet, die ACK geschrieben haben und das Objekt wird dort verfügbar gemacht.
  • Die hierin beschriebene Anwendung der Systeme und/oder Verfahren kann auch eine Garantie dafür bieten, dass keine Phantomreferenzen erneut auftauchen können, nachdem ein Objekt gelöscht wurde. Wenn beispielsweise Objekt 1 zunächst in XX gelöscht wurde. Basierend auf dem Garbage Collection Algorithmus muss es der Fall sein, dass GotAll:*:ReqID von den anderen Speicherclustern auf Speichercluster XX repliziert wurde, bevor die Löschung durchgeführt wurde. Gemäß dieser Schlussfolgerung sind alle Replizierungsdaten, die für Speichercluster YY vorgesehen sind, frei von Phantomreferenzen, die von einem wieder anderen Speichercluster ZZ repliziert werden. Das liegt an der Tatsache, dass der Speichercluster YY GotAll:YY:ReqID schreibt, wenn alle ACKs von den anderen Speicherclustern, insbesondere Speichercluster ZZ, empfangen wurden, während in Speichercluster ZZ nach dem Schreiben von ACK:ZZ:ReqID keine neuen Referenzen hinzugefügt werden konnten und es zu diesem Zeitpunkt keine aktiven Referenzen in Speichercluster ZZ gab. Beachten Sie, dass es weiterhin Referenzen geben könnte, die von Speichercluster ZZ auf Speichercuster YY repliziert werden, nachdem ACK:YY:ReqID geschrieben und bevor ACK:ZZ:ReqID repliziert wurde, aber alle diese Referenzen können gelöscht werden, wenn ACK:ZZ:ReqID auf Speichercluster YY repliziert wird, da die Replizierungsebene die Reihenfolge der Schreibvorgänge auf eine einzelne Replika respektiert.
  • Die Anwendung der hierin beschriebenen Systeme und/oder Verfahren kann darüber hinaus keine Garantie zur Protokollbereinigung bieten. Wenn eine Löschverhandlung beispielsweise fehlschlägt, wird der Initiator die Delete-, ACK- und NACK-Verhandlungsnachrichten löschen und die Löschung wird an die anderen Objektrepliken per Replizierung verbreitet. Jeglicher Datenabfall wird entfernt, dass der Algorithmus so konfiguriert ist, dass alle relevanten Nachrichten von dem Initiator empfangen werden müssen, bevor die Löschung durch den Initiator durchgeführt werden kann.
  • SCHLUSSFOLGERUNG
  • Die hierin beschriebenen Systeme und/oder Verfahren könnten einen asynchron verteilten Algorithmus zur Speicherbereinigung für replizierte Speichercluster bereitstellen, die Garantien für die Verfügbarkeit, Aktivität und Konsistenz bieten. Der Algorithmus verwendet die zugrundeliegende Replizierungsebene zum Transport der Nachrichten zwischen verschiedenen Clustern. Jede Löschverhandlung wird durch die Garbage Collector Logik in einem der Cluster eingeleitet und hat eine einmalige Kennung. Der Algorithmus unterstützt mehrere gleichzeitige Verhandlungen. Ein Objekt kann durch den Initiator gelöscht werden, wenn eine verbreitete Übereinstimmung erreicht wird; anderenfalls wird die Verhandlung ungültig.
  • Die vorstehende Beschreibung der Implementierungen bietet eine Veranschaulichung und Beschreibung; sie ist in keiner Weise dazu gedacht, den Umfang der Erfindung auf die präzisen beschriebenen Formen einzuschränken. In Bezug auf die obigen Anleitungen sind viele Modifizierungen und Varianten möglich oder können aus der Praxis mit der Erfindung erworben werden.
  • In einer anderen Implementierung kann zum Beispiel eine synchrone Version des Garbage Collector Algorithmus verwendet werden, in der Garbage Collectors in verschiedenen Speicherclustern direkt kommunizieren und nicht über die Replizierungsebene.
  • Dazu kommt, dass die Serie der Blöcke zwar in Bezug auf 6 und 7 beschrieben wurde, die Reihenfolge der Block jedoch in anderen Implementierungen modifiziert werden kann. Darüber hinaus können unabhängige Blöcke parallel durchgeführt werden.
  • Es wird auch offensichtlich, dass die hier beschriebenen Ausführungsformen in vielen verschiedenen Formen von Software, Firmware und Hardware in den abgebildeten Figuren implementiert werden können. Der tatsächliche Softwarecode oder die spezialisierte Hardwaresteuerung für die Implementierung von hierin beschriebenen Ausführungsformen wird die Erfindung nicht beschränken. Somit wurde der Betrieb und das Verhalten der Ausführungsformen ohne Referenz auf den speziellen Softwarecode beschrieben – da davon ausgegangen wird, dass die Software und Steuerungshardware zur Implementierung der Ausführungsformen basierend auf der hier enthaltenen Beschreibung entworfen sind.
  • Darüber hinaus könnten bestimmte hierin beschriebenen Implementierungen als „Logik” implementiert wird, die eine oder mehr Funktionen ausführen. Diese Logik kann Hardware, wie einen Prozessor, Mikroprozessor, einen anwendungsspezifischen integrierten Schaltkreis oder ein feldprogrammierbares Gate-Array sowie eine Kombination aus Hardware und Software umfassen (z. B. Software, die über einen Prozessor ausgeführt wird).
  • Es sollte betont werden, dass die Begriffe „umfasst”, „beinhaltet”, „enthält”, „aufweist”, „verfügt über”, „ausgestattet mit”, „einschließlich” und „hat” in dieser Spezifikation nicht ausschließlich sind und daher das Vorhandensein der angegebenen Funktionen, ganzheitlichen Einheiten, Schritte oder Komponenten angeben, aber nicht das Vorhandensein oder das Hinzufügen von weiteren Funktionen, ganzheitlichen Einheiten, Schritten, Komponenten oder Gruppen hiervon ausschließen.
  • Auch wenn besondere Kombinationen an Funktionen in den Ansprüchen aufgeführt und/oder in dieser Spezifikation offengelegt werden, sollen diese Kombinationen die Offenlegung der Erfindung nicht beschränken. Tatsächlich können viele dieser Funktionen in Arten kombiniert werden, die in diesen Ansprüchen nicht genau aufgeführt und/oder in dieser Spezifikation offengelegt wurden.
  • Kein Element, Handlung oder Anweisung, die in der Beschreibung der vorliegenden Anwendungen verwendet wird, gilt als kritisch oder wesentlich für die Erfindung, sofern dies nicht ausdrücklich definiert wurde. Darüber hinaus wird der Artikel „ein” dafür verwendet, um auf eine oder mehr Elemente zu verweisen, während nur ein Artikel gemeint ist, wenn die Begriffe „das/die/einer/eine” oder eine ähnliche Sprache verwendet wird. Darüber hinaus meint der Ausdruck „basierend auf” gemäß der Nutzung in diesem Dokument „basierend, zumindest in Teilen, auf”, sofern nicht ausdrücklich anderweitig angegeben.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Chang et al. „Bigtable: A Distributed Storage System for Structured Data”, Proc. of the 7th OSDI, Seiten 205–218 (Nov. 2006) [0024]

Claims (12)

  1. Gerät oder eine Vielzahl an Geräten in einem verteilten System zur Datenreplizierung, wobei das System Folgendes umfasst: Mittel zum Identifizieren eines Objektes in einem Datenspeicher, das mit einer Verhandlungsnachricht in Verbindung steht; Mittel zum Verknüpfen einer neuen Verhandlungsnachricht mit dem Objekt, wobei die neue Verhandlungsnachricht auf dem Status des Objekts basiert; Mittel zum Replizieren der neuen Verhandlungsnachricht in einem Speichercluster; Mittel zum Empfangen anderer Verhandlungsnachrichten, die mit der Kopie des Objekts verknüpft sind; und Mittel zum Löschen des Objekts, wenn die andere Verhandlungsnachricht auf eine erfolgreiche Verhandlung hindeutet.
  2. System nach Anspruch 1, des Weiteren umfassend: Mittel zum Löschen der neuen Verhandlungsnachricht und der anderen Verhandlungsnachrichten, wenn die anderen Verhandlungsnachrichten auf eine fehlgeschlagene Verhandlung hinweisen.
  3. System, umfassend: einen Speicher zum Speichern von Befehlen und einen Datenspeicher; und einen Prozessor zur Ausführung der Befehle aus dem Speicher zum: Ermitteln des Status eines Objekts im Datenspeicher, sowie des Status hinsichtlich der Frage, ob das Objekt eine Referenz aufweist und ob mit dem Objekt eine Löschverhandlungsnachricht verbunden ist; Schreiben einer neuen Verhandlungsnachricht in die Objektmetadaten je nach Status des Objekts, Replizieren der Metadaten mit der neuen Verhandlungsnachricht auf einem oder mehreren Geräten, und zum Empfangen von anderen Verhandlungsnachrichten, die mit dem Objekt verknüpft sind, über das oder mehrere Geräte, wobei die neue Verhandlungsnachricht und die anderen Verhandlungsnachrichten eine Übereinstimmung hinsichtlich einer Löschverhandlung des Objekts beinhalten.
  4. System nach Anspruch 3, worin die neuen Verhandlungsnachrichten sowie die anderen Verhandlungsnachrichten in mit dem Objekt verknüpften Metadaten enthalten sind und worin die Verhandlungsnachrichten in einer verteilten Datenreplikationsumgebung mit mehreren Masterkopien mittels einer Replikationsschicht ausgetauscht werden.
  5. System nach Anspruch 4, wobei der Prozessor des Weiteren so konfiguriert ist, dass er: die neue Verhandlungsnachricht aus den Metadaten des Objekts löscht, wenn der endgültige Status auf eine fehlgeschlagene Verhandlung hindeutet.
  6. System nach Anspruch 4, wobei der Prozessor des Weiteren so konfiguriert ist, dass er: das Objekt löscht, wenn der endgültige Status auf eine erfolgreiche Löschverhandlung hinweist.
  7. System nach Anspruch 3, wobei die neue Verhandlungsnachricht Folgendes umfasst: einen Indikator für Verhandlungsnachrichten; eine Speichercluster-ID, und eine eindeutige ID der Verhandlungsanforderung.
  8. System nach Anspruch 7, wobei der Indikator für Verhandlungsnachrichten eines der folgenden Elemente enthält: einen Löschindikator zum Initiieren einer Löschverhandlung, einen Bestätigungsindikator zur Bereitstellung einer positiven Bestätigung für die Löschverhandlung, einen negativen Bestätigungsindikator zur Bereitstellung einer negativen Bestätigung für die Löschverhandlung oder einen Synchronisierungsindikator zur Bereitstellung eines Nachweises, dass Bestätigungen von anderen Speicherclustern empfangen wurden.
  9. Computerlesbarer Speicher, der von Computer ausführbare Befehle enthält, wobei der computerlesbare Speicher Folgendes beinhaltet: einen oder mehrere Befehle zum Ermitteln des Status eines Objekts in einem Datenspeicher sowie des Status hinsichtlich der Frage, ob das Objekt eine Referenz aufweist und ob mit dem Objekt eine Löschverhandlungsnachricht verbunden ist; einen oder mehrere Befehle zum Schreiben einer neuen Verhandlungsnachricht, die mit dem Objekt verbunden ist, in die Metadaten des Objekts – je nach Status des Objekts; einen oder mehrere Befehle zum Replizieren der Objektmetadaten mit der neuen Verhandlungsnachricht in einem Speichercluster; einen oder mehrere Befehle zum Empfangen anderer Verhandlungsnachrichten, die mit dem Objekt verknüpft sind, von einem oder mehreren anderen Geräten; und einen oder mehrere Befehle zum Ermitteln der Übereinstimmung für eine Löschverhandlung des Objekts basierend auf anderen mit dem Objekt verknüpften Verhandlungsnachrichten.
  10. Computerlesbarer Speicher nach Anspruch 9, der ferner Folgendes umfasst: einen oder mehrere Befehle zum Löschen der neuen Verhandlungsnachricht sowie der anderen Verhandlungsnachrichten, wenn die Übereinstimmung auf eine fehlgeschlagene Verhandlung hindeutet; und einen oder mehrere Befehle zum Löschen des Objekts, wenn die Übereinstimmung auf eine erfolgreiche Verhandlung hindeutet.
  11. Computerlesbarer Speicher nach Anspruch 9, der ferner Folgendes umfasst: einen oder mehrere Befehle zum Bewahren der Schreibreihenfolge der neuen Verhandlungsnachricht sowie der anderen Verhandlungsnachrichten.
  12. Computerlesbarer Speicher nach Anspruch 9, der ferner Folgendes umfasst: einen oder mehrere Befehle zum Verhindern, dass dem Objekt nach dem Initiieren einer Löschverhandlungsnachricht neue Referenzen hinzugefügt werden.
DE202009019149.4U 2008-12-22 2009-12-22 Asynchron verteilte Speicherbereinigung für replizierte Speichercluster Expired - Lifetime DE202009019149U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13985308P 2008-12-22 2008-12-22
US61/139,853 2008-12-22

Publications (1)

Publication Number Publication Date
DE202009019149U1 true DE202009019149U1 (de) 2017-01-30

Family

ID=42267618

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202009019149.4U Expired - Lifetime DE202009019149U1 (de) 2008-12-22 2009-12-22 Asynchron verteilte Speicherbereinigung für replizierte Speichercluster

Country Status (9)

Country Link
US (2) US8346820B2 (de)
EP (1) EP2380101B1 (de)
JP (1) JP5479490B2 (de)
CN (1) CN102317939B (de)
AU (1) AU2009330067B2 (de)
BR (1) BRPI0922542B1 (de)
CA (1) CA2747786C (de)
DE (1) DE202009019149U1 (de)
WO (1) WO2010075401A2 (de)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930331B2 (en) 2007-02-21 2015-01-06 Palantir Technologies Providing unique views of data based on changes or rules
US8984390B2 (en) 2008-09-15 2015-03-17 Palantir Technologies, Inc. One-click sharing for screenshots and related documents
CN102317939B (zh) 2008-12-22 2014-05-21 谷歌公司 用于复制的存储集群的异步分布式垃圾收集
US9547693B1 (en) 2011-06-23 2017-01-17 Palantir Technologies Inc. Periodic database search manager for multiple data sources
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US8799240B2 (en) 2011-06-23 2014-08-05 Palantir Technologies, Inc. System and method for investigating large amounts of data
US9280532B2 (en) 2011-08-02 2016-03-08 Palantir Technologies, Inc. System and method for accessing rich objects via spreadsheets
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US8719417B1 (en) * 2011-10-14 2014-05-06 Google Inc. Resource allocation in distributed systems
US9378526B2 (en) * 2012-03-02 2016-06-28 Palantir Technologies, Inc. System and method for accessing data objects via remote references
CN102722445B (zh) * 2012-06-06 2015-03-25 北京航空航天大学 一种内存垃圾收集器中对象状态的阶段式跟踪记录方法
US8898410B1 (en) 2013-02-20 2014-11-25 Google Inc. Efficient garbage collection in a data storage device
US8855999B1 (en) 2013-03-15 2014-10-07 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8930897B2 (en) 2013-03-15 2015-01-06 Palantir Technologies Inc. Data integration tool
US8903717B2 (en) 2013-03-15 2014-12-02 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US9230280B1 (en) 2013-03-15 2016-01-05 Palantir Technologies Inc. Clustering data based on indications of financial malfeasance
US10275778B1 (en) 2013-03-15 2019-04-30 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive investigation based on automatic malfeasance clustering of related data in various data structures
US9600558B2 (en) 2013-06-25 2017-03-21 Google Inc. Grouping of objects in a distributed storage system based on journals and placement policies
US9158472B2 (en) 2013-06-25 2015-10-13 Google Inc. Hierarchical chunking of objects in a distributed storage system
US9116975B2 (en) 2013-10-18 2015-08-25 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores
EP3063635A1 (de) * 2013-10-30 2016-09-07 Hewlett Packard Enterprise Development LP Asynchrone speicherbereinigung in einem verteilten datenbanksystem
US9396202B1 (en) 2013-12-27 2016-07-19 Google Inc. Weakly synchronized garbage collection and compaction for aggregated, replicated object stores
US9043696B1 (en) 2014-01-03 2015-05-26 Palantir Technologies Inc. Systems and methods for visual definition of data associations
US9535974B1 (en) 2014-06-30 2017-01-03 Palantir Technologies Inc. Systems and methods for identifying key phrase clusters within documents
US9619557B2 (en) 2014-06-30 2017-04-11 Palantir Technologies, Inc. Systems and methods for key phrase characterization of documents
US9419992B2 (en) 2014-08-13 2016-08-16 Palantir Technologies Inc. Unwanted tunneling alert system
US9454281B2 (en) 2014-09-03 2016-09-27 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
US10255304B2 (en) 2014-09-30 2019-04-09 International Business Machines Corporation Removal of garbage data from a database
US10031934B2 (en) 2014-09-30 2018-07-24 International Business Machines Corporation Deleting tuples using separate transaction identifier storage
US10362133B1 (en) 2014-12-22 2019-07-23 Palantir Technologies Inc. Communication data processing architecture
US10552994B2 (en) 2014-12-22 2020-02-04 Palantir Technologies Inc. Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items
US9348920B1 (en) 2014-12-22 2016-05-24 Palantir Technologies Inc. Concept indexing among database of documents using machine learning techniques
US10452651B1 (en) 2014-12-23 2019-10-22 Palantir Technologies Inc. Searching charts
US9817563B1 (en) 2014-12-29 2017-11-14 Palantir Technologies Inc. System and method of generating data points from one or more data stores of data items for chart creation and manipulation
US9672257B2 (en) 2015-06-05 2017-06-06 Palantir Technologies Inc. Time-series data storage and processing database system
US9384203B1 (en) 2015-06-09 2016-07-05 Palantir Technologies Inc. Systems and methods for indexing and aggregating data records
US9407652B1 (en) 2015-06-26 2016-08-02 Palantir Technologies Inc. Network anomaly detection
US10650024B2 (en) 2015-07-30 2020-05-12 Google Llc System and method of replicating data in a distributed system
US9537880B1 (en) 2015-08-19 2017-01-03 Palantir Technologies Inc. Anomalous network monitoring, user behavior detection and database system
US10402385B1 (en) 2015-08-27 2019-09-03 Palantir Technologies Inc. Database live reindex
US9454564B1 (en) 2015-09-09 2016-09-27 Palantir Technologies Inc. Data integrity checks
JP6457364B2 (ja) 2015-09-11 2019-01-23 東芝メモリ株式会社 メモリシステム
US10044745B1 (en) 2015-10-12 2018-08-07 Palantir Technologies, Inc. Systems for computer network security risk assessment including user compromise analysis associated with a network of devices
US9542446B1 (en) 2015-12-17 2017-01-10 Palantir Technologies, Inc. Automatic generation of composite datasets based on hierarchical fields
US9753935B1 (en) 2016-08-02 2017-09-05 Palantir Technologies Inc. Time-series data storage and processing database system
US10133588B1 (en) 2016-10-20 2018-11-20 Palantir Technologies Inc. Transforming instructions for collaborative updates
US10318630B1 (en) 2016-11-21 2019-06-11 Palantir Technologies Inc. Analysis of large bodies of textual data
US10884875B2 (en) 2016-12-15 2021-01-05 Palantir Technologies Inc. Incremental backup of computer data files
US10223099B2 (en) 2016-12-21 2019-03-05 Palantir Technologies Inc. Systems and methods for peer-to-peer build sharing
US10289529B2 (en) 2017-01-26 2019-05-14 International Business Machines Corporation Testing a guarded storage facility
US10459631B2 (en) 2017-03-28 2019-10-29 Nicira, Inc. Managing deletion of logical objects of a managed system
US10896097B1 (en) 2017-05-25 2021-01-19 Palantir Technologies Inc. Approaches for backup and restoration of integrated databases
GB201708818D0 (en) 2017-06-02 2017-07-19 Palantir Technologies Inc Systems and methods for retrieving and processing data
US10241716B2 (en) 2017-06-30 2019-03-26 Microsoft Technology Licensing, Llc Global occupancy aggregator for global garbage collection scheduling
US10248562B2 (en) 2017-06-30 2019-04-02 Microsoft Technology Licensing, Llc Cost-based garbage collection scheduling in a distributed storage environment
US11334552B2 (en) 2017-07-31 2022-05-17 Palantir Technologies Inc. Lightweight redundancy tool for performing transactions
US10417224B2 (en) 2017-08-14 2019-09-17 Palantir Technologies Inc. Time series database processing system
US10216695B1 (en) 2017-09-21 2019-02-26 Palantir Technologies Inc. Database system for time series data storage, processing, and analysis
US11281726B2 (en) 2017-12-01 2022-03-22 Palantir Technologies Inc. System and methods for faster processor comparisons of visual graph features
US10614069B2 (en) 2017-12-01 2020-04-07 Palantir Technologies Inc. Workflow driven database partitioning
US11016986B2 (en) 2017-12-04 2021-05-25 Palantir Technologies Inc. Query-based time-series data display and processing system
CN108415986B (zh) * 2018-02-11 2020-10-30 杭州朗和科技有限公司 一种数据处理方法、装置、***、介质和计算设备
US20190303035A1 (en) * 2018-03-27 2019-10-03 EMC IP Holding Company LLC Copying garbage collector for geographically distributed data storage environment
GB201807534D0 (en) 2018-05-09 2018-06-20 Palantir Technologies Inc Systems and methods for indexing and searching
US11048430B2 (en) 2019-04-12 2021-06-29 Netapp, Inc. Object store mirroring where during resync of two storage bucket, objects are transmitted to each of the two storage bucket
US11481319B2 (en) * 2020-05-22 2022-10-25 Vmware, Inc. Using data mirroring across multiple regions to reduce the likelihood of losing objects maintained in cloud object storage
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4665520A (en) * 1985-02-01 1987-05-12 International Business Machines Corporation Optimistic recovery in a distributed processing system
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5446901A (en) * 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
US5852666A (en) * 1996-07-01 1998-12-22 Sun Microsystems, Inc. Capability security for distributed object systems
JP3385957B2 (ja) * 1998-03-04 2003-03-10 日本電気株式会社 分散システム、メモリ管理装置及び方法、並びに記録媒体
US6615383B1 (en) * 1998-05-29 2003-09-02 Sun Microsystems, Inc. System and method for message transmission between network nodes connected by parallel links
US6594698B1 (en) * 1998-09-25 2003-07-15 Ncr Corporation Protocol for dynamic binding of shared resources
US6865657B1 (en) * 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6513059B1 (en) * 2000-08-24 2003-01-28 Cambira Corporation Adaptive collaborative intelligent network system
JP4096147B2 (ja) * 2000-10-25 2008-06-04 株式会社日立製作所 分散型計算機システムにおける重複配置複製データの複製方式
US6839752B1 (en) * 2000-10-27 2005-01-04 International Business Machines Corporation Group data sharing during membership change in clustered computer system
US20020161907A1 (en) 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US7573500B2 (en) * 2003-03-24 2009-08-11 Sensormatic Electronics Corporation System and method for communicating data in a video system
US8364948B2 (en) * 2004-07-02 2013-01-29 Hewlett-Packard Development Company, L.P. System and method for supporting secured communication by an aliased cluster
JP2006185041A (ja) * 2004-12-27 2006-07-13 Matsushita Electric Ind Co Ltd コンテンツ分散配置システム、端末及びコンテンツ分散配置システムの動作方法
US7581232B2 (en) * 2005-05-16 2009-08-25 Microsoft Corporation Coordinating reference counting between entities executing within separate address spaces
CN100512293C (zh) * 2005-09-07 2009-07-08 华为技术有限公司 一种会话初始化协议消息体内容处理方法及网络
US7788223B2 (en) * 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication
JP4920979B2 (ja) 2006-01-25 2012-04-18 株式会社日立製作所 ストレージ装置及びその制御方法
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
JP4945232B2 (ja) * 2006-12-21 2012-06-06 株式会社日立製作所 アクセス制御方法、計算機システム、及びオブジェクト複製プログラム
US7660831B2 (en) * 2007-01-07 2010-02-09 Apple Inc. Synchronization methods and systems
US8719375B2 (en) * 2007-03-22 2014-05-06 Microsoft Corporation Remote data access techniques for portable devices
US8768895B2 (en) * 2007-04-11 2014-07-01 Emc Corporation Subsegmenting for efficient storage, resemblance determination, and transmission
US8315984B2 (en) * 2007-05-22 2012-11-20 Netapp, Inc. System and method for on-the-fly elimination of redundant data
CN102317939B (zh) 2008-12-22 2014-05-21 谷歌公司 用于复制的存储集群的异步分布式垃圾收集

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Chang et al. „Bigtable: A Distributed Storage System for Structured Data", Proc. of the 7th OSDI, Seiten 205–218 (Nov. 2006)

Also Published As

Publication number Publication date
WO2010075401A2 (en) 2010-07-01
JP2012513639A (ja) 2012-06-14
CA2747786A1 (en) 2010-07-01
AU2009330067A1 (en) 2011-07-14
US20130124470A1 (en) 2013-05-16
JP5479490B2 (ja) 2014-04-23
EP2380101A2 (de) 2011-10-26
US9081841B2 (en) 2015-07-14
CA2747786C (en) 2015-06-09
CN102317939B (zh) 2014-05-21
US8346820B2 (en) 2013-01-01
US20100161688A1 (en) 2010-06-24
EP2380101B1 (de) 2019-10-30
BRPI0922542B1 (pt) 2020-10-13
WO2010075401A3 (en) 2010-11-11
AU2009330067B2 (en) 2013-05-02
CN102317939A (zh) 2012-01-11

Similar Documents

Publication Publication Date Title
DE202009019149U1 (de) Asynchron verteilte Speicherbereinigung für replizierte Speichercluster
DE112018004178B4 (de) Mehrstufige speicherung in einem verteilten dateisystem
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE102013204972B4 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE112011101109B4 (de) Übertragung von Map/Reduce-Daten auf der Grundlage eines Speichernetzwerkes oder eines Speichernetzwerk-Dateisystems
DE102008015662B4 (de) Beseitigung von Daten
DE202014010898U1 (de) Hierarchische Stückelung von Objekten in einem dezentralen Speichersystem
DE202009019139U1 (de) Asynchron verteilte Deduplizierung für replizierte inhaltsadressierte Speichercluster
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE202014010953U1 (de) Gruppierung von Objekten in einem verteilten Datenspeichersystem basierend auf Protokollen und Platzierungsrichtlinien
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE112019000143T5 (de) Versionierungsvalidierung für die datenübertragung zwischen heterogenen datenspeichern
DE10393771T5 (de) Schnelle Datensicherungsspeicherung und schnelle Datenwiederherstellung (FBSRD)
DE102010043265A1 (de) Systeme und Verfahren zum Verarbeiten und Verwalten von objektbezogenen Daten zur Verwendung durch mehrere Anwendungen
DE102019111068A1 (de) Datenspeichersystem mit LUN-Archivierung in die Cloud unter Verwendung einer Volume-to-Object(Volumen-zu-Objekt)-Umsetzung
DE112011101793T5 (de) Gemeinsame Datennutzung bei Dateiklonen
DE102012215918A1 (de) Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE112011103367T5 (de) Replizieren von Daten
DE602004013397T2 (de) Verfahren und Apparat zum Verschieben von Daten zwischen Speichersystemen
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten
DE112020005227T5 (de) Speicherzustandsüberwachung für differenziertedatenwiederherstellungskonfigurationen
DE112018000456T5 (de) Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen

Legal Events

Date Code Title Description
R207 Utility model specification
R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R071 Expiry of right