DocumentDB データのクエリおよび編集エクスペリエンスを改良

このポストは、6 月 11 日に投稿された Querying and Editing DocumentDB Data Just Got Better の翻訳です。 DocumentDB に関する以下の機能強化により、Azure プレビュー ポータルでのクエリ、ドキュメント、サーバー側プログラミングのエクスペリエンスと効率性が向上しました。 Query Explorer の改良 Document Explorer の改良 Script Explorer の追加   この記事では、これらの新機能と機能強化の詳細について説明します。 Query Explorer の改良 Query Explorer (英語) で複数のクエリの作成や貼り付けが可能になったほか、クエリを選択して強調表示し [Run query] をクリックすると任意のクエリのみ実行できるようになりました。同時に複数のクエリを実行することはできませんのでご注意ください。 また、構文の強調表示機能が拡張され、ARRAY_CONTAINS や CEILING、IS_BOOL などの DocumentDB の組み込み関数がサポートされるようになりました。DocumentDB の組み込み関数の詳細については、こちらのページを参照してください。 このほかにも、ファイルの内容を Query Explorer に読み込めるようになり、保存されているクエリをまとめて簡単に読み込むことができます。 Document Explorer の改良 Document Explorer (英語) でクエリから返される結果の数を指定できるようになりました…

0

DocumentDB へのデータのインポートがより高速、簡単に

このポストは、6 月 2 日に投稿された Importing Data to DocumentDB Just Got Faster and Easier の翻訳です。 Azure DocumentDB Data Migration Tool は、Azure の NoSQL ドキュメント データベースである DocumentDB にデータをインポートするためのオープン ソース ソリューションです。このツールの最新リリースでは、インポート中にデータを複数のコレクションにパーティション分割することにより、さまざまなソースから大規模なデータをさらに高速にインポートできるようになりました。 また、現在サポートされている CSV ファイルのインポートとインポート エラーのログ記録の機能がさらに強化されました。各データ ソース向けのコマンド ラインのサンプルなど、このツールの使用方法の詳細や新機能の概要については、私が執筆したこちらの記事 (英語) をお読みください。 パーティション分割のサポート DocumentDB Data Migration Tool で、複数の DocumentDB コレクションに対する読み取りと書き込みがサポートされるようになりました。複数のコレクションから読み取る場合は、正規表現を使用して 1 つまたは複数のコレクションを指定します。 インポート時に複数のコレクションにわたってデータをパーティション分割する場合は、既存の複数のコレクション (コレクションを新規作成する場合は、作成時にツールが使用する命名パターン*) と、パーティション キーとして使用するプロパティを指定します。 CSV 形式のサポートの強化 CSV ファイルをインポートする際に、CSV ファイル内の引用符で囲まれていない情報の型をツールが推定します…

0

DocumentDB の新しいインポート オプション

このポストは、5 月 5 日に投稿された New DocumentDB Import Options の翻訳です。 4 月 8 日に、さまざまなソースから DocumentDB にデータをインポートできるオープン ソース ソリューション、Azure DocumentDB Data Migration Tool がリリースされました。このツールでは主に次のソースからデータをインポートすることができます。 JSON ファイル MongoDB SQL Server CSV ファイル DocumentDB コレクション そして今回、さらに 2 つのインポート オプションがサポートされました。Azure Table Storage と、JSON/CSV/MongoDB の各エクスポート ファイルの URL です。 Azure Table Storage Azure Table Storage から DocumentDB へデータをインポートできるようになりました。接続文字列とテーブル名を指定するだけで、Azure Table のすべてのエントリをインポートできます。また、以下のオプションを利用して、インポート対象のデータを細かく指定することもできます。 [Filter] (フィルター)…

0

サーバーサイド JavaScript で Azure DocumentDB のアプリケーションのパフォーマンスを大幅に向上

このポストは、4 月 23 日に投稿された Boost Your Application’s Performance with Server-Side JavaScript in Azure DocumentDB の翻訳です。 JavaScript を最新の T-SQL として統合 Azure DocumentDB のデータベース エンジン内で JavaScript ロジックのトランザクションをネイティブに実行できることはご存知でしょうか? JavaScript を最新の T-SQL として使用すると、機能豊富で使い慣れたインターフェイスをビジネス ロジックに実装することができます。ロジックはストアド プロシージャ、トリガー、ユーザー定義関数 (UDF) の形で記述することができます。今回は DocumentDB がストアド プロシージャをどのように解釈するかについて説明します。 パフォーマンスの高いバッチ処理とシーケンス処理 ストアド プロシージャの大きなメリットは、複雑なバッチ処理やシーケンス処理を、データの格納場所に近いデータベース エンジン内で直接実行できることです。ストアド プロシージャでは、挿入、更新、削除などの処理をグループ化およびシーケンス化し、まとめて実行します。このため、バッチ処理やシーケンス処理でのネットワーク トラフィックの遅延コストを完全に削減できます。   一連のデータベース処理を実行する場合   ストアド プロシージャで一連の処理を実行する場合 また、ストアド プロシージャの登録時に暗黙的にバイト コード形式にプリコンパイルされるため、呼び出すたびにスクリプトをコンパイルする必要がないというメリットもあります。JSON は Javascript 言語形式のシステムに属し、DocumentDB のストレージの基本単位であるため、JSON ドキュメントをバッファー…

0

Azure DocumentDB の提供地域をアジアと米国で拡大、アカウント単位の制限も緩和

このポストは、2 月 3 日に投稿された Azure DocumentDB – New Asia, US regions, and increased account limits の翻訳です。 マイクロソフトでは Azure DocumentDB の機能拡張に積極的に取り組んでおり、今回、下記の変更を実施しました。   提供地域の拡大: DocumentDB をご利用いただけるリージョンの数が 2 倍に増加しました。 アカウントとドキュメントの制限緩和: 1 アカウントあたりの能力単位数が増え、またドキュメントのサイズの上限もこれまでの 2 倍に引き上げられました。   新しい提供地域 新たに東アジア、東南アジア、および米国東部の各 Azure リージョンで DocumentDB をプロビジョニングできるようになりました (これまでは米国西部、北ヨーロッパ、西ヨーロッパでの提供でした)。今後も引き続き提供地域の拡大に努め、DocumentDB のデータの格納先の選択肢を広げ、柔軟性を高めてまいります。DocumentDB の利用を希望される Azure リージョンがありましたら、Microsoft Azure DocumentDB のフォーラム (英語) までお寄せください。   アカウントとドキュメントの制限緩和 今回、ドキュメントの最大サイズが再度引き上げられ、256 KB から 512 KB…

0

DocumentDB で SQL のパラメーター化が可能に

このポストは、1 月 14 日に投稿された Announcing SQL Parameterization in DocumentDB の翻訳です。 このたび、Azure DocumentDB の REST API と SDK において、パラメーター化された SQL クエリがサポートされました。この機能により、ユーザーはパラメーター化された SQL クエリを利用できるようになります。SQL をパラメーター化すると、処理の信頼性が向上すると共にユーザーによる入力が不要になるため、「SQL インジェクション」による意図しないデータ漏洩を予防することができます*。 では、.NET SDK を使用したサンプルを見ていきましょう。単純な SQL 文字列と LINQ 式のほかに、新しい SqlQuerySpec クラスを付け加えています。このクラスを使用してパラメーター化されたクエリを作成します。 次のサンプルは、ユーザー指定のパラメーターが 1 つ存在する、“Books” コレクションに対するクエリのサンプルです。パラメーターで著者名を指定しています。 IQueryable queryable = client.CreateDocumentQuery( collectionSelfLink, new SqlQuerySpec { QueryText = “SELECT * FROM books b WHERE (b.Author.Name =…

0

Azure DocumentDB Java SDK の概要

このポストは、1 月 6 日に投稿された Introducing the Azure DocumentDB Java SDK の翻訳です。 マイクロソフトはこのたび、Azure DocumentDB Java SDK をリリースしました。この Java SDK により、さまざまな DocumentDB リソースの作成、読み取り、更新、削除を簡単に行えるようになると共に、詳細な構成設定の管理が可能になります。 ソース コードはすべて Github (英語) からダウンロードできます。 git clone git://github.com/Azure/azure-documentdb-java.git Azure Documentdb Java SDK は完全なオープンソースです。皆様のご協力を心よりお待ちしております。 Azure プロジェクトへの参加に関するガイドライン (英語) に記載された説明をご参照ください。 また、Maven を使用して、プロジェクトにすぐに使用できる最新のバイナリを入手することも可能です。 <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-documentdb</artifactId> <version>0.9.0</version> </dependency> マイクロソフトが提供する DocumentDB は、クラウド内で完全に管理された NoSQL ドキュメント データベース サービスです。詳細は、こちらをご覧ください。 なお、DocumentDB を使用して Java…

0

Azure DocumentDB においてマルチテナント アプリケーションの規模を拡大する

このポストは、12 月 3 日に投稿された Scaling a Multi-Tenant Application with Azure DocumentDB の翻訳です。 テナント配置と負荷分散のベスト プラクティス はじめに 「Azure DocumentDB 上にどのようにマルチテナント アプリケーションを設計すればよいのか」という質問をよく受けます。これには多くの答えがありますが、最適な答えがどれかはそれぞれのアプリケーションのシナリオによって異なります。 大まかに言うと、テナントの規模に応じて、データベース単位で分割するか、コレクション単位で分割するかを選択します。テナント データが比較的小さく、テナント数が比較的多い場合は、アプリケーションに必要な全体のリソースを少なくするために、同一のコレクション内に複数のテナントのデータを保管することをお勧めします。テナントはドキュメントのプロパティで識別でき、テナント固有のデータはフィルター クエリを発行して取得できます。DocumentDB のユーザーとアクセス許可 (英語) を使用して、テナント データを分離したり、承認キーを通じてリソースレベルでアクセスを制限したりすることもできます。 テナントが比較的大きい場合や、専用のリソースを必要とする場合、またはさらなる分離が必要な場合は、各テナントに専用のコレクションまたはデータベースを割り当てることができます。いずれの場合も、アプリケーションのデータ ストアを拡大する際の面倒な処理の大部分は DocumentDB によって自動で行われます。 この記事では、アプリケーションの要件に合わせて優れた設計を行うための考え方と戦略を説明します。 コレクションとは データのパーティション分割について深く踏み込む前に、コレクションとは何か、何がほかと違うのかを理解しておくことが重要です。 既にご存知かもしれませんが、コレクションは、JSON ドキュメントのコンテナーです。コレクションは、DocumentDB でクエリおよびトランザクションを実行するうえでのパーティションの単位および境界でもあります。各コレクションは、予約されている量のスループットを提供します。アプリケーションを拡大するには、ストレージとスループットのどちらを拡大する場合も、コレクションを追加してそれらにドキュメントを分散します。 まず、必ず理解していただきたいのは、コレクションはテーブルではないという点です。コレクションはスキーマを強制しません。つまり、異なるスキーマを持つさまざまな種類のドキュメントを同じコレクションに保管できます。種類の異なるエンティティも、ドキュメントに「type」属性を追加するだけで管理できます。 他のドキュメント データベースとは異なり、規模の拡大やパフォーマンス向上のために多数のコレクションを持ってもまったく問題ありません。ただし、コスト削減のためにコレクションを再利用するほうがよいでしょう。 DocumentDB によるシャーディング DocumentDB アプリケーションは、データを水平方向にパーティション分割することで、ストレージとスループットの両面においてほぼ無限に拡大できます。この考え方は、一般的にシャーディングと呼ばれます。 シャーディングは、大規模な Web アプリケーションで高いスケーラビリティを実現するための標準的なアプリケーション パターンです。トランザクション処理のメリットを利用するアプリケーションでは、キーに基づいてデータを慎重に分割する必要があり、各パーティションはトランザクション ドメイン (つまり、コレクション) に収まるように十分に小さくなければなりません。シャーディングされたアプリケーションは、データが複数のパーティションまたはトランザクション ドメインにわたって分散されていることを認識する必要があり、シャード キーに基づいてパーティションを選択し、そのパーティションとやり取りするためのロジックも必要となります。  複数のデータベースおよびコレクションにシャーディングされた DocumentDB アプリケーション…

0