Azure Synapse Link for Azure Cosmos DB を構成して使用する
適用対象: NoSQL
MongoDB
Gremlin
Azure Synapse Link for Azure Cosmos DB は、クラウド ネイティブのハイブリッド トランザクションと分析処理 (HTAP) の機能です。これを使用すると、Azure Cosmos DB のオペレーショナル データに対してリアルタイムに近い分析を実行できます。 Synapse Link によって、Azure Cosmos DB と Azure Synapse Analytics の間の緊密でシームレスな統合が実現します。
重要
NoSql API のプレビューで Microsoft Fabric のミラーリングが利用できるようになりました。 この機能により、Azure Synapse Link のすべての機能に優れた分析パフォーマンスが提供され、データ資産を Fabric OneLake と統合し、Delta Parquet 形式の OneLake でデータへのアクセスを開く機能が提供されます。 Azure Synapse Link を検討している場合は、ミラーリングを試して、組織への全体的な適合性を評価することをお勧めします。 ミラーリングを開始するには、ここをクリックします。
Azure Synapse Link は、Azure Cosmos DB SQL API または Mongo DB アカウント用の Azure Cosmos DB API で使用できます。 Gremlin API ではプレビュー段階であり、これには、CLI コマンドを使用したアクティブ化が含まれています。 Azure Cosmos DB の Azure Synapse Link を使用して分析クエリを実行するには、次の手順に従います。
- Azure Cosmos DB アカウントの Azure Synapse Link を有効にする
- コンテナーの Azure Synapse Link を有効にする
- Azure Cosmos DB データベースを Azure Synapse ワークスペースに接続する
- Azure Synapse Analytics を使用して分析ストアのクエリを実行する
- ベスト プラクティスを使用してパフォーマンスを向上させる
- Azure Synapse サーバーレス SQL プールを使用して Power BI のデータを分析して視覚化する
また、Azure Cosmos DB の Azure Synapse Link を構成する方法に関するトレーニング モジュールも参考になります。
Azure Cosmos DB アカウントの Azure Synapse Link を有効にする
Synapse Link を使用するための最初の手順は、Azure Cosmos DB データベース アカウントに対して Synapse Link を有効化することです。
Note
Azure Synapse Link でカスタマー マネージド キーを使用する場合は、ご自身のアカウント上で Synapse Link を有効にする前に、お使いの Azure Key Vault アクセス ポリシー内でご自身のアカウントのマネージド ID を構成する必要があります。 詳細については、Azure Cosmos DB アカウントのマネージド ID を使用して、カスタマー マネージド キーを構成する方法に関する記事をご覧ください。
Note
NoSQL 用 API アカウントに対して完全に忠実なスキーマを使用する必要がある場合は、Azure portal を使用して Synapse Link を有効にすることはできません。 このオプションは、ご自身のアカウント内で Synapse Link が有効にされた後は変更できません。これを設定するには、Azure CLI または PowerShell を使用する必要があります。 詳細については、分析ストアのスキーマ表現に関するドキュメントをご確認ください。
Note
アカウント レベルで Synapse Link を有効にするには、共同作成者ロールが必要です。 また、コンテナーまたはコレクションで Synapse Link を有効にするには、少なくともオペレーター ロールが必要です。
Azure portal
Azure portal にサインインします。
新しい Azure アカウントを作成するか、既存の Azure Cosmos DB アカウントを選択します。
Azure Cosmos DB アカウントに移動し、左ペインの [統合] の下にある [Azure Synapse Link] を開きます。
[有効化] を選択します。 処理が完了するまでに 1 ~ 5 分かかることがあります。
これで、ご利用のアカウントで Synapse Link を使用できるようになりました。 次に、分析ストアが有効なコンテナーを作成して、トランザクション ストアから分析ストアへのオペレーショナル データのレプリケートを自動的に開始する方法について確認します。
Note
Synapse Link を有効にしても、分析ストアは自動的に有効になりません。 Cosmos DB アカウントで Synapse Link を有効にしたら、コンテナーで分析ストアを有効にして Synapse Link の使用を開始します。
注意
左側のナビゲーション メニューの [統合] セクションで、[Power BI] および [Synapse Link] ウィンドウを使用して、Synapse Link をアカウントに対して有効にすることもできます。
コマンド ライン ツール
Azure CLI または PowerShell を使用して、Azure Cosmos DB API for NoSQL または Azure Cosmos DB API for MongoDB アカウントで Synapse Link を有効にします。
Azure CLI
作成または更新の操作で --enable-analytical-storage true
を使用します。 また、表現スキーマの種類も選択する必要があります。 NoSQL 用 API アカウントでは、--analytical-storage-schema-type
を FullFidelity
または WellDefined
の値で使用できます。 MongoDB 用 API アカウントの場合は、常に --analytical-storage-schema-type FullFidelity
を使用します。
- Synapse Link を有効にした新しい Azure Cosmos DB アカウントを作成する
- 既存の Azure Cosmos DB アカウントを更新して Synapse Link を有効にする
Azure CLI を使用して、Azure Synapse Link for Gremlin API アカウントに対して Synapse Link を有効にします。
Gremlin API の Synapse Link はプレビュー段階です。 Azure CLI を使用して、新規または既存のグラフ内で Synapse Link を有効にすることができます。 Gremlin API アカウントに対して Synapse Link を有効にするには、次の CLI コマンドを使用します。
az cosmosdb create --capabilities EnableGremlin --name MyCosmosDBGremlinDatabaseAccount --resource-group MyResourceGroup --enable-analytical-storage true
既存の Gremlin API アカウントの場合は、create
を update
に置き換えてください。
PowerShell
作成または更新の操作で EnableAnalyticalStorage true
を使用します。 また、表現スキーマの種類も選択する必要があります。 NoSQL 用 API アカウントでは、--analytical-storage-schema-type
を FullFidelity
または WellDefined
の値で使用できます。 MongoDB 用 API アカウントの場合は、常に -AnalyticalStorageSchemaType FullFidelity
を使用します。
- Synapse Link を有効にした新しい Azure Cosmos DB アカウントを作成する
- 既存の Azure Cosmos DB アカウントを更新して Synapse Link を有効にする
Azure Resource Manager テンプレート
この Azure Resource Manager テンプレートでは、SQL API の Synapse Link が有効な Azure Cosmos DB アカウントを作成します。 このテンプレートでは、分析 TTL を有効にして構成されたコンテナーと、手動または自動スケールのスループットを使用するオプションで、1 つのリージョンにコア (SQL) API アカウントを作成します。 このテンプレートをデプロイするには、readme ページで [Azure に配置する] をクリックします。
コンテナーの Azure Synapse Link を有効にする
2 番目の手順は、コンテナーまたはコレクションに対して Synapse Link を有効にすることです。 これを行うには、analytical TTL
プロパティを -1
(無期限のリテンション期間) に設定するか、正の整数 (分析ストアに保持する秒数) に設定します。 この設定は後で変更できます。 詳細については、分析 TTL でサポートされる値に関する記事を参照してください。
既存の SQL API コンテナーで Azure Synapse Link を有効にする場合は次の内容に注意してください。
- 分析ストアの自動同期プロセスの同じパフォーマンス分離が初期同期に適用されるため、OLTP ワークロードでパフォーマンスへの影響はありません。
- 分析ストアとのコンテナーの初期同期の合計時間は、データ ボリュームとドキュメントの複雑さによって異なります。 このプロセスには、数秒から数日かかる場合があります。 移行の進行状況を監視するには、Azure portal を使用してください。
- コンテナーのスループットまたはデータベース アカウントは、初期同期時間の合計にも影響します。 この移行では RU/秒は使用されませんが、使用可能な RU/秒の合計はプロセスのパフォーマンスに影響します。 環境の使用可能な RU を一時的に増やして、プロセスを高速化できます。
- Synapse Link が既存のコンテナーが有効になっている間、そのコンテナーの分析ストアにクエリを実行することはできません。 OLTP ワークロードは影響を受けないので、データの読み取りを通常の状態に維持できます。 初期同期の開始後に取り込まれたデータは、通常の分析ストアの自動同期プロセスによって分析ストアにマージされます。
Note
Azure CLI または PowerShell を使用して、既存の MongoDB API コレクションで Synapse Link を有効にできるようになりました。
Azure Portal
新しいコンテナー
Azure portal または Azure Cosmos DB Explorer にサインインします。
Azure Cosmos DB アカウントに移動して、 [データ エクスプローラー] タブを開きます。
[新しいコンテナー] を選択し、データベースの名前、コンテナー、パーティション キー、スループットの詳細を入力します。 [分析ストア] オプションをオンにします。 分析ストアを有効にすると、
analytical TTL
プロパティが既定値の -1 (無限のリテンション期間) に設定されたコンテナーが作成されます。 この分析ストアでは、レコードのすべての履歴バージョンが保持され、後で変更することができます。このアカウントで以前に Synapse Link を有効にしていない場合は、分析ストアが有効なコンテナーを作成するための前提条件であるため、これを行うように求めるメッセージが表示されます。 プロンプトが表示されたら、 [Enable Synapse Link](Synapse Link を有効にする) を選択します。 処理が完了するまでに 1 ~ 5 分かかることがあります。
[OK] を選択して、分析ストアが有効な Azure Cosmos DB コンテナーを作成します。
コンテナーが作成されたら、Data Explorer の [ドキュメント] のすぐ下にある [設定] をクリックして分析ストアが有効になっていることを確認し、 [分析ストアの Time-to-Live] オプションがオンになっているかどうかを確認します。
既存のコンテナー
Azure portal または Azure Cosmos DB Explorer にサインインします。
Azure Cosmos DB アカウントに移動して、[Azure Synapse Link] タブを開きます。
[コンテナーの Azure Synapse リンクを有効にする] セクションで、コンテナーを選択します。
コンテナーを有効にした後、Data Explorer の [Documents](ドキュメント) のすぐ下にある [設定] をクリックして分析ストアが有効になっていることを確認し、[Analytical Store Time to Live](分析ストアの Time-to-Live) オプションがオンになっているかどうかを確認します。
注意
左側のナビゲーション メニューの [統合] セクションで、[Power BI] および [Synapse Link] ウィンドウを使用して、Synapse Link をアカウントに対して有効にすることもできます。
コマンド ライン ツール
Azure CLI
次のオプションでは、Azure CLI を使用して --analytical-storage-ttl
プロパティを設定し、コンテナー内の Synapse Link を有効にします。
Azure CLI を使用して、Azure Synapse Link for Gremlin API Graph に対して Synapse Link を有効にする
Gremlin API の Synapse Link はプレビュー段階です。 Azure CLI を使用して、新規または既存の Graph 内で Synapse Link を有効にすることができます。 Gremlin API グラフに対して Synapse Link を有効にするには、次の CLI コマンドを使用します。
az cosmosdb gremlin graph create --g MyResourceGroup --a MyCosmosDBGremlinDatabaseAccount --d MyGremlinDB --n MyGraph --analytical-storage-ttl –1
既存のグラフの場合は、create
を update
に置き換えてください。
PowerShell
次のオプションでは、Azure CLI を使用して -AnalyticalStorageTtl
プロパティを設定し、コンテナー内の Synapse Link を有効にします。
Azure Cosmos DB SDK - SQL API のみ
.NET SDK
次の .NET コードでは、AnalyticalStoreTimeToLiveInSeconds
プロパティを設定して Synapse Link が有効なコンテナーを作成します。 既存のコンテナーを更新するには、Container.ReplaceContainerAsync
メソッドを使用します。
// Create a container with a partition key, and analytical TTL configured to -1 (infinite retention)
ContainerProperties properties = new ContainerProperties()
{
Id = "myContainerId",
PartitionKeyPath = "/id",
AnalyticalStoreTimeToLiveInSeconds = -1,
};
CosmosClient cosmosClient = new CosmosClient("myConnectionString");
await cosmosClient.GetDatabase("myDatabase").CreateContainerAsync(properties);
Java V4 SDK
次の Java コードでは、setAnalyticalStoreTimeToLiveInSeconds
プロパティを設定して Synapse Link が有効なコンテナーを作成します。 既存のコンテナーを更新するには、container.replace
クラスを使用します。
// Create a container with a partition key and analytical TTL configured to -1 (infinite retention)
CosmosContainerProperties containerProperties = new CosmosContainerProperties("myContainer", "/myPartitionKey");
containerProperties.setAnalyticalStoreTimeToLiveInSeconds(-1);
container = database.createContainerIfNotExists(containerProperties, 400).block().getContainer();
Python V4 SDK
次の Python コードでは、analytical_storage_ttl
プロパティを設定して Synapse Link が有効なコンテナーを作成します。 既存のコンテナーを更新するには、replace_container
メソッドを使用します。
# Client
client = cosmos_client.CosmosClient(HOST, KEY )
# Database client
try:
db = client.create_database(DATABASE)
except exceptions.CosmosResourceExistsError:
db = client.get_database_client(DATABASE)
# Creating the container with analytical store enabled
try:
container = db.create_container(
id=CONTAINER,
partition_key=PartitionKey(path='/id', kind='Hash'),analytical_storage_ttl=-1
)
properties = container.read()
print('Container with id \'{0}\' created'.format(container.id))
print('Partition Key - \'{0}\''.format(properties['partitionKey']))
except exceptions.CosmosResourceExistsError:
print('A container with already exists')
Synapse ワークスペースに接続する
Azure Synapse Link を使用して Azure Synapse Analytics Studio から Azure Cosmos DB データベースにアクセスする方法については、Azure Synapse Link に接続する方法に関する記事の手順を参照してください。
Azure Synapse Analytics を使用して分析ストアのクエリを実行する
Azure Synapse Analytics 用の Apache Spark を使用して分析ストアのクエリを実行する
Synapse Spark 3 を使用してクエリを実行する方法については、Spark 3 を使用して Azure Cosmos DB 分析ストアに対してクエリを実行する方法に関する記事の手順を参照してください。 この記事では、Synapse ジェスチャから分析ストアを操作する方法について、いくつかの例を紹介しています。 これらのジェスチャは、コンテナーを右クリックすると表示されます。 ジェスチャを使用すると、コードをすばやく生成し、ニーズに合わせて調整することができます。 また、1 回のクリックでデータを検出するのにも最適です。
Spark 2 統合の場合は、「Spark 2 を使用して分析ストアを Azure Cosmos DB クエリ」に記載されている手順を使用します。
Azure Synapse Analytics でサーバーレス SQL プールを使用して分析ストアにクエリを実行する
サーバーレス SQL プールを使用すると、Azure Synapse Link で有効になっている Azure Cosmos DB コンテナー内のデータに対してクエリと分析を行うことができます。 トランザクション ワークロードのパフォーマンスに影響を与えることなく、凖リアルタイムでデータを分析できます。 T-SQL インターフェイスを使用して分析ストアおよび統合された接続からさまざまな BI やアドホック クエリ ツールへのデータのクエリを実行するために、使い慣れた T-SQL 構文が用意されています。 詳細については、サーバーレス SQL プールを使用した分析ストアのクエリに関する記事を参照してください。
サーバーレス SQL プールを使用して Power BI のデータを分析して視覚化する
Azure Cosmos DB ポータルで統合された BI エクスペリエンスを使用して、わずか数回のクリックで Synapse Link を使用して BI ダッシュボードを構築できます。 詳細については、Synapse Link を使用して BI ダッシュボードを構築する方法に関する記事を参照してください。 この統合されたエクスペリエンスでは、Azure Cosmos DB コンテナーのために、Synapse サーバーレス SQL プールに単純な T-SQL ビューを作成します。 これらのビューに対して BI ダッシュボードを構築できます。これにより、データへの最新の変更が反映され、直接クエリを使用して、Azure Cosmos DB コンテナーにリアルタイムでクエリが実行されます。 トランザクション ワークロードへのパフォーマンスやコストの影響はなく、ETL パイプライン管理にも複雑さは伴いません。
コンテナー間の結合で高度な T-SQL ビューを使用する場合、またはインポート モードで Power BI ダッシュボードを構築する場合は、サーバーレス SQL プールを使用した Synapse Link での Azure Cosmos DB データの分析に関するページを参照してください。
ベスト プラクティスを使用してパフォーマンスを向上させる
カスタム パーティション分割
カスタム パーティション分割を使うと、分析クエリでフィルターとして一般的に使われるフィールドで分析ストア データをパーティション分割して、クエリ パフォーマンスを向上させることができます。 詳細については、カスタム パーティション分割の概要およびカスタム パーティション分割を構成する方法に関するページを参照してください。
Azure Synapse Link for Cosmos DB の Synapse SQL サーバーレスに関するベスト プラクティス
SQL サーバーレス クエリには、こちらの必須のベスト プラクティスを使用してください。
Azure Synapse Link の使用を開始する - サンプル
Azure Synapse Link の使用を開始する場合、GitHub にサンプルが用意されています。 これらは、IoT および小売のシナリオでのエンド ツー エンドのソリューションを紹介しています。 また、Azure Cosmos DB for MongoDB に対応するサンプルは、MongoDB フォルダーの下にある同じリポジトリにあります。
次のステップ
詳細については、次のドキュメントを参照してください。