我正在探索neo4j的潜在用例,我发现关系模型很好,但是我很好奇数据库是否能够支持类似于业务事务日志的东西。
例如,一个视频租赁商店:
业务要求是跟踪与视频A节点相关的所有租赁事务关系。
这在技术上似乎是可能的。一个人会为每一次发生新的租赁创造一种新的关系吗?有没有更好的方法来解决这个问题?这是滥用技术吗?
发布于 2014-02-10 21:22:04
好的!这正是导致我开发FlockData (github链接)的确切用例。FD使用Neo4J来跟踪针对域文档的事件类型活动(在您的示例中是租借的)。然后使用标记创建表示与域文档(Movie/Person)关联的元数据的节点。对于租赁状态的每个更改,您都有一个事件节点。在LinkedIn上显示“用户创建”、“用户批准”和“用户审核”的几个图表。
FD使用3种数据库来实现其目标-- Neo4j用于关系网络,KV存储大量数据(Redis或Riak),ElasticSearch允许用户通过免费文本查找他们的商业上下文文档(租房)。
就您的具体问题而言,请对有大量关系的节点保持谨慎。查看建模日期的这篇文章。Peter在Neo4j文档中有一篇类似的文章。
发布于 2014-02-10 20:41:59
我会看它取决于你想从中得到什么。如果您希望开发推荐引擎,或者查看用户和/或电影之间的关系,那么graphDB是一个非常自然的解决方案。如果您正在跟踪视频A的状态随时间的变化,则会为其建模一个时态数据库(数据库)。对于直截了当的事务系统,传统的关系数据库将很容易工作。就个人而言,我认为使用graphDB会有更好的选择。在您的示例中,您将有3个使用者节点、1个视频节点、3个类型的关系:RENTS和两个:RENTS。您需要确保您的属性模型支持相同的用户重新租用相同的电影(将日期存储在数组中,而不是单个值)。只是一些想法。
https://stackoverflow.com/questions/21687127
复制相似问题