Microsoft AzureのNoSQLデータベース「Cosmos DB」における実装方法を知る
Microsoft AzureのNoSQLデータベース「Cosmos DB」を使ってみよう 第3回
データベースの作成
次に、データベースを作成するための、CreateDatabaseIfNotExistsAsyncメソッドを作成します。
リスト6のコードではデータベースへのアクセスを試みて、データベースが存在しなかった場合に発生する例外、DocumentClientExceptionをキャッチし、その例外オブジェクトのHTTPステータスコードが「404(Not Found)」だった場合にデータベースを作成するようにしています。
private static async Task CreateDatabaseIfNotExistsAsync()
{
try
{
// データベースを参照する
await client.ReadDatabaseAsync(UriFactory.CreateDatabaseUri(DatabaseId));
}
catch (DocumentClientException e)
{
if (e.StatusCode == HttpStatusCode.NotFound)
{
// データベースが存在しなかったため、新規作成する
await client.CreateDatabaseAsync(new Database {Id = DatabaseId});
}
else
{
throw;
}
}
}
コレクションの作成
コレクションの作成は、CreateCollectionIfNotExistsAsyncメソッドに追加していきます。
コードの流れはデータベースの作成とほぼ同じで、コレクションへのアクセスを試みても、それが存在しなければ新たにコレクションを作成するようにしています。
private static async Task CreateCollectionIfNotExistsAsync()
{
try
{
// コレクションを参照する
await client.ReadDocumentCollectionAsync(
UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId));
}
catch (DocumentClientException e)
{
if (e.StatusCode == HttpStatusCode.NotFound)
{
// コレクションが存在しなかったため、新規作成する
await client.CreateDocumentCollectionAsync(
UriFactory.CreateDatabaseUri(DatabaseId),
new DocumentCollection {Id = CollectionId},
new RequestOptions {OfferThroughput = 400}); // OfferThroughputにはRU/sを設定する
}
else
{
throw;
}
}
}
コード中のCreateDocumentCollectionAsyncメソッドでは、第3引数で作成するコレクションのオプション情報を指定します。OfferThroughputだけは必須入力となっており、ここには前回説明したRU/sを設定する必要があります。今回は、RU/sとして指定できる最低値の400を指定しています。
初期化メソッドの修正
初期化メソッドの中に、データベースとコレクションの作成メソッドを呼び出すコードを追加します。Initializeメソッドをリスト8の通りに修正してください。
public static void Initialize()
{
client = new DocumentClient(new Uri(EndpointUrl), AuthKey);
CreateDatabaseIfNotExistsAsync().Wait();
CreateCollectionIfNotExistsAsync().Wait();
}
Program.csに移り、Mainメソッドから初期化メソッドを呼び出すようにします。
static void Main()
{
DocumentRepository.Initialize();
}
ここまで実装したところで一度アプリを起動して、データベースとコレクションが作成されるかを確認してみましょう。
Program.csを実行後、EmulatorのExplorerの画面を更新します。[Collections]の部分に、DemoDBが表示されていて、ツリーを展開するとTodoCollectionが表示されていればデータベースとコレクションの作成は完了です。
この記事は参考になりましたか?
- Microsoft AzureのNoSQLデータベース「Cosmos DB」を使ってみよう連載記事一覧
-
- Microsoft AzureのNoSQLデータベース「Cosmos DB」における運用時...
- Cosmos DBアプリで検索/更新/削除機能を実装する
- Microsoft AzureのNoSQLデータベース「Cosmos DB」における実装方...
- この記事の著者
-
WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
