チュートリアル: Java アプリケーションを使用して Azure Cosmos DB に Cassandra 用 API アカウントを作成し、キーと値のデータを格納する
適用対象: Cassandra
開発者は、キー/値ペアを使用するアプリケーションを持っていることがあります。 Azure Cosmos DB の Cassandra 用 API アカウントを使用して、キーと値のデータを格納できます。 このチュートリアルでは、Java アプリケーションを使用して、Azure Cosmos DB に Cassandra 用 API アカウントを作成し、データベース (キースペースとも呼ばれます) を追加してテーブルを追加する方法について説明します。 Java アプリケーションでは、Java ドライバーを使用して、ユーザー ID、ユーザー名、ユーザーの住所などの詳細情報を格納するユーザー データベースを作成します。
このチュートリアルに含まれるタスクは次のとおりです。
- Cassandra データベース アカウントを作成する
- アカウントの接続文字列を取得する
- Maven プロジェクトと依存関係を作成する
- データベースとテーブルを追加する
- アプリを実行する
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
最新バージョンの Java Development Kit (JDK) を入手します。
Maven バイナリ アーカイブをダウンロードしてインストールします。
- Ubuntu で
apt-get install maven
を実行して Maven をインストールします。
- Ubuntu で
データベース アカウントの作成
Azure portal のメニューまたは [ホーム] ページで、 [リソースの作成] を選択します。
[新規] ページで、 [Azure Cosmos DB] を検索して選択します。
[Azure Cosmos DB] ページで、 [作成] を選択します。
[API] ページの [Cassandra] セクションで [作成] を選択します。
API によって、作成するアカウントの種類が決まります。 Azure Cosmos DB には、NoSQL (ドキュメント データベース用)、Gremlin (グラフ データベース用)、MongoDB (ドキュメント データベース用)、Azure Table、Cassandra の 5 種類の API が用意されています。 API ごとに別のアカウントを作成する必要があります。
このクイックスタートでは Cassandra 用 API で動作するテーブルを作成しているため、Cassandra を選択します。
[Azure Cosmos DB アカウントの作成] ページで、新しい Azure Cosmos DB アカウントの基本的な設定を入力します。
設定 値 説明 サブスクリプション 該当するサブスクリプション この Azure Cosmos DB アカウントに使用する Azure サブスクリプションを選択します。 リソース グループ 新規作成
アカウント名と同じ名前を入力します[新規作成] を選択します。 その後、自分のアカウントの新しいリソース グループの名前を入力します。 簡略化のため、Azure Cosmos DB アカウント名と同じ名前を使用します。 アカウント名 一意の名前を入力します 自分の Azure Cosmos DB アカウントを識別するための一意の名前を入力します。 アカウント URI は、一意のアカウント名に cassandra.cosmos.azure.com が追加されたものになります。
アカウント名に使用できるのは、小文字、数字、ハイフン (-) のみで、長さは 3 文字から 31 文字の範囲にする必要があります。場所 ユーザーに最も近いリージョン Azure Cosmos DB アカウントをホストする地理的な場所を選択します。 データに最も高速にアクセスできるよう、お客様のユーザーに最も近い場所を使用します。 容量モード プロビジョニング スループットまたはサーバーレス プロビジョニング スループット モードでアカウントを作成するには、 [Provisioned throughput](プロビジョニング スループット) を選択します。 サーバーレス モードでアカウントを作成するには、 [サーバーレス] を選択します。 Apply Azure Cosmos DB free tier discount (Azure Cosmos DB Free レベル割引を適用する) [適用] または [適用しない] Azure Cosmos DB Free レベルのアカウントでは、最初の 1000 RU/s と 25 GB のストレージを無料でご利用いただけます。 Free レベルの詳細を確認してください。 合計アカウント スループットを制限する アカウントのスループットを制限する場合に選択します これは、アカウントの合計スループットを特定の値に制限する場合に便利です。 Note
Azure サブスクリプションにつき所有できる Free レベルの Azure Cosmos DB アカウントは 1 つまでです。また、アカウントの作成時にオプトインする必要があります。 Free レベルの割引を適用するオプションが表示されない場合は、サブスクリプション内の別のアカウントが Free レベルで既に有効になっていることを意味します。
[グローバル分散] タブで、次の詳細を構成します。 このクイックスタートでは、既定値のままでかまいません。
設定 値 説明 geo 冗長性 無効化 リージョンをペア リージョンとペアリングすることによる、アカウントでのグローバル配信を有効または無効にします。 アカウントには、後でさらにリージョンを追加できます。 マルチリージョン書き込み 無効化 マルチリージョン書き込み機能を使用すると、世界中のデータベースとコンテナーで、プロビジョニングされたスループットを利用できます。 可用性ゾーン 無効にする Availability Zones は、Azure リージョン内の分離された場所です。 それぞれのゾーンは、独立した電源、冷却手段、ネットワークを備えた 1 つまたは複数のデータセンターで構成されています。 Note
[Capacity mode](容量モード) として [サーバーレス] を選択した場合、以下のオプションは利用できません。
- Apply Free Tier Discount (Free レベルの割引の適用)
- geo 冗長性
- マルチリージョン ライター
必要に応じて、次のタブで追加の詳細を構成できます。
- [ネットワーク] - 仮想ネットワークからのアクセスを構成します。
- [バックアップ ポリシー] - 定期的または継続的のいずれかのバックアップ ポリシーを構成します。
- [暗号化] - サービス マネージド キーまたはカスタマー マネージド キーのいずれかを使用します。
- [タグ] - タグは名前と値のペアで、同じタグを複数のリソースやリソース グループに適用することでリソースを分類したり、統合した請求を表示したりできるようにします。
[Review + create](レビュー + 作成) を選択します。
アカウントの設定を確認し、 [作成] を選択します。 アカウントの作成には数分かかります。 ポータル ページに "デプロイが完了しました" と表示されるまで待ちます。
[リソースに移動] を選択し、Azure Cosmos DB アカウント ページに移動します。
アカウントの接続の詳細を取得する
Azure portal から接続文字列情報を取得し、Java の構成ファイルにそれをコピーします。 アプリはこの接続文字列によって、ホストされているデータベースと通信できます。
Azure portal でお客様の Azure Cosmos DB アカウントに移動します。
[接続文字列] ウィンドウを開きます。
次の手順で使用するので、 [コンタクト ポイント] 、 [ポート] 、 [ユーザー名] 、 [プライマリ パスワード] の値をコピーします。
プロジェクトと依存関係を作成する
この記事でお客様が使用する Java のサンプル プロジェクトは、GitHub でホストされています。 このドキュメントの手順を実行するか、azure-cosmos-db-cassandra-java-getting-started リポジトリからサンプルをダウンロードすることができます。
ファイルをダウンロードしたら、java-examples\src\main\resources\config.properties
ファイル内の接続文字列情報を更新して、それを実行します。
cassandra_host=<FILLME_with_CONTACT POINT>
cassandra_port = 10350
cassandra_username=<FILLME_with_USERNAME>
cassandra_password=<FILLME_with_PRIMARY PASSWORD>
サンプルをゼロからビルドするには、次の手順を使用します。
ターミナルまたはコマンド プロンプトから、Cassandra-demo という名前で新しい Maven プロジェクトを作成します。
mvn archetype:generate -DgroupId=com.azure.cosmosdb.cassandra -DartifactId=cassandra-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
cassandra-demo
フォルダーを検索します。 テキスト エディターを使用して、生成されたpom.xml
ファイルを開きます。Cassandra 依存関係を追加し、pom.xml ファイルで示されているように、お客様のプロジェクトに必要なプラグインをビルドします。
cassandra-demo\src\main
フォルダーの下に、resources
という名前の新しいフォルダーを作成します。 resources フォルダーの下に、config.properties ファイルと log4j.properties ファイルを追加します。config.properties ファイルには、Cassandra 用 API アカウントの接続エンドポイントとキーの値が格納されます。
log4j.properties ファイルでは、Cassandra 用 API との対話に必要なログ記録のレベルを定義します。
src/main/java/com/azure/cosmosdb/cassandra/
フォルダーを参照します。 cassandra フォルダー内に、utils
という名前の別のフォルダーを作成します。 新しいフォルダーには、Cassandra 用 API アカウントに接続するために必要なユーティリティ クラスが格納されます。クラスターを作成し、Cassandra セッションを開いたり閉じたりするには、CassandraUtils クラスを追加します。 クラスターは Azure Cosmos DB の Cassandra 用 API アカウントに接続し、アクセスするセッションを返します。 config.properties ファイルから接続文字列の情報を読み取るには、Configurations クラスを使用します。
Java のサンプルでは、ユーザー名、ユーザー ID、ユーザーの住所などのユーザー情報が含まれるデータベースを作成します。 main 関数でユーザーの詳細にアクセスするには、get メソッドと set メソッドを定義する必要があります。
get メソッドと set メソッドを含む User.java クラスを
src/main/java/com/azure/cosmosdb/cassandra/
フォルダーに作成します。
データベースとテーブルを追加する
このセクションでは、CQL を使用してデータベース (キースペース) とテーブルを追加する方法について説明します。
src\main\java\com\azure\cosmosdb\cassandra
フォルダーの下に、repository
という名前の新しいフォルダーを作成します。UserRepository
Java クラスを作成し、次のコードをそれに追加します。package com.azure.cosmosdb.cassandra.repository; import java.util.List; import com.datastax.driver.core.BoundStatement; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Create a Cassandra session */ public class UserRepository { private static final Logger LOGGER = LoggerFactory.getLogger(UserRepository.class); private Session session; public UserRepository(Session session) { this.session = session; } /** * Create keyspace uprofile in cassandra DB */ public void createKeyspace() { final String query = "CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }"; session.execute(query); LOGGER.info("Created keyspace 'uprofile'"); } /** * Create user table in cassandra DB */ public void createTable() { final String query = "CREATE TABLE IF NOT EXISTS uprofile.user (user_id int PRIMARY KEY, user_name text, user_bcity text)"; session.execute(query); LOGGER.info("Created table 'user'"); } }
src\main\java\com\azure\cosmosdb\cassandra
フォルダーを検索し、examples
という名前の新しいサブフォルダーを作成します。UserProfile
Java クラスを作成します。 このクラスには、前に定義した createKeyspace および createTable メソッドを呼び出す main メソッドが含まれます。package com.azure.cosmosdb.cassandra.examples; import java.io.IOException; import com.azure.cosmosdb.cassandra.repository.UserRepository; import com.azure.cosmosdb.cassandra.util.CassandraUtils; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Example class which will demonstrate following operations on Cassandra Database on CosmosDB * - Create Keyspace * - Create Table * - Insert Rows * - Select all data from a table * - Select a row from a table */ public class UserProfile { private static final Logger LOGGER = LoggerFactory.getLogger(UserProfile.class); public static void main(String[] s) throws Exception { CassandraUtils utils = new CassandraUtils(); Session cassandraSession = utils.getSession(); try { UserRepository repository = new UserRepository(cassandraSession); //Create keyspace in cassandra database repository.createKeyspace(); //Create table in cassandra database repository.createTable(); } finally { utils.close(); LOGGER.info("Please delete your table after verifying the presence of the data in portal or from CQL"); } } }
アプリを実行する
コマンド プロンプトまたはターミナル ウィンドウを開きます。 次のコード ブロックを貼り付けます。
このコードは、プロジェクトを作成したフォルダー パスにディレクトリを変更 (cd) します。 次に、
mvn clean install
コマンドを実行して、ターゲット フォルダー内にcosmosdb-cassandra-examples.jar
ファイルを生成します。 最後に、Java アプリケーションを実行します。cd cassandra-demo mvn clean install java -cp target/cosmosdb-cassandra-examples.jar com.azure.cosmosdb.cassandra.examples.UserProfile
ターミナル ウィンドウに、キースペースとテーブルが作成されたという通知が表示されます。
Azure portal でデータ エクスプローラーを開き、キースペースとテーブルが作成されたことを確認します。
次のステップ
このチュートリアルでは、Java アプリケーションを使用して、Azure Cosmos DB の Cassandra 用 API アカウント、データベース、テーブルを作成する方法を学習しました。 次の記事に進むことができます。