DFE 使用する Neptune の統計の管理 - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DFE 使用する Neptune の統計の管理

注記

のサポート openCypher は、Neptune のDFEクエリエンジンによって異なります。

DFE エンジンは Neptune エンジンリリース 1.0.3.0 のラボモードで最初に利用可能になり、Neptune エンジンリリース 1.0.5.0 以降、デフォルトで有効になりましたが、クエリヒントと openCypher サポートでのみ使用できるようになりました。

Neptune エンジンリリース 1.1.1.0 以降、DFEエンジンはラボモードになくなり、neptune_dfe_query_engineインスタンスの DB パラメータグループのインスタンスパラメータを使用して制御されるようになりました。

DFE エンジンは、Neptune グラフ内のデータに関する情報を使用して、クエリ実行を計画するときに効果的なトレードオフを行います。この情報は、クエリ計画を導くことができる、いわゆる特性セットと述語統計を含む統計の形式をとります。

エンジンリリース 1.2.1.0 以降、 GetGraphSummaryAPIまたは summaryエンドポイントを使用して、これらの統計からグラフに関する概要情報を取得できます。

これらのDFE統計は現在、グラフ内のデータの 10% 以上が変更されるか、最新の統計が 10 日以上経過すると再生成されます。ただし、これらのトリガーは将来、変更される可能性があります。

注記

統計の生成は、T3 および T4g インスタンスでは無効です。それらのインスタンスタイプのメモリ容量を超える可能性があるためです。

DFE 統計の生成は、次のいずれかのエンドポイントを使用して管理できます。

  • https://your-neptune-host:port/rdf/statistics ( の場合SPARQL)。

  • https://your-neptune-host:port/propertygraph/statistics(Gremlin および の場合openCypher)、およびその代替バージョン: https://your-neptune-host:port/pg/statistics

注記

エンジンリリース 1.1.1.0 の時点で、Gremlin 統計エンドポイント (https://your-neptune-host:port/gremlin/statistics) は廃止され、propertygraph または pg エンドポイントが優先されます。下位互換性のために引き続きサポートされていますが、将来のリリースで削除される可能性があります。

エンジンリリース 1.2.1.0 以降、SPARQL統計エンドポイント (https://your-neptune-host:port/sparql/statistics) はrdfエンドポイントを優先して廃止されています。下位互換性のために引き続きサポートされていますが、将来のリリースで削除される可能性があります。

以下の例では、 $STATISTICS_ENDPOINT はこれらのエンドポイント のいずれかを表しますURLs。

注記

DFE 統計エンドポイントがリーダーインスタンス上にある場合、処理できるリクエストはステータスリクエスト のみです。その他のリクエストは、ReadOnlyViolationException で失敗します。

DFE 統計生成のサイズ制限

現在、次のいずれかのサイズ制限に達すると、DFE統計の生成は停止します。

  • 生成する特性セットの数は 50,000 を超えることはできません。

  • 生成する述語統計の数は 100 万を超えることはできません。

これらの制限は変更される可能性があります。

DFE 統計の現在のステータス

DFE 統計の現在のステータスは、次のcurlリクエストを使用して確認できます。

curl -G "$STATISTICS_ENDPOINT"

ステータスリクエストに対する応答には、以下のフィールドが含まれています。

  • status– リクエストのHTTPリターンコード。リクエストが成功した場合、コードは 200 です。共通エラーリストについては、一般的なエラー を参照してください。

  • payload:

    • autoCompute— (ブール値) 統計情報の自動生成が有効になっているかどうかを示します。

    • active– (ブール値) DFE統計生成がまったく有効かどうかを示します。

    • statisticsId — 現在の統計生成の実行の ID を報告します。 -1 の値は統計が生成されていないことを示します。

    • date– DFE統計が最後に生成されたUTC時刻。8601 ISO 形式で表示されます。

      注記

      エンジンリリース 1.2.1.0 より前は、これは分単位の精度で表されていましたが、エンジンリリース 1.2.1.0 以降は、ミリ秒の精度で表されます (例: 2023-01-24T00:47:43.319Z)。

    • note— 統計情報が無効な場合の問題に関するメモ。

    • signatureInfo — 統計で生成された特性セットに関する情報を含みます (エンジンリリース 1.2.1.0 より前は、このフィールドは summary という名前でした)。これらは通常、直接的に実行できるものではありません。

      • signatureCount— すべての特性セットにおけるシグニチャの総数。

      • instanceCount— 特性セットインスタンスの合計数。

      • predicateCount— 一意の述語の合計数。

統計が生成されていない場合のステータスリクエストに対する応答は、次のようになります。

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }

DFE 統計が利用可能な場合、レスポンスは次のようになります。

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }

DFE 統計サイズ制限 を超えたなど、統計の生成が失敗した場合、レスポンスは次のようになります。

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }

DFE 統計の自動生成の無効化

デフォルトでは、 を有効にすると、DFE統計の自動生成が有効になりますDFE。

自動生成は、次のように無効にできます。

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'

リクエストが成功した場合、HTTPレスポンスコードは 200で、レスポンスは です。

{ "status" : "200 OK" }

自動生成が無効になっていることを確認するには、ステータスリクエストを発行し、レスポンス内で autoCompute フィールドが false に設定されていることを確認します。

統計の自動生成を無効にしても、進行中の統計計算は終了しません。

DB クラスターのライターインスタンスではなくリーダーインスタンスへの自動生成を無効にするリクエストを行うと、リクエストは 400 のHTTPリターンコードで失敗し、次のような出力になります。

{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }

他の共通エラーリストについては、一般的なエラーを参照してください。

DFE 統計の自動生成の再有効化

デフォルトでは、 を有効にすると、DFE統計の自動生成は既に有効になっていますDFE。自動生成を無効にすると、後で次のようにして再度有効にすることができます。

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'

リクエストが成功した場合、HTTPレスポンスコードは 200で、レスポンスは です。

{ "status" : "200 OK" }

自動生成が無効になっていることを確認するには、ステータスリクエストと確認してレスポンス内で autoCompute フィールドが true に設定されていることを確認します。

DFE 統計の生成を手動でトリガーする

DFE 統計の生成は、次のように手動で開始できます。

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'

リクエストが成功した場合、出力は次のようになります。HTTP戻りコードは 200 です。

{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }

出力の statisticsId には、現在発生している統計生成の実行の ID が表示されます。リクエストの時点で実行がすでに処理中だった場合、リクエストは新しい実行を開始するのではなく、その実行の ID を返します。一度に実行できる統計生成は 1 つのみです。

DFE 統計の生成中にフェイルオーバーが発生した場合、新しいライターノードは最後に処理されたチェックポイントをピックアップし、そこから実行される統計を再開します。

StatsNumStatementsScanned CloudWatch メトリクスを使用して統計計算をモニタリングする

StatsNumStatementsScanned CloudWatch メトリクスは、サーバーが起動してから統計計算のためにスキャンされたステートメントの合計数を返します。これは、各統計計算スライスで更新されます。

統計計算がトリガーされるたびに、この数は増加し、計算が行われていないときは一定のままです。時間の経過に伴いStatsNumStatementsScannedのプロットを見ると、統計計算がいつ行われたか、どのくらいの速さであったかがはっきりわかります。

StatsNumStatementsScanned メトリクス値のグラフ

計算が行われているとき、グラフの傾きはどのくらい速いかを示します(傾斜が急であるほど、より速い統計計算となります)。

グラフが単に 0 のフラットラインである場合、統計機能は有効になっていますが、統計情報はまったく計算されていません。統計機能が無効になっている場合、または統計計算をサポートしていないエンジンバージョンを使用している場合は、StatsNumStatementsScanned は存在しません。

前述したように、統計 を使用して統計計算を無効にすることはできますがAPI、それを無効にしておくと統計が最新でなくなる可能性があり、エンジンのクエリプランの生成が悪くなる可能性がありますDFE。

の使用方法については、Amazon を使用した Neptune のモニタリング CloudWatch「」を参照してください CloudWatch。

DFE 統計エンドポイントでの AWS Identity and Access Management (IAM) 認証の使用

DFE 統計エンドポイントには、awscurl または HTTPSおよび で動作するその他のツールを使用して、IAM認証を使用して安全にアクセスできますIAM。適切な認証情報を設定する方法については、「を一時的な認証情報awscurlで使用して、IAM認証を有効にして DB クラスターに安全に接続する」を参照してください。設定が完了したら、次のようなステータスリクエストを行うことができます。

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db

または、 という名前request.jsonのJSONファイルを作成して、以下を含めることができます。

{ "mode" : "refresh" }

その後、次のように統計情報の生成を手動で開始できます。

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db \ -X POST -d @request.json

DFE 統計の削除

統計エンドポイントにHTTPDELETEリクエストを行うことで、データベース内のすべての統計を削除できます。

curl -X "DELETE" "$STATISTICS_ENDPOINT"

有効なHTTPリターンコードは次のとおりです。

  • 200— 削除に成功しました。

    この場合、典型的な応答は次のようになります。

    { "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
  • 204— 削除する統計情報はありませんでした。

    この場合、応答は空白 (応答なし) です。

リーダーノードの統計エンドポイントに削除リクエストを送信すると、ReadOnlyViolationException がスローされます。

DFE 統計リクエストの一般的なエラーコード

以下に、統計エンドポイントに対してリクエストを行うときに発生する可能性のある一般的なエラーのリストを示します。

  • AccessDeniedExceptionリターンコード: 400メッセージ: Missing Authentication Token

  • BadRequestException (Gremlin および の場合openCypher) — リターンコード: 400メッセージ: Bad route: /pg/statistics

  • BadRequestException (RDFデータの場合) – リターンコード: 400メッセージ: Bad route: /rdf/statistics

  • InvalidParameterExceptionリターンコード: 400メッセージ: Statistics command parameter 'mode' has unsupported value 'the invalid value'

  • MissingParameterExceptionリターンコード: 400メッセージ: Content-type header not specified.

  • ReadOnlyViolationExceptionリターンコード: 400メッセージ: Writes are not permitted on a read replica instance

例えば、 DFEおよび 統計が有効になっていない場合にリクエストを行うと、次のようなレスポンスが表示されます。

{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }