亚马逊AWS官方博客
新增功能 – Amazon Managed Apache Cassandra Service (MCS)
规模化管理数据库绝非易事。Apache Cassandra 是存储、检索和管理大量结构化数据(包括键值和表格格式)的一种选择。借助 Cassandra,您可以使用强大的 Cassandra 查询语言 (CQL) 快速构建应用程序。
但是,管理大型 Cassandra 集群可能很困难,并且需要很多时间。您需要设置、配置和维护基础基础结构的专业知识,并且对包括 Apache Cassandra 开源软件在内的整个应用程序堆栈有深刻的了解。您需要手动添加或删除节点,重新平衡分区,同时保持应用程序具有所需的性能。与客户沟通时,我们发现他们经常扩展集群规模以应对峰值负载,因为缩减规模很复杂。为了使您的 Cassandra 集群保持更新,您必须逐个节点更新。 如果在更新过程中出现问题,则很难备份和还原集群,并且最终可能会跳过补丁程序或运行过时的版本。
隆重推出 Amazon Managed Cassandra Service
今天,我们将推出 Amazon Managed Apache Cassandra Service (MCS) 的公开预览版,这是一款可扩展、高度可用、托管的兼容 Apache Cassandra 的数据库服务。 Amazon MCS 是一款无服务器服务,因此您只需为使用的资源付费,并且此服务会根据应用程序的流量变化自动扩展和收缩表。 您可以构建能够每秒处理数千请求的应用程序,并且吞吐量和存储容量几乎没有限制。
借助 Amazon MCS,您可以使用当今所用的相同 Cassandra应用程序代码和开发人员工具在 AWS 上运行 Cassandra 工作负载。 Amazon MCS 实现了 Apache Cassandra 版本 3.11 CQL API,允许您使用应用程序中已有的代码和驱动程序。更新应用程序就像将终端节点更改为 Amazon MCS 服务表中的终端节点一样简单。
Amazon MCS 可以任何规模提供一致的个位数毫秒级读写性能,因此您可以构建低延迟应用程序,提供流畅的用户体验。您可以查看应用程序使用 Amazon CloudWatch 的运行情况。
表大小或项目数没有限制,无需预置存储。 数据存储完全托管并且高度可用。您的表数据将跨多个 AWS 可用区自动复制 3 次,以实现持久性。
默认情况下,所有客户数据在静止时加密。您可以使用存储在 AWS Key Management Service (KMS) 中的加密密钥。 Amazon MCS 还与 AWS Identity and Access Management (IAM) 集成在一起,以帮助您管理对表和数据的访问。
使用 Amazon Managed Cassandra Service
您可以将 Amazon MCS 与控制台、CQL 或现有的Apache 2.0 许可的 Cassandra 驱动程序配合使用。 控制台中有一个 CQL 编辑器,您也可以使用 cqlsh
进行连接。
要使用 cqlsh
进行连接,我需要为现有 IAM 用户生成特定于服务的凭证。这只是使用 AWS命令行界面 (CLI) 的命令:
aws iam create-service-specific-credential --user-name USERNAME --service-name mcs.amazonaws.com
{
"ServiceSpecificCredential": {
"CreateDate": "2019-11-27T14:36:16Z",
"ServiceName": "mcs.amazonaws.com",
"ServiceUserName": "USERNAME-at-123412341234",
"ServicePassword": "...",
"ServiceSpecificCredentialId": "...",
"UserName": "USERNAME",
"Status": "Active"
}
}
Amazon MCS 仅接受使用 TLS 的安全连接。 下载 Amazon 根证书并编辑 cqlshrc
配置文件以使用它。 现在,我可以连接:
cqlsh {endpoint} {port} -u {ServiceUserName} -p {ServicePassword} --ssl
首先,我创建一个键空间。键空间包含一个或多个表,并为其包含的所有表定义复制策略。使用 Amazon MCS,所有键空间的默认复制策略是单区域策略。它跨单个 AWS 区域中的多个可用区复制数据 3 次。
要创建键空间,我可以使用控制台或 CQL。在Amazon MCS 控制台中,我提供了键空间的名称。
同样,我可以使用 CQL 创建键空间:
CREATE KEYSPACE IF NOT EXISTS bookstore WITH REPLICATION={'class': 'SingleRegionStrategy'};
现在我创建一个表。 表是组织和存储数据的地方。同样,我可以使用控制台或 CQL。从控制台中,选择 bookstore
键空间并为表命名。
在下方,为 books
表添加列。表中的每一行都由一个主键引用,该主键可以由一个或多个列组成,这些列的值确定数据存储在哪个分区中。在本例中,主键是 ISBN。我可以选择添加集群列,这些列确定分区中记录的排序顺序。我没有为此表使用集群列。
或者,借助 CQL,可以使用以下命令创建表:
USE bookstore;
CREATE TABLE IF NOT EXISTS books
(isbn text PRIMARY KEY,
title text,
author text,
pages int,
year_of_publication int);
我现在使用 CQL 在 books 表中插入一条记录:
INSERT INTO books (isbn, title, author, pages, year_of_publication)
VALUES ('978-0201896831',
'The Art of Computer Programming, Vol. 1: Fundamental Algorithms (3rd Edition)',
'Donald E. Knuth', 672, 1997);
让我们运行一个快速查询。在控制台中,选择 books
表,然后选择查询表。
在 CQL 编辑器中,使用默认查询并选择运行命令。
默认情况下,会在表视图中看到查询结果:
也可以选择查看 JSON 格式的结果,类似于使用 Cassandra API 的应用程序看到的结果:
要插入更多记录,再次使用 csqlsh
并从本地 CSV 文件上传一些数据:
COPY books (isbn, title, author, pages, year_of_publication)
FROM './books.csv' WITH delimiter=',' AND header=TRUE;
现在,再次查看 books 表的内容:
SELECT * FROM books;
我可以使用主键选择行,也可以对其他条件使用筛选。例如:
SELECT title FROM books WHERE isbn='978-1942788713';
SELECT title FROM books WHERE author='Scott Page' ALLOW FILTERING;
借助 Amazon MCS,您可以使用现有 Apache Cassandra 2.0 许可证版驱动程序和开发人员工具。开源 Cassandra 驱动程序可用于 Java、Python、Ruby、.NET、Node.js、PHP、C ++、Perl 和 Go。
您可以在 Amazon MCS 文档中了解更多信息。
现已推出公开预览版
Amazon MCS 现已在以下区域推出公开预览版:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、欧洲(斯德哥尔摩)、亚太地区(新加坡)、亚太地区(东京)。
使用 Cassandra API 库时,我们为开源 Apache Cassandra 项目提供错误修复。我们还回馈改进,例如对 AWS 身份验证的内置支持 (SigV4),它为在 Amazon Elastic Compute Cloud (EC2) 上运行 Cassandra 的客户简化凭证管理,因为 EC2 和 IAM 可以使用实例角色自动处理凭证的分发和管理。我们还宣布为 AWS 促销服务抵扣金额提供资金,以测试与 Cassandra 相关的开源项目。要了解有关这些贡献的更多信息,请访问开源博客。
在预览期间,您可以使用按需容量的 Amazon MCS。一般情况下,我们还将提供使用预配吞吐量处理更多可预测工作负载的选项。通过按需容量模式,Amazon MCS 会根据您的应用程序从表读写的数据量向您收费。您无需指定为表配置读写吞吐量,因为 Amazon MCS 会随着工作负载的增加或减少即刻进行调整。
作为 AWS 免费套餐的一部分,您可以免费开始使用 Amazon MCS。在最初的三个月中,每月为您提供免费套餐,包括 3000 万个写入请求单元、3000 万个读取请求单元和 1 GB 存储。您的免费套餐在您创建第一个 Amazon MCS 资源时开始。
明年,我们将简化到 Amazon MCS 的数据迁移,增加对使用AWS Database Migration Service 的支持。
Amazon MCS 使得可以轻松使用任意规模的 Cassandra 工作负载,并提供了构建新应用程序或迁移现有应用程序的简单编程界面。我迫不及待地想要看看您会用它来做什么!