让我们假设一个处理汽车的图表.
每个都Car
可以随着时间的推移而发展,我需要跟踪这些变化.
(为了能够追踪一些不一致的进化等...)
我想过实现一个写时复制机制(就像LinkedIn似乎那样),这意味着Car
每当其中一个Car
属性发生变化时创建一个完整的新节点.
我最终会得到一个这样的图表:
(Ferrari)-[:CURRENT]->(V3)-[:PREVIOUS]->(V2)-[:PREVIOUS]->(V1)
我特别感兴趣的是检索最新版本,所以听起来不错.
但是,如何处理最初的Car
UUID?
我Car
的UUID(这是一个易于查询的索引属性)是通过库(Apache)自动生成的.
我想如果我为每个Car
版本保留相同的初始UUID ,这可能会导致一些冲突:" 检索Ferrari
其UUID为123 "=>返回多个结果.3个结果,如果有3个版本.
为每个版本生成新的品牌UUID是否安全有效?
因此,我知道在这种情况下,检索特定版本的唯一方法是遍历图形的相关部分直到正确的部分,而不依赖于对初始UUID的简单查询; 通过简单的Cypher查询,这似乎仍然非常高效和简单.
我想保留生成的UUID,因为不建议使用潜在的"可猜测"REST URL(使用资源的UUID).
实际上,我可以将UUID作为Car
模型与其版本之间的组合,但似乎不够"安全"且我的URL上具有可见性.任何恶意的人都可以通过更改URL轻松地设法检索旧版本.