我对Neo4J完全陌生,我正在努力解决设计/架构问题。
设置
我有一个具有不同节点的给定图表。这可能是包含客户,产品,项目,销售等的公司图表(如电影示例https://neo4j.com/developer/get-started/中所示)。此图表可能会不时更改。
在我的用例中,我想采用这个图,调整它并测试一些场景。 E. g。我会添加一个新产品,定义一个有责任的新销售人员或提高产品的价格。对于扩展图表,我将提出问题"换句话说,我会使用图算法来提取信息。我所做的更改不应影响原始图表。
要求
问题
一方面我不想改变原始图形,另一方面我想为特定用户临时添加和更改信息。使用关系数据库我只需要将一个ID指向"静态"部分数据或我会在Code而不是SQL中进行计算。
问题
我对所有想法,概念和技巧感到高兴!它更多地是关于图形数据库的......一般来说,Neo4J是我的第一选择。
干杯 克里斯
答案 0 :(得分:3)
如何使用不同的关系类型在图表中使用要素标记?
例如,假设您的用户喜欢原始图表中的10部电影。
(user)-[:LIKES]->(movies)
然后,对于您的实验,您可以
(user)-[:LIKES_EXPERIMENT]->(othermovies)
这使您可以通过强制执行关系类型,以原始方式遍历图形而不会失去性能。另一方面,它还为您提供了仅使用实验或将原始数据与实验相结合的可能性,方法是在遍历中指定两种关系类型。
对于属性也是如此,例如,您可以使用experiment_
为属性添加前缀。最后你还可以玩不同的标签。在使用不同的图形数据存储之前,有很多可能性。
另一种可能性是使用如此处所述的某种版本控制:
http://iansrobinson.com/2014/05/13/time-based-versioned-graphs/ 但没有时间因素。
答案 1 :(得分:0)
我的建议是:
sudo cp /path/to/original/data/folder ~/neo4j
这样的事情:
docker run \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
neo4j
如果正在使用:7474
和:7686
,您可以指定其他端口。
您可以在.sh
文件中转换这些说明,以自动执行此过程。