在我的应用程序中,我需要将用户分配到组中,每个用户都需要一个管理器(同时也是一个用户的经理也可能有一个管理器)。
该应用程序需要查询才能知道某个管理器的最大深度(换句话说,从管理器到由该人管理的所有人员的最长路径的长度)。此外,它还需要能够找到同一组中的用户(一个组也可以是另一个组的成员)。
到目前为止,整个应用程序已经在MySQL数据库中使用JPA建模。但是,它是作为SOA设计的,因此更改处理用户(用户服务)的服务的底层数据存储不会太昂贵。
有什么不需要图形数据库的方法吗?如果需要一个图形数据库,我是应该将所有用户信息存储在图中,还是只存储适当的关系?
发布于 2013-12-16 01:08:17
如果你的基本模型是
(group:Group)<-[:IN_GROUP]-(user:User)
(man:User)-[:MANAGES]->(sub:User)你可以:
MATCH (manager:User {name:"Colin"})-[:MANAGES*]->(u:User)
RETURN u对于第二个查询
MATCH (manager:User {name:"Colin"})-[:MANAGES*]->(u:User)
(u)-[:IN_GROUP]->(g)<-[:IN_GROUP]-(u2)
RETURN u.name as user, g.name as group, collect(u2.name) as colleagues您可以将所有用户信息存储在图表中,但不必这样做。为你的用例做最简单和最好的事情。
如果没有图形数据库,您将编写痛苦的重连接SQL查询,尤其是。用于可变长度关系。
https://stackoverflow.com/questions/20587324
复制相似问题