DE202013012477U1 - Organisieren von daten in einem verteilten speichersystem - Google Patents

Organisieren von daten in einem verteilten speichersystem Download PDF

Info

Publication number
DE202013012477U1
DE202013012477U1 DE202013012477.6U DE202013012477U DE202013012477U1 DE 202013012477 U1 DE202013012477 U1 DE 202013012477U1 DE 202013012477 U DE202013012477 U DE 202013012477U DE 202013012477 U1 DE202013012477 U1 DE 202013012477U1
Authority
DE
Germany
Prior art keywords
splits
split
data
account
group
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
DE202013012477.6U
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 DE202013012477U1 publication Critical patent/DE202013012477U1/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
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0617Improving the reliability of storage systems in relation to availability
    • 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/065Replication mechanisms
    • 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]

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)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Verteiltes Speichersystem, umfassend: eine Vielzahl von Zonen, wobei jede Zone eine Vielzahl von Computerservern einschließt und jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt; eine Vielzahl von Netzwerkverbindungen, die zwei entsprechende Zonen verbinden, wobei Daten in dem verteilten Speichersystem mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist; und eine Vielzahl von Programmmodulen, wobei die Vielzahl von Programmmodulen in dem Speicher eines entsprechenden Computerservers gespeichert ist und von dem einen oder den mehreren Prozessor(en) des entsprechenden Computerservers ausgeführt werden soll und die Vielzahl von Programmmodulen Anweisungen für Folgendes einschließt: Aufteilen von Daten, die mit einem ersten Konto verknüpft sind und Daten, die mit einem zweiten Konto verknüpft sind, jeweils in einen ersten Satz von Splits und einen zweiten Satz von Splits, wobei das erste Konto und das zweite Konto unterschiedliche Datenreplikationsrichtlinien aufweisen; Hinzufügen von jedem des ersten Satzes von Splits und des zweiten Satzes von Splits zu einer entsprechenden Gruppe von Splits, wobei es keine Gruppe gibt, die ein Glied des ersten Satzes von Splits und ein Glied des zweiten Satzes von Splits einschließt; Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des ersten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist; und Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des zweiten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem zweiten Konto verknüpft ist.

Description

  • TECHNISCHES GEBIET
  • Die offenbarten Implementierungen betreffen im Allgemeinen die Verwaltung eines verteilten Speichersystems und insbesondere ein System und ein Verfahren zum Organisieren eines großen Datenvolumens in einem verteilten Speichersystem.
  • 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.
  • HINTERGRUND
  • Das Internet ist für Menschen auf der ganzen Welt ein beliebter Anlaufpunkt zum Speichern und Austauschen von Informationen geworden. Da die Menge von Daten, die von dem Internet verwaltet wird, rapide ansteigt, sowohl individuell als auch kollektiv und die Dienste, die mit den Daten verknüpft sind, immer komplizierter werden, besteht eine konstante Herausforderung für einen internetbasierten Dienstleister darin, ein derart großes Volumen von Daten zu verwalten und den zugehörigen Dienst als Reaktion auf unterschiedliche Datenzugriffsanfragen von Nutzern von überall auf der Welt effizient zu gestalten.
  • KURZDARSTELLUNG
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen wird ein Verfahren zum Hinzufügen von Daten zu einem verteilten Speichersystem, das eine Vielzahl von Computerservern einschließt, bereitgestellt, wobei jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt. Die Daten in dem verteilten Speichersystem sind mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist. Das Verfahren schließt Folgendes ein: Identifizieren eines ersten Splits, der mit einem Konto verknüpft ist, wobei der erste Split ein Glied einer ersten Gruppe von Splits ist und der erste Split einen Datenbereichsparameter, der anzeigt, dass mehr Daten zu dem ersten Split hinzugefügt werden können und eine Splitgröße aufweist, die eine tatsächliche Menge von Daten in dem ersten Split angibt; als Reaktion auf die Bestimmung, dass die Splitgröße des ersten Splits eine vordefinierte Grenze erreicht: Aktualisieren des Datenbereichsparameters in dem ersten Split, sodass keine Daten zu dem ersten Split hinzugefügt werden können; Erzeugen eines zweiten Splits für das Konto, wobei der zweite Split einen Datenbereichsparameter einschließt, der anzeigt, dass mehr Daten zu dem zweiten Split hinzugefügt werden können; Hinzufügen des zweiten Splits zu einer zweiten Gruppe von Splits; und Replizieren der zweiten Gruppe von Splits in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem Konto verknüpft ist.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen schließt ein verteiltes Speichersystem Folgendes ein: eine Vielzahl von Zonen, wobei jede Zone eine Vielzahl von Computerservern einschließt und jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt, eine Vielzahl von Netzwerkverbindungen, die zwei entsprechende Zonen verbinden, wobei Daten in dem verteilten Speichersystem mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist und eine Vielzahl von Programmmodulen, wobei die Vielzahl von Programmmodulen in dem Speicher eines entsprechenden Computerservers gespeichert ist und von dem einen oder den mehreren Prozessor(en) des entsprechenden Computerservers ausgeführt werden soll. Die Vielzahl von Programmmodulen schließt Anweisungen für Folgendes ein: Identifizieren eines ersten Splits, der mit einem Konto verknüpft ist, wobei der erste Split ein Glied einer ersten Gruppe von Splits ist und der erste Split einen Datenbereichsparameter, der anzeigt, dass mehr Daten zu dem ersten Split hinzugefügt werden können und eine Splitgröße aufweist, die eine tatsächliche Menge von Daten in dem ersten Split angibt; als Reaktion auf die Bestimmung, dass die Splitgröße des ersten Splits eine vordefinierte Grenze erreicht: Aktualisieren des Datenbereichsparameters in dem ersten Split, sodass keine Daten zu dem ersten Split hinzugefügt werden können; Erzeugen eines zweiten Splits für das Konto, wobei der zweite Split einen Datenbereichsparameter einschließt, der anzeigt, dass mehr Daten zu dem zweiten Split hinzugefügt werden können; Hinzufügen des zweiten Splits zu einer zweiten Gruppe von Splits; und Replizieren der zweiten Gruppe von Splits in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem Konto verknüpft ist.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen speichert ein nicht transitorisches computerlesbares Speichermedium ein oder mehrere Programmmodule, die zur Ausführung durch einen Computerserver konfiguriert sind, der einen oder mehrere Prozessoren und Speicher einschließt und Teil eines verteilten Speichersystems ist, wobei das verteilte Speichersystem konfiguriert ist, um Daten, die mit einer Vielzahl von Konten verknüpft sind, in eine Vielzahl von Gruppen aufzuteilen, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist. Die einen oder mehreren Programme schließen Anweisungen für Folgendes ein: Identifizieren eines ersten Splits, der mit einem Konto verknüpft ist, wobei der erste Split ein Glied einer ersten Gruppe von Splits ist und der erste Split einen Datenbereichsparameter, der anzeigt, dass mehr Daten zu dem ersten Split hinzugefügt werden können und eine Splitgröße aufweist, die eine tatsächliche Menge von Daten in dem ersten Split angibt; als Reaktion auf die Bestimmung, dass die Splitgröße des ersten Splits eine vordefinierte Grenze erreicht: Aktualisieren des Datenbereichsparameters in dem ersten Split, sodass keine Daten zu dem ersten Split hinzugefügt werden können; Erzeugen eines zweiten Splits für das Konto, wobei der zweite Split einen Datenbereichsparameter einschließt, der anzeigt, dass mehr Daten zu dem zweiten Split hinzugefügt werden können; Hinzufügen des zweiten Splits zu einer zweiten Gruppe von Splits; und Replizieren der zweiten Gruppe von Splits in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem Konto verknüpft ist.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen wird ein Verfahren zum Replizieren von Daten in einem verteilten Speichersystem, das eine Vielzahl von Computerservern einschließt, bereitgestellt, wobei jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt. Die Daten in dem verteilten Speichersystem sind mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist. Aufteilen von Daten, die mit einem ersten Konto verknüpft sind und Daten, die mit einem zweiten Konto verknüpft sind, jeweils in einen ersten Satz von Splits und einen zweiten Satz von Splits, wobei das erste Konto und das zweite Konto unterschiedliche Datenreplikationsrichtlinien aufweisen; Hinzufügen von jedem des ersten Satzes von Splits und des zweiten Satzes von Splits zu einer entsprechenden Gruppe von Splits, wobei es keine Gruppe gibt, die ein Glied des ersten Satzes von Splits und ein Glied des zweiten Satzes von Splits einschließt; Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des ersten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist; und Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des zweiten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem zweiten Konto verknüpft ist.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen schließt ein verteiltes Speichersystem Folgendes ein: eine Vielzahl von Zonen, wobei jede Zone eine Vielzahl von Computerservern einschließt und jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt, eine Vielzahl von Netzwerkverbindungen, die zwei entsprechende Zonen verbinden, wobei Daten in dem verteilten Speichersystem mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist und eine Vielzahl von Programmmodulen, wobei die Vielzahl von Programmmodulen in dem Speicher eines entsprechenden Computerservers gespeichert ist und von dem einen oder den mehreren Prozessor(en) des entsprechenden Computerservers ausgeführt werden soll. Aufteilen von Daten, die mit einem ersten Konto verknüpft sind und Daten, die mit einem zweiten Konto verknüpft sind, jeweils in einen ersten Satz von Splits und einen zweiten Satz von Splits, wobei das erste Konto und das zweite Konto unterschiedliche Datenreplikationsrichtlinien aufweisen; Hinzufügen von jedem des ersten Satzes von Splits und des zweiten Satzes von Splits zu einer entsprechenden Gruppe von Splits, wobei es keine Gruppe gibt, die ein Glied des ersten Satzes von Splits und ein Glied des zweiten Satzes von Splits einschließt; Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des ersten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist; und Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des zweiten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem zweiten Konto verknüpft ist.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen speichert ein nicht transitorisches computerlesbares Speichermedium ein oder mehrere Programmmodule, die zur Ausführung durch einen Computerserver konfiguriert sind, der einen oder mehrere Prozessoren und Speicher einschließt und Teil eines verteilten Speichersystems ist, wobei das verteilte Speichersystem konfiguriert ist, um Daten, die mit einer Vielzahl von Konten verknüpft sind, in eine Vielzahl von Gruppen aufzuteilen, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist. Aufteilen von Daten, die mit einem ersten Konto verknüpft sind und Daten, die mit einem zweiten Konto verknüpft sind, jeweils in einen ersten Satz von Splits und einen zweiten Satz von Splits, wobei das erste Konto und das zweite Konto unterschiedliche Datenreplikationsrichtlinien aufweisen; Hinzufügen von jedem des ersten Satzes von Splits und des zweiten Satzes von Splits zu einer entsprechenden Gruppe von Splits, wobei es keine Gruppe gibt, die ein Glied des ersten Satzes von Splits und ein Glied des zweiten Satzes von Splits einschließt; Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des ersten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist; und Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des zweiten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem zweiten Konto verknüpft ist.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen wird ein Verfahren zum Lokalisieren von Daten in einem verteilten Speichersystem, das eine Vielzahl von Computerservern einschließt, bereitgestellt, wobei jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt. Die Daten in dem verteilten Speichersystem sind mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt, wobei jede Gruppe eine Vielzahl von Splits einschließt, wobei jeder Split mit einem entsprechenden Konto verknüpft ist und jede Gruppe mehrere Tablets aufweist und jedes Tablet von einem entsprechenden Tablet-Server des verteilten Speichersystems verwaltet wird. Das Verfahren schließt Folgendes ein: Empfangen einer Datenzugriffsanfrage von einem Client, wobei die Datenzugriffsanfrage eine logische Kennung von Daten einschließt, die mit einem Konto verknüpft sind; Identifizieren von einer oder mehreren Splitkennungen, die mit der logischen Kennung gemäß der Datenzugriffsanfrage verknüpft sind, wobei jede Splitkennung einen Split identifiziert, der mit dem Konto verknüpft ist; für jede der identifizierten einen oder mehreren Splitkennungen: Identifizieren einer Gruppenkennung, wobei die Gruppenkennung einer Gruppe von Splits entspricht; Auswählen von einem der mehreren Tablets, das mit der identifizierten Gruppe verknüpft ist, auf Grundlage von Informationen über die Tablet Server, welche die mehreren Tablets verwalten; Kommunizieren mit dem Tablet Server, der das ausgewählte Tablet für den Split verwaltet, welcher der Splitkennung entspricht; und Empfangen des Splits von dem Tablet Server; und Weiterleiten der Splits von den entsprechenden Tablet Servern an den anfragenden Client.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen schließt ein verteiltes Speichersystem Folgendes ein: eine Vielzahl von Zonen, wobei jede Zone eine Vielzahl von Computerservern einschließt und jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt, eine Vielzahl von Netzwerkverbindungen, die zwei entsprechende Zonen verbinden, wobei Daten in dem verteilten Speichersystem mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist und eine Vielzahl von Programmmodulen, wobei die Vielzahl von Programmmodulen in dem Speicher eines entsprechenden Computerservers gespeichert ist und von dem einen oder den mehreren Prozessor(en) des entsprechenden Computerservers ausgeführt werden soll. Die Vielzahl von Programmmodulen schließt Anweisungen für Folgendes ein: Empfangen einer Datenzugriffsanfrage von einem Client, wobei die Datenzugriffsanfrage eine logische Kennung von Daten einschließt, die mit einem Konto verknüpft sind; Identifizieren von einer oder mehreren Splitkennungen, die mit der logischen Kennung gemäß der Datenzugriffsanfrage verknüpft sind, wobei jede Splitkennung einen Split identifiziert, der mit dem Konto verknüpft ist; für jede der identifizierten einen oder mehreren Splitkennungen: Identifizieren einer Gruppenkennung, wobei die Gruppenkennung einer Gruppe von Splits entspricht; Auswählen von einem der mehreren Tablets, das mit der identifizierten Gruppe verknüpft ist, auf Grundlage von Informationen über die Tablet Server, welche die mehreren Tablets verwalten; Kommunizieren mit dem Tablet Server, der das ausgewählte Tablet für den Split verwaltet, welcher der Splitkennung entspricht; und Empfangen des Splits von dem Tablet Server; und Weiterleiten der Splits von den entsprechenden Tablet Server an den anfragenden Client.
  • Gemäß einigen nachfolgend beschriebenen Ausführungsformen speichert ein nicht transitorisches computerlesbares Speichermedium ein oder mehrere Programmmodule, die zur Ausführung durch einen Computerserver konfiguriert sind, der einen oder mehrere Prozessoren und Speicher einschließt und Teil eines verteilten Speichersystems ist, wobei das verteilte Speichersystem konfiguriert ist, um Daten, die mit einer Vielzahl von Konten verknüpft sind, in eine Vielzahl von Gruppen aufzuteilen, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist. Die einen oder mehreren Programme schließen Anweisungen für Folgendes ein: Empfangen einer Datenzugriffsanfrage von einem Client, wobei die Datenzugriffsanfrage eine logische Kennung von Daten einschließt, die mit einem Konto verknüpft sind; Identifizieren von einer oder mehreren Splitkennungen, die mit der logischen Kennung gemäß der Datenzugriffsanfrage verknüpft sind, wobei jede Splitkennung einen Split identifiziert, der mit dem Konto verknüpft ist; für jede der identifizierten einen oder mehreren Splitkennungen: Identifizieren einer Gruppenkennung, wobei die Gruppenkennung einer Gruppe von Splits entspricht; Auswählen von einem der mehreren Tablets, das mit der identifizierten Gruppe verknüpft ist, auf Grundlage von Informationen über die Tablet Server, welche die mehreren Tablets verwalten; Kommunizieren mit dem Tablet Server, der das ausgewählte Tablet für den Split verwaltet, welcher der Splitkennung entspricht; und Empfangen des Splits von dem Tablet Server; und Weiterleiten der Splits von den entsprechenden Tablet Servern an den anfragenden Client.
  • KURZBSCHREIBUNG DER ZEICHNUNGEN
  • Die zuvor genannte Implementierung der Erfindung sowie zusätzliche Implementierungen sind infolge der folgenden detaillierten Beschreibung der verschiedenen Aspekte der Erfindung bei einer Betrachtung in Verbindung mit den Zeichnungen besser zu verstehen. Gleiche Bezugszeichen beziehen sich in den verschiedenen Ansichten der Zeichnungen auf entsprechende Teile.
  • 1A bis 1G sind Blockdiagramme, die jeweils bestimmte Aspekte eines verteilten Speichersystems gemäß einigen Ausführungsformen veranschaulichen.
  • 2A und 2B sind ein Blockdiagramm und ein Ablaufdiagramm, die veranschaulichen, wie Daten, die mit unterschiedlichen Konten verknüpft sind, in dem verteilten Speichersystem gemäß einigen Ausführungsformen repliziert werden.
  • 3A und 3B sind ein Blockdiagramm und ein Ablaufdiagramm, die veranschaulichen, wie Daten, die mit einem Konto verknüpft sind, in dem verteilten Speichersystem gemäß einigen Ausführungsformen hinzugefügt werden.
  • 4A und 4B sind ein Blockdiagramm und ein Ablaufdiagramm, die veranschaulichen, wie Daten in dem verteilten Speichersystem als Reaktion auf eine Datenzugriffsanfrage von einem Client gemäß einigen Ausführungsformen lokalisiert werden.
  • 5 ist ein Blockdiagramm, das die Komponenten des Clients gemäß einigen Ausführungsformen veranschaulicht.
  • 6 ist ein Blockdiagramm, das die Komponenten eines Frontend-Servers des verteilten Speichersystems gemäß einigen Ausführungsformen veranschaulicht.
  • 7 ist ein Blockdiagramm, das die Komponenten einer Zone des verteilten Speichersystems gemäß einigen Ausführungsformen veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • 1A bis 1G sind Blockdiagramme, die jeweils bestimmte Aspekte eines verteilten Speichersystems gemäß einigen Ausführungsformen veranschaulichen. Insbesondere bildet 1A ein verteiltes Speichersystem 100 gemäß einigen Implementierungen der vorliegenden Anmeldung ab. Das verteilte Speichersystem 100 schließt eine Vielzahl von Zonen 102-1, 102-2, ... 102-N an verschiedenen Standorten auf der ganzen Welt ein, die durch Netzwerkkommunikationsverbindungen 104-1, 104-2, ... 104-M. In einigen Ausführungsformen entspricht eine Zone (wie etwa die Zone 1 102-1) einem oder mehreren Datenzentren, die geografisch gesehen nah beieinander liegen. Zum Beispiel kann die nordamerikanische Region einer Zone entsprechen, die zwei Datenzentren einschließt, wobei sich eines in der Nähe der Pazifikküste befindet und sich das andere in der Nähe der Atlantikküste befindet. Obwohl die Konzeptdarstellung aus 1A eine begrenzte Anzahl von Netzwerkkommunikationsverbindungen 104-1 usw. zeigt, weisen typische Ausführungsformen viel mehr Netzwerkkommunikationsverbindungen auf. In einigen Ausführungsformen gibt es zwischen dem gleichen Paar von Zonen zwei oder mehr Netzwerkkommunikationsverbindungen, wie durch die Verbindungen 104-5 und 104-6 zwischen der Zone 2 (102-2) und der Zone 6 (102-6) veranschaulicht. In einigen Ausführungsformen bestehen die Netzwerkkommunikationsverbindungen aus Glasfaserkabel. In einigen Ausführungsformen verwenden einige der Netzwerkkommunikationsverbindungen eine Drahtlostechnologie, wie etwa Mikrowellen. In einigen Ausführungsformen weist jede Netzwerkkommunikationsverbindung eine spezifizierte Bandbreite und/oder spezifizierte Kosten für die Verwendung dieser Bandbreite auf. In einigen Ausführungsformen pflegt jede Zone die statistischen Informationen über die Übertragung von Daten über eine oder mehrere der Netzwerkkommunikationsverbindungen in dem verteilten Speichersystem 100, einschließend die Durchsatzleistung, die Verfügbarkeitszeiten, die Zuverlässigkeit der Verbindungen usw.
  • 1B bildet die Komponenten des verteilten Speichersystems 100 gemäß einigen Implementierungen der vorliegenden Anmeldung ab. Das verteilte Speichersystem 100 schließt einen universellen Master 106, einen oder mehrere Frontend-Server (101-1, ..., 101-M), einen Platzierungstreiber 108 und eine Vielzahl von Zonen (102-1, 102-2, ..., 102-N) ein. Der universelle Master 106 und der Platzierungstreiber 108 sind für die Überwachung der Leistung des Systems 100 und die Steuerung der Datenreplikation/-migration zwischen zwei Zonen verantwortlich. Eine Zone (102-1, 102-2, ..., 102-N) schließt üblicherweise einen Datenspeicher (141-1, 141-2, ..., 141-N) ein, der eine Vielzahl von Tablets (143-1, 143-2, ..., 143-N) hostet und verwendet ein Cluster von Computerservern, einschließend einen Zonenmaster (131-1, 131-2, ..., 131-N), einen oder mehrere Standort-Proxys (135-1, 135-2, ..., 135-N), einen oder mehrere Tablet-Server (133-1, 133-2, ..., 133-N), um alle tabletbezogenen Aufgaben auszuführen. Der Datenspeicher (141-1, 141-2, ..., 141-N) stellt den zugrunde liegenden permanenten Speicherplatz für Daten bereit, die von einer entsprechenden Zone (102-1, 102-2, ..., 102-N) verwaltet werden. In einigen Ausführungsformen werden Daten in dem Datenspeicher (141-1, 141-2, ..., 141-N) in vielen Tabellen angeordnet, was einer grundlegenden Dateneinheit entspricht, die in einer bestimmten Zone bearbeitet wird. Der Zonenmaster (131-1, 131-2, ..., 131-N) ist für die Zuordnung jedes Tablets in dem Datenspeicher (141-1, 141-2, ..., 141-N) zu einem der Tablet-Server (133-1, 133-2, ..., 133-N) verantwortlich, um Lese-/Schreib-Anfragen, die an das Tablet gerichtet sind, zumindest teilweise auf Grundlage der CPU und der Speicherauslastung an den Tablet-Servern zu bearbeiten. Wenn der Zonenmaster zum Beispiel ermittelt, dass ein Tablet-Server überlastet ist, kann er die Migration einiger Tablets von diesem überlasteten Tablet-Server zu anderen Tablet-Servern in der gleichen Zone oder vielleicht sogar in einer anderen Zone inszenieren. Ein Standort-Proxy stellt einen Standortsuchdienst für eine andere Entität (z. B. einen Frontend-Server oder einen Tablet-Server) bereit, sodass der Standort-Proxy für ein gegebenes Tablet einen entsprechenden Tablet-Server identifiziert, der für die Bearbeitung der Lese- und Schreibanfragen ausgewählt wurde, die an das Tablet gerichtet sind.
  • 1C veranschaulicht ausführlicher, wie sich unterschiedliche Komponenten in einer Zone miteinander koordinieren, um verschiedene tabletbezogene Aufgaben gemäß einigen Implementierungen der vorliegenden Anmeldung auszuführen. In diesem Beispiel schließt die Zone 102 einen Zonenmaster 131, eine Vielzahl von Tablet-Servern (133-1, 133-3), eine Vielzahl von Standort-Proxy-Servern (135-1, 135-3) und einen Datenspeicher 141 ein, der mehrere Tablets (141-A, 141-B, ..., 141-Z) einschließt. Der Zonenmaster 131 weist eine Zonen-ID 131-1 auf, welche die Zone 102 unter einer Vielzahl von Zonen in einem verteilten Speichersystem, wie in 1B gezeigt, eindeutig identifiziert. Wie nachfolgend in Verbindung mit 1D beschrieben, wird die Zonen-ID von einem Fronten-Server 101 verwendet, um zu ermitteln, welche Zone die von dem Client angeforderten Daten einschließt. Wie zuvor beschrieben, stellen die Standort-Proxy-Server (135-1, 135-3) einen Standortsuchdienst für andere Entitäten bereit. In einigen Ausführungsformen verwendet ein Standort-Proxy-Server eine Suchtabelle, um den Standortsuchdienst zu unterstützen. 1C bildet eine beispielhafte Suchtabelle ab, wobei jede Zeile der Tabelle, eine Tablet-ID 137-1 und eine Tablet-Server-ID 137-3 einschließt. Als Reaktion auf eine Tablet-ID, die von einer anderen Entität bereitgestellt wird, schickt der Standort-Proxy-Server eine Tablet-Server-ID zu der anfragenden Entität zurück, die einen Tablet-Server identifiziert, der von dem Zonenmaster 131 ausgewählt wird, um das entsprechende Tablet zu verwalten, das mit der Tablet-ID verknüpft ist. Dementsprechend kann die anfragende Entität mit dem identifizierten Tablet-Server in Bezug auf Aufgaben kommunizieren, die mit dem Tablet verknüpft sind. Ein Tablet-Server 133-3 wird durch eine Tablet-Server-ID 134-1 identifiziert und schließt ferner Tablet-Metadaten 134-3 ein, die mit den Tablets verknüpft sind, die von dem Tablet-Server 133-3 verwaltet werden. Zum Beispiel schließen die Tablet-Metadaten 134-3 die Tablet IDs der Tablets ein, die von dem Tablet-Server 133-3 verwaltet werden. In einigen Ausführungsformen schließen die Tablet-Metadaten 134-3 außerdem Informationen über die Splits ein, die mit dem Tablet verknüpft sind. Eine detailliertere Beschreibung der Beziehung zwischen einem Split und einem Tablet wird nachfolgend in Verbindung mit 1D bereitgestellt.
  • In einigen Ausführungsformen überwacht der Zonenmaster 131 die Leistung des Tablet-Servers (133-1, 133-3), indem er periodisch (z. B. aller 10 Sekunden) mit den Tablet-Servern (133-1, 133-3) kommuniziert. Ein Tablet-Server meldet dem Zonenmaster 131 seine aktuellen Statusinformationen, einschließend seine CPU und die Speicherauslastung usw. sowie andere Informationen, die zum Ermitteln der Verknüpfung zwischen einem Satz von Tablets und dem Tablet-Server verwendet werden. Auf Grundlage derartiger Informationen ermittelt der Zonenmaster 131, ob ein Tablet in dem Datenspeicher 141 einem entsprechenden Tablet-Server zugewiesen werden soll oder nicht. Zum Beispiel kann der Zonenmaster 131 einige Tablets identifizieren, die mit einem Tablet-Server 133-3 verknüpft sind, der als überlastet angesehen wird und weisen die identifizierten Tablets einem anderen Tablet-Server 133-1 zu. Zusätzlich veröffentlicht der Zonenmaster 131 die aktualisierte Tablet-zu-Tablet-Serverzuordnung durch die Standort-Proxy-Server (135-1, 135-3). Wenn eine andere Entität (z. B. ein Frontend-Server oder ein Tablet-Server) erfahren möchte, welcher Tablet-Server für die Verwaltung eines bestimmten Tablets verantwortlich ist, kann die Entität einen der Standort-Proxy-Server abfragen, indem sie eine Tablet-ID bereitstellt und eine entsprechende Tablet-Server-ID empfängt, die mit der Tablet-ID verknüpft ist. Nachdem ein Tablet-Server für ein bestimmtes Tablet durch den Standortsuchdienst identifiziert wurde, kann die Entität mit dem identifizierten Tablet-Server im Hinblick auf beliebige Lese-/Schreib-Zugriffsanfragen kommunizieren, die an das Tablet gerichtet sind.
  • 1D veranschaulicht, wie unterschiedliche Komponenten in dem verteilten Speichersystem 100 miteinander interagieren, um Datenzugriffsanfragen von unterschiedlichen Clients gemäß einigen Implementierungen der vorliegenden Anmeldung zu genügen. In diesem Beispiel sind die Clients (10-1, 10-2) mit dem verteilten Speichersystem 100 über ein Netzwerk 20 (z. B. das Internet) verbunden und sie senden Anfragen zum Zugriff auf Daten, die von dem verteilten Speichersystem 100 gehostet werden. In dieser Anmeldung kann sich der Begriff „Client” auf einen Client-Computer (z. B. ein Desktop-/Laptopcomputer oder eine mobile Vorrichtung, wie etwa ein Tabletcomputer oder ein Smartphone) beziehen, von dem aus ein Endnutzer eine Anfrage zum Zugriff auf ein Datenelement initiiert, das von dem verteilten Speichersystem 100 verwaltet wird. Alternativ kann sich der Begriff „Client” auf einen Computerserver beziehen, der Online-Dienste (z. B. E-Mail oder Werbung) für mehrere Nutzer bereitstellt und das verteilte Speichersystem 100 zum Hosten von Daten verwendet, die mit den Online-Diensten verknüpft sind. In beiden Fällen ist das verteilte Speichersystem 100 beim Empfang derartiger Anfragen von den Clients für das Identifizieren und Weiterleiten der von den Clients angeforderten Daten zu den anfragenden Clients verantwortlich. Zu veranschaulichenden Zwecken wird angenommen, dass einer der Clients ein Online-Werbedienstleister ist und das verteilte Speichersystem 100 Daten hostet, die mit unterschiedlichen Kunden des Online-Werbedienstleisters verknüpft sind.
  • Wenn der Client auf Daten zugreifen möchte, die mit einem Kunden verknüpft sind, schickt er eine Datenzugriffsanfrage an einen Frontend-Server 101. In einigen Ausführungsformen sind unterschiedliche Frontend-Server (gezeigt in 1C) für das Bereitstellen von datenbezogenen Diensten für unterschiedliche Clients verantwortlich. Zum Beispiel sind einige der Frontend-Server zur Bearbeitung von Datenzugriffsanfragen von Clients zum Zugriff auf E-Mail-Dienst-Daten konfiguriert und einige andere Frontend-Server sind zur Bearbeitung von Datenzugriffsanfragen von Clients zum Zugriff auf Werbedienstdaten konfiguriert. In einigen Ausführungsformen werden Daten, die mit einer Online-Dienstanwendung verknüpft sind, ferner in mehrere Teile aufgeteilt und jeder Frontend-Server ist konfiguriert, um eine Teilmenge der Datenzugriffsanfragen für einen oder mehrere Teile der Daten zu bearbeiten. In einigen Ausführungsformen befinden sich die Frontend-Server des verteilten Speichersystems an unterschiedlichen geografischen Standorten, um Dienste für nahegelegene Clients bereitzustellen, die Datenzugriffsanfragen schicken, die mit unterschiedlichen Online-Diensten verknüpft sind. Wie in 1D gezeigt, schickt ein Client eine Datenzugriffsanfrage, indem er eine Anwendungsprogrammierschnittstelle (API) aufruft, die von dem Frontend-Server 101 akzeptiert wird. Die Datenzugriffsanfrage schließt Identifizierungsinformationen des einen oder der mehreren Kunden ein. In einigen Ausführungsformen entsprechen die Daten, die mit einem Kunden verknüpft sind, einer Zeile in einer Datentabelle und die Zeile von Kundendaten ist ferner in mehrere Spalten unterteilt. Die Datenzugriffsanfrage kann eine Zeilenkennung und möglicherweise eine oder mehrere Spaltenkennungen einschließen, wenn der Client daran interessiert ist, auf Daten in der einen oder den mehreren Spalte(n) zuzugreifen, die mit jedem Kunden verknüpft ist bzw. sind. Nach dem Empfang der Datenzugriffsanfrage muss der Frontend-Server 101 ermitteln, wo sich die von dem Client angeforderten Daten in dem verteilten Speichersystem 100 befinden, wie etwa Informationen über die Zone und das bzw. die Tablet(s), die die von dem Client angeforderten Daten aufweisen.
  • Wie in 1D gezeigt, werden unterschiedliche Bestandteile im Speicherverbundsystem 100 in zwei Gebiete organisiert, die auf ihren jeweiligen Rollen basieren: (i) das logische Gebiet einschließlich die Vorderseitenbediener (101-1, 101-3) und (ii) das körperliche Gebiet einschließlich die Zonen (102-1, 102-3). Die Frontend-Server bearbeiten Datenzugriffsanfragen von den externen Clients und verwenden Datenstrukturen, wie etwa die Verzeichniskarte 103-1 und die Gruppenkarte 103-3, um die Clients vom Verständnis darüber, wie Daten in dem verteilten Speichersystem 100 physikalisch gespeichert werden, zu befreien. In einigen Ausführungsformen ist jeder Kunde des Online-Werbedienstes mit einem Verzeichnis in der Verzeichniskarte 103-1 verknüpft. Auf Grundlage der logischen Verzeichniskennung, die von einem Client bereitgestellt wird, identifiziert der Frontend-Server 101-1 einen bestimmten Eintrag in der Verzeichniskarte 103-1, der dem bestimmten Kunden entspricht.
  • Um die Skalierbarkeit des verteilten Speichersystems 100 zu verbessern, werden Daten, die mit einem Kunden verknüpft sind, in mehrere Segmente unterteilt, die als „Splits” bezeichnet werden, wobei jeder Split in der Verzeichniskarte 103 eine einzigartige Split-ID aufweist. Wie in 1D gezeigt, schließt jedes Verzeichnis (z. B. Verzeichnis 105-1) einen oder mehrere Splits (107-1 und 107-3) ein. Die Anzahl der Splits, die mit einem Verzeichnis verknüpft sind, wird durch die Größe von Daten bestimmt, die mit einem entsprechenden Kunden verknüpft sind. Je mehr Daten der Kunde aufweist, in umso mehr Splits können die Daten unterteilt werden. Wenn die Größe von Daten in einem Split einen vordefinierten Schwellenwert erreicht, werden keine Daten mehr zu dem Split hinzugefügt und ein neuer Split wird zum Hosten neuer Daten generiert, die mit dem Konto verknüpft sind. In einigen Ausführungsformen gibt es im Hinblick auf die Größe von Daten für ein Konto keine Grenze. In anderen Ausführungsformen ist die Größe von Daten für ein Konto auf eine vorher festgelegte Grenze eingestellt. Die vorher festgelegte Grenze kann durch das verteilte Speichersystem 100 (z. B. wird eine globale Grenze der Größe von Daten für alle Konten angewendet), die Anwendung, für welche die Daten für das Konto verknüpft sind (z. B. kann eine Web-Mail-Anwendung eine Grenze für die Größe von Daten für ihre Konten anordnen, die keine Werbeanwendung sind), bestimmt werden und/oder kann angehoben werden, wenn ein Endnutzer mehr Speicherplatz für ein Konto erwirbt. Es wird vermerkt, dass der Client (d. h. der Online-Werbedienstleister) nicht wissen muss, welche(r) Split(s) die von dem Client angeforderten Daten aufweist bzw. aufweisen. Stattdessen spezifiziert der Client die angeforderten Daten in einer Anfrage unter Verwendung eines Formats, das von dem Client-assoziierten Online-Dienstleister definiert wird und der Frontend-Server 101-1 wandelt die Clientanfrage in einen Satz von Split-IDs um, welche die Splits, einschließend die von dem Client angeforderten Daten, definieren.
  • Um die Zuverlässigkeit und Effizienz des verteilten Speichersystems 100 zu verbessern, werden Daten, die mit einem Kunden verknüpft sind, in mehreren Kopien repliziert und in unterschiedlichen Tablets von einer oder mehreren Zonen gespeichert. Anders ausgedrückt, ist die grundlegende Dateneinheit für einen bestimmten Kunden in einem Frontend-Server ein Split und die grundlegende Dateneinheit in einer Zone ist ein Tablet. Wie in 1D gezeigt, wird eine Gruppe in der Gruppenkarte 103-2 definiert, um einen Split in der Verzeichniskarte 103-1 mit einer Vielzahl von Tablets in einer bestimmten Zone zu verknüpfen. In diesem Beispiel ist der Split 107-1 eine Datenstruktur, welche die Split ID 108-1 mit einer Gruppen ID 108-7 verknüpft, die einem Eintrag 109-1 in der Gruppenkarte 103-3 entspricht. Der Split 107-1 schließt außerdem eine Splitgröße 108-3, welche die tatsächliche Menge von Daten anzeigt, die sich derzeit in diesem Split befinden und einen Datenbereichsindikator 108-5 ein. Wie nachfolgend beschrieben, wird der Datenbereichsindikator verwendet, um anzuzeigen, ob der Split Platz für mehr Daten hat oder nicht. Wenn der Split keinen Platz mehr hat, wird ein neuer Split (z. B. Split 107-3) zum Hosten neuer Daten erzeugt, die mit dem Konto verknüpft sind. In diesem Beispiel ist der Split 107-3 mit der Gruppe 109-3 und nicht der Gruppe 109-1 verknüpft. Es wird vermerkt, dass unterschiedliche Splits, die mit einem Konto verknüpft sind, zu derselben Gruppe von Splits oder unterschiedlichen Gruppen von Splits gehören können. Jede Gruppe schließt eine Vielzahl (z. B. Hunderte oder sogar Tausende) von Splits ein, die mit unterschiedlichen Konten verknüpft sind und weist eine vordefinierte Gruppengrenze auf. Die genaue Verknüpfung zwischen einem Split und einer Gruppe wird teilweise auf Grundlage der Restkapazität einer bestimmten Gruppe dynamisch bestimmt. In einigen Ausführungsformen versucht der Frontend-Server unterschiedliche Splits, die mit demselben Konto verknüpft sind, zu derselben Gruppe hinzuzufügen, da es wahrscheinlich ist, dass auf diese Splits zur gleichen Zeit von einem Client aus zugegriffen wird und es für sie wahrscheinlich praktischer ist, in derselben Gruppe und demnach demselben Satz von Tablets zu sein, die Replikate der Gruppe sind. Wenn die Gruppe (z. B. Gruppe 109-1) keinen Platz mehr hat, kann der Frontend-Server eine andere Gruppe (z. B. Gruppe 109-3) für den Split 107-3 identifizieren. In einigen Ausführungsformen wird die Datenreplikationsrichtlinie für jedes Konto definiert, die Gruppe 109-3 wird für den Split 107-3 ausgewählt, da sie die gleiche Anzahl von Tablets aufweist wie die Gruppe 109-1. Anders ausgedrückt, sollten Splits, die mit unterschiedlichen Konten verknüpft sind, die unterschiedliche Datenreplikationsrichtlinien aufweisen, zu unterschiedlichen Gruppen mit unterschiedlichen Anzahlen von Tablets hinzugefügt werden.
  • Gemäß einer Datenreplikationsrichtlinie, die von dem Client bereitgestellt wird, wird eine vordefinierte Anzahl von Instanzen der Gruppe in dem verteilten Speichersystem 100 generiert, wobei jede Instanz der Gruppe als ein Tablet bezeichnet wird. Wie in 1D gezeigt, weist die Gruppe 109-1 eine Gruppen-ID 111-1 (die der Gruppen-ID 108-7 in dem Split 107-1 entspricht), eine Gruppengröße 111-3 und eine Liste von Tablet-IDs (z. B. Tablet-IDs 113-1, 113-3) der Gruppe auf. Splits, die mit unterschiedlichen Verzeichnissen (z. B. Verzeichnis 105-1 und Verzeichnis 105-3) verknüpft sind, gehören beide zu der Gruppe 109-1, was darauf hindeutet, dass die zwei Konten, die den zwei Verzeichnissen entsprechen, die gleiche Datenreplikationsrichtlinie aufweisen. Als Reaktion auf eine Clientanfrage identifiziert der Frontend-Server 101-1 zunächst eine oder mehrere Split-ID(s) in der Verzeichniskarte 103-1, die mit einem Kunden verknüpft ist bzw. sind, der durch die Clientanfrage identifiziert wird und identifiziert dann eine Gruppe und eine zugehörige Liste von Tablet-IDs für jede Split-ID. 1D bildet eine Ausführungsform ab, bei der unterschiedliche Splits (wie durch die Split-IDs 107-1 und 107-3 identifiziert), die mit einem Kunden verknüpft sind, unterschiedlichen Gruppen (der Gruppe 109-1 und der Gruppe 109-3) zugewiesen werden. Es kommt zu dieser Situation, wenn die Größe einer Gruppe eine vordefinierte Gruppengrenze erreicht, sodass es weniger effizient ist, all die Daten, die mit einem Kunden verknüpft sind (z. B. mehrere Splits) in einer Gruppe und demnach einem Tablet zu behalten.
  • Nachdem der Frontend-Server 101-1 die Tablet-IDs in einer Gruppe von Splits identifiziert, welche die von dem Client angeforderten Daten einschließt, wird der Vorgang des Zugriffs auf die von dem Client angeforderten Daten von der logischen Domäne in die physikalische Domäne, d. h. einer Zone, welche die Tablets einschließt, die mit den identifizierten Tablet-IDs verknüpft sind, verschoben. In einigen Ausführungsformen schließt die Tablet-ID (113-1 oder 113-3) eine entsprechende darin eingebettete Zonen-ID ein. Demnach weiß der Frontend-Server 101-1 nach der Identifizierung der Tablet-IDs auch, welche Zone die von dem Client angeforderten Daten aufweist. Wie zuvor vermerkt, schließt jede Zone einen oder mehrere Standort-Proxy-Server ein, die den Standortsuchdienst zum Identifizieren eines bestimmten Tablet-Servers für jedes Tablet bereitstellen. Auf Grundlage der Zonen-ID, die in einer Tablet ID eingeschlossen ist, schickt der Frontend-Server 101-1 eine Abfrage an einen entsprechenden Standort-Proxy-Server in einer bestimmten Zone, die durch die Zonen-ID identifiziert wird, wobei die Abfrage eine oder mehrere Tablet-IDs (113-1, 113-3) einschließt. Der Standort-Proxy-Server schickt dann eine oder mehrere Tablet-Server-IDs zurück, wobei jede Tablet-Server-ID einen entsprechenden Tablet-Server (z. B. den Tablet-Server 125-1 oder den Tablet-Server 125-3) identifiziert, der von dem Zonenmaster zum Verwalten der Datenzugriffsanfragen für das bestimmte Tablet ausgewählt wurde. Nach dem Empfang der einen oder mehreren Tablet-Server-IDs schickt der Frontend-Server 101-1 eine Anfrage an einen entsprechenden Tablet-Server, wobei die Anfrage eine Identifizierung von einem oder mehreren Splits (z. B. den Splits 123-1 und 123-3) in dem Tablet (z. B. dem Tablet 121-1) einschließt. Als Reaktion auf die Anfrage identifiziert jeder Tablet-Server ein entsprechendes Tablet in dem Datenspeicher und führt die Operationen für das identifizierte Tablet dementsprechend aus.
  • 1E veranschaulicht, wie die Kundendaten von einem Online-Werbedienst gemäß einigen Ausführungsformen der vorliegenden Anmeldung in mehrere Splits unterteilt werden. Die Datentabelle 108 veranschaulicht, wie die Kundendaten in einer tabellenartigen Datenstruktur gespeichert werden. Wie in der FIG. gezeigt, stellt jede Zeile 108-1 in der Datentabelle 108 die Daten dar, die mit einem bestimmten Kunden verknüpft sind, dessen Kunden-ID ein Primärschlüssel der Datenzeile ist. Die Datenzeile 108-1 schließt mehrere Spalten ein. Einige Spalten, wie etwa die Spalte „Kunde” und die Spalte „Alter” weisen jeweils einen Attributwert auf, während einige andere Spalten eine eingebettete Datenstruktur (z. B. die eingebettete Tabelle 108-2) einschließen. Wie in der FIG. gezeigt, ist die Datenzeile 108-1 in mehrere Splits (123-A, 123-B, 123-C) unterteilt, um die anhaltende Hinzufügung von neuen Daten zu der Zeile unterzubringen, wobei jeder Split eine Teilmenge der Datenzeile einschließt. In einigen Ausführungsformen basiert die Aufteilung von Datenspalten in unterschiedliche Splits auf den Beziehungen zwischen unterschiedlichen Spalten. Zum Beispiel werden Spalten, auf die oftmals zusammen zugegriffen wird, zum Zwecke der Effizienz in einen Split gelegt. Eine eingebettete Tabelle in einer bestimmten Spalte kann in mehrere Abschnitte unterteilt werden, wobei jeder Abschnitt zu einem Split gehört, wie in 1E gezeigt. Wie zuvor vermerkt, weist jeder Split zur eindeutigen Identifizierung des Splits eine Split-ID auf. In einigen Ausführungsformen ist die Split-ID inhaltsadressierbar. Zum Beispiel kann die Split-ID Informationen über die Kunden-ID, die mit der Datenzeile 108-1 verknüpft ist, die Metadaten, die mit dem Split verknüpft sind (z. B. der Name der Spalten in dem Split) und die Kundendaten einschließen, die in dem Split gespeichert sind. (i) welcher Split (und demnach ein zugehöriges Tablet) die von dem Client angeforderten Daten auf Grundlage der Informationen in der Clientanfrage aufweist und (ii) welcher Split (und demnach ein zugehöriges Tablet) die von dem Client angeforderten Daten nicht aufweist und für die bestimmte Clientanfrage ignoriert werden kann.
  • Folglich muss der Frontend-Server lediglich mit einem Tablet-Server kommunizieren, der für die Verwaltung des Tablets verantwortlich ist. In einigen Ausführungsformen schließt die Split-ID eine Spanne strangförmiger Schlüssel ein, die einer Spanne von Daten entsprechen, die mit einem Kunden verknüpft sind.
  • Rückbezüglich auf 1D kann ein Tablet 121-1 Splits einschließen, die mehreren Gruppen von Splits (109-1, 109-3) entsprechen. Indem so viele Gruppen in einem Tablet eingeschlossen werden wie möglich, kann die Gesamtzahl von Tablets verringert werden, wodurch es einfacher wird, die Transaktionen zu verwalten, die auf unterschiedliche Gruppen ausgerichtet sind, die mit demselben Tablet verknüpft sind. Zum Beispiel werden durch die Verringerung von Tablets weniger Nachrichten/Ressourcen für die Verwaltung der Beziehung zwischen unterschiedlichen Tablets verbraucht. Es gibt in dem verteilten Speichersystem 100 weniger Entitäten, die behandelt werden müssen. Mit der Verringerung von Tablets ist es wahrscheinlich, dass Transaktionen in einem Satz von benachbarten Verzeichnissen in der Verzeichniskarte zu einem einzelnen Satz von Tablets in einer bestimmten Zone lokalisiert werden und demnach anstelle von Transaktionen an mehreren Stellen, die mehrere Tablet-Server beinhalten können, als eine Transaktion an einer einzelnen Stelle (z. B. ein Tablet-Server) ausgeführt werden. In einigen Ausführungsformen wird es durch die Verringerung von Tablets wahrscheinlicher, dass ein untergeordnetes Verzeichnis in derselben Gruppe platziert wird wie sein übergeordnetes Verzeichnis. Dadurch kann ein Frontend-Server einen Anruf zu dem untergeordneten Verzeichnis zu dem Standort des übergeordneten Verzeichnisses leiten, wodurch die Größe des erforderlichen Standortcaches an dem Frontend-Server verringert wird und Clients ein schnelleres Hochfahren ermöglicht, da sie weniger Standorte laden müssen. In einigen Ausführungsformen entspricht der Standort des übergeordneten Verzeichnisses nicht dem Standort des Standorts des untergeordneten Verzeichnisses. In diesem Fall, wenn der Client viele Nutzdaten aufweist, kann er zunächst eine Verifizierungsnachricht an den Tablet-Server schicken, der das Tablet, einschließend das übergeordnete Verzeichnis, verwaltet und ermitteln, ob sich das untergeordnete Verzeichnis auch in demselben Tablet befindet. Nur nachdem eine positive Bestätigung empfangen wurde, sendet der Client seine Nutzdaten an den Tablet-Server. Durch all diese Leistungsvorteile können die Kosten für die Einführung eines neuen Verzeichnisses in das verteilte Speichersystem erheblich verringert werden und es wird wahrscheinlicher, dass Clients ihre Strukturen Verzeichnissen auf natürliche Weise zuordnen, anstatt die Bildung größerer Verzeichnisse zu versuchen.
  • Wie in 1D gezeigt, schließt ein Tablet-Server 125-1 ferner Tablet-Metadaten 127-1 ein, die mit Tablets (121-1, 121-3) verknüpft sind, die von dem Tablet-Server verwaltet werden. In diesem Beispiel schließen die Tablet-Metadaten 127-1 eine Verzeichnis-zu-Gruppe-Karte 127-3 und Gruppenzustandsinformationen 127-5 ein. Die Verzeichnis-zu-Gruppe-Karte 127-3 lokalisiert eine bestimmte Gruppe in einem Tablet für ein bestimmtes Verzeichnis in der Verzeichniskarte. Die Gruppenzustandsinformationen 127-5 schließen die Zustandsinformationen für ein bestimmtes Gruppenreplikat, wie etwa die Logdaten, Ansichtsinformationen, die Liste von Gruppenreplikaten usw. ein. Angesichts eines Verzeichnisses, das mit einem Tablet verknüpft ist, kann der Tablet-Server die Verzeichnis-zu-Gruppe-Karte für einen Eintrag abtasten, der den gleichen Verzeichnisnamen aufweist. Sobald ein Eintrag identifiziert wurde, kann der Tablet-Server unter Verwendung einer Gruppen-ID in diesem Eintrag auf die zugehörigen Gruppenzustandsinformationen zugreifen. In einigen Ausführungsformen unterstützt der Tablet-Server das Entfernen einer Spanne von Verzeichnissen aus einem Tablet, indem Daten, die mit jedem Verzeichnis in der Spanne verknüpft sind, aus dem Tablet eliminiert werden, wenn ein Verzeichnisreplikat aus dem Tablet entfernt wird.
  • In einigen Ausführungsformen kann eine Gruppe in dem verteilten Speichersystem aus verschiedenen Gründen in zwei oder mehr Gruppen aufgeteilt werden. Zum Beispiel ist ein Tablet, das die Gruppe enthält, überlastet oder zu groß. In diesem Fall kann eine Aufteilung der Gruppe dazu beitragen, die Last des Tablets zu verringern, wenn diese Gruppe z. B. zu einem beträchtlichen Teil der Last oder Größe des Tablets beiträgt. Gelegentlich unterscheiden sich Zugriffsmuster für einige Verzeichnisse in einer Gruppe stark von Zugriffsmustern für den Rest der Gruppe. Zum Beispiel kann eine Gruppe in zwei aufgeteilt werden, wenn auf die meisten Verzeichnisse in der Gruppe aus den USA zugegriffen wird, aber auf einen bestimmten Satz von Verzeichnissen in der Gruppe größtenteils aus Europa zugegriffen wird.
  • Wie in 1F gezeigt, ist der Verzeichnissatz 151 mit der Gruppe 155 verknüpft, die ein Glied des Tablets 157 ist. Es wird angenommen, dass der Verzeichnissatz 153, der eine Teilmenge des Verzeichnissatzes 151 vor der Bewegung darstellt, zu einer anderen Gruppe bewegt wird. Dazu wird in jedem desselben Satzes von Tablets, welche die Gruppe 155 einschließen, eine neue Gruppe generiert, indem ein Replikat der Gruppe 155 hergestellt wird. Nach der Erstellung kann die neue Gruppe über die normale Replikathinzufügung oder -entfernung verändert werden. In diesem Beispiel wird die Gruppenaufteilung als Transaktion an einem einzelnen Standort an der Gruppe 155 implementiert und die Aktualisierung der Transaktion wird an jedem Replikat der Gruppe 155 angewendet. Wie in 1F gezeigt, wird bei Abschluss der Transaktion eine neue Gruppe 155-3 in dem Tablet 157 erstellt und die alte Gruppe 155 wird zu der Gruppe 155-1 aktualisiert, um die Gruppenaufteilung so widerzuspiegeln, dass jedes Verzeichnis in dem neuen Verzeichnissatz 153-1 (welcher dem alten Verzeichnissatz 153 entspricht) mit der neuen Gruppe 155-3 verknüpft ist. Die Metadaten, die mit der neuen Gruppe 155-3 verknüpft sind, werden so eingepflegt, dass mindestens ein Teil der Metadaten übernommen wird, die mit der Gruppe 155-1 verknüpft sind, wodurch die Beziehung zwischen den zwei Gruppen 155-1 und 155-3 angezeigt wird. Dadurch werden die Metadaten, die mit der Gruppe 155-1 verknüpft sind (z. B. die Liste von Tablet-IDs), nicht verändert. Es wird vermerkt, dass durch eine Aufteilung einer Gruppe Nutzerdaten, die mit der Gruppe verknüpft sind, nicht tatsächlich bewegt werden. Dadurch ist die Aufteilung schnell, da die Transaktionskosten von der Größe der bewegten Verzeichnisse unabhängig sind.
  • Es wird vermerkt, dass sich eine Aufteilung der Gruppe 155 in dem Tablet 157 nicht auf eine Last an dem Tablet 157 auswirkt, da die neue Gruppe 155-3 in demselben Tablet 157 liegt, wie die originale Gruppe. Um eine gewisse Last von dem Tablet 157 wegzubewegen, muss das Tablet 157 eine gewisse Gruppe zu einem anderen Tablet bewegen. Wie in 1G gezeigt, schließt das Tablet 157 zwei Gruppen 155-1 und 155-3 ein, wobei jede Gruppe einem entsprechenden Satz von Verzeichnissen entspricht. In einigen Ausführungsformen wird eine Gruppe in einem Tablet zu einem anderen Tablet in derselben Zone bewegt, indem die zwei Tablets einige Daten miteinander teilen. In einigen anderen Ausführungsformen liest das Zieltablet (z. B. das Tablet 157-1) direkt aus dem Quelltablet (z. B. dem Tablet 157), ohne einen Tablet-Server zu durchlaufen, der für die Verwaltung des Tablets 157 verantwortlich ist. Als solche kommt durch die Bewegung von Gruppen zwischen zwei Tablets keine zusätzliche Last für den Tablet-Server hinzu. In Verbindung mit der Bewegung einer Gruppe von einem Tablet zu einem anderen Tablet wird die Zuordnung zwischen einem Verzeichnis (z. B. einem Glied in dem Verzeichnissatz 153-1) und einem Quelltablet (z. B. dem Tablet 157) aktualisiert, um zu ein Zieltablet (z. B. das Tablet 157-1) umzuleiten.
  • 2A und 2B sind ein Blockdiagramm und ein Ablaufdiagramm, die veranschaulichen, wie Daten, die mit unterschiedlichen Konten verknüpft sind, in dem verteilten Speichersystem gemäß einigen Ausführungsformen repliziert werden. Wie in 2B gezeigt, wird ein verteiltes Speichersystem zum Verwalten der Daten 201 bereitgestellt (251), die mit einer Vielzahl von Konten verknüpft sind, einschließend das Unterteilen der Daten in eine Vielzahl von Gruppen, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist. Insbesondere werden die Daten, die mit einem ersten Konto (z. B. dem Konto 201-1 in 2A) verknüpft sind, in einen ersten Satz von Splits (z. B. die Splits 203-1 und 203-3 in 2A) unterteilt (253) und die Daten, die mit einem zweiten Konto (z. B. dem Konto 201-3 in 2A) verknüpft sind, werden in einen zweiten Satz von Splits (z. B. der Split 203-5 in 2A) unterteilt. Das verteilte Speichersystem fügt jeden des ersten Satzes von Splits zu einer Gruppe von Splits (z. B. der Gruppe 205-1 in 2A) hinzu (255) und fügt jeden des zweiten Satzes von Splits zu einer Gruppe von Splits (z. B. der Gruppe 205-3 in 2A) hinzu. In diesem Beispiel wird angenommen, dass das erste Konto und das zweite Konto unterschiedliche Datenreplikationsrichtlinien aufweisen. Zum Beispiel kann es das erste Konto erforderlich machen, dass das verteilte Speichersystem drei Replikate für seine Daten erstellt und die drei Replikate einer Zone zuordnet, die Nordamerika entspricht und das zweite Konto kann es erforderlich machen, dass das verteilte Speichersystem zwei Replikate für seine Daten erstellt und die zwei Replikate einer Zone zuordnet, die Europa entspricht. Da die zwei Konten unterschiedliche Richtlinien aufweisen, kann ein Glied des ersten Satzes von Splits nicht zu der Gruppe 205-3 hinzugefügt werden, die ein Glied des zweiten Satzes von Splits einschließt. Gleichermaßen kann ein Glied des zweiten Satzes von Splits nicht zu der Gruppe 205-1 hinzugefügt werden, die ein Glied des ersten Satzes von Splits einschließt. Anders ausgedrückt, gibt es keine Gruppe in dem verteilten Speichersystem, die sowohl ein Glied des ersten Satzes von Splits als auch ein Glied des zweiten Satzes von Splits einschließt.
  • Indem jedes Konto seine eigene Datenreplikationsrichtlinie haben darf, bietet das verteilte Speichersystem unterschiedlichen Arten von Online-Dienstanwendungen, die das verteilte Speichersystem zum Speichern ihrer Daten verwenden, sowohl eine Flexibilität als auch eine Skalierbarkeit. Zum Beispiel kann ein Konto, das einen häufigen Zugriff auf seine Daten von einem oder mehreren geografischen Standorten benötigt, einen derartigen Bedarf in seiner Datenreplikationsrichtlinie spezifizieren, sodass das verteilte Speichersystem für die Daten, die mit dem Konto verknüpft sind, in einer Zone, die sich in der Nähe der auf die Daten zugreifenden Standorte befindet, mehr Replikate erstellen und die Latenz verringern kann, die für einen Client zum Zugriff auf derartige Daten erforderlich ist.
  • Wie in 2A gezeigt, erstellt (257 in 2B) das verteilte Speichersystem eine vordefinierte Anzahl (z. B. drei) von Replikaten für jede Gruppe von Splits (z. B. die Gruppe 205-1), die ein Glied des ersten Satzes von Splits einschließt und ordnet die drei Replikate einer Zone (z. B. der Zone 207-1) gemäß der Datenreplikationsrichtlinie zu, die mit dem ersten Konto verknüpft ist.
  • In diesem Beispiel schließt die Zone 207-1 drei Tablets (209-1, 209-3, 209-5) ein, wobei jedes ein Replikat der Gruppe 205-1 ist und jedes Tablet eine Kopie des ersten Satzes von Splits einschließt, der mit dem ersten Konto 201-1 verknüpft ist. Wie zuvor beschrieben, wird jedes Tablet in einer Zone einem Tablet-Server zur Verwaltung von Datenzugriffsanfragen zugewiesen, die an das Tablet gerichtet sind. In diesem Fall werden die drei Tablets von zwei Tablet-Servern 211-1 und 211-3 verwaltet. Anders ausgedrückt, können Tablets, die mit derselben Gruppe von Splits verknüpft sind, in Abhängigkeit von dem Lastenausgleich der entsprechenden Tablet-Server in einer Zone durch denselben Tablet-Server oder unterschiedliche Tablet-Server verwaltet werden. Gleichermaßen erstellt (259 in 2B) das verteilte Speichersystem eine vordefinierte Anzahl (z. B. zwei) von Replikaten für jede Gruppe von Splits (z. B. die Gruppe 205-3), die ein Glied des zweiten Satzes von Splits einschließt und ordnet die Replikate einer Zone (z. B. der Zone 207-3) gemäß der Datenreplikationsrichtlinie zu, die mit dem zweiten Konto verknüpft ist. In diesem Beispiel schließt die Zone 207-3 zwei Tablets (209-7, 209-9) ein, wobei jedes ein Replikat der Gruppe 205-3 ist und jedes Tablet eine Kopie des zweiten Satzes von Splits einschließt, der mit dem ersten Konto 201-3 verknüpft ist und von einem entsprechenden Tablet-Server (211-5 oder 211-7) verwaltet wird. Es wird vermerkt, dass die Datenreplikationsrichtlinie einer Gruppe von Splits durch die Datenreplikationsrichtlinien der unterschiedlichen Splits in der Gruppe gesteuert wird, die von den Datenreplikationsrichtlinien der Konten gesteuert werden, die mit den unterschiedlichen Splits verknüpft sind. Das verteilte Speichersystem ist dafür verantwortlich, die Splits, die gleiche oder ähnliche Datenreplikationsrichtlinien aufweisen, in die gleiche Gruppe zu legen, um die Effizienz des Systems zu verbessern. In einigen Ausführungsformen wird die Durchsetzung der Datenreplikationsrichtlinie auf Kontoebene (oder Verzeichnisebene) durch das verteilte Speichersystem auf Grundlage der Verfügbarkeit von Ressourcen in unterschiedlichen Zonen bestimmt. Anders ausgedrückt, ist es möglich, dass das verteilte Speichersystem nicht immer Splits, die mit einem bestimmten Konto verknüpft sind, strikt gemäß der Datenreplikationsrichtlinie des Kontos speichern kann. Zum Beispiel können die Splits zunächst in einer Zone gespeichert werden, die sich von einer Zone unterscheidet, die von der Datenreplikationsrichtlinie des Kontos definiert wird und dann zu der Zone bewegt werden. In diesem Fall erlaubt das verteilte Speichersystem, dass ein Konto seine gewünschte Platzierung der Splits, die mit dem Konto verknüpft sind, in der Verzeichniskarte spezifiziert und versucht, einer derartigen Anforderung nach Möglichkeit gerecht zu werden. In einigen Ausführungsformen kann ein Konto seine Datenreplikationsrichtlinie von Zeit zu Zeit ändern. Zum Beispiel kann sich ein Nutzer eines E-Mail-Kontos vorrübergehend von Nordamerika nach Europa bewegen.
  • Wenn die E-Mail-Anwendung eine derartige Bewegung detektiert, kann sie das verteilte Speichersystem benachrichtigen, dass es Tablets, die mit dem E-Mail-Konto verknüpft sind, von einem Datenzentrum in Nordamerika zu einem Datenzentrum in Europa bewegen soll, um für den Endnutzer einen besseren Dienst bereitzustellen.
  • 3A und 3B sind ein Blockdiagramm und ein Ablaufdiagramm, die veranschaulichen, wie Daten, die mit einem Konto verknüpft sind, in dem verteilten Speichersystem gemäß einigen Ausführungsformen hinzugefügt werden. Wie zuvor vermerkt, wird durch die Unterteilung der Daten eines Kontos in einen oder mehrere Splits die Datengrenze für ein bestimmtes Konto beseitigt, das von dem verteilten Speichersystem verwaltet wird, da das verteilte Speichersystem neue Splits zu einem Konto hinzufügen kann, wenn sein existierendes Split keinen Platz mehr hat. Wie in 3B gezeigt, wird ein verteiltes Speichersystem zum Verwalten der Daten 301 bereitgestellt (351), die mit einer Vielzahl von Konten verknüpft sind, einschließend das Unterteilen der Daten in eine Vielzahl von Gruppen, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist. Insbesondere schließen die Daten, die mit einem Konto (z. B. dem Konto 301-1 in 3A) verknüpft sind, zunächst lediglich einen (z. B. den Split 303 in 2A) ein. Wie zuvor in Verbindung mit 2A und 2B beschrieben, wird dieser Split zu einer Gruppe von Splits hinzugefügt und in einer bestimmten Zone als Teil eines Satzes von Tablets, die mit der Gruppe verknüpft sind, gemäß der Datenreplikationsrichtlinie repliziert. Wie in AA. 3B gezeigt, identifiziert (353) das verteilte Speichersystem ein erstes Split (z. B. den Split 303 in 3A), der mit dem Konto verknüpft ist. In diesem Beispiel ist der erste Split der Split 303, der mehrere Parameter einschließt, einschließend den Datenbereichsparameter 303-1 und den Splitgrößenparameter 303-3. Es wird vermerkt, dass der Wert <inf> des Datenbereichsparameters 303-1 anzeigt, dass der Split 303 noch Raum für mehr Daten hat, die zu dem Split hinzugefügt werden und der Splitgrößenparameter 303-3 die tatsächliche Menge von Daten in dem Split 303 darstellt.
  • In einigen Ausführungsformen weist jedes Konto lediglich einen Split auf, dessen Datenbereichsparameter einen Wert von <inf> aufweist. Wie in 3B gezeigt, ermittelt (355) das verteilte Speichersystem, ob der Split, der mit dem Konto verknüpft ist, seine Grenze gemäß einem vordefinierten Plan erreicht (z. B. periodisch). Falls nicht (355-nein), stoppt das verteilte Speichersystem die Überprüfung dieses Kontos und fährt mit der Überprüfung eines anderen Kontos fort. Andernfalls (355-ja) ergreift das verteilte Speichersystem weitere Maßnahmen, indem es einen neuen Split für das Konto erstellt.
  • Wie in 3A gezeigt, aktualisiert (357) das verteilte Speichersystem, wenn der existierende Split 303 keinen Platz mehr hat, den Datenbereichsparameter in dem Split 303 von <inf> auf „ABC”. Es wird vermerkt, dass der Ausdruck „ABC” ein Ausdruck ist, welcher der tatsächlichen Obergrenze der Daten in dem Split 303 entspricht. Aus diesem Parameter kann das verteilte Speichersystem erkennen, welche Daten in jedem Split liegen. Als Reaktion auf eine Clientanfrage für ein bestimmtes Datenelement kann das verteilte Speichersystem den Datenbereichsparameter verwenden, um zu ermitteln welcher Split oder welche Splits die von dem Client angeforderten Daten aufweist bzw. aufweisen. Dadurch markiert das verteilte Speichersystem den ersten Split außerdem so, dass er keine neuen Daten annimmt. Das verteilte Speichersystem erstellt (359) dann einen zweiten Split (z. B. den Split 305 in 3B) für das Konto. Wie in 3B gezeigt, schließt der Split 305 einen Datenbereichsparameter 305-1, der einen Wert von <inf> aufweist, der anzeigt, dass mehr Daten zu dem zweiten Split hinzugefügt werden können und einen Splitgrößenparameter 305-3 ein, der grösser wird, wenn mehr und mehr Daten zu dem zweiten Split 305 hinzugefügt werden.
  • Zudem wählt das verteilte Speichersystem eine zweite Gruppe von Splits (z. B. die Gruppe 307 in 3A) für den zweiten Split 305 aus und fügt den zweiten Split zu einer zweiten Gruppe von Splits hinzu (361). Es wird vermerkt, dass die zweite Gruppe 307 dieselbe Gruppe sein kann, die den Split 303 oder einen anderen einschließt. Schließlich repliziert (363) das verteilte Speichersystem die zweite Gruppe von Splits in einer bestimmten Zone (z. B. der Zone 309 in 3A) gemäß einer Datenreplikationsrichtlinie, die mit dem Konto verknüpft ist. In diesem Beispiel weist die zweite Gruppe 307 zwei Tablets (311-1, 311-3) in der Zone 309 auf, die von zwei entsprechenden Tablet-Servern 313-1 und 313-3 verwaltet werden. In einigen Ausführungsformen kann die Erstellung eines neuen Splits für ein Konto durch die Bewegung von Daten in dem verteilten Speichersystem, z. B. als Reaktion auf eine Änderung der Datenreplikationsrichtlinie, ausgelöst werden. In beiden Fällen wird durch die Erstellung neuer Splits für das Konto sichergestellt, dass der Client mehr Daten zu diesem Konto hinzufügen kann, ohne den Dienst zu stören, der mit dem Konto verknüpft ist.
  • 4A und 4B sind ein Blockdiagramm und ein Ablaufdiagramm, die veranschaulichen, wie Daten in dem verteilten Speichersystem als Reaktion auf eine Datenzugriffsanfrage von einem Client gemäß einigen Ausführungsformen lokalisiert werden. Wie in 4B gezeigt, wird ein verteiltes Speichersystem bereitgestellt (451), um Daten zu verwalten, die mit einer Vielzahl von Konten verknüpft sind, die in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt, wobei jeder Split mit einem entsprechenden Konto verknüpft ist und jede Gruppe mehrere Tablets aufweist und jedes Tablet von einem entsprechenden Tablet-Server des verteilten Speichersystems verwaltet wird. Ein Frontend-Server (403 in 4A) des verteilten Speichersystems empfängt (453) eine Datenzugriffsanfrage von einem Client (401 in 4A). In einigen Ausführungsformen schließt die Datenzugriffsanfrage eine logische Kennung (z. B. eine Verzeichniskennung) von Daten ein, die mit einem Konto verknüpft sind, das mit dem Client verknüpft ist.
  • Als Reaktion identifiziert (455) der Frontend-Server (403 in 4A) eine oder mehrere Splitkennungen, die mit der logischen Kennung gemäß der Datenzugriffsanfrage verknüpft sind. Wie in 4A gezeigt, hat der Frontend-Server 403 zwei Splits in der Verzeichniskarte 405 identifiziert, den Split 407-1 und den Split 407-3. Die Metadaten jedes Splits schließen eine Split-ID (409-1, 409-5) ein, die einen Split identifiziert, der mit dem Konto verknüpft ist. Für jede der identifizierten einen oder mehreren Splitkennungen (457) identifiziert (457-1) der Frontend-Server 403 eine Gruppenkennung (z. B. die Gruppen-IDs 409-3 und 409-7 in 4A), wobei jede Gruppenkennung einer Gruppe von Splits entspricht. In dem in 4A gezeigten Beispiel entspricht die Gruppen-ID 409-3 der Gruppe 411 von Splits, die einen Split 411-1 einschließt, der dem Split 407-1 in der Verzeichniskarte 405 entspricht und die Gruppen-ID 409-7 entspricht der Gruppe 413 von Splits, die einen Split 413-1 einschließt, der dem Split 407-3 in der Verzeichniskarte 405 entspricht. Das verteilte Speichersystem wählt eines der mehreren Tablets, das mit jeder identifizierten Gruppe verknüpft ist, auf Grundlage von Informationen über die Tablet-Server aus (457-3), welche die mehreren Tablets verwalten. Zum Beispiel schließt die Zone 415 zwei Tablets ein, die mit jeder der zwei identifizierten Gruppen 411 und 413 verknüpft sind. Insbesondere wird das Tablet 417 für die Gruppe 411 identifiziert und das Tablet 417 schließt einen Split 417-1 ein, der dem Split 407-1 in der Verzeichniskarte 405 entspricht. Das Tablet 421 wird für die Gruppe 413 identifiziert und das Tablet 421 schließt einen Split 421-1 ein, der dem Split 407-3 in der Verzeichniskarte 405 entspricht. Für jedes ausgewählte Tablet gibt es einen entsprechenden Tablet-Server in der Zone 415, der für das Verwalten der Datenzugriffsanfragen für das Tablet verantwortlich ist. In diesem Beispiel ist der Tablet-Server 419 für die Verwaltung des Tablets 417 verantwortlich und der Tablet-Server 423 ist für die Verwaltung des Tablets 421 verantwortlich. Nach der Identifizierung jedes Tablet-Servers kommuniziert (457-5) der Frontend-Server 403 mit dem Tablet-Server, der das ausgewählte Tablet für den Split verwaltet, welcher der Splitkennung für den Split entspricht, der mit der Clientanfrage verknüpft ist und empfängt (457-7) den Split von dem Tablet-Server. Nach dem Empfang der Splits von unterschiedlichen Tablet-Servern leitet der Frontend-Server die Splits von den entsprechenden Tablet-Servern zu dem anfragenden Client weiter (459), indem er der Datenzugriffsanfrage des Clients gerecht wird. Es wird vermerkt, dass die Clientzugriffsanfrage eine schreibgeschützte Anfrage oder eine Lese- und Schreibanfrage sein kann. Da jede Gruppe von Splits mehrere Tablets einschließt, sollte eine beliebige Datenaktualisierung zu einem Split in der Gruppe in jedem Tablet repliziert werden, das mit der Gruppe verknüpft ist.
  • 5 ist ein Blockdiagramm, das die Komponenten des Clients gemäß einigen Ausführungsformen veranschaulicht. Der Client 10 ist ein Computerserver, der Folgendes einschließt: eine oder mehrere Verarbeitungseinheiten (CPUs) 502 zur Ausführung von Modulen, Programmen und/oder Anweisungen, die in dem Speicher 514 gespeichert sind und dadurch die Ausführung von Verarbeitungsoperationen; eine oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 504; einen Speicher 514; und einen oder mehrere Kommunikationsbusse 512 zur Verbindung dieser Komponenten. In einigen Implementierungen schließt der Client 10 eine Benutzeroberfläche 406 ein, umfassend eine Anzeigevorrichtung 508 und eine oder mehrere Eingabevorrichtungen 510 (z. B. Tastatur oder Maus oder Fernbedienung). In einigen Implementierungen schließt der Speicher 514 ein High-Speed Random Access Memory, wie etwa DRAM, SRAM, DDR RAM oder andere Solid-State-Speichervorrichtungen mit Direktzugriff ein. In einigen Implementierungen schließt der Speicher 514 nicht flüchtigen Speicher, wie etwa eine oder mehrere Magnetscheiben-Speichervorrichtungen, Speichervorrichtungen mit optischen Platten, Flash-Speichervorrichtungen oder andere nicht flüchtige Solid-State-Speichervorrichtungen ein. In einigen Implementierungen schließt der Speicher 514 eine oder mehrere Speichervorrichtungen ein, die von der bzw. den CPU(s) 502 entfernt angeordnet sind. Der Speicher 514 oder alternativ die nicht flüchtige(n) Speichervorrichtung(en) in dem Speicher 514 umfasst bzw. umfassen ein nicht transitorisches computerlesbares Speichermedium. In einigen Implementierungen speichert der Speicher 514 oder das nicht transitorische computerlesbare Speichermedium des Speichers 514 die folgenden Elemente oder eine Teilmenge dieser Elemente und kann außerdem zusätzliche Elemente einschließen:
    • • ein Betriebssystem 516, das Verfahren zur Bearbeitung verschiedener grundlegender Systemdienste und zur Durchführung Hardware-abhängiger Aufgaben einschließt;
    • • ein Netzwerkkommunikationsmodul 518, das zur Kopplung des Clients 10 an das verteilte Speichersystem 100 über die Kommunikationsnetzwerkschnittstellen 504 und ein oder mehrere Kommunikationsnetze (verdrahtet oder drahtlos), wie etwa das Netzwerk 20, andere Weitverkehrsnetzwerke, lokale Netzwerke, innerstädtische Netzwerke und so weiter verwendet wird; und
    • • eine oder mehrere Online-Dienstanwendungen 520, wie etwa eine Online-E-Mail-Anwendung 522, die ein Datenzugriffsmodul 522-1 zum Kommunizieren mit dem verteilten Speichersystem 100 zum Austausch von Daten einschließt, eine Online-Werbeanwendung 524, die ein Datenzugriffsmodul 524-1 zum Kommunizieren mit dem verteilten Speichersystem 100 zum Austausch von Daten einschließt usw.
  • 6 ist ein Blockdiagramm, das die Komponenten eines Frontend-Servers des verteilten Speichersystems gemäß einigen Ausführungsformen veranschaulicht. Der Frontend-Server 101 schließt Folgendes ein: eine oder mehrere Verarbeitungseinheiten (CPUs) 602 zur Ausführung von Modulen, Programmen und/oder Anweisungen, die in dem Speicher 614 gespeichert sind und dadurch die Ausführung von Verarbeitungsoperationen; eine oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 604; einen Speicher 614; und einen oder mehrere Kommunikationsbusse 612 zur Verbindung dieser Komponenten. In einigen Implementierungen schließt der Frontend-Server 101 eine optionale Benutzeroberfläche 606 ein, umfassend eine Anzeigevorrichtung 608 und eine oder mehrere Eingabevorrichtungen 610 (z. B. Tastatur oder Maus oder Fernbedienung). In einigen Implementierungen schließt der Speicher 614 ein High-Speed Random Access Memory, wie etwa DRAM, SRAM, DDR RAM oder andere Solid-State-Speichervorrichtungen mit Direktzugriff ein. In einigen Implementierungen schließt der Speicher 614 nicht flüchtigen Speicher, wie etwa eine oder mehrere Magnetscheiben-Speichervorrichtungen, Speichervorrichtungen mit optischen Platten, Flash-Speichervorrichtungen oder andere nicht flüchtige Solid-State-Speichervorrichtungen ein. In einigen Implementierungen schließt der Speicher 614 eine oder mehrere Speichervorrichtungen ein, die von der bzw. den CPU(s) 602 entfernt angeordnet sind. Der Speicher 614 oder alternativ die nicht flüchtige(n) Speichervorrichtung(en) in dem Speicher 614 umfasst bzw. umfassen ein nicht transitorisches computerlesbares Speichermedium. In einigen Implementierungen speichert der Speicher 614 oder das nicht transitorische computerlesbare Speichermedium des Speichers 614 die folgenden Elemente oder eine Teilmenge dieser Elemente und kann außerdem zusätzliche Elemente einschließen:
    • • ein Betriebssystem 616, das Verfahren zur Bearbeitung verschiedener grundlegender Systemdienste und zur Durchführung Hardware-abhängiger Aufgaben einschließt;
    • • ein Netzwerkkommunikationsmodul 618, das zur Verbindung des Frontend-Servers 101 mit anderen Vorrichtungen (z. B. den Clients 10 und den anderen Komponenten in dem verteilten Speichersystem 100, wie etwa den Zonen) über die Kommunikationsnetzwerkschnittstellen 604 und ein oder mehrere Kommunikationsnetze (verdrahtet oder drahtlos), wie etwa das Netzwerk 20, andere Weitverkehrsnetzwerke, lokale Netzwerke, innerstädtische Netzwerke und so weiter verwendet wird;
    • • eine Vielzahl von Anwendungsschnittstellenmodulen 620, wie etwa ein Online-E-Mail-Anwendungsmodul 622 zum Austausch von Daten mit dem Datenzugriffsmodul 522-1 in dem Client 10, ein Online-Werbeanwendungsmodul 624 zum Austausch von Daten mit dem Datenzugriffsmodul 524-1 in dem Client 10 usw.;
    • • eine Vielzahl von Verzeichniskarten 626, wie etwa eine Online-E-Mail-Anwendung-Verzeichniskarte 628, einschließend eine Vielzahl von Einträgen 630, welche die Beziehung zwischen unterschiedlichen E-Mail-Konten mit ihren entsprechenden Splits in dem verteilten Speichersystem definieren, eine Online-Werbeanwendung-Verzeichniskarte 632, einschließend eine Vielzahl von Einträgen 634, welche die Beziehung zwischen unterschiedlichen Werbekundenkonten mit ihren entsprechenden Splits in dem verteilten Speichersystem definieren usw.; und
    • • eine Vielzahl von Gruppenkarten 636, wie etwa eine Online-E-Mail-Anwendung-Verzeichniskarte 638, einschließend eine Vielzahl von Einträgen 640, welche die Beziehung zwischen unterschiedlichen Gruppen mit ihren entsprechenden Sätzen von Tablets in dem verteilten Speichersystem definieren, eine Online-Werbeanwendung-Verzeichniskarte 642, einschließend eine Vielzahl von Einträgen 644, welche die Beziehung zwischen unterschiedlichen Gruppen mit ihren entsprechenden Sätzen von Tablets in dem verteilten Speichersystem definieren usw.
  • 7 ist ein Blockdiagramm, das die Komponenten einer Zone des verteilten Speichersystems gemäß einigen Ausführungsformen veranschaulicht. Die Zonenserver 102 schließen Folgendes ein: eine oder mehrere Verarbeitungseinheiten (CPUs) 702 zur Ausführung von Modulen, Programmen und/oder Anweisungen, die in dem Speicher 714 gespeichert sind und dadurch die Ausführung von Verarbeitungsoperationen; eine oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 704; einen Speicher 714; und einen oder mehrere Kommunikationsbusse 712 zur Verbindung dieser Komponenten. In einigen Implementierungen schließen die Zonenserver 102 eine optionale Benutzeroberfläche 706 ein, umfassend eine Anzeigevorrichtung 708 und eine oder mehrere Eingabevorrichtungen 710 (z. B. Tastatur oder Maus oder Fernbedienung). In einigen Implementierungen schließt der Speicher 714 ein High-Speed Random Access Memory, wie etwa DRAM, SRAM, DDR RAM oder andere Solid-State-Speichervorrichtungen mit Direktzugriff ein. In einigen Implementierungen schließt der Speicher 714 nicht flüchtigen Speicher, wie etwa eine oder mehrere Magnetscheiben-Speichervorrichtungen, Speichervorrichtungen mit optischen Platten, Flash-Speichervorrichtungen oder andere nicht flüchtige Solid-State-Speichervorrichtungen ein. In einigen Implementierungen schließt der Speicher 714 eine oder mehrere Speichervorrichtungen ein, die von der bzw. den CPU(s) 702 entfernt angeordnet sind. Der Speicher 714 oder alternativ die nicht flüchtige(n) Speichervorrichtung(en) in dem Speicher 714 umfasst bzw. umfassen ein nicht transitorisches computerlesbares Speichermedium. In einigen Implementierungen speichert der Speicher 714 oder das nicht transitorische computerlesbare Speichermedium des Speichers 714 die folgenden Elemente oder eine Teilmenge dieser Elemente und kann außerdem zusätzliche Elemente einschließen:
    • • ein Betriebssystem 716, das Verfahren zur Bearbeitung verschiedener grundlegender Systemdienste und zur Durchführung Hardware-abhängiger Aufgaben einschließt;
    • • ein Netzwerkkommunikationsmodul 718, das zur Verbindung der Zonenserver 102 mit anderen Vorrichtungen (z. B. den Frontend Server 101) über die Kommunikationsnetzwerkschnittstellen 704 und ein oder mehrere Kommunikationsnetze (verdrahtet oder drahtlos), wie etwa die Netzwerkverbindungen 104, andere Weitverkehrsnetzwerke, lokale Netzwerke, innerstädtische Netzwerke und so weiter verwendet wird;
    • • einen Zonenmasterserver 719 zum Verwalten der Standort-Proxy-Server 720 und der Tablet Server 728 in jeder Zone;
    • • eine Vielzahl von Standort-Proxy-Servern 720, wobei jeder Server (722, 726) ferner eine Standortsuchtabelle 724 zum Identifizieren einer Zuordnung zwischen einem entsprechenden Tablet und einem entsprechenden Tablet-Server einschließt;
    • • eine Vielzahl von Tablet-Servern 728, wobei jeder Server (730, 734) ferner Tablet-Metadaten 732 zum Verwalten einer Vielzahl von Tablets, wie etwa die Datenzugriffsanfragen, die an die Tablets gerichtet sind, einschließt; und
    • • eine Vielzahl von Tablets 736, wobei jedes Tablet (738, 744) ferner eine Tabletbeschreibung 740 und eine Vielzahl von Splits 742 einschließt.
  • Es wurde detailliert auf Implementierungen Bezug genommen, für die Beispiele in den beigefügten Zeichnungen veranschaulicht werden. Obwohl bestimmte Implementierungen beschrieben werden, versteht es sich, dass es nicht beabsichtigt wird, die Erfindung auf diese bestimmten Implementierungen zu beschränken. Vielmehr schließt die Erfindung Alternativen, Modifikationen und Äquivalente ein, die in dem Geist und Umfang der beigefügten Ansprüche liegen. Zahlreiche spezifische Details werden dargelegt, um ein umfassendes Verständnis des hierin vorgelegten Gegenstands zu ermöglichen. Für einen gewöhnlichen Fachmann liegt es jedoch auf der Hand, dass der Gegenstand ohne diese spezifischen Details umgesetzt werden kann. In anderen Fällen wurden wohlbekannte Verfahren, Vorgänge, Komponenten und Kreisläufe nicht ausführlich beschrieben, um die Aspekte der Implementierungen nicht unnötig unklar zu machen.
  • Obwohl die Begriffe erster/erste/erstes, zweiter/zweite/zweites usw. hierin verwendet werden können, um unterschiedliche Elemente zu beschreiben, sollen diese Elemente nicht durch diese Begriffe eingeschränkt werden. Diese Begriffe werden lediglich verwendet, um ein Element von einem anderen abzugrenzen. Zum Beispiel können erste Bewertungskriterien als zweite Bewertungskriterien bezeichnet werden und gleichermaßen können zweite Bewertungskriterien als erste Bewertungskriterien bezeichnet werden, ohne von dem Umfang der vorliegenden Erfindung abzuweichen. Erste Bewertungskriterien und zweite Bewertungskriterien sind jeweils Bewertungskriterien, sie sind jedoch nicht dieselben Bewertungskriterien.
  • Die in der hierin enthaltenen Beschreibung der Erfindung verwendete Terminologie dient lediglich dem Zweck der Beschreibung bestimmter Implementierungen und ist nicht als die Erfindung einschränkend beabsichtigt. Wie in der Beschreibung der Erfindung und den beigefügten Ansprüchen verwendet, sollen die Singularformen „ein”, „eine” und „der/die/das” auch die Pluralformen einschließen, sofern der Zusammenhang nicht eindeutig etwas anderes vorgibt. Es versteht sich außerdem, dass sich der Begriff „und/oder”, wie hierin verwendet, auf beliebige und alle möglichen Kombinationen von einem oder mehreren der zugehörigen aufgelisteten Elemente bezieht und diese umfasst. Es versteht sich ferner, dass die Begriffe „schließt ein”, „einschließend”, „umfasst” und/oder „umfassend”, wenn sie in dieser Schrift verwendet werden, das Vorhandensein von angegebenen Merkmalen, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht das Vorhandensein oder die Hinzufügung von einem bzw. einer oder mehreren anderen Merkmalen, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Wie hierin verwendet, kann der Begriff „falls” in Abhängigkeit von dem Kontext so ausgelegt werden, dass er bedeutet, „wenn” oder „nachdem” oder „als Reaktion auf das Bestimmen” oder „gemäß einer Bestimmung” oder „als Reaktion auf das Detektieren”, dass eine angegebene Vorbedingung zutrifft. Gleichermaßen kann die Wendung ”falls bestimmt wird, [dass eine angegebene Vorbedingung zutrifft]” oder ”falls [eine angegebene Vorbedingung zutrifft]” oder ”wenn [eine angegebene Vorbedingung zutrifft]” in Abhängigkeit von dem Kontext so ausgelegt werden, dass sie bedeutet „nach dem Bestimmen” oder „als Reaktion auf das Bestimmen” oder „gemäß einer Bestimmung” oder „nach dem Detektieren” oder „als Reaktion auf das Detektieren”, dass die angegebene Vorbedingung zutrifft.
  • Obwohl einige der verschiedenen Zeichnungen eine Anzahl logischer Stufen in einer bestimmten Reihenfolge veranschaulichen, können Stufen, die nicht von der Reihenfolge abhängig sind, neu geordnet werden und andere Stufen können kombiniert oder herausgebrochen werden. Obwohl einige Neuordnungen oder andere Gruppierungen ausdrücklich erwähnt werden, sind andere für einen gewöhnlichen Fachmann offensichtlich und sie stellen demnach keine vollständige Liste von Alternativen dar. Zum Beispiel ist es für einen Frontend-Server möglich, dass er einen Split, der mit einem Konto verknüpft ist, an einen Client in seinem systemeigenen Format zurückschickt, das von dem verteilten Speichersystem verwendet wird und der Client dann den unbearbeiteten Split in ein Format umwandelt, das von dem Client definiert wird.
  • Zudem ist es erkennbar, dass die Stufen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert werden können.
  • Die vorstehende Beschreibung wurde zum Zwecke der Erläuterung in Bezug auf spezifische Implementierungen beschrieben. Jedoch sollen die oben stehenden veranschaulichenden Erörterungen nicht erschöpfend sein oder die Erfindung auf die genauen offenbarten Formen beschränken. Angesichts der oben stehenden Lehren sind viele Modifikationen und Abwandlungen möglich. Die Implementierungen wurden ausgewählt und beschrieben, um die Prinzipien der Erfindung und ihre praktische Anwendung bestmöglich zu erläutern, um dadurch anderen Fachmännern die bestmögliche Verwendung der Erfindung und verschiedener Implementierungen mit unterschiedlichen Modifikationen zu ermöglichen, wie sie für die bestimmte vorgesehene Verwendung geeignet sind. Implementierungen schließen Alternativen, Modifikationen und Äquivalente ein, die in dem Geist und Umfang der beigefügten Ansprüche liegen. Zahlreiche spezifische Details werden dargelegt, um ein umfassendes Verständnis des hierin vorgelegten Gegenstands zu ermöglichen. Für einen gewöhnlichen Fachmann liegt es jedoch auf der Hand, dass der Gegenstand ohne diese spezifischen Details umgesetzt werden kann. In anderen Fällen wurden wohlbekannte Verfahren, Vorgänge, Komponenten und Kreisläufe nicht ausführlich beschrieben, um die Aspekte der Implementierungen nicht unnötig unklar zu machen.

Claims (16)

  1. Verteiltes Speichersystem, umfassend: eine Vielzahl von Zonen, wobei jede Zone eine Vielzahl von Computerservern einschließt und jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt; eine Vielzahl von Netzwerkverbindungen, die zwei entsprechende Zonen verbinden, wobei Daten in dem verteilten Speichersystem mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist; und eine Vielzahl von Programmmodulen, wobei die Vielzahl von Programmmodulen in dem Speicher eines entsprechenden Computerservers gespeichert ist und von dem einen oder den mehreren Prozessor(en) des entsprechenden Computerservers ausgeführt werden soll und die Vielzahl von Programmmodulen Anweisungen für Folgendes einschließt: Aufteilen von Daten, die mit einem ersten Konto verknüpft sind und Daten, die mit einem zweiten Konto verknüpft sind, jeweils in einen ersten Satz von Splits und einen zweiten Satz von Splits, wobei das erste Konto und das zweite Konto unterschiedliche Datenreplikationsrichtlinien aufweisen; Hinzufügen von jedem des ersten Satzes von Splits und des zweiten Satzes von Splits zu einer entsprechenden Gruppe von Splits, wobei es keine Gruppe gibt, die ein Glied des ersten Satzes von Splits und ein Glied des zweiten Satzes von Splits einschließt; Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des ersten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist; und Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des zweiten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem zweiten Konto verknüpft ist.
  2. Verteiltes Speichersystem nach Anspruch 1, wobei das erste Konto und das zweite Konto mit einer Anwendung verknüpft sind, die das verteilte Speichersystem zum Speichern von Daten verwendet, die mit der Anwendung verknüpft sind.
  3. Verteiltes Speichersystem nach Anspruch 1, wobei die Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist, Informationen einschließt, die eine Anzahl von Replikaten und ihre entsprechenden Positionen für jede des ersten Satzes von Splits spezifizieren.
  4. Verteiltes Speichersystem nach Anspruch 1, wobei Glieder des ersten Satzes von Splits zu zwei oder mehr Gruppen von Splits hinzugefügt werden und Glieder des zweiten Satzes von Splits zu einer Gruppe von Splits hinzugefügt werden.
  5. Verteiltes Speichersystem nach Anspruch 4, wobei die eine Gruppe von Splits, die dem zweiten Satz von Splits entspricht, in zwei oder mehr Zonen des verteilten Speichersystems gemäß der Datenreplikationsrichtlinie repliziert wird, die mit dem zweiten Konto verknüpft ist.
  6. Verteiltes Speichersystem nach Anspruch 1, wobei sich die erste vordefinierte Anzahl von Replikaten von der zweiten vordefinierten Anzahl von Replikaten unterscheidet.
  7. Nicht transitorisches computerlesbares Speichermedium, das ein oder mehrere Programmmodule speichert, die zur Ausführung durch einen Computerserver konfiguriert sind, der einen oder mehrere Prozessoren und Speicher einschließt und Teil eines verteilten Speichersystems ist, wobei das verteilte Speichersystem konfiguriert ist, um Daten, die mit einer Vielzahl von Konten verknüpft sind, in eine Vielzahl von Gruppen aufzuteilen, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist, wobei die einen oder mehreren Programme Anweisungen für Folgendes umfassen: Aufteilen von Daten, die mit einem ersten Konto verknüpft sind und Daten, die mit einem zweiten Konto verknüpft sind, jeweils in einen ersten Satz von Splits und einen zweiten Satz von Splits, wobei das erste Konto und das zweite Konto unterschiedliche Datenreplikationsrichtlinien aufweisen; Hinzufügen von jedem des ersten Satzes von Splits und des zweiten Satzes von Splits zu einer entsprechenden Gruppe von Splits, wobei es keine Gruppe gibt, die ein Glied des ersten Satzes von Splits und ein Glied des zweiten Satzes von Splits einschließt; Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des ersten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist; und Erzeugen einer vordefinierten Anzahl von Replikaten für jede Gruppe von Splits, die ein Glied des zweiten Satzes von Splits einschließt und Zuordnen der Replikate in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem zweiten Konto verknüpft ist.
  8. Nicht transitorisches computerlesbares Speichermedium nach Anspruch 7, wobei das erste Konto und das zweite Konto mit einer Anwendung verknüpft sind, die das verteilte Speichersystem zum Speichern von Daten verwendet, die mit der Anwendung verknüpft sind.
  9. Nicht transitorisches computerlesbares Speichermedium nach Anspruch 7, wobei die Datenreplikationsrichtlinie, die mit dem ersten Konto verknüpft ist, Informationen einschließt, die eine Anzahl von Replikaten und ihre entsprechenden Positionen für jede des ersten Satzes von Splits spezifizieren.
  10. Nicht transitorisches computerlesbares Speichermedium nach Anspruch 7, wobei Glieder des ersten Satzes von Splits zu zwei oder mehr Gruppen von Splits hinzugefügt werden und Glieder des zweiten Satzes von Splits zu einer Gruppe von Splits hinzugefügt werden.
  11. Nicht transitorisches computerlesbares Speichermedium nach Anspruch 10, wobei die eine Gruppe von Splits, die dem zweiten Satz von Splits entspricht, in zwei oder mehr Zonen des verteilten Speichersystems gemäß der Datenreplikationsrichtlinie repliziert wird, die mit dem zweiten Konto verknüpft ist.
  12. Nicht transitorisches computerlesbares Speichermedium nach Anspruch 7, wobei sich die erste vordefinierte Anzahl von Replikaten von der zweiten vordefinierten Anzahl von Replikaten unterscheidet.
  13. Verteiltes Speichersystem, umfassend: eine Vielzahl von Zonen, wobei jede Zone eine Vielzahl von Computerservern einschließt und jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt; eine Vielzahl von Netzwerkverbindungen, die zwei entsprechende Zonen verbinden, wobei Daten in dem verteilten Speichersystem mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist; und eine Vielzahl von Programmmodulen, wobei die Vielzahl von Programmmodulen in dem Speicher eines entsprechenden Computerservers zur Ausführung durch den einen oder die mehreren Prozessor(en) des entsprechenden Computerservers gespeichert ist und die Vielzahl von Programmmodulen Anweisungen für Folgendes einschließt: Identifizieren eines ersten Splits, der mit einem Konto verknüpft ist, wobei der erste Split ein Glied einer ersten Gruppe von Splits ist und der erste Split einen Datenbereichsparameter, der anzeigt, dass mehr Daten zu dem ersten Split hinzugefügt werden können und eine Splitgröße aufweist, die eine tatsächliche Menge von Daten in dem ersten Split angibt; als Reaktion auf die Bestimmung, dass die Splitgröße des ersten Splits eine vordefinierte Grenze erreicht hat: Aktualisieren des Datenbereichsparameters in dem ersten Split, sodass keine zusätzlichen Daten zu dem ersten Split hinzugefügt werden können; Erzeugen eines zweiten Splits für das Konto, wobei der zweite Split einen Datenbereichsparameter einschließt, der anzeigt, dass mehr Daten zu dem zweiten Split hinzugefügt werden können; Hinzufügen des zweiten Splits zu einer zweiten Gruppe von Splits; und Replizieren der zweiten Gruppe von Splits in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem Konto verknüpft ist.
  14. Nicht transitorisches computerlesbares Speichermedium, das ein oder mehrere Programmmodule speichert, die zur Ausführung durch einen Computerserver konfiguriert sind, der einen oder mehrere Prozessoren und Speicher einschließt und Teil eines verteilten Speichersystems ist, wobei das verteilte Speichersystem konfiguriert ist, um Daten, die mit einer Vielzahl von Konten verknüpft sind, in eine Vielzahl von Gruppen aufzuteilen, wobei jede Gruppe eine Vielzahl von Splits einschließt und jeder Split mit einem entsprechenden Konto verknüpft ist, wobei die einen oder mehreren Programme Anweisungen für Folgendes umfassen: Identifizieren eines ersten Splits, der mit einem Konto verknüpft ist, wobei der erste Split ein Glied einer ersten Gruppe von Splits ist und der erste Split einen Datenbereichsparameter, der anzeigt, dass mehr Daten zu dem ersten Split hinzugefügt werden können und eine Splitgröße aufweist, die eine tatsächliche Menge von Daten in dem ersten Split angibt; als Reaktion auf die Bestimmung, dass die Splitgröße des ersten Splits eine vordefinierte Grenze erreicht hat: Aktualisieren des Datenbereichsparameters in dem ersten Split, sodass keine zusätzlichen Daten zu dem ersten Split hinzugefügt werden können; Erzeugen eines zweiten Splits für das Konto, wobei der zweite Split einen Datenbereichsparameter einschließt, der anzeigt, dass mehr Daten zu dem zweiten Split hinzugefügt werden können; Hinufügen des zweiten Splits zu einer zweiten Gruppe von Splits; und Replizieren der zweiten Gruppe von Splits in dem verteilten Speichersystem gemäß einer Datenreplikationsrichtlinie, die mit dem Konto verknüpft ist.
  15. Verteiltes Speichersystem, umfassend: eine Vielzahl von Zonen, wobei jede Zone eine Vielzahl von Computerservern einschließt und jeder Computerserver einen oder mehrere Prozessoren und Speicher einschließt; eine Vielzahl von Netzwerkverbindungen, die zwei entsprechende Zonen verbindet, wobei Daten in dem verteilten Speichersystem mit einer Vielzahl von Konten verknüpft und in eine Vielzahl von Gruppen unterteilt sind, wobei jede Gruppe eine Vielzahl von Splits einschließt, wobei jeder Split mit einem entsprechenden Konto verknüpft ist und jede Gruppe mehrere Tablets aufweist und jedes Tablet von einem entsprechenden Tablet-Server des verteilten Speichersystems verwaltet wird; und eine Vielzahl von Programmmodulen, wobei die Vielzahl von Programmmodulen in dem Speicher eines entsprechenden Computerservers gespeichert ist und von dem einen oder den mehreren Prozessor(en) des entsprechenden Computerservers ausgeführt werden soll und die Vielzahl von Programmmodulen Anweisungen für Folgendes einschließt: Empfangen einer Datenzugriffsanfrage von einem Client, wobei die Datenzugriffsanfrage eine logische Kennung von Daten einschließt, die mit einem Konto verknüpft sind; Identifizieren eines Satzes von einer oder mehreren Splitkennungen, die mit der logischen Kennung gemäß der Datenzugriffsanfrage verknüpft sind, wobei jede entsprechende Splitkennung in dem Satz einen entsprechenden Split identifiziert, der mit dem Konto verknüpft ist; für jede entsprechende Splitkennung in dem Satz: Identifizieren einer entsprechenden Gruppenkennung, wobei die entsprechende Gruppenkennung einer entsprechenden Gruppe von Splits entspricht, welche den entsprechenden Split einschließt; Auswählen von einem von mehreren Tablets, das mit der identifizierten entsprechenden Gruppe verknüpft ist, auf Grundlage von Informationen über Tablet-Server, welche die mehreren Tablets verwalten; Kommunizieren mit dem Tablet-Server, der das ausgewählte Tablet verwaltet; und Empfangen der entsprechenden Splits von dem Tablet-Server; und Weiterleiten der empfangenen Splits an den anfragenden Client.
  16. Nicht transitorisches computerlesbares Speichermedium, das ein oder mehrere Programmmodule speichert, die zur Ausführung durch einen Computerserver konfiguriert sind, der einen oder mehrere Prozessoren und Speicher einschließt und Teil eines verteilten Speichersystems ist, wobei das verteilte Speichersystem konfiguriert ist, um Daten, die mit einer Vielzahl von Konten verknüpft sind, in eine Vielzahl von Gruppen aufzuteilen, wobei jede Gruppe eine Vielzahl von Splits einschließt, jeder Split mit einem entsprechenden Konto verknüpft ist und jede Gruppe mehrere Tablets aufweist und jedes Tablet von einem entsprechenden Tablet-Server des verteilten Speichersystems verwaltet wird, wobei die einen oder mehreren Programme Anweisungen für Folgendes umfassen: empfangen einer Datenzugriffsanfrage von einem Client, wobei die Datenzugriffsanfrage eine logische Kennung von Daten einschließt, die mit einem Konto verknüpft sind; identifizieren eines Satzes von einer oder mehreren Splitkennungen, die mit der logischen Kennung gemäß der Datenzugriffsanfrage verknüpft sind, wobei jede entsprechende Splitkennung in dem Satz einen entsprechenden Split identifiziert, der mit dem Konto verknüpft ist; für jede entsprechende Splitkennung in dem Satz: identifizieren einer entsprechenden Gruppenkennung, wobei die entsprechende Gruppenkennung einer entsprechenden Gruppe von Splits entspricht, welche den entsprechenden Split einschließt; auswählen von einem von mehreren Tablets, das mit der identifizierten entsprechenden Gruppe verknüpft ist, auf Grundlage von Informationen über Tablet-Server, welche die mehreren Tablets verwalten; kommunizieren mit dem Tablet-Server, der das ausgewählte Tablet verwaltet; und empfangen der entsprechenden Splits von dem Tablet-Server; und Weiterleiten der empfangenen Splits an den anfragenden Client.
DE202013012477.6U 2012-05-21 2013-05-21 Organisieren von daten in einem verteilten speichersystem Expired - Lifetime DE202013012477U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261649806P 2012-05-21 2012-05-21
US201261649806P 2012-05-21
US13/898,411 US9069835B2 (en) 2012-05-21 2013-05-20 Organizing data in a distributed storage system
US201313898411 2013-05-20

Publications (1)

Publication Number Publication Date
DE202013012477U1 true DE202013012477U1 (de) 2017-01-17

Family

ID=48579483

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202013012477.6U Expired - Lifetime DE202013012477U1 (de) 2012-05-21 2013-05-21 Organisieren von daten in einem verteilten speichersystem

Country Status (5)

Country Link
US (1) US9069835B2 (de)
EP (1) EP2852885A2 (de)
CN (1) CN104641344B (de)
DE (1) DE202013012477U1 (de)
WO (1) WO2013177193A2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009139869A1 (en) * 2008-05-13 2009-11-19 Tirk Eric E Device and method for distributing and monetizing host applications
JP6044539B2 (ja) * 2011-08-02 2016-12-14 日本電気株式会社 分散ストレージシステムおよび方法
US9519699B1 (en) 2014-03-12 2016-12-13 Amazon Technologies, Inc. Consistency of query results in a distributed system
US10587714B1 (en) * 2014-03-12 2020-03-10 Amazon Technologies, Inc. Method for aggregating distributed data
CN104050102B (zh) * 2014-06-26 2017-09-08 北京思特奇信息技术股份有限公司 一种电信***中的对象存储方法及装置
US10462249B2 (en) * 2014-08-25 2019-10-29 Super Micro Computer, Inc. Globally distributed virtual cache for worldwide real-time data access
US9596183B2 (en) * 2014-12-12 2017-03-14 Western Digital Technologies, Inc. NAS off-loading of network traffic for shared files
US10021186B2 (en) 2014-12-19 2018-07-10 Microsoft Technology Licensing, Llc Guaranteed delivery of replication message
US9864791B2 (en) 2014-12-19 2018-01-09 Microsoft Technology Licensing, Llc Flow for multi-master replication in distributed storage
US11080253B1 (en) * 2015-12-21 2021-08-03 Amazon Technologies, Inc. Dynamic splitting of contentious index data pages
US10824640B1 (en) * 2015-12-29 2020-11-03 Emc Corporation Framework for scheduling concurrent replication cycles
US10108632B2 (en) * 2016-05-02 2018-10-23 Google Llc Splitting and moving ranges in a distributed system
US9858151B1 (en) 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
CN108665335B (zh) * 2017-04-01 2021-09-14 北京京东尚科信息技术有限公司 处理购物网站的购物车数据的方法
US10055145B1 (en) * 2017-04-28 2018-08-21 EMC IP Holding Company LLC System and method for load balancing with XOR star and XOR chain
CN109407975B (zh) * 2018-09-19 2020-08-25 华为技术有限公司 写数据方法与计算节点以及分布式存储***
US10728255B2 (en) * 2018-09-24 2020-07-28 Nutanix, Inc. System and method for protection of entities across availability zones
CN109583224B (zh) * 2018-10-16 2023-03-31 蚂蚁金服(杭州)网络技术有限公司 一种用户隐私数据处理方法、装置、设备及***
CN109561152B (zh) * 2018-12-13 2020-07-24 深圳先进技术研究院 数据访问请求响应方法、装置、终端和存储介质
CN113645304B (zh) * 2021-08-13 2023-06-16 恒生电子股份有限公司 数据服务处理方法及相关设备
US11314875B1 (en) * 2021-11-30 2022-04-26 Snowflake Inc. Replication of account security features in multiple deployment database
CN115242817B (zh) * 2022-07-21 2023-10-24 阿里巴巴(中国)有限公司 数据访问处理方法、装置、设备和存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477544B1 (en) 1999-07-16 2002-11-05 Microsoft Corporation Single instance store for file systems
US7398529B2 (en) * 2001-03-09 2008-07-08 Netiq Corporation Method for managing objects created in a directory service
US7546319B1 (en) * 2003-04-28 2009-06-09 Ibrix, Inc. File system consistency checking in a distributed segmented file system
US7349906B2 (en) * 2003-07-15 2008-03-25 Hewlett-Packard Development Company, L.P. System and method having improved efficiency for distributing a file among a plurality of recipients
US8499078B2 (en) * 2003-12-24 2013-07-30 Sap Aktiengesellschaft Address generation in distributed systems using tree method
US7548928B1 (en) * 2005-08-05 2009-06-16 Google Inc. Data compression of large scale data stored in sparse tables
CN100574194C (zh) * 2006-12-22 2009-12-23 华为技术有限公司 一种设备安全管理维护的方法及装置
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
WO2008114441A1 (ja) * 2007-03-20 2008-09-25 Fujitsu Limited ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置
JP4519179B2 (ja) * 2008-02-25 2010-08-04 富士通株式会社 論理ボリューム管理プログラム、論理ボリューム管理装置、論理ボリューム管理方法、および分散ストレージシステム
CN101316274B (zh) * 2008-05-12 2010-12-01 华中科技大学 一种适用于广域网的数据容灾***
US8886796B2 (en) * 2008-10-24 2014-11-11 Microsoft Corporation Load balancing when replicating account data
US9395933B2 (en) * 2009-09-01 2016-07-19 Nec Corporation Distributed storage system, distributed storage method, and program and storage node for distributed storage
EP2534569B1 (de) 2010-02-09 2015-12-30 Google, Inc. System und verfahren zur verwaltung von objektrepliken in einem verteilten speichersystem
US8744997B2 (en) * 2010-02-09 2014-06-03 Google Inc. Pruning of blob replicas
CN101854392B (zh) * 2010-05-20 2012-11-14 清华大学 一种基于云计算环境的个人数据管理方法
WO2012040391A1 (en) 2010-09-21 2012-03-29 Georgia Tech Research Corporation Compressed distributed storage systems and methods for providing same
WO2012121316A1 (ja) * 2011-03-08 2012-09-13 日本電気株式会社 分散ストレージシステムおよび方法
US9575975B2 (en) * 2012-03-29 2017-02-21 Hitachi Data Systems Corporation Cluster-wide unique ID for object access control lists

Also Published As

Publication number Publication date
WO2013177193A2 (en) 2013-11-28
EP2852885A2 (de) 2015-04-01
CN104641344B (zh) 2017-10-27
US20130339295A1 (en) 2013-12-19
WO2013177193A8 (en) 2015-04-02
WO2013177193A3 (en) 2014-03-13
US9069835B2 (en) 2015-06-30
CN104641344A (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
DE202013012477U1 (de) Organisieren von daten in einem verteilten speichersystem
DE102019133923B4 (de) Anwendungsverwendung in einem behältermanagementsystem
DE102016103733B4 (de) Kanaleigentum in einem Veröffentlichungs-/Abonnier-System
DE112013006643B4 (de) Speichersystem und steuerungsverfahren für speichersystem
DE112011101109B4 (de) Übertragung von Map/Reduce-Daten auf der Grundlage eines Speichernetzwerkes oder eines Speichernetzwerk-Dateisystems
DE60111072T2 (de) Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten
DE202015009772U1 (de) Datenmanagementsysteme
DE19747583B4 (de) Kommunikationssystem und Verfahren
DE202014010953U1 (de) Gruppierung von Objekten in einem verteilten Datenspeichersystem basierend auf Protokollen und Platzierungsrichtlinien
DE102012223167B4 (de) Gemeinsame Nutzung von Artefakten zwischen kollaborativen Systemen
DE112012002762T5 (de) Replikationen von Datenobjekten von einem Quellserver auf einen Zielserver
DE202014010898U1 (de) Hierarchische Stückelung von Objekten in einem dezentralen Speichersystem
DE112012000282B4 (de) Anwendungswiederherstellung in einem Dateisystem
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
DE112006002531T5 (de) Anwendung virtueller Server für Lösungen mit hoher Verfügbarkeit und für Lösungen bei der Wiederherstellung nach Fehlern
DE102013200031A1 (de) Verwaltung einer globalen Weiterleitungstabelle in einem verteilten Switch
DE112019000143T5 (de) Versionierungsvalidierung für die datenübertragung zwischen heterogenen datenspeichern
DE112015001914T5 (de) Dauerhaftes Speichern und Verwalten von Anwendungsnachrichten
DE112010004140B4 (de) Dynamischer Austausch von Replikat-Datenträgern in einem Verbund
DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE202020005682U1 (de) Automatisierte erneute Abfrageversuche in einer Datenbankumgebung
CN106302640A (zh) 数据请求处理方法及装置
DE102016219854A1 (de) Computersystem und Verfahren zum dynamischen Anpassen eines software-definierten Netzwerks
DE60221156T2 (de) Verfahren und system zur verteilung der arbeitslast in einem netzwerk von rechnersystemen
DE102022108863A1 (de) Sicherung von daten für einen namensraum, der einem mandanten zugeordnet ist

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three 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

R081 Change of applicant/patentee

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

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

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

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
R071 Expiry of right