Je voudrais représenter le en changeant la force des relations entre les nœuds dans un graphique Neo4j.Représentant (et incrémentant) la force de la relation dans Neo4j
Pour un graphique statique, cela se fait facilement en définissant une propriété « force » sur la relation:
A --knows--> B
|
strength
|
3
Cependant, pour un graphique qui doit être mise à jour au fil du temps, il y a un problème, étant donné que incrémenter La valeur de la propriété ne peut pas être effectuée de manière atomique (via l'interface REST) car une lecture avant écriture est requise. L'incrémentation (plutôt que la simple mise à jour) est nécessaire si le graphique est mis à jour en réponse à des données transmises en continu. Je devrais soit m'assurer qu'un seul client REST lit et écrit à la fois (synchronisation externe), soit m'en tenir uniquement à l'API intégrée pour pouvoir utiliser les transactions intégrées. Cela peut être réalisable mais semble maladroit.
Une autre solution pourrait consister à enregistrer plusieurs relations, sans propriétés, de sorte que la « force » est en fait le nombre de relations, à savoir
A knows B
A knows B
A knows B
signifie un rapport de force 3.
- Inconvénient: seules forces entières peuvent être enregistrées
- Avantage: pas de lecture avant écriture est nécessaire
- Inconvénient: (probablement) plus de stockage nécessaire
- Inconvénient: (probablement) beaucoup plus lent pour extraire la valeur depuis plusieurs relations doivent être extraites et comptées
Quelqu'un at-il essayé cette approche, et est-il susceptible de rencontrer des problèmes de performance, en particulier lors de la lecture ?
Existe-t-il une meilleure façon de modéliser cela?
Merci - plusieurs possibilités intéressantes là-bas! Après avoir vérifié le dictionnaire, je pense qu'il est correct de parler d'incréments non entiers (bien que vous deviez clairement spécifier le montant)! – DNA