amaze646 - Fotolia

Die Unterschiede zwischen NVMe Key-Value, Block und Object

Vergleichen Sie die Unterschiede zwischen Block-, Objekt- und NVMe-Key-Value-Speichern und erfahren Sie, wie die Vorteile der einzelnen Technologien Storage-Performance optimieren.

Key-Value-Storage ist ein moderner Ansatz zur Datenspeicherung, der SSDs effizienter als bestehende Block- und Objektspeichersysteme machen und neue SSD-Funktionen ermöglichen soll. Er vereinfacht die Art und Weise, wie Daten konsumiert und gespeichert werden, um einige der Übersetzungsschritte zu eliminieren, die für die Verwendung von Blockspeicher zum Speichern von Objekten erforderlich sind.

Key-Value-Storage ermöglicht es, unstrukturierte Daten, wie Fotos und Videos, als ein einziges adressierbares Objekt zu speichern. Es kann auch nützlich sein, um verschiedene Datensatztypen zu speichern - beispielsweise medizinische oder Mitarbeiterdatensätze - die mit einer eindeutigen Kennung verbunden sind.

Wir betrachten hier den Unterschied zwischen NVMe-Key-Value- und Block- und Objektspeicher sowie die Vorteile von Key-Value-Storage und die laufenden Standardisierungsarbeiten.

NVMe Key-Value Storage vs. Blockspeicher

Beim Blockspeicher werden die Daten in Blöcken fester Größe gespeichert und jeder Block ist einer eindeutigen numerischen logischen Blockadresse (LBA) auf einem Laufwerk zugeordnet. Bei Key-Value (zu deutsch: Schlüssel-Wert) hingegen werden Daten in einem unstrukturierten Format gespeichert, und ein Schlüssel wird verwendet, um die Daten zu adressieren und zu finden. Ein Schlüssel kann eine URL, ein Name oder so ziemlich alles sein, was Sie wollen. Es ist ein etwas unstrukturierter Zeiger darauf, wo diese Daten sind.

Bei Blockspeichern ist die LBA eine feste Anzahl von Bytes, und der Speicherplatz wird in Vielfachen der Blockgröße zugewiesen. Im Gegensatz dazu variiert die Länge der Schlüssel bei m Key-Value-Speicher von einem Byte bis 32 Byte, basierend auf der NVMe-Befehlssatzdefinition der NVM Express-Gruppe. Der Speicherplatz wird in Byte-Schritten zugewiesen, und die Daten - oder der Wert - sind mit genau der Menge an physischem Speicher verbunden, die für die Speicherung bestimmter Daten benötigt wird. Dies steht im Gegensatz zum Blockspeicher, bei dem logische Blöcke mit physischen Blöcken auf einer Eins-zu-Eins-Basis verbunden sind.

Abbildung 1: Die Unterschiede zwischen Key-Value und Block Storage auf einen Blick.
Abbildung 1: Die Unterschiede zwischen Key-Value und Block Storage auf einen Blick.

NVMe Key-Value Storage vs. Object Storage

Beim Objektspeicher werden die Daten unter Verwendung einer eindeutigen 128-Bit-Kennung gespeichert, die es ermöglicht, die Daten zu finden, auch wenn man ihren physischen Speicherort nicht kennt. Metadaten, die zusammen mit der eindeutigen Kennung und den Daten als Teil des Objekts in einer flachen Struktur gespeichert werden, ermöglichen die Speicherung großer Mengen an unstrukturierten Daten. Allerdings werden Objekte typischerweise auf einem Blockspeichergerät gespeichert, und eine Übersetzung erfolgt auf dem Objektspeicher-Stack.

Key-Value-Daten hingegen werden unter Verwendung eines Schlüssels mit variabler Länge auf einem nativen Key-Value-Gerät gespeichert und verwenden keine Metadaten. Key-Value- und Objektspeicher haben mehr Gemeinsamkeiten als Key-Value- und Blockspeicher, aber sie sind nicht dasselbe. Key-Value ist ein zugrunde liegendes Protokoll, das Objektspeicher auf Geräteebene unterstützt.

Bei der Objektspeicherung bietet das Protokoll ein Mapping eines Objekt-Identifizierers auf das Objekt auf verschiedenen Ebenen im System und kann unter bestimmten Umständen über mehrere Ebenen aufgeteilt werden, zum Beispiel bei Sharding. Bei der Key-Value-Speicherung wird ein Schlüssel auf einen Wert abgebildet und direkt an ein bestimmtes Speichergerät adressiert.

Abbildung 2: Die Unterschiede zwischen Key-Value und Object Storage auf einen Blick.
Abbildung 2: Die Unterschiede zwischen Key-Value und Object Storage auf einen Blick.

Wie Key-Value funktioniert

Key-Value-Operationen umfassen:

  • Speichern

  • Abrufen

  • Löschen

  • Auflisten

Daten, die einmal gespeichert wurden, können nicht mehr aktualisiert oder erweitert werden. Wenn Sie einen Teil des Wertes ändern wollen, müssen Sie den gesamten Wert neu schreiben. Dasselbe passiert, wenn Sie etwas hinzufügen wollen; Sie müssen die vorhandenen Daten löschen und den neuen Wert speichern. Der gespeicherte Wert ist der vollständige Wert.

Daten werden als ein einzelner Wert abgerufen, der mit einem Schlüssel verknüpft ist, und ein Teil der Daten kann abgerufen werden, wenn Sie am Anfang des Wertes beginnen. Die Absicht bei Schlüsselwerten ist, dass es sich um vollständige Werte handelt, und die Anwendung würde normalerweise einfach den gesamten Wert abrufen und mit diesem gesamten Wert tun, was sie will.

Key-Value-Paare können gelöscht werden, und Sie können alle auf dem Gerät gespeicherten Schlüssel auflisten und die Existenz eines Schlüssels testen.

Die Vorteile der Key-Value-Architektur

Block-Storage- und Key-Value-Architektur haben ähnliche Top-Level-Architekturen, aber bei Block-Storage findet ein dreifaches Mapping statt - vom Schlüssel zum Dateisystem, vom Dateisystem zur LBA und von der LBA zur physischen Adresse. Key-Value ersetzt das dreifache Mapping durch eine einzige Mapping-Tabelle. Das Key-Value-Paar durchläuft eine Key-Value-Bibliothek und hat ein Protokoll auf der unteren Schicht der Architektur, das den Schlüssel auf den Wert abbildet.

Der NVMe-Key-Value-Ansatz bietet die folgenden drei Vorteile:

  • eine erhöhte Anzahl von Transaktionen pro Sekunde;

  • einen verringerten Schreibverstärkungsfaktor (write amplification factor)

  • verringerte Latenzzeit

Die verringerte Schreibverstärkung ist besonders wichtig, da sie die Ausdauer einer SSD erhöhen kann.

Key-Value-Storage ermöglicht es einem Speichergerät auch, Daten basierend auf dem Inhalt zu manipulieren, so dass man Werte nach einem Muster durchsuchen oder eine Codierung für den Wert durchführen kann. Key-Value-Storage kann die mit Block-Storage verbundenen Overhead-Probleme bei der Bereitstellung beseitigen, da es eine vorab zugewiesene Zuordnung der logischen zur physischen Adresse gibt und der Adressbereich basierend auf der Größe des physischen Speichers begrenzt ist. Darüber hinaus kann der Schlüssel über mehrere Geräte hinweg eindeutig sein, so dass keine Zuordnung auf einer höheren Ebene erforderlich ist.

Key-Value-Standards und erste Produkte

Der NVMe-Key-Value-Befehlssatz von NVM Express wurde im Juni 2020 ratifiziert. Eine erste Version der SNIA-Key-Value-APIs wurde im April 2020 veröffentlicht und wird derzeit für die Verwendung mit den NVMe-Befehlen aktualisiert.

Zu den ersten Key-Value-Produkten gehört die Key-Value-basierte Plattform von Samsung-Spinoff Stellus Technologies, die im Februar 2020 vorgestellt wurde. Sie bietet ein Dateisystem, das auf Samsungs Key-Value-SSDs und anderen Flash-Speichern laufen kann.

Erfahren Sie mehr über Storage Performance

ComputerWeekly.de
Close