Back to Blog

DataStax Proxy für DynamoDB™ und Apache Cassandra™ – Vorschau

date: September 13, 2019

Die ApacheCon hat uns fest im Griff und der gestrige Tag bot gleich ein Highlight, als Patrick McFadin von DataStax ein neues Open Source Tool vorstellte, mit dem Entwickler AWS DynamoDB™ Workloads in Apache Cassandra ausführen können. Mit dem DataStax Proxy für DynamoDB und Cassandra können Entwickler DynamoDB Workloads laufen lassen (On-Premises, in der Hybrid Cloud und in einer Multi-Cloud-Umgebung) und dabei von den Vorteilen von Cassandra bei der Skalierung profitieren. Die Ausgangssituation

Amazon DynamoDB ist eine Key-Value- und Document- Datenbank, die Entwicklern Elastizität und bedienungsfreie Nutzung in der Cloud bietet. Der Grund dafür ist die enge Integration von DynamoDB in AWS, die jedoch ein Hindernis darstellt, wenn Kunden die Datenbank On-Premises nutzen möchten.

Cassandra hat schon immer Key-Value- und tabellarische Datasets unterstützt. Zur Verarbeitung von DynamoDB Workloads mussten DataStax-Kunden lediglich ihre vorhandene Storage Engine um eine Übersetzungsschicht ergänzen.

Heute stelle ich Ihnen einen Proxy vor, der mit dem DynamoDB SDK kompatibel ist. Das bedeutet, dass keine Änderungen am Code erforderlich sind, damit vorhandene Anwendungen Daten in DataStax Enterprise (DSE) oder Cassandra lesen und schreiben können. DynamoDB-Nutzer profitieren zudem von den Vorteilen, die Cassandra hinsichtlich Hybrid- und Multimodellfähigkeit sowie Skalierbarkeit bietet.

Wenn Sie hier nur vorbeigeschaut haben, weil Sie der Code interessiert, dann finden Sie diesen auf GitHub und DataStax Labs: https://github.com/datastax/dynamo-cassandra-proxy/

Mögliche Szenarien

Application Lifecycle Management: Viele Kunden entwickeln auf ihren eigenen Servern und nutzen die Cloud nur für die Produktion. Mit dem Proxy können Kunden ihre bestehenden DynamoDB-Anwendungen On-Premises auf Cassandra-Clustern ausführen.

Users

Nutzer

Browser

Browser

Mobile

Mobilgerät

IoT

IoT

App

App

DataStax Drivers

DataStax-Treiber

DataStax Proxy for DynamoDB

DataStax Proxy für DynamoDB

Hybride Bereitstellung: DynamoDB Streams ermöglicht das Management von Workloads in hybriden Umgebungen sowie die Übertragung von DynamoDB-Cloud-Bereitstellungen auf On-Prem-Implementierungen, die den Cassandra Proxy nutzen. Dies wird in der aktuellen Implementierung unterstützt, und wie bei DynamoDB Global Tables werden die Daten mithilfe von DynamoDB Streams verschoben. Wenn Sie an einer hybriden Übertragung auf DynamoDB interessiert sind,  werfen Sie einen Blick auf die Verbesserungen von Cassandra CDC. Dort finden Sie weitere Informationen zu diesem Thema. Besuchen Sie außerdem regelmäßig das DataStax Blog, um über die Funktionen von Change Data Capture (CDC) auf dem Laufenden zu bleiben.

Availability Zone

Availability Zone

US-West-2

USA-West-2

US-East-1

USA-Ost-1

DynamoDB Streams

DynamoDB Streams

Other Clouds

Andere Clouds

DSE Replication

DSE Replication

On Prem

Lokal

Was bietet der Proxy?

Der Proxy ermöglicht es Nutzern, Cassandra zusammen mit ihren DynamoDB-Anwendungen zu nutzen. Wir haben das neue Tool unter der Apache Open-Source-Lizenz Version 2 veröffentlicht, weil dies unseren Kunden die größten Vorteile bietet.

Der Code besteht aus einem skalierbaren Proxy Layer, der zwischen der Anwendung und der Datenbank angesiedelt ist. Er ist mit dem DynamoDB SDK kompatibel, sodass bestehende DynamoDB-Anwendungen ohne Änderungen lesend wie schreibend auf Cassandra zugreifen können.

Funktionsweise

Beim Design des Proxy mussten einige Entscheidungen getroffen werden. Wie immer haben wir uns an den Designprinzipien orientiert, die auch bei der Entwicklung von Cassandra und DataStax Enterprise im Vordergrund stehen.

Warum ein eigener Prozess?

Wir hätten den Proxy auch als Plug-in für Cassandra umsetzen können, das zusammen mit dem Kernprozess ausgeführt wird. Dass wir uns für einen eigenen Prozess entschieden haben, liegt an den folgenden Gründen:

  1. Die Möglichkeit, den Proxy unabhängig von Cassandra zu skalieren
  2. Die Möglichkeit, Kubernetes bzw. cloudnative Tools zu verwenden
  3. Mehr Flexibilität für Entwickler bzw. höhere Attraktivität für Mitwirkende – die Mitarbeit am Proxy erfordert kein Detailwissen über Cassandra
  4. Unabhängiger Releasekalender, keine Bindung an das Apache Cassandra-Projekt
  5. Vereinfachte AWS-Integration für zustandslose Anwendungen (z. B. Verwendung von CloudWatch-Alarmen, Autoscaling usw.)

Warum Pluggable Persistence?

Auf den ersten Blick wirkt das Datenmodell von DynamoDB sehr einfach. Es besteht aus einem Hash-Schlüssel1[s1] , einem Sortierschlüssel und einer JSON-Struktur, die als Element bezeichnet wird. Je nach Aufgabenstellung kann das Datenmodell von DynamoDB auf verschiedene Arten in der Cassandra Query Language (CQL) persistent gemacht werden. Um das Herumexperimentieren zu vereinfachen und eine effiziente Modularität zu bieten, ist die Übersetzungsschicht so ausgelegt, dass verschiedene Übersetzungsprogramme verwendet werden können. Aufbauend auf diesem Grundgerüst lassen sich mehrere Datenmodelle testen, um herauszufinden, welches am besten geeignet ist für:

  1. unterschiedliche Workloads
  2. unterschiedliche Anforderungen hinsichtlich Konsistenz/Linearisierung
  3. unterschiedliche Leistungsanforderungen basierend auf SLAs

Fazit

Wenn Sie Interesse haben, DynamoDB-Workloads in Cassandra auszuführen, dann sollten Sie sich dieses Projekt ansehen. Der Einstieg ist einfach. Alles Wissenswerte finden Sie in den Readme- und DynamoDB-Abschnitten. Die Zahl der vom Proxy unterstützten Funktionen wächst ständig und externe Mitwirkende sind ausdrücklich willkommen.

https://github.com/datastax/dynamo-cassandra-proxy/

Alle Produkt- und Firmennamen sind Marken oder eingetragene Marken der jeweiligen Inhaber. Die Verwendung dieser Marken bedeutet keine Zugehörigkeit oder Billigung durch den Markeninhaber.

1In der Dokumentation zu DynamoDB wird dieser Schlüssel oft als Partitionsschlüssel bezeichnet. Da es sich aber um keine 1:1-Beziehung zu DynamoDB-Partitionen handelt, verwenden wir stattdessen den Begriff Hash-Schlüssel.

Subscribe to Our Blog Now

Thank You for Signing Up!