Gremlin typePromotion クエリヒント - Amazon Neptune

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

Gremlin typePromotion クエリヒント

数値または範囲でフィルタリングする Gremlin トラバーサルを送信する場合、Neptune クエリエンジンは通常、クエリの実行時に型の上位変換を使用する必要があります。つまり、フィルタリングする値を保持できるすべてのタイプの値を調べる必要があります。

たとえば、55 に等しい値をフィルタリングする場合、エンジンは 55 に等しい整数、55L に等しい長整数、55.0 に等しい浮動小数点数などを探す必要があります。各型の上位変換では、ストレージに対する追加のルックアップが必要なため、単純なクエリの完了に予期せず長い時間がかかることがあります。

たとえば、顧客年齢プロパティが 5 より大きいすべての頂点を検索するとします。

g.V().has('customerAge', gt(5))

この探索を徹底的に実行するには、Neptune はクエリを展開して、クエリ対象の値を上位変換できるすべての数値型を調べる必要があります。この場合は、gtフィルターは、5 を超える任意の整数、5 L を超える任意の長整数、5.0 を超える任意の浮動小数点数、5.0 を超える任意の倍数に適用する必要があります。これらの型の上位変換はそれぞれ、ストレージに関する追加のルックアップを必要とするため、数値フィルターごとに複数のフィルターが表示されます。Gremlin profile APIこのクエリでは、完了までに予想よりもかなり長い時間がかかります。

多くの場合、特定のタイプの値を見つけるだけで済むことが事前にわかっているため、型の上位変換は不要です。この場合、クエリを劇的に高速化するには、型の上位変換をオフにする typePromotion クエリヒントを使います。

構文

typePromotion クエリヒントは、クエリに withSideEffect ステップを追加して指定します。

g.withSideEffect('Neptune#typePromotion', true or false).gremlin-traversal
注記

すべての Gremlin クエリヒントの副作用にはプレフィックス Neptune# が付けられます。

指定できる値
  • true

  • false

上記のクエリの型の上位変換をオフにするには、以下を使用します。

g.withSideEffect('Neptune#typePromotion', false).V().has('customerAge', gt(5))