クイック スタート:.NET Core と Azure Cosmos DB を使用して Cassandra アプリを構築する

適用対象: Cassandra

このクイックスタートでは、GitHub から例を複製することで、.NET Core と Azure Cosmos DB の Cassandra 用 API を使用してプロファイル アプリを作成する方法を示します。 このクイック スタートでは、Web ベースの Azure portal を使用して Azure Cosmos DB アカウントを作成する方法も示します。

Azure Cosmos DB は、Microsoft のグローバルに分散されたマルチモデル データベース サービスです。 Azure Cosmos DB の中核をなすグローバルな分散と水平方向のスケール機能を利用して、ドキュメント、テーブル、キーと値、およびグラフ データベースをすばやく作成およびクエリできます。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 または、Azure サブスクリプションを使わず、課金も契約もなしで Azure Cosmos DB を無料で試すことができます。

さらに、次のものが必要です。

  • 最新の Visual Studio と Azure 開発ワークロード。 "無償" の Visual Studio Community IDE を使用して始めることができます。 Visual Studio のセットアップ中に、[Azure の開発] ワークロードを有効にします。
  • Git をインストールして例をクローンします。

データベース アカウントの作成

  1. Azure portal のメニューまたは [ホーム] ページで、 [リソースの作成] を選択します。

  2. [新規] ページで、 [Azure Cosmos DB] を検索して選択します。

  3. [Azure Cosmos DB] ページで、 [作成] を選択します。

  4. [API] ページの [Cassandra] セクションで [作成] を選択します。

    API によって、作成するアカウントの種類が決まります。 Azure Cosmos DB には、NoSQL (ドキュメント データベース用)、Gremlin (グラフ データベース用)、MongoDB (ドキュメント データベース用)、Azure Table、Cassandra の 5 種類の API が用意されています。 API ごとに別のアカウントを作成する必要があります。

    このクイックスタートでは Cassandra 用 API で動作するテーブルを作成しているため、Cassandra を選択します。

    Cassandra 用 API に関する詳細を確認してください

  5. [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 レベルで既に有効になっていることを意味します。

    The new account page for Azure Cosmos DB for Apache Cassandra

  6. [グローバル分散] タブで、次の詳細を構成します。 このクイックスタートでは、既定値のままでかまいません。

    設定 説明
    geo 冗長性 無効化 リージョンをペア リージョンとペアリングすることによる、アカウントでのグローバル配信を有効または無効にします。 アカウントには、後でさらにリージョンを追加できます。
    マルチリージョン書き込み 無効化 マルチリージョン書き込み機能を使用すると、世界中のデータベースとコンテナーで、プロビジョニングされたスループットを利用できます。
    可用性ゾーン 無効にする Availability Zones は、Azure リージョン内の分離された場所です。 それぞれのゾーンは、独立した電源、冷却手段、ネットワークを備えた 1 つまたは複数のデータセンターで構成されています。

    Note

    [Capacity mode](容量モード) として [サーバーレス] を選択した場合、以下のオプションは利用できません。

    • Apply Free Tier Discount (Free レベルの割引の適用)
    • geo 冗長性
    • マルチリージョン ライター
  7. 必要に応じて、次のタブで追加の詳細を構成できます。

    • [ネットワーク] - 仮想ネットワークからのアクセスを構成します。
    • [バックアップ ポリシー] - 定期的または継続的のいずれかのバックアップ ポリシーを構成します。
    • [暗号化] - サービス マネージド キーまたはカスタマー マネージド キーのいずれかを使用します。
    • [タグ] - タグは名前と値のペアで、同じタグを複数のリソースやリソース グループに適用することでリソースを分類したり、統合した請求を表示したりできるようにします。
  8. [Review + create](レビュー + 作成) を選択します。

  9. アカウントの設定を確認し、 [作成] を選択します。 アカウントの作成には数分かかります。 ポータル ページに "デプロイが完了しました" と表示されるまで待ちます。

    The Azure portal Notifications pane

  10. [リソースに移動] を選択し、Azure Cosmos DB アカウント ページに移動します。

サンプル アプリケーションの複製

次は、コードを使った作業に移りましょう。 GitHub から Cassandra 用 API アプリの複製を作成し、接続文字列を設定して実行しましょう。 どれほど簡単にプログラムでデータを処理できるかがわかります。

  1. コマンド プロンプトを開きます。 git-samples という名前の新しいフォルダーを作成します。 その後、コマンド プロンプトを閉じます。

    md "C:\git-samples"
    
  2. git bash などの git ターミナル ウィンドウを開いて、cd コマンドを使用して、サンプル アプリをインストールする新しいフォルダーに変更します。

    cd "C:\git-samples"
    
  3. 次のコマンドを実行して、サンプル レポジトリを複製します。 このコマンドは、コンピューター上にサンプル アプリのコピーを作成します。

    git clone https://github.com/Azure-Samples/azure-cosmos-db-cassandra-dotnet-core-getting-started.git
    
  4. 次に、Visual Studio で CassandraQuickStartSample ソリューション ファイルを開きます。

コードの確認

この手順は省略可能です。 コードでデータベース リソースを作成する方法に関心がある場合は、次のスニペットで確認できます。 スニペットは、すべて C:\git-samples\azure-cosmos-db-cassandra-dotnet-core-getting-started\CassandraQuickStart フォルダーにインストールされている Program.cs ファイルの async Task ProcessAsync() メソッド内から取得されたものです。 関心がない場合は、「接続文字列の更新」に進んでください。

  • Cassandra クラスター エンドポイントに接続することによって、セッションを初期化します。 Azure Cosmos DB の Cassandra 用 API は、TLSv1.2 のみに対応しています。

    var options = new Cassandra.SSLOptions(SslProtocols.Tls12, true, ValidateServerCertificate);
    options.SetHostNameResolver((ipAddress) => CASSANDRACONTACTPOINT);
    Cluster cluster = Cluster
        .Builder()
        .WithCredentials(USERNAME, PASSWORD)
        .WithPort(CASSANDRAPORT)
        .AddContactPoint(CASSANDRACONTACTPOINT)
        .WithSSL(options)
        .Build()
    ;
    ISession session = await cluster.ConnectAsync();
    
  • キースペースが既に存在する場合は、削除します。

    await session.ExecuteAsync(new SimpleStatement("DROP KEYSPACE IF EXISTS uprofile")); 
    
  • 新しいキースペースを作成します。

    await session.ExecuteAsync(new SimpleStatement("CREATE KEYSPACE uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };"));
    
  • 新しいテーブルを作成します。

    await session.ExecuteAsync(new SimpleStatement("CREATE TABLE IF NOT EXISTS uprofile.user (user_id int PRIMARY KEY, user_name text, user_bcity text)"));
    
  • uprofile キースペースに接続する新しいセッションで IMapper オブジェクトを使用し、ユーザーのエンティティを挿入します。

    await mapper.InsertAsync<User>(new User(1, "LyubovK", "Dubai"));
    
  • すべてのユーザーの情報を取得するクエリを実行します。

    foreach (User user in await mapper.FetchAsync<User>("Select * from user"))
    {
        Console.WriteLine(user);
    }
    
  • 単一ユーザーの情報を取得するクエリを実行します。

    mapper.FirstOrDefault<User>("Select * from user where user_id = ?", 3);
    

接続文字列を更新する

ここで Azure Portal に戻り、接続文字列情報を取得し、アプリにコピーします。 アプリはこの接続文字列情報によって、ホストされているデータベースと通信できます。

  1. Azure portal[接続文字列] を選択します。

  2. 画面の右側にある ボタンを使用して USERNAME の値をコピーします。

    View and copy an access key in the Azure portal, Connection String page

  3. Visual Studio で、Program.cs ファイルを開きます。

  4. 13 行目の <PROVIDE> にポータルのユーザー名の値を貼り付けます。

    Program.cs の 13 行目は次のようになります。

    private const string UserName = "cosmos-db-quickstart";

    同様に 15 行目の <PROVIDE> に [コンタクト ポイント] の値を貼り付けます。

    private const string CassandraContactPoint = "cosmos-db-quickstarts.cassandra.cosmosdb.azure.com"; // DnsName

  5. ポータルに戻り、[パスワード] の値をコピーします。 14 行目の <PROVIDE> にポータルのパスワードの値を貼り付けます。

    Program.cs の 14 行目は次のようになります。

    private const string Password = "2Ggkr662ifxz2Mg...==";

  6. ポータルに戻り、コンタクト ポイントの値をコピーします。 16 行目の <PROVIDE> にポータルのコンタクト ポイントの値を貼り付けます。

    Program.cs の 16 行目は次のようになります。

    private const string CASSANDRACONTACTPOINT = "quickstart-cassandra-api.cassandra.cosmos.azure.com";

  7. Program.cs ファイルを保存します。

.NET Core アプリを実行する

  1. Visual Studio で、 [ツール]>[NuGet パッケージ マネージャー]>[パッケージ マネージャー コンソール] の順に選択します。

  2. コマンド プロンプトで、次のコマンドを使って .NET ドライバーの NuGet パッケージをインストールします。

    Install-Package CassandraCSharpDriver
    
  3. Ctrl + F5 キーを押してアプリケーションを実行します。 コンソール ウィンドウにアプリが表示されます。

    View and verify the output

    Ctrl + C キーを押してプログラムの実行を停止し、コンソール ウィンドウを閉じます。

  4. Azure portal で Data Explorer を開き、この新しいデータのクエリ、変更、操作を行います。

    View the data in Data Explorer

Azure Portal での SLA の確認

Azure portal では、Azure Cosmos DB アカウントのスループット、ストレージ、可用性、待ち時間、一貫性が監視されます。 Azure Cosmos DB サービス レベル アグリーメント (SLA) に関連付けられたメトリックのグラフに、実際のパフォーマンスと比較された SLA の値が示されます。 この一連のメトリックによって、SLA の監視が透明化されます。

メトリックと SLA を確認するには:

  1. Azure Cosmos DB アカウントのナビゲーション メニューで [メトリック] を選びます。

  2. [遅延時間] など、タブを選択し、右側で期間を選択します。 グラフ上の [実際][SLA] の線を比較します。

    Azure Cosmos DB metrics suite

  3. 他のタブでメトリックを確認します。

リソースをクリーンアップする

アプリと Azure Cosmos DB アカウントの使用を完了したら、それ以上料金がかからないように、作成した Azure リソースを削除できます。 リソースを削除するには、次の手順に従います。

  1. Azure portal の検索バーで、「リソース グループ」を検索して選択します。

  2. 一覧から、このクイック スタートで作成したリソース グループを選択します。

    Select the resource group to delete

  3. リソース グループの [概要] ページで、[リソース グループの削除] を選択します。

    Delete the resource group

  4. 次のウィンドウで、削除するリソース グループの名前を入力し、[削除] を選択します。

次のステップ

このクイック スタートでは、Azure Cosmos DB アカウントを作成し、データ エクスプローラーを使用してコンテナーを作成し、Web アプリを実行する方法を説明しました。 これで、その他のデータを Azure Cosmos DB アカウントにインポートできるようになりました。