2017-11-30 2 views
1

Ich bin neu in gremlin und cosmos DB und versuchte Stored Procedure in Cosmos DB Gremlin API zu verwenden.Gespeicherte Prozeduren in Gremlin CosmosDB

Ich begann mit Quick-start-nodejs doc zum Erstellen einer node.js App, verbunden mit CosmosDB Gremlin API. Jetzt möchte ich Stored Procedure in dieser App verwenden. Ich fand nur einzelne doc für gespeicherte Prozeduren in Cosmos DB, und das ist nur für Document DB (in SQL). Ich habe kein Dokument gefunden, das sich auf gespeicherte Prozeduren im Gremlin bezieht.

Kann mir jemand helfen, wie geht das?

Vielen Dank im Voraus.

Antwort

0

Was ist Ihr Anwendungsfall?

Gremlin ist eine Sprache zum Durchlaufen der Grafik. Gremlin kennt die gespeicherte Prozedur von CosmosDB nicht und kann daher gespeicherte Prozeduren nicht wirklich über Gremlin ausführen.

CosmosDB ist jedoch Multi-Modell. Sie können über Gremlin und die native DocumentDB API mit ihm kommunizieren.

Sie sollten untersuchen, wie gespeicherte Prozeduren über die DocumentDB-API ausgeführt werden.

+0

Eigentlich möchte ich jedes Mal, wenn ein neuer Eckpunkt erstellt wird, einige Kanten hinzufügen. Wenn beispielsweise ein Vertex mit der Bezeichnung "EMPLOYEE" erstellt wird, muss automatisch eine Kante zum Vertex "COMPANY" erstellt werden. –

-2

Basierend auf Ihrem Kommentar zur ersten Antwort auf die Frage: "Eigentlich möchte ich jedes Mal, wenn ein neuer Scheitelpunkt erstellt wird, einige Kanten hinzufügen. Zum Beispiel, wenn ein Scheitelpunkt mit der Bezeichnung EMPLOYEE erstellt wird, eine Kante zum Scheitelpunkt FIRMA muss automatisch erstellt werden. " here, können Sie in TinkerPop EventStrategy suchen.

EDIT:

wesentliche Teile aus den obigen Link bei den Link Änderungen Hinzufügen:

Der Zweck der EventStrategy ist Ereignisse an einen oder mehrere MutationListener Objekte wie Änderungen an der zugrunde liegenden Grafik zu erhöhen innerhalb auftreten ein Traversal. Eine solche Strategie ist nützlich, um Änderungen zu protokollieren, bestimmte Aktionen basierend auf Änderungen auszulösen oder Anwendungen, die während eines Traversals über eine mutierende Operation benachrichtigt werden müssen. Wenn die Transaktion zurückgesetzt wird, wird die Ereigniswarteschlange zurückgesetzt.

Die folgenden Ereignisse werden in der MutationListener angehoben:

  • New Vertex
  • New Kante
  • Vertex Eigenschaft
  • Edge-Eigenschaft
  • Vertex Eigenschaft
  • Edge-Eigenschaft entfernt geändert geändert entfernt
  • Vertex entfernt
  • Ränder entfernt

von einem Traversal der Verarbeitung von Ereignissen zu starten zuerst den MutationListener-Schnittstelle implementieren. Ein Beispiel für diese Implementierung ist der ConsoleMutationListener, der Ausgaben für jedes Ereignis in die Konsole schreibt.Die folgende Konsole-Sitzung zeigt die grundlegende Nutzung:

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. 

WARNUNG EventStrategy nicht für den Einsatz bei der Verfolgung globale Mutationen auf getrennte Prozesse zu verstehen ist. Mit anderen Worten, eine Mutation in einem JVM-Prozess wird nicht als Ereignis in einem anderen JVM-Prozess ausgelöst. Darüber hinaus werden Ereignisse nicht ausgelöst, wenn Mutationen außerhalb des Travers-Kontextes auftreten.

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/18113668) – the4kman

+0

Danke; Ich habe die relevanten Text- und Codebeispiele hinzugefügt. – David

+1

Nichts davon wird auf Cosmos funktionieren, es ist nicht vollständig Tinkerpop-konform, nur eine Teilmenge des tatsächlichen Gremlins wurde abgedeckt, geschweige denn fortgeschrittenere Dinge, die von der eigentlichen Graph-Engine bereitgestellt werden –