翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Neptune でのネイティブ Gremlin ステップサポート
Amazon Neptune エンジンでは、Gremlin クエリのチューニング で説明されているように、すべての Gremlin ステップに対する完全なネイティブサポートはありません。。現在のサポートは 4 つのカテゴリに分類されます。
常にネイティブ Neptune エンジンオペレーションに変換できる Gremlin ステップ
多くの Gremlin ステップは、次の条件を満たす限り、ネイティブ Neptune エンジンオペレーションに変換できます。
クエリでは、変換できないステップの前には表示されません。
親ステップがあれば、その親ステップは変換できます。
もしあれば、すべての子トラバーサルは変換できます。
以下の Gremlin ステップは、次の条件を満たす限り、ネイティブ Neptune エンジンオペレーションに変換できます。
場合によってはネイティブ Neptune エンジンオペレーションに変換できる Gremlin ステップ
一部の Gremlin ステップは、状況によってはネイティブ Neptune エンジンオペレーションに変換できますが、他の状況では変換できません。
addE( )
– トラバーサルをキーとして含む property()
ステップが直後に続く場合を除き、addE()
ステップは、通常ネイティブ Neptune エンジンオペレーションに変換できます。addV( )
– トラバーサルをキーとして含む property()
ステップが直後に続く場合を除き、または複数のラベルが割り当てられる場合を除き、addV()
ステップは、通常ネイティブ Neptune エンジンオペレーションに変換できます。-
aggregate( )
– 子トラバーサルまたはサブトラバーサルで使用されている場合を除き、または格納される値が頂点、エッジ、ID、ラベル、またはプロパティ値以外のものでない限り、通常 aggregate()
ステップは、ネイティブ Neptune エンジンオペレーションに変換できます。次の例では、子トラバーサルで使用されているため、
aggregate()
は変換されません。g.V().has('code','ANC').as('a') .project('flights').by(select('a') .outE().aggregate('x'))
この例では、格納される値が
min()
であるため、aggregate () は変換されません。g.V().has('code','ANC').outE().aggregate('x').by(values('dist').min())
barrier( )
– barrier()
ステップは、その後のステップが変換されない限り、通常ネイティブ Neptune エンジンオペレーションに変換できます。-
cap( )
– cap()
ステップが変換される唯一のケースは、unfold()
ステップと組み合わせて頂点、エッジ、ID、またはプロパティ値の集約の展開バージョンを返す場合です。この例では、次に.unfold()
が後続するので、cap()
は変換されます。g.V().has('airport','country','IE').aggregate('airport').limit(2) .cap('airport').unfold()
ただし、
.unfold()
を削除すると、cap()
は変換されません。g.V().has('airport','country','IE').aggregate('airport').limit(2) .cap('airport')
coalesce( )
– coalesce()
ステップが変換される唯一のケースは、TinkerPop レシピページで推奨されるアップサートパターン に従う場合です。その他の coalesce() パターンは使用できません。変換は、すべての子トラバーサルが変換できる場合に限られ、それらはすべて出力と同じタイプ (頂点、エッジ、ID、値、キー、またはラベル) を生成し、新しい要素にトラバースし、 repeat()
ステップは含みません。-
constant( )
– constant () ステップは現在、次のように、定数値を割り当てるためのトラバーサルの sack().by()
一部内で使われる場合にのみ変換されます。g.V().has('code','ANC').sack(assign).by(constant(10)).out().limit(2)
-
cyclicPath( )
– cyclicPath()
ステップは、by()
、、またはto()
モジュレータで使用されていない限り、通常from()
、ネイティブ Neptune エンジンオペレーションに変換できます。次のクエリでは、たとえば、cyclicPath()
は変換されません。g.V().has('code','ANC').as('a').out().out().cyclicPath().by('code') g.V().has('code','ANC').as('a').out().out().cyclicPath().from('a') g.V().has('code','ANC').as('a').out().out().cyclicPath().to('a')
drop( )
– drop()
ステップは、それがsideEffect(
またはoptional()
ステップのいずれかで使われている場合を除き、通常、ネイティブ Neptune エンジンオペレーションに変換できます。-
fold( )
– fold() ステップを変換できる状況は 2 つだけです。つまり、TinkerPop レシピページ で推奨されているアップサートパターン で使用される場合と、次のような group().by()
コンテキストで使用される場合です。g.V().has('code','ANC').out().group().by().by(values('code', 'city').fold())
-
id( )
– id()
ステップは、プロパティで使用されない限り、次のように変換されます。g.V().has('code','ANC').properties('code').id()
-
mergeE ()
– パラメータ (マージ条件、 onCreate
およびonMatch
) が定数 (null
、定数 、またはselect()
のいずれか) である場合Map
、mergeE()
ステップをネイティブ Neptune エンジンオペレーションに変換できますMap
。 アップサーティングエッジのすべての例を変換できます。 -
mergeV ()
– パラメータ (マージ条件、 onCreate
および ) が定数 (、定数null
、またはselect()
のいずれか) である場合Map
、 mergeV (onMatch
) ステップをネイティブ Neptune エンジンオペレーションに変換できますMap
。 頂点をアップサーティングするすべての例を変換できます。 -
order( )
– order()
ステップは、その後のステップが変換されない限り、通常 ネイティブ Neptune エンジンオペレーションに変換できます。-
order()
ステップは、次のようにネストされた子トラバーサル内にあります。g.V().has('code','ANC').where(V().out().order().by(id))
たとえば、
order(local)
で、ローカル順序付けが使用されています。-
カスタムコンパレータは、
by()
モジュレーションで順序付けするために使われます。一例として、この使用法sack()
があります。g.withSack(0). V().has('code','ANC'). repeat(outE().sack(sum).by('dist').inV()).times(2).limit(10). order().by(sack())
同じ要素に複数の順序があります。
-
-
project( )
– project()
に従うby()
ステートメントの数が、次のように、指定されたラベルの数と一致しないのでなければ、project()
ステップは、通常ネイティブ Neptune エンジンオペレーションに変換できます。g.V().has('code','ANC').project('x', 'y').by(id)
range( )
– range()
ステップは、対象範囲の下端がゼロの場合にのみ変換されます (たとえば、range(0,3)
)。-
repeat( )
– 次のように別の repeat()
ステップノード内にネストされている場合を除き、repeat()
ステップは、通常ネイティブ Neptune エンジンオペレーションに変換できます。g.V().has('code','ANC').repeat(out().repeat(out()).times(2)).times(2)
-
sack( )
– sack()
ステップは、次の場合を除き、通常ネイティブ Neptune エンジンオペレーションに変換できます。数値以外のサック演算子が使用されている場合。
+
、-
、mult
、div
、min
およびmax
以外の数値サック演算子が使用されている場合。-
次のように、サック値に基づいてフィルタリングするために
where()
ステップの中でsack()
が使われる場合。g.V().has('code','ANC').sack(assign).by(values('code')).where(sack().is('ANC'))
-
sum( )
– sum()
ステップは、通常、ネイティブ Neptune エンジンオペレーションに変換できますが、次のようにグローバル総和の計算に使用される場合は変換できません。g.V().has('code','ANC').outE('routes').values('dist').sum()
union()
— union()
ステップは、ターミナルステップ以外のクエリの最後のステップである限り、ネイティブ Neptune エンジン操作に変換できます。-
unfold( )
– unfold()
ステップは、TinkerPopレシピページで推奨されるアップサートパターン で使用され、 cap()
次のような方法で一緒に使用される場合にのみ、ネイティブ Neptune エンジンオペレーションに変換できます。g.V().has('airport','country','IE').aggregate('airport').limit(2) .cap('airport').unfold()
-
where( )
– where()
ステップは、次の場合を除き、通常 ネイティブ Neptune エンジンオペレーションに変換できます。-
次のように、by () モジュレーションを使用する場合。
g.V().hasLabel('airport').as('a') .where(gt('a')).by('runways')
eq
、neq
、within
、およびwithout
以外の比較演算子が用いられる場合。ユーザー指定の集計が使用される場合。
-
ネイティブ Neptune エンジンオペレーションに変換されない Gremlin ステップ
次の Gremlin ステップは Neptune でサポートされていますが、ネイティブ Neptune エンジンオペレーションに変換されることはありません。代わりに、Gremlin サーバーによって実行されます。
Neptune ではまったくサポートされていない Gremlin ステップ
次の Gremlin ステップは、Neptune ではまったくサポートされていません。ほとんどの場合、これは GraphComputer
が必要なためで、これは Neptune が現在サポートしていません。
io()
ステップは実際には部分的にサポートされていますが、 read()
から URL には使用できませんwrite()
。