Vorrei rappresentare lo cambiando la forza delle relazioni tra i nodi in un grafico Neo4j.Rappresenta (e incrementa) la forza della relazione in Neo4j
Per un grafico statico, questo è fatto facilmente impostando una proprietà "forza" sul rapporto:
A --knows--> B
|
strength
|
3
Tuttavia, per un grafico che necessita di un aggiornamento nel corso del tempo, c'è un problema, dal momento che incrementazione il valore della proprietà non può essere eseguito atomicamente (tramite l'interfaccia REST) poiché è richiesta una lettura-prima-scrittura. L'incremento (anziché il semplice aggiornamento) è necessario se il grafico viene aggiornato in risposta ai dati in ingresso in streaming.
Avrei bisogno di garantire che solo un client REST legga e scriva contemporaneamente (sincronizzazione esterna), o si attenga solo all'API incorporata in modo da poter utilizzare le transazioni integrate. Questo può essere praticabile ma sembra imbarazzante.
Un'altra soluzione potrebbe essere quella di registrare più rapporti, senza alcuna proprietà, in modo che la "forza" è in realtà il conteggio delle relazioni, cioè
A knows B
A knows B
A knows B
significa un rapporto di forza 3.
- Svantaggio: solo i punti di forza interi può essere registrato
- Vantaggio: nessuna lettura prima della scrittura è richiesto
- Svantaggio: (probabilmente) più spazio di archiviazione richiesto
- Svantaggio: (probabilmente) molto più lento per estrarre il valore in quanto molteplici relazioni devono essere estratti e contati
Qualcuno ha provato questo approccio, ed è probabile imbattersi in problemi di prestazioni, soprattutto durante la lettura ?
C'è un modo migliore per modellarlo?
Grazie - diverse possibilità interessanti lì! Dopo aver controllato il dizionario, penso che sia OK parlare di "incrementi" non interi (anche se chiaramente dovresti specificare l'importo)! – DNA