Back to Blog

DataStax Proxy for DynamoDB™ and Apache Cassandra™ – 预览版

date: September 13, 2019

在昨天(2019年9月11日)的ApacheCon大会上,我们DataStax公司的Patrick McFadin宣布了一个开源工具的公开预览版,该工具赋能开发人员在Apache Cassandra上运行他们的Amazon DynamoDB™应用。有了DataStax的这个支持DynamoDB和Cassandra的代理程序,开发人员可以在很多不同的环境中运行DynamoDB应用,同时充分利用Cassandra的混合云,多模型和无限扩容的优势。

全局总览

Amazon DynamoDB是一个键值数据库,可为开发人员提供弹性和零操作云体验。然而,DynamoDB跟AWS的紧密集成虽然让它在AWS上容易上手,对于想要在自己数据中心使用它的客户来说却是一个比较大的局限。

Cassandra一直支持键值和表格数据模型,因此支持DynamoDB应用意味着DataStax客户只是需要一个转换层来访问他们现有的Cassandra存储引擎。

今天,我们开放预览一个与DynamoDB SDK兼容的代理程序,允许现有应用程序在没有任何代码更改的情况下读取/写入DataStax Enterprise(DSE)或Cassandra的数据。对于已经在使用DynamoDB SDK的用户,(通过这个代理)他们很容易就能享受到Cassandra提供的混合云,多模型,无限扩容的便利。

如果您只是想要找到这个开源工具的代码,您可以在GitHub和DataStax Labs中找到它:https://github.com/datastax/dynamo-cassandra-proxy/

可能的应用场景

应用程序生命周期管理:许多客户在自己的数据中心开发应用程序,然后部署到云上的生产环境。该代理程序使客户能够在本地数据中心使用Cassandra集群运行其现有的DynamoDB应用程序。

DataStax Proxy Overview

混合部署:DynamoDB Streams可用于实现混合工作负载管理以及从云端的DynamoDB数据库迁移到本地数据中心,使用DynamoDB代理程序访问本地的Cassandra数据库。现有的实现支持这种使用方式,并且跟DynamoDB Global Tables一样,它也使用DynamoDB Streams来移动数据。至于混合移动数据到DynamoDB,请参考Cassandra CDC的改进,并继续关注DataStax博客,以获取有关我们的Change Data Capture(CDC)功能的更新。

DataStax Proxy Solution Arch

代理中提供什么?

该代理程序旨在让用户能够使用Cassandra支持其DynamoDB应用程序。我们认为,帮助用户利用这一新工具并帮助其蓬勃发展的最佳途径是将它以Apache 2许可证的方式开源。

该代码提供一个在您的应用程序和数据库之间的可伸缩代理层。它保持与DynamoDB SDK的兼容性,允许现有的DynamoDB应用程序在不更改应用程序的情况下向Cassandra读取和写入数据。

工作原理

我们在设计这个代理程序时做了一些设计决定,这些设计决定符合我们通常指导Cassandra和DataStax Enterprise产品开发的设计原则。

为什么使用单独进程?

我们本可以将它构建为一个Cassandra插件,这样它可以作为核心进程的一部分执行,但我们决定将其构建为一个单独的进程,原因如下:

  1. 能够独立于Cassandra对代理进行扩容

  2. 能够利用kubernetes /云原生工具

  3. 敏捷开发和更容易吸引开源贡献者 - 开发人员不需要对Cassandra内核有深入了解就可以上手参与开发这个代理程序

  4. 独立的发布节奏,与Apache Cassandra项目发布隔离

  5. 对无状态应用程序提供更好的AWS集成(即利用CloudWatch警报,自动扩展等)

为什么提供可插拔的持久层?

一眼看去,DynamoDB的数据模型非常简单。它由一个散列键,一个排序键和一个称为条目的JSON结构组成。根据您要实现的目标,DynamoDB数据模型可以在Cassandra查询语言(CQL)中以不同方式保存。为了支持实验和可插拔性,我们以可插拔的方式构建了翻译层,允许不同的翻译机制。我们继续在此架构基础上构建,测试多个数据模型并确定哪个最适合:

  1. 各种工作量

  2. 对各种一致性/线性化要求的支持

  3. 基于SLA的各种性能权衡

结语

如果您对在Cassandra上运行DynamoDB应用程序感兴趣,请查看该项目。入门很简单,只要按readme自述文件和DynamoDB部分要求的步骤执行就可以了。本代理程序支持的功能正在迅速增加,欢迎您参与合作。

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

所有产品和公司名称均为其各自所有者的商标或注册商标。使用这些商标并不意味着与商标所有者有任何关联或认可。


1 通常在DynamoDB文档中,这个键被称为分区键(partition key),但是因为它们跟DyanmoDB中的分区并不是一比一对应的,我们在这里使用散列键指代。

Subscribe to Our Blog Now

Thank You for Signing Up!