グレムリン・タイプ・プロモーション・クエリー・ヒント - Amazon Neptune

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

グレムリン・タイプ・プロモーション・クエリー・ヒント

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

たとえば、55 に等しい値をフィルタリングする場合、エンジンは 55 に等しい整数、55L に等しい長い整数、55.0 に等しい浮動小数点数を検索する必要があります。各タイプのプロモーションでは、ストレージの追加のルックアップが必要です。これにより、明らかに単純なクエリが完了するまで予期せず長い時間がかかることがあります。

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

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

そのトラバーサルを完全に実行するには、Neptune はクエリを展開して、クエリしている値が昇格できるすべての数値型を調べる必要があります。この場合は、gtフィルタは、5以上の任意の整数、5L以上の任意の長、5.0以上の任意の浮動小数点、5.0以上の任意の倍に適用する必要があります。これらの種類のプロモーションのそれぞれは、ストレージの追加のルックアップを必要とするため、GremlinprofileAPIを使用しており、完了までに予想よりもかなり時間がかかります。

特定のタイプの値だけを検索する必要があることが事前にわかっているため、タイプの昇格は不要であることがよくあります。この場合、クエリを劇的に高速化するには、typePromotionクエリヒントを使用して、型昇格をオフにします。

Syntax

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))