開発者向け新機能: Azure Cosmos DB .NET SDK v3 の提供開始

2019年8月13日 に投稿済み

Program Manager, Azure Cosmos DB

Azure Cosmos DB チームから、Azure Cosmos DB .NET SDK バージョン 3 の一般提供が開始されたことを発表いたします。このバージョンは 7 月にリリースされました。プレビュー中にフィードバックをお寄せいただいたすべての方に感謝いたします。 

この記事では、.NET SDK v3 の開発者エクスペリエンスを向上させるために行った最新の改善について説明します。

SDK の最新バージョンは NuGet から入手できます。また、GitHub で投稿できます。

//Using .NET CLI
dotnet add package Microsoft.Azure.Cosmos

//Using NuGet
Install-Package Microsoft.Azure.Cosmos

Azure Cosmos DB とは

Azure Cosmos DB はグローバルに分散したマルチモデル データベース サービスであり、任意の Azure リージョンからデータの読み書きができます。このサービスでは、ターン キー グローバル分散、99 パーセンタイルで 10 ミリ秒未満の待機時間、99.999% の高可用性、およびスループットとストレージエラスティック スケーリングが提供されます。

Azure Cosmos DB .NET SDK バージョン 3 の新機能

SDK バージョン 3 では、新しい直観的なプログラミング モデル、ストリーム API のサポート、変更フィード プロセッサ API の組み込みサポート、パーティション分割されていないコンテナーのスケーリング機能など、使いやすさとパフォーマンスがさまざまな面で改善されています。SDK は .NET Standard 2.0 をターゲットとしており、GitHub でオープンソース化されています。

新しいワークロードの場合、最善のエクスペリエンスを得るには、最新の 3.x SDK で開始することをお勧めします。現時点では、差し当たり .NET SDK バージョン 2 を終了する予定はありません。

.NET Standard 2.0 をターゲットに

既存の Azure Cosmos DB .NET Framework と .NET Core SDK を、.NET Standard 2.0 をターゲットとする 1 つの SDK に統合しました。これで、.NET Standard 2.0 ( .NET Framework 4.6.1 以降と .NET Core 2.0 以降の両方のアプリケーションを含む) を実装するあらゆるプラットフォームで、.NET SDK を使用できるようになりました。

GitHub のオープンソース

Azure Cosmos DB .NET v3 SDK はオープンソースです。マイクロソフト チームは開発をオープンに行う予定です。そのため、マイクロソフトではプル要求をお待ちしております。GitHub で、皆様から寄せられた問題を記録し、フィードバックを追跡していく予定です。

fluent API サーフェスでの新しいプログラミング モデル

プレビュー開始以降、より直観的な開発者エクスペリエンスを実現するために、オブジェクト モデルを改善し続けてきたマイクロソフトは、DocumentClient に代わる新しい最上位レベルの CosmosClient クラスを作成し、そのメソッドをモジュラー database および container クラスに分割しました。マイクロソフトの使いやすさに関する調査では、この階層によって、開発者が API サーフェスをさらに学習および発見しやすくなることがわかっています。

また、fluent ビルダー API を追加することで、CosmosClientContainer、および ChangeFeedProcessor クラスをより簡単に作成できるようにしました。

GitHub のすべてのサンプルをご覧ください。

ストリーム API でハイ パフォーマンスを実現

以前のバージョンの Azure Cosmos DB .NET SDK では、ネットワークとの間で行き来するデータが常にシリアル化および逆シリアル化されました。ASP.NET Web API のコンテキストでは、これがパフォーマンスのオーバーヘッドにつながることがあります。新しいストリーム API では、項目またはクエリを読み取るときに、新しい GetItemQueryStreamIterator メソッドと ReadItemStreamAsync メソッドを使用して、ストリームを取得し、逆シリアル化のオーバーヘッドなしで応答に渡すことができます。詳細については、GitHub のサンプルを参照してください。

テストが容易で拡張性が高い

.NET SDK バージョン 3 では、すべての API がモックを作成できるため、単体テストが簡単になります。

また、拡張可能な要求パイプラインが導入され、要求をサービスに送信するときに実行されるカスタム ハンドラーを渡すことができます。たとえば、これらのハンドラーを使用すれば、Azure Application Insights で要求情報をログに記録したり、カスタム再試行ポリシーを定義したりできます。また、よく要求される別の開発者機能、カスタム シリアライザーを渡すこともできます。

SDK から直接変更フィード プロセッサを使用

Azure Cosmos DB で最も人気のある機能の 1 つが変更フィードです。これは、イベント ソーシング アーキテクチャ、ストリーム処理、データ移動シナリオ、および具体化されたビューの構築でよく使用されます。変更フィードを使用すると、コンテナーでの変更をリッスンし、レコードの作成または更新時に、そのレコードの増分フィードを取得できます。

新しい SDK には変更フィード プロセッサ API が組み込みでサポートされています。つまり、ご自身のアプリケーションの構築と変更フィード プロセッサ実装に、同じ SDK を使うことができます。以前は、異なる変更フィード プロセッサ ライブラリを使用する必要がありました。

開始するには、「Azure Cosmos DB の変更フィード プロセッサ」を参照してください。

パーティション分割されていないコンテナーのスケーリング機能

パーティション分割されていない、つまり "固定" されたコンテナーを利用しているお客様からは、10 GB のストレージおよび 10,000 RU/秒のプロビジョニング スループット制限を超えて、コンテナーを拡張したいという声が多数寄せられました。SDK バージョン 3 を使用するとそれが可能です。新しいコンテナーを作成してデータを移動する必要はありません。

パーティション分割されていないすべてのコンテナーに、システムパーティション キー "_partitionKey" が追加されました。新しい項目を書き込むときに、これに値を設定することができます。_partitionKey 値の使用し始めると、お使いのコンテナーのストレージ ボリュームが 10 GB を超えた時点で、Azure Cosmos DB によってそのコンテナーがスケーリングされます。コンテナーをそのまま保持したい場合は、PartitionKey.None 値を使用して、パーティション キーなしで既存のデータを読み書きします。

スループットをスケーリングする API が簡単に

プロビジョニング スループット (RU/秒) をスケールアップおよびスケールダウンするための API のデザインが変更されました。ReadThroughputAsync メソッドを使用して現在のスループットを取得し、ReplaceThroughputAsync を使用して変更できます。サンプルをご覧ください。

開始する

新しい Azure Cosmos DB .NET SDK バージョン 3 の使用を開始するには、新しい NuGet パッケージをプロジェクトに追加してください。開始するには、新しいチュートリアルクイックスタートに従ってください。皆様からのフィードバックをぜひお聞かせください。GitHub リポジトリで問題をログ記録できます。

Twitter の @AzureCosmosDB をフォローして、最新の Azure #CosmosDB ニュースや機能の情報を常に把握してください。Azure Cosmos DB と新しい .NET SDK をさらにご活用いただければ幸いです。