DE112019000402T5 - Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem - Google Patents

Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem Download PDF

Info

Publication number
DE112019000402T5
DE112019000402T5 DE112019000402.6T DE112019000402T DE112019000402T5 DE 112019000402 T5 DE112019000402 T5 DE 112019000402T5 DE 112019000402 T DE112019000402 T DE 112019000402T DE 112019000402 T5 DE112019000402 T5 DE 112019000402T5
Authority
DE
Germany
Prior art keywords
slot
operations
garbage collection
victim
execute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE112019000402.6T
Other languages
English (en)
Inventor
Aayush Gupta
Sangeetha Seshadri
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112019000402T5 publication Critical patent/DE112019000402T5/de
Ceased 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/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

Eine Ausführungsform stellt ein Verfahren bereit, das die Speicherung eines Schlüssel-Wert-Speichers in einem Speicher umfasst. Out-of-place-Operationen werden ausgeführt, um die chronologische Reihenfolge der Operationen beizubehalten, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein einer Speicherbereinigungstransaktion ohne einen expliziten Sekundärindex erzwungen wird.

Description

  • Technisches Gebiet
  • Die Erfindung bezieht sich im Allgemeinen auf die Verwaltung log-strukturierter Speichersysteme. Insbesondere stellt sie die Verwaltung von Ausfällen während der Speicherbereinigung („garbage collection“) bereit.
  • HINTERGRUND
  • Typische log-strukturierte Speichersysteme speichern Aufzeichnungsdaten in zeitlicher Reihenfolge in einem „Log“ („Protokoll“). Diese typischen Systeme erlauben grundlegende einfache Operationen, wie z.B. Einfügen, Aktualisieren, Löschen, Lesen. Jede Datenaktualisierung führt dazu, dass am Ende des „Logs“ ein neuer Datensatz aufgezeichnet wird. Jede Löschung führt dazu, dass ein Tombstone-Objekt am Ende des Logs eingefügt wird. Zusätzlich komprimiert ein Speicherbereinigungsverfahren („garbage collection process“; GC) im Hintergrund den Datenrückgewinnungsraum, der keine gültigen Daten enthält.
  • Ad-hoc-Löschung von Objekten führt zu einer Fragmentierung des Raums und damit zu einer schlechten Nutzung des Raums.
  • Daher besteht die Notwendigkeit, das oben genannte Problem anzugehen.
  • KURZDARSTELLUNG
  • Gemäß einem ersten Aspekt stellt die vorliegende Erfindung ein System zur chronologisch geordneten deplatzierten („Out-of-Place“)-Aktualisierung bereit, wobei das System Folgendes umfasst: ein Speichergerät, das einen Schlüssel-Wert-Speicher und Anweisungen speichert; und einen Prozessor, der so konfiguriert ist, dass er die Anweisungen ausführt, um: Deplatzierungs-Operationen („out-of-place operations“) auszuführen, die so konfiguriert sind, dass die chronologische Reihenfolge der Operationen beibehalten wird, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein einer Speicherbereinigungstransaktion ohne einen expliziten Sekundärindex erzwungen wird.
  • Gemäß einem weiteren Aspekt stellt die vorliegende Erfindung ein Verfahren zur chronologisch geordneten Out-of-Place-Aktualisierung bereit, wobei das Verfahren Folgendes umfasst: Speichern eines Schlüssel-Wert-Speichers in einem Speicher; und Ausführen von Out-of-Place-Operationen, die so konfiguriert sind, dass die chronologische Reihenfolge der Operationen beibehalten wird, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein einer Speicherbereinigungstransaktion ohne expliziten Sekundärindex erzwungen wird.
  • Ferner stellt die vorliegende Erfindung gemäß einem weiteren Aspekt ein Computerprogrammprodukt zur chronologisch geordneten, Out-of-Place-Aktualisierung bereit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium umfasst, das von einer Verarbeitungsschaltung gelesen werden kann und Anweisungen zur Ausführung durch die Verarbeitungsschaltung zur Durchführung eines Verfahrens zur Ausführung der Schritte der Erfindung speichert.
  • Gemäß einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann, und das Softwarecodeteile umfasst, wenn das Programm auf einem Computer ausgeführt wird, um die Schritte der Erfindung auszuführen.
  • Ausführungsformen beziehen sich auf chronologisch geordnete, Out-of-Place-Aktualisierungen in einem Schlüssel-Wert-Speichersystem. Eine Ausführungsform stellt ein Verfahren bereit, das die Speicherung eines Schlüssel-Wert-Speichers in einem Speicher umfasst. Out-of-Place-Operationen werden ausgeführt, um die chronologische Reihenfolge der Operationen beizubehalten, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein von Speicherbereinigungsvorgängen Transaktionsoperationen ohne einen expliziten Sekundärindex erzwungen wird.
  • Diese und andere Merkmale, Aspekte und Vorteile der vorliegenden Erfindung werden unter Bezugnahme auf die folgende Beschreibung, die beigefügten Ansprüche und die begleitenden Figuren erläutert.
  • Figurenliste
  • Ausführungsformen der vorliegenden Erfindung werden nun nur beispielhaft anhand der beigefügten Zeichnungen beschrieben, wobei:
    • 1 eine Cloud-Computing-Umgebung gemäß einer Ausführungsform zeigt;
    • 2 eine Reihe von Abstraktionsmodell-Ebenen gemäß Ausführungsformen zeigt;
    • 3 eine Netzwerkarchitektur für retrospektive Speicherauszüge in log-strukturierten Speichersystemen gemäß einer Ausführungsform zeigt;
    • 4 eine repräsentative Hardware-Umgebung zeigt, die gemäß einer Ausführungsform mit den Servern und/oder den Clienten von 1 verknüpft sein kann;
    • 5 ein Beispiel für ein Schlüssel-Wert-Speichersystem für chronologisch geordnete, nicht am Ort befindliche Aktualisierungen gemäß einer Ausführungsform zeigt;
    • 6 ein Beispiel für die Granularität von GC-Objekten („Garbage Collection-Objekten“) gemäß einer Ausführungsform zeigt;
    • 7 ein Beispiel für einen GC-Bruch der chronologischen Reihenfolge, gemäß einer Ausführungsform zeigt;
    • 8 ein Beispiel für eine chronologisch geordnete GC gemäß einer Ausführungsform zeigt;
    • 9A ein Beispiel für Slots zeigt, die einen GC-Opferslots gemäß einer Ausführungsform umfassen
    • 9B ein Beispiel für Slots zeigt, die einen GC-Zielslot gemäß einer Ausführungsform umfassen;
    • BILD 10A ein Beispiel für den Anfangszustand eines Zielslots und eines Opferslots vor der GC zeigt, gemäß einer Ausführungsform;
    • BILD 10B einen Beispielzustand eines Zielslots nach der GC zeigt, gemäß einer Ausführungsform; und
    • 11 ein Blockdiagramm für einen Prozess für chronologisch geordnete fehlplatzierte („Out-of-Place“)-Aktualisierungen in einem Schlüssel-Wert-Speichersystem gemäß einer Ausführungsform zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Beschreibungen der verschiedenen Ausführungsformen dienen der Veranschaulichung, sollen aber weder erschöpfend noch auf die offenbaren Ausführungsformen beschränkt sein. Viele Modifikationen und Variationen ergeben sich aus den üblichen Fachkenntnissen, ohne vom Umfang der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Prinzipien der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber den auf dem Markt befindlichen Technologien bestmöglich zu erklären oder um es anderen Personen mit üblichen Fachkenntnissen zu ermöglichen, die hier offengelegten Ausführungsformen zu verstehen.
  • Es wird vorausgesetzt, dass, obwohl diese Offenlegung eine detaillierte Beschreibung des Cloud-Computing umfasst, die Umsetzung der hier dargelegten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr können Ausführungsformen der vorliegenden Erfindung in Verbindung mit jeder anderen heute bekannten oder später entwickelten Art von Computerumgebung implementiert werden.
  • Eine oder mehrere Ausführungsformen beziehen sich auf chronologisch geordnete, deplazierte („Out-of-Place“)-Aktualisierungen in einem Schlüssel-Wert-Speichersystem. Eine Ausführungsform stellt ein Verfahren bereit, das die Speicherung eines Schlüssel-Wert-Speichers in einem Speicher umfasst. Out-of-place-Operationen werden ausgeführt, um die chronologische Reihenfolge der Operationen beizubehalten, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein von GC-Transaktionsoperationen ohne expliziten Sekundärindex erzwungen wird.
  • Cloud Computing ist ein Modell der Dienstbereitstellung, das einen bequemen, bedarfsgerechten Netzwerkzugang zu einem gemeinsamen Pool konfigurierbarer Computing-Ressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Speicher, Speicherung, Anwendungen, virtuelle Maschinen (VMs) und Dienste) ermöglicht, die mit minimalem Verwaltungsaufwand oder Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Merkmale, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle umfassen.
  • Die Merkmale sind wie folgt:
    • On-Demand-Selbstbedienung („on-demand self-service“): Ein Cloud-Consumer kann einseitig Rechenkapazitäten, wie z.B. Serverzeit und Netzwerkspeicher, je nach Bedarf und automatisch bereitstellen, ohne dass eine menschliche Interaktion mit dem Dienstanbieter erforderlich ist.
    • Breiter Netzwerkzugang („broad network access“): Die Funktionen sind über ein Netzwerk verfügbar und werden über Standardmechanismen zugänglich gemacht, die die Nutzung durch heterogene, Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) fördern.
    • Ressourcen-Pooling: Die Rechenressourcen des Anbieters werden in einem Multi-Tenant-Modell zusammengelegt, um mehrere Verbraucher zu bedienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch zugewiesen und je nach Bedarf neu zugewiesen werden. Es besteht ein Gefühl der Standortunabhängigkeit, da der Verbraucher im Allgemeinen keine Kontrolle über den genauen Standort der bereitgestellten Ressourcen hat oder darüber Bescheid weiß, aber möglicherweise in der Lage ist, den Standort auf einer höheren Abstraktionsebene (z.B. Land, Staat oder Rechenzentrum) anzugeben.
    • Schnelle Elastizität („rapid elasticity“): Fähigkeiten können schnell und dynamisch und in einigen Fällen automatisch bereitgestellt werden, so dass sie schnell aus- und schnell wieder freigesetzt werden können, um schnell wieder einzusteigen. Für den Verbraucher erscheinen die für die Bereitstellung verfügbaren Fähigkeiten oft unbegrenzt und können jederzeit in beliebiger Menge erworben werden.
    • Gemessener Dienst („measured service“): Cloud-Systeme steuern und optimieren die Ressourcennutzung automatisch, indem sie auf einer dem Typ des Dienstes angemessenen Abstraktionsebene (z. B. Speicherung, Verarbeitung, Bandbreite und aktive Verbraucherkonten) eine Messfunktion nutzen. Die Nutzung von Ressourcen kann überwacht, kontrolliert und berichtet werden, wodurch sowohl für den Anbieter als auch für den Verbraucher des genutzten Dienstes Transparenz bereitgestellt wird.
  • Die Servicemodelle sind wie folgt:
    • Software as a Service (SaaS): Die Fähigkeit, die dem Verbraucher zur Verfügung gestellt wird, ist die Fähigkeit, die Anwendungen des Anbieters zu nutzen, die auf einer Cloud-Infrastruktur laufen. Die Anwendungen sind von verschiedenen Client-Geräten über eine Thin-Client-Oberfläche, wie z.B. einem Webbrowser, zugänglich (z.B. webbasierte E-Mail). Der Verbraucher verwaltet oder kontrolliert nicht die zugrundeliegende Cloud-Infrastruktur, einschließlich Netzwerk, Server, Betriebssysteme, Speicher oder sogar einzelne Anwendungsmöglichkeiten, mit der möglichen Ausnahme von begrenzten verbraucherspezifischen Anwendungskonfigurationseinstellungen.
    • Platform as a Service (PaaS): Die Fähigkeit, die dem Verbraucher zur Verfügung gestellt wird, ist die Fähigkeit, auf der Cloud-Infrastruktur vom Verbraucher erstellte oder erworbene Anwendungen einzusetzen, die mit Hilfe von Programmiersprachen und Werkzeugen erstellt wurden, die vom Anbieter unterstützt werden. Der Verbraucher verwaltet oder kontrolliert nicht die zugrundeliegende Cloud-Infrastruktur einschließlich Netzwerke, Server, Betriebssysteme oder Speicher, sondern hat die Kontrolle über die bereitgestellten Anwendungen und möglicherweise die Konfigurationen der Anwendungs-Hosting-Umgebung.
    • Infrastructure as a Service (laaS): Die Fähigkeit, die dem Verbraucher zur Verfügung gestellt wird, ist die Fähigkeit, Verarbeitung, Speicherung, Netzwerke und andere grundlegende Computerressourcen bereitzustellen, wobei der Verbraucher in der Lage ist, beliebige Software einzusetzen und auszuführen, die Betriebssysteme und Anwendungen umfassen kann. Der Verbraucher verwaltet oder kontrolliert nicht die zugrundeliegende Cloud-Infrastruktur, sondern hat die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Einsatzmodelle sind wie folgt:
    • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer dritten Partei verwaltet werden und sowohl vor Ort als auch außerhalb des Firmengeländes bestehen.
    • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Anliegen hat (z. B. Mission, Sicherheitsanforderungen, Richtlinien und Konformitätserwägungen). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und sowohl vor Ort als auch außerhalb des Firmengeländes bestehen.
    • Public Cloud: Die Cloud-Infrastruktur wird der Allgemeinheit oder einem großen Industriekonzern zur Verfügung gestellt und befindet sich im Besitz einer Organisation, die Cloud-Dienste verkauft.
    • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, gemeinschaftlich oder öffentlich), die zwar einzigartige Einheiten bleiben, aber durch standardisierte oder proprietäre Technologie miteinander verbunden sind, die die Portabilität von Daten und Anwendungen ermöglicht (z.B. Cloud Bursting zum Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist eine dienstorientierte Umgebung mit Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Das Herzstück von Cloud Computing ist eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten umfasst.
  • Bezugnehmend auf 1 wird nun eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, umfasst die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Rechengeräte, die von Cloud-Konsumenten verwendet werden, wie z.B. der Personal Digital Assistant (PDA) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Automobil-Computersystem 54N kommunizieren können. Knoten 10 können miteinander kommunizieren. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert (nicht dargestellt) sein, wie z.B. private, gemeinschaftlich, öffentliche oder hybride Clouds, wie oben beschrieben, oder eine Kombination davon. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Konsument keine Ressourcen auf einem lokalen Rechengerät verwalten muss. Es wird davon ausgegangen, dass die in 2 gezeigten Typen von Rechengeräten 54A-N nur veranschaulichen sollen und dass die Rechenknoten 10 und die Cloud-Computing-Umgebung 50 mit jeder Art von computerisiertem Gerät über jede Art von Netzwerk und/oder netzwerkadressierbarer Verbindung (z.B. über einen Web-Browser) kommunizieren können.
  • Unter Bezugnahme auf 2 wird eine Reihe von funktionalen Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 50 (1) zur Verfügung gestellt werden. Es sollte im Voraus verstanden werden, dass die in 2 gezeigten Komponenten, Schichten und Funktionen nur veranschaulichen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen zur Verfügung gestellt:
  • Die Hardware- und Software-Schicht 60 umfasst Hardware- und Software-Komponenten. Beispiele für Hardwarekomponenten umfassen: Mainframes 61; auf der RISC-Architektur (RISC steht für „Reduced Instruction Set Computer“, was einem „Rechner mit reduziertem Befehlssatz“ entspricht) basierende Server 62; Server 63; Blade-Server 64; Speichergeräte 65; und Netzwerke und Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Softwarekomponenten die Software 67 für Netzwerkanwendungsserver und 68 für Datenbanken.
  • Die Virtualisierungsschicht 70 bietet eine Abstraktionsschicht, von der folgende Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtueller privater Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die unten beschriebenen Funktionen bereitstellen. Ressourcen-Bereitstellung 81 stellt eine dynamische Beschaffung von Computer-Ressourcen und anderen Ressourcen bereit, die zur Ausführung von Aufgaben innerhalb der Cloud-Computing-Umgebung genutzt werden. Die Messung und Preisgestaltung 82 stellt die Kostenverfolgung bei der Nutzung von Ressourcen innerhalb der Cloud-Computing-Umgebung und die Abrechnung oder Fakturierung des Verbrauchs dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen umfassen. Sicherheit stellt die Identitätsprüfung für Cloud-Konsumenten und Aufgaben sowie den Schutz von Daten und anderen Ressourcen bereit. Das Benutzerportal 83 stellt Verbrauchern und Systemadministratoren den Zugang zur Cloud-Computing-Umgebung zur Verfügung. Service Level Management 84 stellt die Zuweisung und Verwaltung von Cloud Computing-Ressourcen bereit, so dass die erforderlichen Service Levels erfüllt werden. Planung und Erfüllung von Service Level Agreement (SLA) 85 stellt die Vorbereitung und Beschaffung von Cloud-Computing-Ressourcen bereit, für die ein zukünftiger Bedarf in Übereinstimmung mit einem SLA erwartet wird.
  • Die Arbeits-Lasten-Schicht 90 stellt Beispiele für Funktionen bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Beispiele für Arbeitslasten und Funktionen, die von dieser Schicht zur Verfügung gestellt werden können, umfassen: Kartierung und Navigation 91; Software-Entwicklung und Lifecycle-Management 92; Durchführung von Schulungen in virtuellen Klassenzimmern 93; Datenanalyse-Verarbeitung 94; Transaktionsverarbeitung 95; und chronologisch geordnete, fehlplatzierte Aktualisierungen in einem Schlüssel-Wert-Speichersystem-Verarbeitung 96. Wie oben erwähnt, sind alle vorstehenden Beispiele, die in Bezug auf 2 beschrieben wurden, nur veranschaulichend, und die Erfindung ist nicht auf diese Beispiele beschränkt.
  • Es wird davon ausgegangen, dass alle Funktionen einer oder mehrerer Ausführungsformen, wie sie hier beschrieben sind, typischerweise durch das Verarbeitungssystem 300 (3) oder die autonome Cloud-Umgebung 410 (4) ausgeführt werden können, die als Hardware-Prozessoren und mit Modulen von Programmcode greifbar verkörpert werden können. Bei Nicht-Echtzeit-Prozessen muss dies jedoch nicht der Fall sein. Vielmehr könnte für die Nicht-Echtzeit-Verarbeitung die hier beschriebene Funktionalität durch jede der in 2 dargestellten Schichten 60, 70, 80 und 90 durchgeführt/implementiert und/oder aktiviert werden.
  • Es wird erneut darauf hingewiesen, dass diese Offenlegung zwar eine detaillierte Beschreibung des Cloud-Computing umfasst, die Umsetzung der hier dargelegten Lehren jedoch nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr können die Ausführungsformen der vorliegenden Erfindung mit jeder Art von heute bekannten oder später entwickelten Clustered-Computing-Umgebung implementiert werden. 3 veranschaulicht eine Netzwerkarchitektur 300 gemäß einer Ausführungsform. Wie in 3 dargestellt, wird eine Vielzahl von entfernten Netzwerken 302 bereitgestellt, einschließlich eines ersten entfernten Netzwerks 304 und eines zweiten entfernten Netzwerks 306. Ein Gateway 301 kann zwischen den entfernten Netzwerken 302 und einem nahen Netzwerk 308 gekoppelt werden. Im Kontext der gegenwärtigen Netzarchitektur 300 können die Netze 304, 306 jeweils jede beliebige Form bilden, einschließlich, aber nicht beschränkt auf ein LAN, ein WAN, wie z.B. das Internet, das öffentliche Fernsprechnetz (PSTN), das interne Telefonnetz usw.
  • Im Einsatz dient das Gateway 301 als Zugangspunkt von den entfernten Netzwerken 302 zum nahen Netzwerk 308. Als solches kann das Netzübergang 301 als Router fungieren, der in der Lage ist, ein bestimmtes Datenpaket, das am Netzübergang 301 ankommt, zu leiten, und als Switch, der den tatsächlichen Weg in das und aus dem Netzübergang 301 für ein bestimmtes Paket bereitstellt. Ferner umfasst ist mindestens einen Datenserver 314, der mit dem nahen Netzwerk 308 gekoppelt ist, auf das von den entfernten Netzwerken 302 über das Gateway 301 zugegriffen werden kann. Es ist zu beachten, dass der (die) Datenserver 314 jede Art von Rechengerät/Groupware umfassen kann (können). An jeden Datenserver 314 ist eine Vielzahl von Benutzergeräten 316 gekoppelt. Solche Benutzergeräte 316 können einen Desktop-Computer, einen Laptop-Computer, einen Handheld-Computer, einen Drucker und/oder jeden anderen Typ von Logik enthaltenden Geräten umfassen. Es ist zu beachten, dass ein Benutzergerät 311 in einigen Ausführungsformen auch direkt an eines der Netzwerke gekoppelt sein kann.
  • Ein Peripheriegerät 320 oder eine Reihe von Peripheriegeräten 320, z.B. Faxgeräte, Drucker, Scanner, Festplattenlaufwerke, vernetzte und/oder lokale Speichereinheiten oder -systeme usw., kann mit einem oder mehreren der Netzwerke 304, 306, 308 gekoppelt werden. Es ist zu beachten, dass Datenbanken und/oder zusätzliche Komponenten mit jedem Typ von Netzwerkelementen, die mit den Netzwerken 304, 306, 308 gekoppelt sind, genutzt oder in diese integriert werden können. Im Zusammenhang mit der vorliegenden Beschreibung kann sich ein Netzelement auf jede beliebige Komponente eines Netzes beziehen.
  • Nach einigen Herangehensweisen können die hier beschriebenen Verfahren und Systeme mit und/oder auf virtuellen Systemen und/oder Systemen implementiert werden, die ein oder mehrere andere Systeme emulieren, wie z. B. ein UNIX-System, das eine IBM z/OS-Umgebung emuliert, ein UNIX-System, das virtuell eine MICROSOFT WINDOWS-Umgebung hostet, ein MICROSOFT WINDOWS-System, das eine IBM z/OS-Umgebung emuliert, usw. Diese Virtualisierung und/oder Emulation kann durch die Verwendung von VMWARE-Software in einigen Ausführungsformen implementiert werden.
  • 4 zeigt eine repräsentative Hardware-System-400-Umgebung, die gemäß einer Ausführungsform mit einem Benutzergerät 416 und/oder dem Server 314 aus 3 verknüpft ist. In einem Beispiel umfasst eine Hardware-Konfiguration eine Arbeitsstation mit einer Zentraleinheit („central processing unit“; CPU) 410, wie z.B. einem Mikroprozessor, und eine Anzahl anderer Einheiten, die über einen Systembus 412 miteinander verbunden sind. Die in 4 dargestellte Arbeitsstation kann einen Direktzugriffsspeicher (RAM) 414, einen Festwertspeicher (ROM) 416, einen E/A-Adapter 418 zum Anschluss von Peripheriegeräten wie Plattenspeichereinheiten 420 an den Bus 412, einen Benutzerschnittstellenadapter 422 zum Anschluss einer Tastatur 424, einer Maus 426, eines Lautsprechers 428, eines Mikrofons 432 und/oder anderer Benutzerschnittstellengeräte wie eines Berührungsbildschirms, einer Digitalkamera (nicht abgebildet) usw. umfassen, an den Bus 412, einen Kommunikationsadapter 434 für den Anschluss der Arbeitsstation an ein Kommunikationsnetz 435 (z.B. ein Datenverarbeitungsnetz) und einen Bildschirmadapter 436 für den Anschluss des Busses 412 an ein Anzeigegerät 438.
  • In einem Beispiel kann sich auf der Arbeitsstation ein Betriebssystem wie das MICROSOFT WINDOWS Operating System (OS), ein MAC OS, ein UNIX OS usw. befinden. In einer Ausführungsform verwendet das System 400 ein POSIX®-basiertes Dateisystem. Es wird geschätzt, dass andere Beispiele auch auf anderen Plattformen und Betriebssystemen als den genannten implementiert werden können. Solche anderen Beispiele können Betriebssysteme umfassen, die mit der Sprache Java®, XML, C und/oder C++ oder anderen Programmiersprachen geschrieben wurden, zusammen mit einer objektorientierten Programmiermethodik. Die objektorientierte Programmierung (OOP), die zunehmend zur Entwicklung komplexer Anwendungen eingesetzt wird, kann ebenfalls verwendet werden. Microsoft und Windows sind Marken der Microsoft Corporation in den Vereinigten Staaten, in anderen Ländern oder in beiden. IBM und z/OS sind Marken der International Business Machines Corporation, die in vielen Gerichtsbarkeiten weltweit eingetragen sind. UNIX ist eine eingetragene Marke von The Open Group in den Vereinigten Staaten und anderen Ländern. Java und alle Java-basierten Marken und Logos sind Marken oder eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen. VMware ist eine eingetragene Marke oder Marken von VMware, Inc. oder ihren Tochtergesellschaften in den Vereinigten Staaten und/oder anderen Gerichtsbarkeiten.
  • 5 veranschaulicht ein Beispiel des Schlüssel-Wert-Speichersystems 500 für chronologisch geordnete, Out-of-Place-Aktualisierungen gemäß einer Ausführungsform. Der Begriff Speicherbereinigung („garbage collection“, GC) bezieht sich auf die Rückgewinnung von „Plattenplatz“ („disk space“), der durch veraltete Einträge im Log belegt ist. Wenn zum Beispiel ein Datensatz aufgezeichnet wird, wird ein Eintrag am Ende des Logs hinzugefügt. Wenn derselbe Datensatz gelöscht wird, wird ein Tombstone-Eintrag am Ende des Logs hinzugefügt. Der Tombstone-Eintrag bezieht sich auf den ursprünglichen Speicherort der Daten auf der Platte, wie er durch das Einfügen entstanden ist. Der durch den ursprünglich eingefügten Datensatz belegte Speicherplatz kann als Speicherbereinigung bereitgestellt werden (vorausgesetzt, das System stellt keine älteren Versionen bereit). Veraltete Daten können das Ergebnis von Datensätzen sein, die gelöscht oder aktualisiert wurden. Aktualisierungen führen zu veralteten Daten, da ältere Versionen der Daten, die im Log verwaltet werden, nicht mehr benötigt werden. Es ist zu beachten, dass in einem Log-strukturierten Speicher jede Einfüge-, Aktualisierungs- oder Löschoperation dazu führt, dass ein Datensatz am Ende des Logs eingefügt wird.
  • Bei logstrukturierten Speichersystemen für kleine Objekte (z.B. einem logstrukturierten Schlüssel-Wert-Speicher) werden Aktualisierungsoperationen wie neue Schreibvorgänge (nur Anhängen) behandelt. Anwendungsprogramm-Schnittstellen („application programming interfaces“; APIs) beinhalten: PUT, GET und DELETE. Die PUT-API gibt die Adresse an den Aufrufer zurück. Die DELETE-API führt zum Einfügen eines Grabsteins („tombstone“). Der durch gelöschte Objekte belegte Platz wird durch den GC-Prozess zurückgewonnen. Die Objektgröße ist klein (typischerweise 10s oder 100s Bytes). Die GC-Granularität ist groß (MBs oder GBs).
  • In System 500 führt ein Objekt-Indizierungs-Dienst („object indexing service“; OIS) 510 PUT-, GET- und DELETE-Operationen aus. In einer Ausführungsform lautet das Format der PUT-Operation: PUT (Schlüssel, Wert, <vorherige Adresse>), die Adresse zurückgibt. In einer Ausführungsform ist das Format der GET-Operation: GET (Adresse), die den Schlüssel-Wert-Datensatz zurückgibt. In einer Ausführungsform ist das Format der DELETE-Operation: DELETE (Adresse). Der Ausgabe- oder Rückgabewert von OIS 510 wird in den Objekt-Speicher-Dienst („object storage service“; OSS) 520 eingegeben, der für einen GC-Prozess 530 verwendet wird. In einer Ausführungsform können der OIS 510 und der OSS 520 zusammengeführt werden oder nicht. OIS 510 und OSS 520 können, auch wenn sie an einem anderen Ort angeordnet sind, Teil verschiedener Prozesse sein. In einer Beispiel-Ausführungsform ist ein Schlüssel der OSS 520 ausgesetzt.
  • In einer Ausführungsform wird der GC-Prozess 530 als Transaktion ausgeführt. Die Transaktionsverarbeitung teilt die Informationsverarbeitung in einzelne, unteilbare Prozesse auf, die als Transaktionen bezeichnet werden. Jede Transaktion muss als vollständige Einheit gelingen oder scheitern und kann niemals nur teilweise vollständig sein.
  • 6 veranschaulicht ein Beispiel 600 der Granularität von GC-Objekten gemäß einer Ausführungsform. Ad-hoc-Löschung führt zu einer Fragmentierung des Raumes und schlechter Nutzung. Granularität des GC-Prozesses 530 (5) » Objektgranularität. Der GC-Prozess 530 eines Slots erfordert die Verlagerung von Live-Objekten.
  • Um auf 5 zurückzukommen, behält das System 500 die chronologische Reihenfolge der Operationen wie folgt bei. In einer Ausführungsform stellt die chronologische Reihenfolge die Möglichkeit bereit, den Schlüssel-Wert-Speicher in der Reihenfolge zu iterieren, in der die Schlüssel in den Speicher eingefügt/aktualisiert werden, ohne einen expliziten Sekundärindex. Da der Speicher nicht in der richtigen Reihenfolge aktualisiert wird, können alle Schreib-/Aktualisierungsvorgänge in der chronologischen Reihenfolge ausgeführt werden. Die chronologische Reihenfolge der Daten ist wichtig, um Funktionen wie den „Change Capture Feed“ effizient zu unterstützen. Zum Beispiel zur Unterstützung von Abfragen wie „Liste aller gültigen Änderungen seit“. Eine solche Abfrage sollte nur gültige (d.h. nicht gelöschte Datensätze) auflisten, sie sollte sie aber in chronologischer Reihenfolge aufzeichnen. Die Beibehaltung der chronologischen Reihenfolge ist auch für die Fehlerwiederherstellung nützlich, wenn der reine Append-Only-Datenspeicher als Log verwendet wird. Es ist schwierig, die chronologische Reihenfolge beizubehalten, wenn Lösch-/Aktualisierungsvorgänge unterstützt und der GC-Prozess 530 ausgeführt wird, um gültige Datensätze aufzuzeichnen. In einem Beispiel besteht ein Problem darin, dass die herkömmliche GC-Verarbeitung von ungültigen Schlüssel-Wert-Paaren die Daten neu ordnet und die chronologische Reihenfolge aufbricht. In einer Ausführungsform stellt System 500 einen Mechanismus bereit, um die chronologische Reihenfolge der Schlüssel bei Vorhandensein von GC-Prozess 530 beizubehalten, ohne einen Sekundärindex beizubehalten.
  • In einer Ausführungsform stellt das System 500 eine chronologische Ordnung ohne Sekundärindex bereit, indem es Folgendes implementiert. Das System 500 führt Schreib-, Aktualisierungs- und Löschvorgänge in der Reihenfolge aus, in der die Operationen von der oberen Schicht ausgegeben werden. In einer Ausführungsform behält das System 500 diese Informationen implizit bei, indem es die Operationen in einer logisch ansteigenden Reihenfolge auf der Speicherschicht ausführt (z.B. in einer log-strukturierten Reihenfolge). Typische GC-Prozesse brechen diese implizite Ordnung.
  • 7 veranschaulicht ein Beispiel 700 für einen GC-Bruch in chronologischer Reihenfolge gemäß einer Ausführungsform. Wie gezeigt, beinhaltet das Beispiel 700 den Index 710, auf dem Plattenlayout 720 (zeigt die Log-Position), auf dem Plattenlayout 730 mit markierten Löchern und die Log-Position 740 nach einer chronologisch nicht geordneten GC. Die „out-of-order“-GC „ beinhaltet eine Speicherbereinigung im ersten Slot (0-4) und das Schreiben des gültigen Inhalts an Position 1 nach Position 11 führt zu einer nicht chronologischen Ordnung. Dies führt dazu, dass die Log-Position 740 die Positionen 10, 11 und 12 mit den Schlüsseln 5, 6 und 1 (in nicht chronologischer Reihenfolge) hat.
  • 8 veranschaulicht ein Beispiel 800 einer chronologisch geordneten („in-order“) GC, gemäß einer Ausführungsform. Wie gezeigt, zeigt die Log-Position 840 unter Verwendung des Systems 500 (5) nach dem Prozess der chronologisch geordneten GC die Ergebnisse für die Log-Positionen 0,1 und 2 einschließlich der Reihenfolge der Schlüssel 1, 5 und 6. Die geordnete GC beinhaltet die Speicherbereinigung des ersten Slots (0-4) und das Schreiben des gültigen Inhalts an Position 1, um die Reihenfolge beizubehalten. Die interne Reihenfolge beinhaltet das Beibehalten der relativen Reihenfolge der aus dem Opfer-Slot kopierten Schlüssel wie vor der GC. Die externe Reihenfolge beinhaltet das Beibehalten der relativen Reihenfolge der vom Opfer-Slot kopierten Schlüssel im Vergleich zum Rest der Schlüssel in anderen Slots wie vor der GC.
  • 9A veranschaulicht ein Beispiel 900 von Slots einschließlich eines GC-Opferslots 930 (Slot 2), gemäß einer Ausführungsform. Das Beispiel 900 beinhaltet Slot 0 910, Slot 1 920 und Slot 2 930, welches der GC-Opferslot ist. 9B zeigt Beispiel 900 einschließlich eines GC-Zielslots (Slot 51 940), gemäß einer Ausführungsform. In diesem Beispiel 900 wird das GC-Opfer (Slot 2 930), wobei die Live-Daten in den GC-Zielslot (Slot 51 940) verschoben werden. In der Herangehensweise, die in Beispiel 900 gezeigt wird, hat ein Tombstone-Eintrag das Format von: <TOMBSTONE, Schlüssel, vorherige Adressen Die vorherige Adresse bezieht sich auf die letzte gültige Adresse für den Schlüssel. Ein Datensatz hat das Format: <TOMBSTONE, Schlüssel, vorherige Adresse >: „Adresse x“: <DATA, Schlüssel, Wert, vorherige Adresse („Adresse x-n“)>, wobei x und n positive ganze Zahlen sind. Wenn ein Datensatz verschoben wird, werden folgende neue Datensätze aufgezeichnet: <DATA, Schlüssel, Wert, „Adresse x“>, <TOMBONE, Schlüssel, „Adresse x-n“ >.
  • 10A veranschaulicht ein Beispiel-Anfangszustand 1000 eines Zielslots (Slot 51 1030) und eines Opferslots (Slot 3 1040) vor der GC, gemäß einer Ausführungsform. Das Beispiel 1000 zeigt Slot 1 1020, Slot 51 1030 (Zielslot), Slot 3 1040 (Opferslots) und den Schlüsselwertindex 1010. Ebenfalls gezeigt wird ein Rückwärtszeiger („back-pointer“) 1050, der von Slot 3 1040 Position 1 (K8) zu Slot 1 1020 Position 4 (k8) zeigt. 10B veranschaulicht das Beispiel 1000 Zustand des Zielslots (Slot 51 1030) nach GC, gemäß einer Ausführungsform. Wie gezeigt, wird der Schlüsselwertindex 1010 in den Schlüsselwertindex 1015 geändert, was die Änderung von K8, K9 und K10 in Slot 51:6, Slot 51:8 bzw. Slot 51:9 zeigt. Slot 51 1030 beinhaltet jetzt den Zielslot an Position 7 (K8), der auf den Opferslot zeigt (Slot 3 1040, der jetzt nicht mehr existiert; das ist dasselbe für die Positionen 7, 8 und 9). Zusätzlich ist nach einem GC-Versagen (z.B. unvollständige Transaktion) eine Bereinigung erforderlich. Der Rückwärtszeiger bzw. Back-Pointer (zeigt auf die vorangehende Adresse) 1055 zeigt von Position 7 von Slot 51 1030 auf Position 4 von Slot 1 1020.
  • In einer Ausführungsform beinhaltet die geordnete chronologische GC-Verarbeitung Folgendes. (1) Das System 500 (5) wählt einen Opferslots aus (z.B. Slot 3 1040). In einer Ausführungsform basiert die Auswahl eines Opferslots auf Grundlagen der „Kosten-Nutzen-Analyse“ des Systems (d.h. Verarbeitungszeit, Bandbreite, Speichernutzung usw.), der sequentiellen Slot-Auswahl usw. Als nächstes (2) schätzt das System 500 die Menge der Live-Daten im Opferslot. (3) Anschließend werden der/die Zielslot(s) (z.B. Slot 51 1030) identifiziert. Wenn ein früherer Slot freie Kapazität hat, wird der Zielslot als der frühere Slot des Opferslots gekennzeichnet. Andernfalls, wenn mehr valider Inhalt kopiert werden muss, wählt das System 500 einen freien Slot als Zielslot aus (nächste logische Slot-Kennung (ID) zuweisen) und fügt ihn vor dem Opfer-Slot in die Slot-Kette ein. (4) Das System 500 zeichnet dann den Beginn der GC-Transaktion im Wiederherstellungs-Log auf. (5) Der gültige Inhalt wird dann vom Opferslot in den Zielslot kopiert. Dies beinhaltet das Platzieren eines Tombstone-Eintrags, wenn es sich bei dem kopierten Datensatz um eine Aktualisierung handelt (die erforderlich ist, damit der ursprüngliche Eintrag ungültig bleibt und nicht angezeigt wird), wobei der Tombstone-Eintrag auf die Stelle im Opferslot zeigt, auf die der Aktualisierungs-Back-Pointer zeigt. Der Back-Pointer für Einträge im GC-Zielslot sollte auf den Opferslot zeigen. Der gültige Inhalt umfasst „Live-Datensätze“ und „Live-Tombstone-Einträge“. (6) Als nächstes aktualisiert das System 500 den In-Memory-Index (z.B. einen b+ baumbasierten Index), um die neue Position des Schlüssels im Zielslot aufzuzeichnen. (7) Wenn mehr gültiger Inhalt kopiert werden muss, wählt das System 500 einen freien Slot aus und fügt ihn vor dem Opferslot in die Slotkette ein und geht zurück zu (3). (8) Das System 500 zeichnet das Ende der GC-Transaktion im Wiederherstellungs-Log auf.
  • Eine oder mehrere Ausführungsformen stellen eine chronologische Ordnung der Daten bereit, indem sie ausdrücklich sicherstellen, dass ein Datenmüll-Sammler („garbage collector“) die relative Position der Daten nicht neu ordnet. Daher speichert das System 500 die Daten in chronologischer Reihenfolge ohne Neuordnung während der GC. Eine oder mehrere Ausführungsformen haben gegenüber herkömmlichen Systemen den Vorteil, dass keine Sekundärindizierung erforderlich ist und dass die GC nicht ausgeschaltet werden muss, was die Effizienz der verfügbaren Speicherkapazität verbessert.
  • 11 veranschaulicht ein Blockdiagramm für einen Prozess 1100 für chronologisch geordnete Out-of-Place-Aktualisierungen in einem Schlüssel-Wert-Speichersystem gemäß einer Ausführungsform. In einer Ausführungsform beinhaltet Block 1110 in Prozess 1100 die Speicherung eines Schlüssel-Wert-Speichers in einem Speicher. Out-of-place-Operationen werden von einem Prozessor ausgeführt, um die chronologische Reihenfolge der Operationen beizubehalten, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein von GC-Transaktionsoperationen ohne einen expliziten Sekundärindex erzwungen wird.
  • In einer Ausführungsform umfassen in Prozess 1100 die Out-of-Place-Operationen Aktualisierungs-, Lösch- und Einfügeoperationen. In einer Ausführungsform kann Prozess 1100 ferner das Ausführen einer GC-Transaktion beinhalten, um die chronologische Reihenfolge der Operationen beizubehalten, indem die relative Reihenfolge der aus einem Opferslot kopierten Schlüssel beibehalten wird wie in mindestens einem Zielslot vor der GC- Transaktion.
  • In einer Ausführungsform kann Prozess 1100 das Ausführen einer GC-Transaktion beinhalten, um die gleiche relative Reihenfolge der aus einem Opferslots kopierten Schlüssel im Vergleich zu den Schlüsseln in anderen Slots vor der GC-Transaktionsverarbeitung beizubehalten. In einer Ausführungsform kann Prozess 1100 ferner die Schätzung der Menge an Live-Daten in einem Opferslot, das Kennzeichnen mindestens eines Zielslots, das Aufzeichnen des Beginns einer GC-Transaktion in einem Wiederherstellungs-Log, das Kopieren eines validen Inhalts aus dem Opferslot in den mindestens einen Zielslot, das Platzieren eines Tombstone-Eintrags, falls es sich bei einem kopierten Datensatz um eine Aktualisierung handelt, und das Aktualisieren eines speicherinternen Indexes zur Aufzeichnung einer neuen Position eines Schlüssels im Zielslot beinhalten. In einer Ausführungsform zeigt in Prozess 1100 der Tombstone auf die Stelle im Opferslot, auf die ein Rückwärtszeiger für Aktualisierungen zeigt, ein Rückwärtszeiger für Einträge im Zielslot zeigt auf den Opferslot, und valider Inhalt umfasst Live-Datensätze und Live-Tombstones.
  • Gemäß einer Ausführungsform kann Prozess 1100 ferner das Aufzeichnen eines Endes der GC-Transaktion im Wiederherstellungs-Log beinhalten.
  • Wie von einem Fachkundigen geschätzt wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführung, einer vollständigen Software-Ausführung (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert und hier allgemein als „Schaltkreis“, „Modul“ oder „System“ bezeichnet werden kann. Darüber hinaus können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts bilden, das in einem oder mehreren computerlesbaren Datenträgern mit darauf enthaltenem computerlesbaren Programmcode enthalten ist.
  • Jede Kombination von einem oder mehrere computerlesbaren Medien kann genutzt werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z.B., aber nicht ausschließlich, ein elektronisches, magnetisches, optisches, elektromagnetisches, infrarot- oder Halbleitersystem, eine Vorrichtung oder ein Gerät oder jede geeignete Kombination der vorgenannten sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würden Folgendes umfassen: eine elektrische Verbindung mit einem oder mehreren Drähten, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), eine optische Faser, einen tragbaren Compact-Disc-Schreib-Lese-Speicher (CD-ROM), ein optisches Rechengerät, ein magnetisches Speichergerät oder jede geeignete Kombination des Vorgenannten. Im Zusammenhang mit diesem Dokument kann ein computerlesbares Speichermedium jedes greifbare Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, einer Vorrichtung oder einem Gerät enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein verbreitertes Datensignal mit darin verbreiteter computerlesbarer umfassen, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches verbreitertes Signal kann eine Vielzahl von Formen annehmen, einschließlich, aber nicht beschränkt auf elektromagnetische, optische oder jede geeignete Kombination davon. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, einer Vorrichtung oder einem Gerät kommunizieren, verbreiten oder transportieren kann.
  • Programmcode, der sich auf einem computerlesbaren Medium befindet, kann mit jedem geeigneten Medium übertragen werden, einschließlich, aber nicht beschränkt auf drahtlose, drahtgebundene, optische Faserkabel, RF usw. oder jede geeignete Kombination der vorgenannten.
  • Computerprogrammcode zur Berechnung von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++o.ä. und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem Remote-Computer oder vollständig auf dem Remote-Computer oder Server ausgeführt werden. Im letzteren Fall kann der Remote-Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzwerks (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet mit Hilfe eines Internet Service Providers).
  • Im Folgenden werden Aspekte der vorliegenden Erfindung anhand von Flussdiagrammdarstellungen und/oder Blockdiagrammen von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Flussdiagrammabbildungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines Allzweck-Computers, Spezial-Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Erzeugung einer Maschine zur Verfügung bereitgestellt werden, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der im Flussdiagramm- und/oder Blockdiagramm-Block oder in den Blockdiagrammen spezifizierten Funktionen/Aktionen schaffen.
  • Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Vorrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, so dass das computerlesbare Speichermedium, in dem Anweisungen gespeichert sind, einen Herstellungsgegenstand umfasst, der Anweisungen umfasst, die Aspekte der im Flussdiagramm und/oder im Blockdiagrammblock oder in den Blockdiagrammblöcken spezifizierten Funktion/Handlung implementieren.
  • Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder ein anderes Gerät geladen werden, um eine Reihe von Betriebsanweisungen auf dem Computer, einer anderen programmierbaren Vorrichtung oder einem anderen Gerät auszuführen, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einem anderen Gerät ausgeführt werden, die Funktionen/Handlungen implementieren, die in dem Flussdiagramm und/oder dem Block oder den Blöcken des Blockdiagramms spezifiziert sind.
  • Das Flussdiagramm und die Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Flussdiagramm oder den Blockdiagrammen ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der spezifizierten logischen Funktion(en) umfasst. In einigen alternativen Implementierungen können die im Block vermerkten Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten. So können z.B. zwei nacheinander dargestellte Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach der betreffenden Funktionalität. Es ist zu beachten, dass jeder Block der Blockdiagramme und/oder der veranschaulichenden Flussdiagrammdarstellung sowie Kombinationen von Blöcken in den Blockdiagrammen und/oder der veranschaulichenden Flussdiagrammdarstellung durch auf Spezial-Hardware basierende Systeme implementiert werden kann, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von Spezial-Hardware und Computer-Anweisungen ausführen.
  • Bezugnahmen in den Ansprüchen auf ein Element in der Einzahl sollen nicht „ein und dasselbe“ bedeuten, es sei denn, dies wird ausdrücklich angegeben, sondern vielmehr „eines oder mehrere“. Alle strukturellen und funktionellen Äquivalente zu den Elementen der oben beschriebenen beispielhaften Ausführungsform, die gegenwärtig bekannt sind oder später bekannt werden, sollen von den vorliegenden Ansprüchen erfasst werden. Kein hierin enthaltenes Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C. Abschnitt 112, sechster Absatz, auszulegen, es sei denn, das Element wird ausdrücklich unter Verwendung des Ausdrucks „Mittel für“ oder „Schritt für“ ausgeführt.
  • Die hier verwendete Terminologie dient nur der Beschreibung bestimmter Ausführungsformen und ist nicht als Beschränkung der Erfindung gedacht. Wie hier verwendet, sollen die Singularformen „ein(e)“ und „der/die/das“ auch die Pluralformen umfassen, sofern der Kontext nicht eindeutig etwas anderes angibt. Ferner wird davon ausgegangen, dass die Begriffe „ umfassen“ und/oder „umfassend“, wenn sie in dieser Spezifikation verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, aber nicht das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Äquivalente aller Mittel oder Stufen plus Funktionselemente in den nachfolgenden Ansprüchen sollen jede Struktur, jedes Material oder jede Handlung zur Ausführung der Funktion in Kombination mit anderen beanspruchten Elementen, wie speziell beansprucht, umfassen. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgelegt, soll aber weder erschöpfend noch auf die Erfindung in der offenbaren Form beschränkt sein. Viele Modifikationen und Variationen werden sich gegenüber denen üblicher Fachkenntnisse auf dem Gebiet der Kunst ergeben, ohne dass vom Anwendungsbereich der Erfindung abgewichen wird. Die Ausführungsform wurde gewählt und beschrieben, um die Prinzipien der Erfindung und der praktischen Anwendung am besten zu erläutern und es anderen Fachleuten mit üblichen Fachkenntnissen zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifikationen zu verstehen, die für die beabsichtigte besondere Verwendung geeignet sind.

Claims (16)

  1. Ein System für die chronologisch geordnete Out-of-Place-Aktualisierung, wobei das System Folgendes umfasst: eine Speichervorrichtung, die einen Schlüssel-Wert-Speicher und Anweisungen speichert; und einen Prozessor, der so konfiguriert ist, dass er die Anweisungen ausführt, um: Out-of-place-Operationen auszuführen, die so konfiguriert sind, dass die chronologische Reihenfolge der Operationen beibehalten wird, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein einer Speicherbereinigungstransaktion ohne einen expliziten Sekundärindex durchgesetzt wird.
  2. Das System nach Anspruch 1, wobei die Operationen umfassen: Aktualisierungs-, Lösch- und Einfügeoperationen.
  3. Das System von Anspruch 2, wobei der Prozessor ferner so konfiguriert ist, dass er die Anweisungen ausführt, um: eine Speicherbereinigungstransaktion auszuführen, um die chronologische Reihenfolge der Operationen beizubehalten, indem die gleiche relative Reihenfolge der aus einem Opferslot kopierten Schlüssel beibehalten wird wie in mindestens einem Zielslot vor der Speicherbereinigungstransaktion.
  4. Das System von Anspruch 2, wobei der Prozessor ferner so konfiguriert ist, dass er die Anweisungen ausführt, um: eine Speicherbereinigungstransaktion auszuführen, um die gleiche relative Reihenfolge von Schlüsseln, die aus einem Opferslot kopiert wurden, im Vergleich zu Schlüsseln in anderen Slots vor dem Speicherbereinigungsprozess beizubehalten.
  5. Das System nach einem der vorhergehenden Ansprüche, wobei der Prozessor ferner konfiguriert ist, die Anweisungen auszuführen, um: die Menge der Live-Daten in einem Opferslots zu schätzen; mindestens einen Zielslot zu kennzeichnen; einen Beginn einer Speicherbereinigungstransaktion in einem Wiederherstellungs-Log aufzuzeichnen; validen Inhalt aus dem Opferslots in den mindestens einen Zielslot zu kopieren; einen Tombstone-Eintrag zu platzieren, um vorangehende Versionen aufzuzeichnen, wenn es sich bei einem Datensatz, der kopiert wird, um ein Update handelt; und einen In-Memory-Index zu aktualisieren, um eine neue Position eines Schlüssels im Zielslot aufzuzeichnen.
  6. Das System nach Anspruch 5, wobei: der Tombstone dorthin zeigt, wohin ein Aktualisierungs-Rückwärtszeiger im Opferslot zeigt; ein Rückwärtszeiger für andere Einträge in dem Zielslot auf den Opferslot für gültige Daten zeigt, die von dem Opferslot in den Zielslot verschoben wurden; und gültiger Inhalt Live-Datensätze und Live-Tombstone-Einträge beinhaltet.
  7. Das System nach Anspruch 6, wobei der Prozessor ferner so konfiguriert ist, dass er die Anweisungen ausführt, um: ein Ende der Speicherbereinigungstransaktion im Wiederherstellungs-Log aufzuzeichnen.
  8. Ein Verfahren zur chronologisch geordneten Out-of-Place-Aktualisierung, wobei das Verfahren Folgendes umfasst: Speichern eines Schlüssel-Wert-Speichers in einem Speicher; und Ausführen von Out-of-Place-Operationen, die so konfiguriert sind, dass die chronologische Reihenfolge der Operationen beibehalten wird, indem die Reihenfolge der Operationen auf einer Speicherschicht bei Vorhandensein einer Speicherbereinigungstransaktion ohne einen expliziten Sekundärindex durchgesetzt wird.
  9. Verfahren nach Anspruch 7, wobei die Operationen umfassen: Aktualisierungs-, Lösch- und Einfügeoperationen.
  10. Das Verfahren nach Anspruch 9, ferner umfassend: Ausführen einer Speicherbereinigungstransaktion, um die chronologische Reihenfolge der Operationen beizubehalten, indem die gleiche relative Reihenfolge der aus einem Opferslot kopierten Schlüssel beibehalten wird wie in mindestens einem Zielslot vor der Speicherbereinigungstransaktion.
  11. Das Verfahren nach Anspruch 9, ferner umfassend: Ausführen einer Speicherbereinigungstransaktion, um die gleiche relative Reihenfolge von Schlüsseln, die aus einem Opferslot kopiert wurden, im Vergleich zu Schlüsseln in anderen Slots vor dem Speicherbereinigungsprozess beizubehalten.
  12. Das Verfahren nach einem der Ansprüche 8 bis 11, ferner umfassend: Schätzung der Menge an Live-Daten in einem Opferslot; Identifizieren von mindestens einem Zielslot; Aufzeichnen des Beginns einer Speicherbereinigungstransaktion in einem Wiederherstellungs-Log; Kopieren valider Inhalte aus dem Opferslot in den mindestens einen Zielslot; Platzieren eines Tombstone-Eintrags, um vorangehende Versionen aufzuzeichnen, wenn ein Datensatz, der kopiert wird, eine Aktualisierung ist; und Aktualisierung eines In-Memory-Index, um eine neue Position eines Schlüssels im Zielslot aufzuzeichnen.
  13. Verfahren nach Anspruch 12, wobei: der Tombstone dorthin zeigt, wohin ein Aktualisierungs-Rückwärtszeiger im Opferslot zeigt; ein Rückwärtszeiger für andere Einträge in dem Zielslot auf den Opferslot für gültige Daten zeigt, die von dem Opferslot in den Zielslot verschoben wurden; und valider Inhalt Live-Datensätze und Live-Tombstones beinhaltet.
  14. Das Verfahren nach Anspruch 13, ferner umfassend: Aufzeichnen eines Endes der Speicherbereinigungstransaktion im Wiederherstellungs-Log.
  15. Ein Computerprogrammprodukt zur chronologisch geordneten Out-of-Place-Aktualisierung, wobei das Computerprogrammprodukt umfasst: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung gelesen werden kann und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren nach einem der Ansprüche 8 bis 14 auszuführen.
  16. Computerprogramm, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann und Softwarecodeabschnitte umfasst, wenn das Programm auf einem Computer ausgeführt wird, um das Verfahren nach einem der Ansprüche 8 bis 14 auszuführen.
DE112019000402.6T 2018-02-23 2019-02-19 Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem Ceased DE112019000402T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/904,186 2018-02-23
US15/904,186 US10783073B2 (en) 2018-02-23 2018-02-23 Chronologically ordered out-of-place update key-value storage system
PCT/IB2019/051325 WO2019162830A1 (en) 2018-02-23 2019-02-19 Chronologically ordered out-of-place update key-value storage system

Publications (1)

Publication Number Publication Date
DE112019000402T5 true DE112019000402T5 (de) 2020-10-22

Family

ID=67683890

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000402.6T Ceased DE112019000402T5 (de) 2018-02-23 2019-02-19 Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem

Country Status (6)

Country Link
US (1) US10783073B2 (de)
JP (1) JP7228321B2 (de)
CN (1) CN111684437B (de)
DE (1) DE112019000402T5 (de)
GB (1) GB2584374A (de)
WO (1) WO2019162830A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10642680B2 (en) * 2018-02-23 2020-05-05 International Business Machines Corporation Chronologically ordered log-structured key-value store from failures during garbage collection
CN113094292B (zh) * 2020-01-09 2022-12-02 上海宝存信息科技有限公司 数据存储装置以及非挥发式存储器控制方法
US11704038B2 (en) * 2021-04-12 2023-07-18 EMC IP Holding Company LLC Processing out of order writes in a log structured file system for improved garbage collection
US11681456B2 (en) 2021-05-19 2023-06-20 Huawei Cloud Computing Technologies Co., Ltd. Compaction policies for append-only stores

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996054A (en) 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US7200623B2 (en) 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US6728738B2 (en) 2002-04-03 2004-04-27 Sun Microsystems, Inc. Fast lifetime analysis of objects in a garbage-collected system
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US8099726B2 (en) 2005-12-07 2012-01-17 Microsoft Corporation Implementing strong atomicity in software transactional memory
US20090210429A1 (en) 2008-02-19 2009-08-20 Yahoo! Inc. System and method for asynchronous update of indexes in a distributed database
US20100332240A1 (en) 2009-06-24 2010-12-30 Microsoft Corporation Decentralized account digest using signed electronic receipts
US9003159B2 (en) * 2009-10-05 2015-04-07 Marvell World Trade Ltd. Data caching in non-volatile memory
US8412689B2 (en) * 2010-07-07 2013-04-02 Microsoft Corporation Shared log-structured multi-version transactional datastore with metadata to enable melding trees
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8805984B2 (en) 2011-07-14 2014-08-12 Red Hat, Inc. Multi-operational transactional access of in-memory data grids in a client-server environment
JP2013033345A (ja) 2011-08-01 2013-02-14 Internatl Business Mach Corp <Ibm> トランザクション処理システム、方法及びプログラム
GB2511222A (en) 2011-09-30 2014-08-27 Ibm Transaction processing system, method and program
CN103164345B (zh) 2011-12-08 2016-04-27 光宝科技股份有限公司 固态存储装置遭遇断电后的数据存储方法
US9021421B1 (en) * 2012-05-07 2015-04-28 Google Inc. Read and write barriers for flexible and efficient garbage collection
US20140136575A1 (en) 2012-11-10 2014-05-15 Yuanyuan Zhao Log-structured garbage collection
US9400816B1 (en) 2013-02-28 2016-07-26 Google Inc. System for indexing collections of structured objects that provides strong multiversioning semantics
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US9519575B2 (en) 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
US8683262B1 (en) 2013-06-21 2014-03-25 Terracotta Inc. Systems and/or methods for rapid recovery from write-ahead logs
US8929146B1 (en) * 2013-07-26 2015-01-06 Avalanche Technology, Inc. Controller management of memory array of storage device using magnetic random access memory (MRAM)
US9223843B1 (en) 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9268653B2 (en) 2014-01-17 2016-02-23 Netapp, Inc. Extent metadata update logging and checkpointing
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
CN104063635B (zh) 2014-07-02 2017-09-29 北京深思数盾科技股份有限公司 目标文件的保护方法及保护系统
US10242027B2 (en) 2014-08-15 2019-03-26 Hewlett-Packard Development Company, L.P. Three phase commit for a distributed file system
US9928264B2 (en) 2014-10-19 2018-03-27 Microsoft Technology Licensing, Llc High performance transactions in database management systems
CN105677297B (zh) 2014-11-18 2018-05-04 龙芯中科技术有限公司 套锁实现方法及装置
US10210168B2 (en) * 2015-02-23 2019-02-19 International Business Machines Corporation Managing data in storage according to a log structure
US10180902B2 (en) * 2015-06-30 2019-01-15 International Business Machines Corporation Pauseless location and object handle based garbage collection
US10083082B2 (en) 2015-09-07 2018-09-25 International Business Machines Corporation Efficient index checkpointing in log-structured object stores
US10552404B2 (en) 2016-09-29 2020-02-04 International Business Machines Corporation Retrospective snapshots in log-structured storage systems
US11210211B2 (en) * 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Key data store garbage collection and multipart object management

Also Published As

Publication number Publication date
GB202013459D0 (en) 2020-10-14
GB2584374A (en) 2020-12-02
CN111684437A (zh) 2020-09-18
US10783073B2 (en) 2020-09-22
WO2019162830A1 (en) 2019-08-29
JP7228321B2 (ja) 2023-02-24
CN111684437B (zh) 2024-02-20
US20190266081A1 (en) 2019-08-29
JP2021515299A (ja) 2021-06-17

Similar Documents

Publication Publication Date Title
DE112016003120B4 (de) Umleiten einer Kopie beim Schreiben
DE112019000321T5 (de) Transaktionsoperationen in verteilten Multi-Master-Datenverwaltungssystemen
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112011102073T5 (de) Dienstimplementierung von einem Dienstverzeichnis
DE102013216273A1 (de) Umwandlung von Datenbanktabellenformaten auf der Grundlage von Benutzerdatenzugriffsmustern in einer vernetzten Datenverarbeitungsumgebung
DE112017005588T5 (de) Speichern und abrufen von eingeschränkten datensätzen in und aus einem cloud-netzwerk mit nichteingeschränkten datensätzen
DE102021125179A1 (de) Erzeugen und bereitstellen von containerabbildern
DE112019000143T5 (de) Versionierungsvalidierung für die datenübertragung zwischen heterogenen datenspeichern
DE112020000912T5 (de) Verwalten von software-programmen
DE112019000399B4 (de) Schnelle wiederherstellung nach ausfällen in einem chronologisch geordneten log-strukturierten schlüssel-wert-speichersystem
DE102013200030B4 (de) Hash-basiertes verwalten von speicher-ids
DE112018004008T5 (de) Auf dateisysteminhalten beruhende sicherheit
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112016000776T5 (de) Effiziente Durchführung von Einfüge- und Punktabfrage-Operationen in einem Spaltenspeicher
DE112021003031T5 (de) Archivieren von nur-beschleuniger-datenbanktabellen
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
DE112017006889T5 (de) Monotone Transaktionen in einer Multimasterdatenbank mit lose verbundenen Knoten
DE102021130358A1 (de) E/a-operationen in log-strukturierten arrays
DE112021005881T5 (de) Inline datenpakettransformationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final