Was ist eine Schlüsselwertedatenbank?
Eine Schlüssel-Werte-Datenbank ist eine Art von nicht-relationaler Datenbank, auch bekannt als NoSQL-Datenbank, die eine einfache Schlüsselwertmethode zum Speichern von Daten verwendet. Sie speichert Daten als eine Sammlung von Schlüsselwertpaaren, wobei ein Schlüssel als eindeutiger Bezeichner dient. Sowohl Schlüssel als auch Werte können alles sein, von einfachen Objekten bis hin zu komplexen zusammengesetzten Objekten. Schlüsselwertedatenbank (Schlüsselwertespeicher) sind hochgradig partitionierbar und ermöglichen eine horizontale Skalierung auf einem Niveau, das andere Arten von Datenbanken nicht erreichen können.
Was sind die Vorteile von Schlüssel-Werte-Datenbanken
Herkömmliche relationale Datenbanken (SQL-Datenbanken) speichern Daten in Form von Tabellen, die Zeilen und Spalten enthalten. Sie erzwingen eine starre Datenstruktur und sind nicht für jeden Anwendungsfall optimal. Schlüssel-Werte-Datenbank dagegen sind NoSQL-Datenbanken. Sie ermöglichen flexible Datenbankschemata und eine verbesserte Leistung bei der Skalierung für bestimmte Anwendungsfälle. Zu den Vorteilen von Schlüssel-Werte-Speichern gehören:
Skalierbarkeit
Da jede Benutzerabfrage eine Dateninteraktion erfordert, können Datenbanken oft zu einem Engpass in der Anwendungsleistung werden. Verschiedene Strategien zur Lösung des Problems, wie Replikation und Sharding, erhöhen die Komplexität des Anwendungscodes. Viele Schlüssel-Werte-Datenbanken bieten integrierte Unterstützung für erweiterte Skalierungs-Features. Sie skalieren horizontal und verteilen Daten automatisch auf mehrere Server, um Engpässe auf einem einzelnen Server zu reduzieren.
Einfache Nutzung
Schlüssel-Werte-Datenbanken folgen dem objektorientierten Paradigma, das es Entwicklern ermöglicht, reale Objekte direkt Softwareobjekten zuzuordnen. Mehrere Programmiersprachen wie Java folgen ebenfalls demselben Paradigma. Anstatt ihre Codeobjekte mehreren zugrunde liegenden Tabellen zuzuordnen, können Ingenieure Schlüssel-Werte-Paare erstellen, die ihren Codeobjekten entsprechen. Dadurch können Schlüssel-Werte-Speicher für Entwickler intuitiver verwendet werden.
Leistung
Schlüssel-Werte-Datenbanken verarbeiten konstante Lese- und Schreibvorgänge mit Serveraufrufen mit geringem Overhead. Verbesserte Latenz und kürzere Reaktionszeiten sorgen für eine bessere Leistung im großen Maßstab. Sie basieren auf einfachen Einzeltabellenstrukturen und nicht auf mehreren miteinander verknüpften Tabellen. Im Gegensatz zu relationalen Datenbanken müssen Schlüssel-Werte-Datenbank keine ressourcenintensiven Tabellenverknüpfungen durchführen, was sie erheblich schneller macht.
Was sind die Anwendungsfälle von Schlüssel-Werte-Datenbanken
Sie können Schlüssel-Werte-Datenbanksysteme als primäre Datenbank für Ihre Anwendung oder für Nischenanforderungen verwenden. Im Folgenden finden Sie einige Beispiele für die Verwendung von Schlüssel-Werte-Datenbanken.
Sitzungsverwaltung
Eine sitzungsorientierte Anwendung, z. B. eine Webanwendung, startet eine Sitzung, wenn sich ein Benutzer bei einer Anwendung anmeldet, und ist so lange aktiv, bis sich der Benutzer abmeldet oder die Sitzung beendet wird. Während dieser Zeit speichert die Anwendung alle Attribute der Benutzersitzung entweder im Hauptspeicher oder in einer Datenbank. Zu den Daten einer Benutzersitzung können Profilinformationen, Nachrichten, personalisierte Daten und Themen, Empfehlungen, gezielte Werbeaktionen und Rabatte gehören.
Jede Benutzersitzung besitzt einen eindeutigen Identifikator. Sitzungsdaten werden ausschließlich von einem Primärschlüssel abgefragt, sodass ein schneller Schlüssel-Werte-Speicher besser für Sitzungsdaten geeignet ist. Im Allgemeinen können Schlüssel-Werte-Datenbanken einen geringeren Overhead pro Seite bieten als relationale Datenbanken.
Warenkorb
Auf einer E-Commerce-Website können während der Weihnachtssaison Milliarden von Bestellungen pro Sekunde eingehen. Eine Schlüssel-Werte-Datenbank ist in der Lage, große Datenmengen und extrem viele Zustandsänderungen zu bewältigen und gleichzeitig Millionen gleichzeitiger Benutzer durch verteilte Verarbeitung und Speicherung zu bedienen. Schlüssel-Werte-Speicher verfügen zudem über eine eingebaute Redundanz, die den Verlust von Speicherknoten verkraften kann.
Speicher-Engine für Metadaten
Ihr Schlüssel-Werte-Speicher kann als zugrunde liegende Speicherebene für höhere Datenzugriffsebenen dienen. Sie können beispielsweise den Durchsatz und die Parallelität für Medien- und Unterhaltungs-Workloads wie Echtzeit-Videostreaming und interaktive Inhalte skalieren. Sie können Ihre Spielplattform auch mit Spielerdaten, Sitzungsprotokollen und Bestenlisten für Millionen von gleichzeitigen Benutzern ausstatten.
Caching
Sie können eine Schlüssel-Werte-Datenbank verwenden, um Daten vorübergehend zu speichern und schneller abzurufen. Beispielsweise können Social-Media-Anwendungen häufig aufgerufene Daten wie News-Feed-Inhalte speichern. In-Memory-Daten-Caching-Systeme verwenden ebenfalls Schlüssel-Werte-Speicher, um Anwendungsreaktionen zu beschleunigen.
Wie funktionieren Schlüssel-Werte-Datenbank
Schlüssel-Werte-Datenbanken funktionieren, indem sie alle Daten als eine Reihe von Schlüssel-Werte-Paaren organisieren. Sie können sich den Schlüssel als Frage und den Wert als Antwort auf die Frage vorstellen. Im folgenden Beispiel besteht der Primärschlüssel aus zwei Schlüsseln, Produkt-ID und Typ. Die Produkt-ID ist der Partitionsschlüssel, der die Partition beschreibt, in der der Artikel gespeichert wird. Der Typ ist der Sortierschlüssel, der die Reihenfolge bestimmt, in der Elemente auf der Festplatte gespeichert werden. Die Kombination aus Partitionsschlüssel und Sortierschlüssel bildet einen eindeutigen Primärschlüssel, der einem einzelnen Wert in der Datenbank zugeordnet ist.
In diesem Beispiel hat das Datenobjekt Buch Attribute wie Titel, Autor und Erscheinungsdatum. Jedes Buchdatenobjekt verfügt über einen Schlüssel namens BookID. Sie können die BookID und das zugehörige Buchobjekt direkt im Schlüssel-Werte-Speicher verknüpfen. Darüber hinaus können Sie Daten abrufen, indem Sie die BookID in der Tabelle nachschlagen. Außerdem hat jedes Element sein eigenes Schema, was Schlüssel-Werte-Speicher sehr flexibel für die Speicherung von Daten mit unterschiedlichen Strukturen macht.
Was sind die Features von Schlüssel-Werte-Datenbank
Je nachdem, für welche Lösung Sie sich entscheiden, kann Ihr Schlüssel-Werte-Speicher mehrere zusätzliche Features bieten, die im Folgenden aufgeführt sind.
Unterstützung für komplexe Datentypen
Schlüssel-Werte-Speicher bieten Unterstützung für bestimmte Datentypen wie Ganzzahlen und Text. Viele von ihnen können jedoch auch komplexere Objekte wie Reihen, verschachtelte Wörterbücher, Bilder, Videos und halbstrukturierte Daten unterstützen. Indem Sie der Datenbank mehr Informationen über Ihre Daten zur Verfügung stellen, haben Sie mehr Spielraum für die Optimierung der Speicherung und der Abfrageleistung.
Tabellenverknüpfungen sind nicht erforderlich
Schlüssel-Werte-Datenbanken müssen keine ressourcenintensiven Tabellenverknüpfungen durchführen. Ihre Flexibilität ermöglicht es, alle benötigten Informationen in einer einzigen Tabelle zusammenzufassen. Dies ist einer der Gründe, warum Schlüssel-Werte-Speicher so gut funktionieren.
Sortierte Schlüssel
Ein Schlüssel-Werte-Speicher kann Schlüssel so sortieren, dass Daten systematisch gespeichert werden und die Partitionierung implementiert wird. Zum Beispiel können die Schlüssel sortiert werden:
- Alphabetisch oder numerisch
- Chronologisch
- Nach Datengröße
Nehmen wir einen Schlüssel-Werte-Speicher, der die E-Mail-Adresse des Kunden als eindeutigen Schlüssel verwendet. Die E-Mail-Adressen können alphabetisch sortiert werden, d. h. alle Daten für die E-Mail-Listen A-J werden auf Server 1 gespeichert, K-S auf Server 2 und so weiter.
Unterstützung für Sekundärschlüssel
Einige Schlüssel-Werte-Speicher ermöglichen es, zwei oder mehr verschiedene Schlüssel oder sekundäre Indizes für den Zugriff auf dieselben Daten zu definieren. Sie können Kundendaten beispielsweise nach Schlüssel-E-Mail-Adresse und Schlüssel-Telefonnummer speichern.
Replikation
Viele Schlüssel-Werte-Speicher bieten integrierte Replikationsunterstützung, indem Daten automatisch über mehrere Speicherknoten hinweg kopiert werden. Dies hilft bei der automatischen Wiederherstellung im Katastrophenfall. Sie haben Ihre Daten auch dann noch, wenn der Server ausfällt.
Partitioning
Partitionierung ist die Art und Weise, wie Sie Daten auf Knoten verteilen. Viele Schlüssel-Werte-Datenbanken bieten Standardpartitionierungsoptionen. Einige bieten Ihnen auch die Möglichkeit, Eingabeparameter für Ihre Partitionen zu definieren. Sie könnten zum Beispiel numerische Tasten in Gruppen von 1 000 unterteilen. Moderne Schlüssel-Werte-Datenbanken bieten auch automatische Unterstützung für die Verteilung Ihrer Schlüssel-Werte-Datenbank über mehrere geografische Standorte hinweg. Dies verbessert die Verfügbarkeit und Zuverlässigkeit von Anwendungen, da Sie Anfragen in der Nähe des Benutzerstandorts beantworten können.
ACID-Unterstützung
Atomarität, Konsistenz, Isolation und Langlebigkeit (ACID) sind Datenbankeigenschaften, die die Genauigkeit und Zuverlässigkeit der Daten unter allen Umständen gewährleisten. Wenn Sie beispielsweise mehrere Änderungen an Ihren Daten in einer Sequenz vornehmen, erfordert die Atomarität, dass alle Änderungen der Reihe nach durchgeführt werden. Wenn eine Änderung fehlschlägt, schlägt alles fehl.
Moderne Schlüssel-Werte-Datenbanken bieten native, serverseitige Unterstützung für ACID. Dies vereinfacht es den Entwicklern, koordinierte Alles-oder-Nichts-Änderungen an mehreren Elementen sowohl innerhalb als auch zwischen den Tabellen vorzunehmen. Mit der Transaktionsunterstützung können Entwickler die Skalierbarkeit, die Leistung und die Unternehmensvorteile auf eine breitere Palette von geschäftskritischen Workloads ausweiten.
Was sind die Einschränkungen von Schlüssel-Werte-Datenbanken
Schlüssel-Werte-Datenbanken erfordern, wie bei jeder Art von Technologiewahl, einige Kompromisse.
Fehlen komplexer Abfragen
Da Schlüssel-Werte-Datenbanken keine komplexen Abfragen unterstützen, müssen Entwickler dies im Code umgehen. Datenoperationen erfolgen hauptsächlich über einfache Begriffe in der Abfragesprache wie Get, Put und Delete. Sie können Daten nur begrenzt filtern und sortieren, bevor Sie auf sie zugreifen.
Missmanagement des Schemas
Das Design von Schlüssel-Werte-Speichern zwingt den Entwicklern kein Schema auf. Jeder kann das Schema im Datenbankprogramm ändern. Die Entwicklungsteams müssen das Datenmodell systematisch planen, um langfristige Probleme zu vermeiden. Das Fehlen eines festen Schemas bedeutet auch, dass die Anwendung für die korrekte Interpretation der von ihr konsumierten Daten verantwortlich ist, was oft als "Schema beim Lesen" bezeichnet wird.
Wie kann AWS Ihre Anforderungen an eine Schlüssel-Werte-Datenbank unterstützen
Amazon DynamoDB ist eine der beliebtesten Schlüssel-Werte-Datenbanken, die für die Ausführung von Hochleistungsanwendungen jeder Größenordnung konzipiert wurde. Es handelt sich um eine vollständig verwaltete, multiregionale, multiaktive Datenbank, die Features wie die folgenden bietet:
- Unbegrenzte Skalierbarkeit, einschließlich Skalierung bis Null, mit konsistenter Latenz im einstelligen Millisekundenbereich.
- Serverless, ohne Versionsupgrades, ohne Wartungsfenster und ohne zu verwaltende Server oder Software.
- Entwickelt für eine Verfügbarkeit von 99,999 %, wobei DynamoDB Global Tables eine aktiv-aktive Replikation ermöglicht, sodass Sie global verteilte Anwendungen mit lokaler Leseleistung erstellen können.
- Hochsicher und zuverlässig mit Standardverschlüsselung im Ruhezustand, Point-in-Time-Recovery, On-Demand-Sicherung und -Wiederherstellung und mehr.
- Einfach zu verwenden durch Integrationen mit vielen AWS-Services, einschließlich Massenimport/-export von Amazon S3, Amazon Kinesis Data Streams, Amazon Cloudwatch und mehr.
Mit dieser schrittweisen Anleitung zum Erstellen und Abfragen einer NoSQL-Tabelle können Sie DynamoDB in 10 Minuten einsatzbereit haben. Beginnen Sie mit Schlüssel-Werte-Datenbanken in AWS, indem Sie noch heute ein kostenloses Konto erstellen!