新しい Azure #CosmosDB JavaScript SDK 2.0 のパブリック プレビュー開始

2018年8月8日 に投稿済み

Program Manager, Azure Cosmos DB

Azure Cosmos DB チームは、JavaScript SDK for SQL API バージョン 2.0 RC のパブリック プレビューの開始を発表いたします。

一般提供を開始する前に、この RC について皆様からのフィードバックをお待ちしています。ぜひお試しいただき、ご意見をお寄せください。npm を使用して最新バージョンを入手するには、次のようにします。

npm install azure cosmos

Azure Cosmos DB とは何ですか?

Azure Cosmos DB は、グローバル分散型のマルチモデル データベース サービスです。このサービスでは、ターン キー グローバル分散、99 パーセンタイルで 10 ミリ秒未満の待機時間、スループットとストレージのエラスティック スケーリングが提供されます。

SQL API の場合、JavaScript プロジェクトと Node.js プロジェクトから Azure Cosmos DB に対する開発を行うことができるよう、JavaScript SDK がサポートされています。SDK バージョン 2.0 はすべて TypeScript で記述されていますが、オブジェクト モデルが再設計されて、promises に対するサポートが追加されました。これらの更新プログラムの詳細をご確認ください。

新しいオブジェクト モデル

ユーザーからのフィードバックに基づいて、オブジェクト モデルが再設計されています。Cosmos DB との対話や、Cosmos DB に対する操作の実行が簡単になりました。 

以前のバージョンの JavaScript SDK に親しみのある方は、API サーフェス全体が DocumentDBClient の後に続いていることにお気付きでしょう。以前の設計では、メソッドのエントリ ポイントを簡単に見つけることができましたが、代償として、以下に示すように IntelliSense エクスペリエンスは整理されていませんでした。

DocumentDBClient

また、データベース、コレクション、ドキュメント以外での操作は、そのリソースの URL を各メソッドで参照する必要があったため、実行しにくかったというフィードバックを受け取りました。 

これに対処するため、DocumentDBClient に代わる新しい最上位レベルの CosmosClient クラスを作成し、そのメソッドをモジュラー Database、Container、Items クラスに分割しました。

たとえば、新しい SDK では、新しいデータベースやコンテナーを作成して、それに項目を追加するという処理すべてを 10 行のコードで実行できます。

新しいデータベースの作成

これは “ビルダー” パターンと呼ばれ、Cosmos DB のリソース階層に基づいてリソースを参照できますが、これは人が脳で Cosmos DB について考える方法に似ています。たとえば、項目を作成するには、まずそのデータベースとコンテナーを参照してから items.create() を呼び出します。

コンテナーと項目

また、Cosmos DB では複数の API モデルがサポートされるため、コンテナーと項目の概念を SDK に導入して、以前の "コレクションとドキュメント" の概念を置き換えました。つまり、以前 "コレクション" と呼ばれていたものは、"コンテナー" と呼ばれるようになりました。

アカウントには 1 つまたは複数のデータベースを含めることができ、データベースは 1 つまたは複数のコンテナーで構成されています。API に応じて、コンテナーはコレクション (MongoDB API 用 SQL または Azure Cosmos DB)、グラフ (Gremlin API)、テーブル (テーブル API) のいずれかとしてプロジェクションされます。

コンテナーと項目

promises のサポート

最後に、promises のフル サポートが追加されたため、自身でカスタム コードを記述して SDK をラップする必要がなくなりました。SDK に対して直接 async/await を使用できるようになりました。

違いを見てみましょう。以前の SDK では、新しいデータベース、コレクションを作成し、ドキュメントを追加するには、次のようにしていました。

SDK

新しい SDK では、以下に示すように、async 関数の内側で Cosmos DB に対する呼び出しに直接 await を使用できます。

また、データベースおよびコンテナーに便利なメソッド createIfNotExists() も追加されました。これにより、データベースを読み取り、状態コードを確認し、存在しない場合は作成するためのロジックがラップされます。

新しい SDK を使用した場合の同じ機能を以下に示します。

promisesNewImageUseThisOne

オープン ソース モデル

Azure Cosmos DB JavaScript SDK はオープン ソースです。Microsoft チームはすべての開発を公に行うつもりです。その目的で、GitHub で問題を記録し、フィードバックを追跡し、PR を受け入れたいと思っています。

概要

この新しい SDK を使用することにより、開発者のエクスペリエンスが向上することを期待しています。使用を開始するには、クイック スタート ガイドをご確認ください。皆様からのフィードバックをぜひお聞かせください。電子メールで cosmosdbsdkfeedback@microsoft.com まで送信するか、GitHub リポジトリに問題を記録してください。

npm install azure cosmos

Twitter の @AzureCosmosDB をフォローして、最新の Azure #CosmosDB ニュースや機能の情報を常に把握してください。Azure Cosmos DB を利用して構築されたものを見られることを、本当に楽しみにしています。