Amazon Web Services ブログ

Amazon Managed Apache Cassandraサービス(MCS)がアナウンスされました

大規模なデータベース管理は決して簡単ではありません。キーと値や表形式を含む大量の構造化データを保存、取得、管理するオプションの1つにApache Cassandraがあります。Cassandraでは、表現力豊かなCassandra Query Language(CQL)  を使用して、アプリケーションを迅速に構築できます。

ただし、大規模なCassandraクラスターの管理は困難な場合があり、多くの時間がかかります。基盤となるインフラストラクチャのセットアップ、構成、および保守には専門的な専門知識が必要であり、Apache Cassandraオープンソースソフトウェアを含むアプリケーションスタック全体を深く理解するひつようがります。ノードを手動で追加または削除し、パーティションを再調整する必要があります。必要なパフォーマンスでアプリケーションを使用可能に保ちながら、再調整を行うことも必要です。顧客と話をすると、スケールダウンが複雑であるため、ピーク負荷に合わせてクラスターをスケールアップし続けることが多いことがわかりました。Cassandraクラスターを最新の状態に保つには、ノードごとに実行する必要があります。更新中に問題が発生した場合、クラスターのバックアップと復元は難しく、パッチをスキップしたり、古いバージョンを実行したりする可能性があります。

Amazon Managed Cassandraサービスのご紹介

本日、オープンプレビューの Amazon Managed Apache Cassandra Service(MCS)を開始します。これは、スケーラブルで可用性の高い、管理されたApache Cassandra互換のデータベースサービスです。 Amazon MCSはサーバーレスであるため、使用したリソースに対してのみ料金が発生し、サービスはアプリケーショントラフィックに応じてテーブルを自動的にスケールアップおよびスケールダウンします。事実上無制限のスループットとストレージで、毎秒数千のリクエストを処理するアプリケーションを構築できます。

あなたが今日使用するのと同じカサンドラ・アプリケーション・コードと開発ツールを使用して、AWS上のカサンドラのワークロードを実行することができます。 Amazon MCSは、Apache Cassandraバージョン3.11 CQL APIを実装しており、アプリケーションにすでにあるコードとドライバーを使用できます。アプリケーションの更新は、エンドポイントをAmazon MCSサービステーブルのエンドポイントに変更するのと同じくらい簡単です。

あらゆる規模で一貫した1桁ミリ秒の読み取りおよび書き込みパフォーマンスを提供するため、低遅延でアプリケーションを構築して、スムーズなユーザーエクスペリエンスを提供できます。Amazon CloudWatchを使用して、アプリケーションのパフォーマンスを可視化できます。

テーブルのサイズやアイテムの数に制限はなく、ストレージをプロビジョニングする必要はありません。データストレージは完全に管理され、可用性が高くなっています。テーブルデータは、耐久性を確保するために複数のAWSアベイラビリティーゾーンに自動的に3回複製されます。

すべての顧客データは、デフォルトで保存時に暗号化されます。AWS Key Management Service(KMS)に保存されている暗号化キーを使用できます。 Amazon MCSはAWS Identity and Access Management(IAM)と統合されており、テーブルとデータへのアクセスを管理するのに役立ちます。

Amazon MCSの使用方法

コンソール、CQL、または既存のアパッチ2.0ライセンスのカサンドラ・ドライバーで、アマゾンMCSを使用できます。コンソールにはCQLエディターがあり、cqlshを使用して接続することもできます。アマゾンMCSは、TLSを使用した安全な接続のみ受け入れます。

cqlshを使用して接続するには、既存のIAMユーザーのサービス固有の認証情報を生成する必要があります。これは、AWSコマンド・ライン・インターフェイス(CLI)のみのコマンドです。

aws iam create-service-specific-credential --user-name USERNAME --service-name cassandra.amazonaws.com

{
    "ServiceSpecificCredential": {
        "CreateDate": "2019-11-27T14:36:16Z",
        "ServiceName": "cassandra.amazonaws.com",
        "ServiceUserName": "USERNAME-at-123412341234",
        "ServicePassword": "...",
        "ServiceSpecificCredentialId": "...",
        "UserName": "USERNAME",
        "Status": "Active"
    }
}

これで、以下に接続できます。

cqlsh {endpoint} {port} -u {ServiceUserName} -p {ServicePassword} --ssl

まず初めに、キースペースを作成します。キースペースには、一個以上のテーブルが含まれ、含まれる全てのテーブルの複製戦略を定義します。アマゾンMCSでは、全てのキースペースのデフォルトの複製戦略は、単一リージョン戦略です。単一のAWS領域の複数の可用性ゾーンにわたり、データを三回複製します。

キースペースを作成するために、コンソールまたはCQLを使用できます。アマゾン管理のアパッチ・カサンドラ・サービス(MCS)コンソールで、キースペースの名前を指定します。

同様に、CQLを使用して、bookstoreのキースペースを作成できます。

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エディターでは、デフォルトのクエリーを使用し、Run commandを選択します。

デフォルトでは、クエリーの結果は表形式で表示されます。

必要に応じて、カサンドラAPIを使用するアプリケーションで表示されるものと同様のJSON形式で結果を確認できます。

さらにレコードを挿入するには、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;

詳細については、ドキュメンテーションをご覧ください。データをアマゾンMCSに移行するには、ご存じのETLシステムとコピー操作を使用できます。来年、AWS Database Migration Serviceを使用するためのサポートを追加する予定です。

オープンプレビューで利用可能

Amazon MCSは現在、アメリカ東部(バージニア北部)、米国東部(オハイオ)、ヨーロッパ(ストックホルム)、アジア太平洋(シンガポール)、アジア太平洋(東京)にて、オープンプレビューで利用できます。

既存のアパッチ・カサンドラ2.0ライセンスのドライバーと開発者ツールをAmazon MCSで使用できます。オープンソースのCassandraドライバーは、Java、Python、.NET、Nodes,js、PHP、C++、Perl、Goで使用できます。

Cassandra APIライブラリを使用することにより、オープンソースApache Cassandra project にバグ修正に貢献しています。また、AWS認証の組み込みサポートなど、Amazon EC2でCassandraを実行している顧客の認証情報の管理を簡素化するなどの改善に貢献しています。なぜなら、EC2とIAMは、資格情報の配布と管理を自動的に処理できるからです。さらに、Cassandra関連のオープンソース・プロジェクトをテストするためのAWSプロモーション・サービス・クレジットの資金提供を発表する予定です。

より予測可能なワークロードにプロビジョニングされたスループットを使用するオプションも提供します。オンデマンド容量モードでは、Amazon MCSは、アプリケーションがテーブルから読み書きするデータの量に基づき、課金されます。Amazon MCSは、ワークロードがスケールアップまたはスケールダウンするときに、即座に対応するため、テーブルにプロビジョニングする読み取り及び書き込みのスループット容量を指定する必要はありません。

AWS無料利用枠の一部として、無料でAmazon MCSを開始できます。最初の3か月間は、毎月3,000万の書き込みリクエスト・ユニット、3,000万の読み取りリクエスト・ユニット、1GBのストレージの無料利用枠が使用できます。Amazon MCSリソースを初めて作成すると、無料利用枠が使用可能になります。

Amazon MCSは、Apache Cassandraをあらゆる規模で、かつ簡単に使用でき、新しいアプリケーションを構築し、既存のアプリケーションを移行するため、シンプルなプログラミング・インターフェイスを提供できます。どのように使用するかは、あなた次第です。