At the recent AWS re:Invent, Amazon announced the Amazon Managed Apache Cassandra Service (MCS), a new way of managing Cassandra databases on AWS. With this new service the public cloud vendor can offer Cassandra directly to customers instead of relying on third-party vendors.
The new Apache Cassandra-compatible database managed service is available in open preview. It allows customers to run highly scalable Cassandra workloads in the AWS Cloud using the same Cassandra application code, Apache 2.0 licensed drivers, and tools that they currently use. There are open-source Cassandra drivers available for Java, Python, Ruby, .NET, Node.js, PHP, C++, Perl, and Go. Moreover, Amazon contributes bug fixes for the Cassandra API libraries to the open-source Apache Cassandra project.
MCS is serverless, as Danilo Poccia, evangelist at Amazon Web Services, states in a blog post on the new service:
Amazon MCS is serverless, so you pay for only the resources you use, and the service automatically scales tables up and down in response to application traffic.
This approach to scalability is possible because under the hood Amazon has integrated MCS with shared DynamoDB technology, Amazon's existing key-value and document datastore. By default the data stored in the MCS is encrypted at rest using encryption keys that are stored in the AWS Key Management Service (KMS), and the service is integrated with the AWS Identity and Access Management (IAM) in order to help users secure access to table data.
Matt Asay said in a recent AWS Open Source blog post:
In launching Amazon Managed Apache Cassandra Service – a scalable, highly available, and managed Cassandra-compatible database service – we are responding to customer requests to ease the burden associated with self-managing Cassandra, so that you can focus on writing CQL (Cassandra Query Language) application code.
Source: Amazon MCS Console (https://console.aws.amazon.com/mcs/home)
Users can manage Amazon MCS with the console, Cassandra Query Language (CQL), or existing Apache 2.0 licensed Cassandra drivers. Through the console or CQL, they can create a so-called ‘keyspace’, a container for one or more tables.
Next, once the keyspace is available, the user can add one or more tables with columns using either the console or CQL. Users can specify the primary key, composed of one or more columns – the values in the column or columns determine which partition data will be stored. Additionally, users can opt to cluster columns, which defines the sort order of records within a partition.
USE bookstore;
CREATE TABLE IF NOT EXISTS books
(isbn text PRIMARY KEY,
title text,
author text,
pages int,
year_of_publication int);
Other cloud vendors offer similar services. For example, Microsoft offers Cassandra support through its NoSQL service CosmosDB, and also via third party vendors on Azure. With CosmosDB, developers can leverage the Azure CosmosDB Cassandra API to store data in a column-family model. By using existing Apache drivers compliant with CQLv4, an existing Cassandra application can communicate with the Azure Cosmos DB Cassandra API, and interact with data stored in Azure Cosmos DB. Google does not have a Cassandra API compatible service, but their Cloud Datastore offers similar functionality.
MCS is available today in open preview in US East (N. Virginia), US East (Ohio), Europe (Stockholm), Asia Pacific (Singapore), Asia Pacific (Tokyo) and part of the AWS Free Tier. Potential users can try the service out for three months with offering 30 million write request units, 30 million read request units, and 1 GB of storage each month. Furthermore, Amazon will at general availability of MCS offer the option to use provisioned throughput for more predictable workloads.