2017-09-27 3 views
1

J'ai une collection de documents json dans CosmosDB qui peut contenir des références à d'autres documents de la collection (par id).Puis-je utiliser un déclencheur dans CosmosDB (API graphique) pour créer automatiquement une arête en fonction de la charge utile du document?

Je souhaite gérer automatiquement les bords de graphique entre ces documents en utilisant des déclencheurs qui s'exécutent lorsqu'un document est créé/mis à jour/supprimé. Puis-je accéder à l'API Gremlin à partir de Javascript à l'intérieur de la fonction de déclenchement?

Y a-t-il une documentation sur les déclencheurs dans le contexte des graphiques? Je n'ai pas pu en trouver. Une alternative plus sale consisterait à créer "manuellement" le document de bord dans le déclencheur, mais cela serait rompu si l'équipe CosmosDB modifiait le format sous-jacent des documents décrivant les bords.

Répondre

1

Le Cosmos DB Trigger fonctionnera probablement et il vous donnera un ensemble de documents que vous devrez peut-être traiter en premier.

Puisque le Trigger écoute le Change Feed, vous obtiendrez des Documents qui représentent toute insertion/mise à jour de la Collection. Dans le cas d'un graphe, ceux-ci peuvent être des sommets ou des arêtes, vous devrez donc d'abord détecter quel type de document il doit utiliser. En ce qui concerne la persistance de la nouvelle relation, le DocumentDB Output binding pourrait ne pas fonctionner pour vous, car comme vous l'avez dit, la représentation interne peut changer. Mais ce que vous pouvez faire est d'inclure dans votre Azure Function certains C#/Node Gremlin library et de l'utiliser pour parler directement à l'API Cosmos DB Graph.

+1

OP semble faire référence à la fonctionnalité de déclenchement réelle incluse dans Cosmos, pas à un déclencheur Azure Function. Dans le cas des déclencheurs au niveau de la base de données, la transaction automatique et les garanties ACID peuvent être importantes pour sa charge de travail –

+0

Bon point, je pensais qu'il faisait référence au nouveau déclencheur CosmosDB avec Azure Functions, je vais supprimer la réponse si l'OP confirme ce n'est pas le cas :) –

1

L'API graphique n'est actuellement pas prise en charge dans les déclencheurs de base de données/UDF/les procédures stockées, et nous ne disposons pas de calendrier pour savoir quand cela sera pris en charge.

La meilleure approche suivante consiste à créer manuellement les éléments de graphique comme vous l'avez décrit.