Neo4j / Estratégia para manter o histórico de alterações nos nós
Vamos assumir um gráfico que lida com carros.
CadaCar
pode evoluir com o tempo e preciso acompanhar essas alterações.
(para poder rastrear alguma inconsistência da evolução etc ...)
Eu pensei em implementar umcopiar na gravação mecanismo (comoLinkedIn parece fazer), o que significa criar um novo e completoCar
nó cada vez que um dosCar
alterações de propriedades.
Eu terminaria com um gráfico como este:
(Ferrari)-[:CURRENT]->(V3)-[:PREVIOUS]->(V2)-[:PREVIOUS]->(V1)
Estou especificamente interessado em recuperar a versão mais atual, para que soe bem.
No entanto, como lidar com o problema inicialCar
UUID?
MinhasCar
O UUID (que é uma propriedade indexada para facilitar as consultas) é gerado automaticamente através de uma biblioteca (Apache).
Imagino que, se eu mantiver o mesmo UUID inicial para cadaCar
versão, isso pode levar a alguns conflitos: "Recupere oFerrari
cujo UUID é 123"=> retornando mais de um resultado .. 3 resultados se 3 versões.
É seguro e eficiente gerar uma nova marca UUID para cada versão?
Portanto, estou ciente de que, neste caso, a única maneira de recuperar uma versão específica seria atravessar a parte do gráfico em questão até a correta, e sem contar com uma simples consulta no UUID inicial; isso ainda parece muito eficiente e fácil com uma simples consulta Cypher.
Quero manter um UUID gerado, pois não é recomendável ter um URL REST "adivinhado" em potencial (usando o UUID do recurso).
Na verdade, eu poderia ter um UUID sendo a combinação entre oCar
modelo e sua versão, mas parece não ser "seguro" o suficiente com uma visibilidade nos meus URLs. Qualquer pessoa mal-intencionada pode facilmente recuperar uma versão mais antiga apenas alterando o URL.