2017-11-30 3 views
1

私はgremlincosmos DBに新規で、cosmos DB gremlin APIにStored Procedureを使用しようとしました。gremlinのストアドプロシージャCosmosDB

私はQuick-start-nodejs docで、CosmosDB gremlin APIに接続されたnode.jsアプリケーションを作成することから始めました。今私はそのアプリケーションでストアドプロシージャを使用したい。 cosmos DB内のストアドプロシージャにはdocという単一の文字しか見つかりませんでした。これはDocument DB(SQLの場合)のみです。私はgremlinのストアドプロシージャに関連するドキュメントが見つかりませんでした。

誰も私を導くことができます、それを行う方法?

ありがとうございます。

答えて

0

どのような場合ですか?

グレムリンはグラフを横断するための言語です。 GremlinはCosmosDBストアドプロシージャを知らないので、実際にはgremlin経由でストアドプロシージャを実行することはできません。

ただし、CosmosDBは複数モデルです。あなたはgremlinとネイティブのDocumentDB APIを使ってそれに話すことができます。

DocumentDB API経由でストアドプロシージャを実行する方法を調べる必要があります。

+0

実際、新しい頂点が作成されるたびにエッジを追加したいと思います。例えば、ラベル「EMPLOYEE」を有する頂点が作成されるときはいつも、頂点「COMPANY」に対するエッジが自動的に作成されなければならない。 –

-2

質問に対する最初の回答のコメントに基づき、「実際には、新しい頂点が作成されるたびにエッジを追加する必要があります。たとえば、EMPLOYEEというラベルの頂点が作成されると、 COMPANYを自動的に作成する必要があります。 hereの場合、TinkerPopのEventStrategyを見ることができます。

EDIT:

がリンク変更場合に上記のリンクから要部を追加する:

下地グラフに対する変更が内起こるようEventStrategyの目的は、1つ以上のMutationListenerオブジェクトにイベントを発生することですトラバーサル。このような戦略は、変更を記録する、変更に基づいて特定のアクションをトリガする、またはトラバーサル中に何らかの突然変異操作の通知を必要とするアプリケーションに役立ちます。トランザクションがロールバックされると、イベントキューがリセットされます。

次のイベントがMutationListenerに上昇される。

  • 新しい頂点
  • 新エッジ
  • 頂点プロパティは、
  • エッジプロパティは
  • 頂点プロパティを除去
  • エッジプロパティを除去変更変更しました
  • 頂点が削除された
  • エッジは、第MutationListenerインタフェースを実装トラバーサルからのイベントの処理を開始する

を除去します。この実装の例は、ConsoleMutationListenerであり、イベントごとにコンソールに出力を書き出します。 EventStrategyが別々のプロセス間でグローバルな変異を追跡する際に使用するためのものではありません

gremlin> import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.* 
==>org.apache.tinkerpop.gremlin.structure.*, org.apache.tinkerpop.gremlin.structure.util.*, org.apache.tinkerpop.gremlin.process.traversal.*, org.apache.tinkerpop.gremlin.process.traversal.step.*, org.apache.tinkerpop.gremlin.process.remote.*, org.apache.tinkerpop.gremlin.structure.util.empty.*, org.apache.tinkerpop.gremlin.structure.io.*, org.apache.tinkerpop.gremlin.structure.io.graphml.*, org.apache.tinkerpop.gremlin.structure.io.graphson.*, org.apache.tinkerpop.gremlin.structure.io.gryo.*, org.apache.commons.configuration.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.*, org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.*, org.apache.tinkerpop.gremlin.process.traversal.util.*, org.apache.tinkerpop.gremlin.process.computer.*, org.apache.tinkerpop.gremlin.process.computer.bulkdumping.*, org.apache.tinkerpop.gremlin.process.computer.bulkloading.*, org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.*, org.apache.tinkerpop.gremlin.process.computer.traversal.*, org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.util.*, org.apache.tinkerpop.gremlin.util.iterator.*, static org.apache.tinkerpop.gremlin.structure.io.IoCore.*, static org.apache.tinkerpop.gremlin.process.traversal.P.*, static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*, static org.apache.tinkerpop.gremlin.process.computer.Computer.*, static org.apache.tinkerpop.gremlin.util.TimeUtil.*, static org.apache.tinkerpop.gremlin.process.traversal.SackFunctions.Barrier.*, static org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.*, static org.apache.tinkerpop.gremlin.structure.Column.*, static org.apache.tinkerpop.gremlin.structure.Direction.*, static org.apache.tinkerpop.gremlin.process.traversal.Operator.*, static org.apache.tinkerpop.gremlin.process.traversal.Order.*, static org.apache.tinkerpop.gremlin.process.traversal.Pop.*, static org.apache.tinkerpop.gremlin.process.traversal.Scope.*, static org.apache.tinkerpop.gremlin.structure.T.*, static org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.*, org.apache.tinkerpop.gremlin.driver.*, org.apache.tinkerpop.gremlin.driver.exception.*, org.apache.tinkerpop.gremlin.driver.message.*, org.apache.tinkerpop.gremlin.driver.ser.*, org.apache.tinkerpop.gremlin.driver.remote.*, groovyx.gbench.*, groovyx.gprof.*, static groovyx.gprof.ProfileStaticExtension.*, org.apache.tinkerpop.gremlin.giraph.process.computer.*, org.apache.hadoop.conf.*, org.apache.hadoop.hdfs.*, org.apache.hadoop.fs.*, org.apache.hadoop.util.*, org.apache.hadoop.io.*, org.apache.hadoop.io.compress.*, org.apache.hadoop.mapreduce.lib.input.*, org.apache.hadoop.mapreduce.lib.output.*, org.apache.tinkerpop.gremlin.hadoop.*, org.apache.tinkerpop.gremlin.hadoop.structure.*, org.apache.tinkerpop.gremlin.hadoop.structure.util.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.script.*, org.apache.tinkerpop.gremlin.hadoop.process.computer.mapreduce.*, org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.*, static org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph.*, org.apache.tinkerpop.gremlin.neo4j.structure.*, static org.apache.tinkerpop.gremlin.neo4j.process.traversal.LabelP.*, org.apache.tinkerpop.gremlin.spark.process.computer.*, org.apache.tinkerpop.gremlin.spark.structure.*, org.apache.tinkerpop.gremlin.spark.structure.io.*, org.apache.tinkerpop.gremlin.tinkergraph.structure.*, org.apache.tinkerpop.gremlin.tinkergraph.process.computer.*, org.apache.tinkerpop.gremlin.process.traversal.step.util.event.* 
gremlin> graph = TinkerFactory.createModern() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> l = new ConsoleMutationListener(graph) 
==>MutationListener[tinkergraph[vertices:6 edges:6]] 
gremlin> strategy = EventStrategy.build().addListener(l).create() 
==>EventStrategy 
gremlin> g = graph.traversal().withStrategies(strategy) 
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] 
gremlin> g.addV().property('name','stephen') 
Vertex [v[13]] added to graph [tinkergraph[vertices:7 edges:6]] 
==>v[13] 
gremlin> g.E().drop() 
Edge [e[7][1-knows->2]] removed from graph [tinkergraph[vertices:7 edges:6]] 
Edge [e[8][1-knows->4]] removed from graph [tinkergraph[vertices:7 edges:5]] 
Edge [e[9][1-created->3]] removed from graph [tinkergraph[vertices:7 edges:4]] 
Edge [e[10][4-created->5]] removed from graph [tinkergraph[vertices:7 edges:3]] 
Edge [e[11][4-created->3]] removed from graph [tinkergraph[vertices:7 edges:2]] 
Edge [e[12][6-created->3]] removed from graph [tinkergraph[vertices:7 edges:1]] 
By default, the EventStrategy is configured with an EventQueue that raises events as they occur within execution of a Step. As such, the final line of Gremlin execution that drops all edges shows a bit of an inconsistent count, where the removed edge count is accounted for after the event is raised. The strategy can also be configured with a TransactionalEventQueue that captures the changes within a transaction and does not allow them to fire until the transaction is committed. 

警告:次のコンソールセッションは、基本的な使用方法を表示します。つまり、あるJVMプロセスの突然変異は、別のJVMプロセスのイベントとして発生しません。さらに、Traversalコンテキスト外で突然変異が発生した場合、イベントは発生しません。

+0

このリンクは質問に答えるかもしれませんが、ここでは答えの重要な部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿者](レビュー/低品質の投稿/ 18113668) – the4kman

+0

ありがとうございました。関連するテキストとコード例を追加しました。 – David

+1

これはCosmos上では動作しませんが、Tinkerpopに完全には準拠していません。実際のグラフエンジンによって提供されるより高度なものはもちろん、実際のGremlinのサブセットのみがカバーされています –

関連する問題