クイック スタート:Python SDK と Azure Cosmos DB を使用して Cassandra アプリを構築する
適用対象: Cassandra
このクイックスタートでは、Azure Cosmos DB for Apache Cassandra アカウントを作成し、GitHub からクローンした Cassandra Python アプリを使用して Cassandra データベースとコンテナーを作成します。 Azure Cosmos DB は、マルチモデル データベース サービスです。グローバルな分散と水平方向のスケーリング機能により、ドキュメント データベースやテーブル データベース、キーと値のデータベース、グラフ データベースをすばやく作成し、クエリを実行することができます。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料で作成できます。 または、Azure サブスクリプションなしで、Azure Cosmos DB を無料で試すこともできます。
- Python 3.7 以上。
- Git.
- Apache Cassandra 用 Python ドライバー。
データベース アカウントの作成
ドキュメント データベースを作成するには、Azure Cosmos DB を含んだ Cassandra アカウントを事前に作成しておく必要があります。
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 アカウント ページに移動します。
サンプル アプリケーションの複製
ここで GitHub から Cassandra 用 API アプリの複製を作成し、接続文字列を設定して実行しましょう。 プログラムでデータを処理することが非常に簡単であることがわかります。
コマンド プロンプトを開きます。
git-samples
という名前の新しいフォルダーを作成します。 その後、コマンド プロンプトを閉じます。md "C:\git-samples"
git bash などの git ターミナル ウィンドウを開いて、
cd
コマンドを使用して、サンプル アプリをインストールする新しいフォルダーに変更します。cd "C:\git-samples"
次のコマンドを実行して、サンプル レポジトリを複製します。 このコマンドは、コンピューター上にサンプル アプリのコピーを作成します。
git clone https://github.com/Azure-Samples/azure-cosmos-db-cassandra-python-getting-started.git
コードの確認
この手順は省略可能です。 コードでデータベース リソースを作成する方法に関心がある場合は、次のスニペットで確認できます。 スニペットはすべて pyquickstart.py ファイルから取得します。 関心がない場合は、「接続文字列の更新」に進んでください。
cluster
は、Azure portal から取得されるcontactPoint
とport
の情報で初期化されます。 その後、cluster
は、connect()
メソッドを使用して Azure Cosmos DB for Apache Cassandra に接続します。 ユーザー名とパスワード、さらに既定の証明書または明示的な証明書 (構成ファイル内で指定されている場合) を使用して、承認された接続が確立されます。ssl_context = SSLContext(PROTOCOL_TLSv1_2) ssl_context.verify_mode = CERT_NONE auth_provider = PlainTextAuthProvider(username=cfg.config['username'], password=cfg.config['password']) cluster = Cluster([cfg.config['contactPoint']], port = cfg.config['port'], auth_provider=auth_provider,ssl_context=ssl_context) session = cluster.connect()
新しいキースペースが作成されます。
print ("\nCreating Keyspace") execute_command('CREATE KEYSPACE IF NOT EXISTS uprofile WITH replication = {\'class\': \'NetworkTopologyStrategy\', \'datacenter\' : \'1\' }');
新しいテーブルが作成されます。
print ("\nCreating Table") execute_command('CREATE TABLE IF NOT EXISTS uprofile.user (user_id int PRIMARY KEY, user_name text, user_bcity text)');
キー/値エンティティが挿入されます。
execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [1,'Lybkov','Seattle']) execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [2,'Doniv','Dubai']) execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [3,'Keviv','Chennai']) execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [4,'Ehtevs','Pune']) execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [5,'Dnivog','Belgaum']) execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [6,'Ateegk','Narewadi']) execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [7,'KannabbuS','Yamkanmardi']) execute_command("INSERT INTO uprofile.user (user_id, user_name , user_bcity) VALUES (%s,%s,%s)", [8,'Jonas','Atlanta'])
クエリを実行して、すべてのキー値を取得します。
print ("\nSelecting All") rows = session.execute('SELECT * FROM uprofile.user') PrintTable(rows)
クエリを実行して、キーの値を取得します。
print ("\nSelecting Id=1") rows = session.execute('SELECT * FROM uprofile.user where user_id=1') PrintTable(rows)
接続文字列を更新する
ここで Azure Portal に戻り、接続文字列情報を取得し、アプリにコピーします。 アプリはこの接続文字列によって、ホストされているデータベースと通信できます。
Azure portal の Azure Cosmos DB アカウントで、 [接続文字列] を選択します。
画面右側の ボタンを使用して、一番上の [CONTACT POINT](コンタクト ポイント) の値をコピーします。
config.py ファイルを開きます。
10 行目の
<FILLME>
にポータルのコンタクト ポイントの値を貼り付けます。10 行目は次のようになります。
'contactPoint': 'cosmos-db-quickstarts.cassandra.cosmosdb.azure.com'
12 行目の
<FILLME>
にポータルの [PORT] の値を貼り付けます。12 行目は次のようになります。
'port': 10350,
ポータルの [USERNAME](ユーザー名) の値をコピーし、6 行目の
<FILLME>
に貼り付けます。6 行目は次のようになります。
'username': 'cosmos-db-quickstart',
ポータルの [PASSWORD](パスワード) の値をコピーし、8 行目の
<FILLME>
に貼り付けます。8 行目は次のようになります。
'password' = '2Ggkr662ifxz2Mg==
';`config.py ファイルを保存します。
Python のアプリを実行する
Git ターミナルで cd コマンドを使用して、
azure-cosmos-db-cassandra-python-getting-started
フォルダーに変更します。次のコマンドを実行して、必要なモジュールをインストールします。
python -m pip install cassandra-driver==3.20.2 python -m pip install prettytable python -m pip install requests python -m pip install pyopenssl
Note
Cassandra 用 API で使用するとき、Python ドライバー バージョン 3.20.2 を推奨します。 それより新しいバージョンの場合、エラーが発生することがあります。
次のコマンドを実行して、Python アプリケーションを開始します。
python pyquickstart.py
コマンド ラインから予想される結果を確認します。
Ctrl + C キーを押してプログラムの実行を停止し、コンソール ウィンドウを閉じます。
Azure portal で Data Explorer を開き、この新しいデータのクエリ、変更、操作を行います。
Azure Portal での SLA の確認
Azure portal では、Azure Cosmos DB アカウントのスループット、ストレージ、可用性、待ち時間、一貫性が監視されます。 Azure Cosmos DB サービス レベル アグリーメント (SLA) に関連付けられたメトリックのグラフに、実際のパフォーマンスと比較された SLA の値が示されます。 この一連のメトリックによって、SLA の監視が透明化されます。
メトリックと SLA を確認するには:
Azure Cosmos DB アカウントのナビゲーション メニューで [メトリック] を選びます。
[遅延時間] など、タブを選択し、右側で期間を選択します。 グラフ上の [実際] と [SLA] の線を比較します。
他のタブでメトリックを確認します。
リソースをクリーンアップする
アプリと Azure Cosmos DB アカウントの使用を完了したら、それ以上料金がかからないように、作成した Azure リソースを削除できます。 リソースを削除するには、次の手順に従います。
Azure portal の検索バーで、「リソース グループ」を検索して選択します。
一覧から、このクイック スタートで作成したリソース グループを選択します。
リソース グループの [概要] ページで、[リソース グループの削除] を選択します。
次のウィンドウで、削除するリソース グループの名前を入力し、[削除] を選択します。
次のステップ
このクイックスタートでは、Cassandra 用 API を使用して Azure Cosmos DB アカウントを作成する方法と、Cassandra データベースとコンテナーを作成する Cassandra Python アプリの実行方法について説明しました。 これで、その他のデータを Azure Cosmos DB アカウントにインポートできるようになりました。