Mit Pluggable Storage mit NoSQL

Es gibt Zeiten, wenn Sie in einer relationalen Datenbank gespeichert Schlüssel # 8208-Value-Stil High-Speed-Zugriff auf Daten zur Verfügung stellen möchten. Diese Datenbank könnte zum Beispiel Berkeley DB (Java Edition für Voldemort) oder MySQL.

Menu

Die Bereitstellung Schlüssel # 8208-Wert wie den Zugriff auf Daten erfordert ein Schlüssel # 8208 Wertspeicher direkt über eine dieser anderen Datenbanken geschichtet werden. Grundsätzlich verwenden Sie eine andere Datenbank als die Speicherschicht und nicht eine Kombination aus einem Dateisystem für die Speicherung und eine Einnahme Pipeline zum Kopieren von Daten aus einer relationalen Datenbank.

Dieser Prozess vereinfacht eine High-Speed-Taste # 8208 Wertspeicher bietet, während eine traditionelle relationale Datenbank für die Speicherung verwenden.

Ändern Speicher-Engines

Verschiedene Workloads erfordern verschiedene Speicher-Engines und Leistungsmerkmale. Aero-Spike ist für hohe ingest- Redis groß ist für eine hohe Zahl von liest. Jeder ist um einen bestimmten Anwendungsfall gebaut.

Voldemort nimmt einen anderen Ansatz. Anstatt den Schlüssel # 8208 Wertspeicher als separate Reihe von Datenmanagement-Behandlung, behandelt Voldemort den Schlüssel # 8208-Wertspeicher als API und fügt eine in # 8208-Speicher-Caching-Schicht, was bedeutet, dass Sie in den Rücken stecken kann Ende, die am meisten Sinn für Ihre speziellen Bedürfnisse macht.

Wenn Sie eine einfache Plattenspeicherebene wollen, können Sie die Berkeley DB Java Edition Speicher-Engine verwenden. Wenn Sie stattdessen auf relationale Daten speichern möchten, können Sie MySQL als Back # 8208-Ende zu Voldemort verwenden.

Diese Fähigkeit kombiniert mit benutzerdefinierten Datentypen ermöglicht es Ihnen, einen Schlüssel # 8208 Wertspeicher des einfachen Speicher zu verwenden / abrufen API, um effektiv zurück und direkt Cache-Informationen in einer anderen zurück Speicher # 8208-Ende ziehen.

Dieser Ansatz steht im Gegensatz zu den üblichen Ansatz mit getrennten Datenbanken - eine in etwa Oracle für Transaktionsdaten und eine andere in Ihren Schlüssel # 8208 Wertspeicher (Riak, zum Beispiel). Mit dieser zwei # 8208-Tier-Ansatz, müssen Sie den Code zu entwickeln, Daten von einem Tier auf das andere für das Caching zu bewegen. Mit Voldemort gibt es eine kombinierte Tier - Ihre Datenebene - so dass die zusätzliche Code ist redundant.

Caching Daten im Speicher

Voldemort hat einen eingebauten # 8208-in in # 8208-Memory-Cache, der die Last auf dem Speicher-Engine verringert und erhöht die Abfrageleistung. Keine Notwendigkeit, eine separate Cache-Layer wie Redis oder Oracle Coherence Java-Anwendung Daten-Caching-Produkt auf der Oberseite zu verwenden.

Die Fähigkeit, bieten eine hohe # 8208-Speed-Speicher-Tiering mit Caching ist, warum LinkedIn Voldemort für bestimmte hoch # 8208 Leistungsanwendungsfälle verwendet.

Mit Voldemort, erhalten Sie das Beste aus beiden Welten - eine Speicher-Engine für Ihre genauen Datenanforderungen und eine hohe # 8208-Geschwindigkeit in # 8208-Memory-Cache die Last auf diesen Motor zu reduzieren. Sie erhalten auch einfache Schlüssel # 8208-Wertspeicher speichern / abrufen Semantik auf Ihre Speicher-Engine.

Auswertung Voldemort

In dem Harry Potter Bücher Lord Voldemort viel Magie in ihm gehalten, sowohl gut als auch schlecht, obwohl er es für terrorisieren Muggel verwendet. Die Voldemort Datenbank, wie sich herausstellt, können auch große Datenmengen speichern, kann aber durch Daten Zauberer überall für gute verwendet werden!

Voldemort ist noch ein Produkt in der Entwicklung. Viele Stücke fehlen noch, so dass es nicht die Vielzahl der Speicher-Engines unterstützt Sie vielleicht erwarten. Dieser Fokus für Voldemorts Entwicklungsgemeinschaft ist wahrscheinlich, weil Voldemort in der Programmiersprache Java erstellt wird, die eine Java Native Interface (JNI) Anschluss für die Integration zu den meisten C oder C gebaut werden ++ basierte Datenbanken erfordert.

Voldemort hat eine gute Integration mit Serialisierung Frameworks, though. Unterstützte Frameworks gehören Java-Serialisierung, Avro, Thrift, und Protocol Buffers. Dies bedeutet, dass die zur Verfügung gestellten API-Wrapper die bekannte Serialisierungsmethode jeder Programmiersprache entsprechen, so dass die Entwicklung von Anwendungen intuitiv.

Voldemort behandelt nicht Konsistenz sowie anderen Systemen zu tun. Voldemort verwendet die lesen Reparatur Ansatz, bei dem inkonsistente Versionsnummern für denselben Datensatz sind bei Lesezeit festgelegt, anstatt auf Schreibzeit konsistent gehalten werden.

Es gibt auch keine Sekundär Indizierung oder Abfrage Stütz- Voldemort erwartet Sie die Einrichtungen des zugrunde liegenden Speicher-Engine verwenden, um mit diesem Anwendungsfall gerecht zu werden. Auch Voldemort hat keine native Datenbank-Trigger oder ein Alarmierungs- oder Ereignisverarbeitung Framework, mit dem ein zu bauen.

Wenn Sie einen Schlüssel # 8208-Wertspeicher tun müssen, die hochverfügbar ist, Partition # 8208-tolerant ist, läuft in Java und verwendet unterschiedliche Speicher Backends, dann kann Voldemort für Sie sein.

Menü