2017-07-10 3 views
1

Je suis tombé amoureux de mises à jour de streaming en temps réel à une requête lorsque j'utilisais Firebase, RethinkDB et similaire. Maintenant que je travaille avec des bases de données graphiques via Gremlin, je me demande comment obtenir ce comportement.Comment puis-je obtenir des mises à jour en temps réel sur une requête Gremlin?

Par exemple trivial, si je spécifié une requête Gremlin comme:

g.V().values('name') 

Je souhaite recevoir une mise à jour quand un nouveau sommet est ajouté avec une propriété de nom ou un nom est changé sur une sommet existant. Je commence à utiliser Janusgraph, donc la solution idéale fonctionnerait là-bas - mais c'est une caractéristique tellement meurtrière que je pourrais être incliné à other Gremlin-friendly graph databases.

Merci!

Répondre

3

Vous pouvez utiliser un EventStrategy avec n'importe quelle base de données de graphe compatible Tinkerpop. Une fois que vous avez créé la stratégie d'événement, vous l'ajoutez à votre traversée g = graph.traversal().withStrategies(strategy). Vous devrez implémenter l'interface MutationListener pour faire ce que vous voulez sur ces événements.

+0

Très cool! Je vous remercie. Je n'ai pas dit clairement, mais j'envoie mes requêtes gremlin sur websockets (via le 'org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer' normal) - savez-vous si le code semblable à celui fonctionnant dans la console dans l'exemple [EventStrategy] (http://tinkerpop.apache.org/docs/3.2.3/reference/#_eventstrategy) diffuserait également des mises à jour sur des Websockets, ou si plus de câblage est nécessaire? –

+0

Vous aurez probablement besoin d'écrire une implémentation de MutationListener, mais EventStrategy devrait fonctionner hors de la boîte. Gardez à l'esprit l'avertissement mentionné au bas de cette section, et vous devriez être en bonne forme. – pantalohnes

+0

Excellent, merci beaucoup. –

1

OrientDB a livequery si je ne sais pas qu'il intègre avec Gremlin - https://orientdb.com/docs/2.1/Live-Query.html - c'est le plus proche chose que je connais ce genre de fonctionnalité dans une base de données graphique compatible TinkerPop