Important
99.999% 可用性サービス レベル アグリーメント (SLA)、インスタント 自動スケール、および複数のリージョン間の自動フェールオーバーを使用した 大規模 なシナリオ向けのデータベース ソリューションをお探しですか? Azure Cosmos DB for NoSQL について考えてみましょう。
オンライン分析処理 (OLAP) グラフを実装するか、既存の Apache Gremlin アプリケーションを移行しますか? Microsoft Fabric で Graph を検討してください。
Gremlin クエリ
Gremlin クエリの効率を評価する方法
executionProfile() というプレビュー手順を利用し、クエリ実行プランを分析できます。 このステップは、Gremlin クエリの末尾に追加する必要があります。 たとえば、g.V('example').out('relationship') クエリの末尾にステップを追加すると、g.V('example').out('relationship').executionProfile() のようになります。
プロファイルの出力には、頂点オブジェクト、エッジ オブジェクト、および作業データ セットのサイズの取得に費やされた時間が表示されます。 この出力は、Azure Cosmos DB クエリの標準コスト測定に関連しています。
その他のよく寄せられる質問
グラフ データベースでクエリを実行するとき、RU/秒はどのように課金されますか。
すべてのグラフ オブジェクト、頂点、エッジは、バックエンドで JSON ドキュメントとして表示されます。 Gremlin クエリでは、一度に 1 つまたは複数のグラフ オブジェクトを変更できます。コストは、クエリによって処理されるオブジェクトとエッジに直接依存します。 このプロセスは、他のすべての Azure Cosmos DB API の場合と同じように機能します。
RU 料金は、結果セットではなく、トラバーサルの作業データ セットによって異なります。 クエリが結果として 1 つの頂点を取得するが、途中で他の複数のオブジェクトを走査する必要がある例を考えてみましょう。 この例では、コストは、結果の頂点の計算に関連するすべてのグラフ オブジェクトに基づいています。
Azure Cosmos DB for Apache Gremlin でグラフ データベースが持つ最大スケールは何ですか?
Azure Cosmos DB では、水平パーティション分割を使用して、必要に応じてストレージとスループットを自動的にスケーリングします。 コンテナー内のパーティションの数によって、その最大スループットとストレージ容量が決まります。 大規模なパフォーマンスを最適化するには、Gremlin コンテナー用 API の特定のガイドラインに従ってください。 パーティション分割とベスト プラクティスの詳細については、[Azure Cosmos DB でのパーティション分割に関する記事] を参照してください。
C#/.NET 開発の場合、Microsoft.Azure.Graphs パッケージまたは Gremlin.NET を使用するべきですか。
Azure Cosmos DB for Apache Gremlin は、オープンソース ドライバーをサービスのメイン コネクタとして使用します。 そのため、Apache でサポートされているドライバーを使用することをお勧めします。
Gremlin ドライバーを利用したインジェクション攻撃はどのように防ぎますか。
ほとんどのネイティブ Apache Gremlin ドライバーでは、クエリ実行用のパラメーターのディクショナリを提供するオプションを使用できます。 この機能は、 Gremlin.Net および gremlin (Node.js) ライブラリの両方でサポートされています。
"Gremlin Query Compilation Error: Unable to find any method" (Gremlin クエリ コンパイル エラー: メソッドが見つかりません) エラーが表示されるのはなぜですか。
Azure Cosmos DB for Apache Gremlin では、Gremlin のサーフェス領域のサブセットがサポートされています。 サポートされている手順の詳細については、 Gremlin のサポート 記事を参照してください。
このエラーを解決するには、サポートされている手順を使用して Gremlin クエリを書き換えます。Azure Cosmos DB には、すべての基本的な Gremlin 機能が用意されています。
"WebSocketException: The server returned status code '200' when status code '101' was expected" (WebSocketException: 状態コード '101' が予想されるとき、サーバーから '200' が返されました) エラーが表示されるのはなぜですか。
このエラーはおそらく、間違ったエンドポイントが使用されているときにスローされます。
このエラーを生成するエンドポイントには、次のパターンがあります: https://<account-name>.documents.azure.com:443/。 このエンドポイントは、実際にはグラフ データベースのドキュメント エンドポイントです。
使用する正しいエンドポイントは Gremlin エンドポイントであり、形式は https://<account-name>.gremlin.cosmosdb.azure.com:443/ です。
"RequestRateIsTooLarge" エラーが表示されるのはなぜですか。
このエラーは、秒あたりで割り当てられている要求ユニットではクエリに十分なサービスを提供できないことを意味します。 このエラーは、すべての頂点を取得するクエリを実行すると表示されます。
g.V()
このクエリでは、グラフからすべての頂点を取得するように試行されます。 そのため、このクエリのコストは、少なくとも要求ユニット (RU) の点で頂点の数と同じです。 このクエリに対処するには、1 秒あたりの要求ユニット数 (RU/秒) 設定を調整する必要があります。
Gremlin ドライバーの接続が最後には切断されます。なぜですか。
Gremlin 接続は WebSocket 接続経由で行われます。 WebSocket 接続には特定の有効期間はありませんが、Azure Cosmos DB for Apache Gremlin は、非アクティブ状態が 30 分続くとアイドル状態の接続を終了します。
ネイティブ Gremlin ドライバーで Fluent API 呼び出しを使用できません。なぜですか。
Azure Cosmos DB for Apache Gremlin では、Fluent API 呼び出しはまだサポートされていません。 Fluent API 呼び出しは、バイトコード サポートと呼ばれる内部書式設定機能に依存します。これは、Azure Cosmos DB for Apache Gremlin では現在提供されていません。 このため、最新の Gremlin-JavaScript ドライバーもサポートされていません。
クエリの要求ユニットの料金を確認するにはどうすればよいですか?
Azure Cosmos DB for Apache Gremlin クエリの要求ユニット (RU) 料金は、次のいずれかの方法で確認できます。
Azure ポータルを使用する
Azure portal にサインインします。
新しい Azure Cosmos DB for Apache Gremlin アカウントを作成 してデータをシード処理するか、既にデータが含まれている既存のアカウントを選択します。
[データ エクスプローラー] ウィンドウに移動し、作業するコンテナーを選択します。
有効なクエリを入力し、[ Gremlin クエリの実行] を選択します。
クエリ統計を選択して、実行した要求の実際の要求料金を表示します。
.NET ソフトウェア開発キット (SDK) を使用する
クエリを実行して、
ResultSet<>型のオブジェクトとして結果を取得します。ResultSet<dynamic> results = client.SubmitAsync<dynamic>("g.V().count()").Result;StatusAttributes配列とx-ms-request-chargeインデクサーを使用して、結果から要求料金を取得します。double requestCharge = (double)results.StatusAttributes["x-ms-request-charge"];
Java SDK の使用
クエリを実行して、
ResultSet型のオブジェクトとして結果を取得します。ResultSet results = client.submit("g.V().count()");statusAttributesメソッドとx-ms-request-chargeキーを使用して、結果から要求料金を取得します。Map<String, Object> attributes = results.statusAttributes(); Double requestCharge = (Double) attributes.get("x-ms-request-charge");
要求の料金は、Gremlin 用 API によって返される応答ヘッダー内の x-ms-request-charge キーで確認できます。