neo4j中的二分图实现

时间:2012-08-21 13:34:37

标签: database-design neo4j graph-databases

我有一个用户和项目的Bipartite图表。我想在neo4j中实现这一点。有什么方法可以区分节点?现在,唯一的区别在于物业价值:

node A properties:
type=user, age=18, name=user123
node B properties:
type=item, price=123, name=item1234

并在cypher中查询图形如下所示:

-get all users:
start n=node:node_auto_index('type:user') return n;
start n=node:node_auto_index('age:*') return n;

1:虽然,因为每个用户都有age属性,所以不需要指定确切的节点类型,是吗?我还要指定吗?

2:第二,由于type属性是完全重复的,因此创建具有属性user的特定节点和具有属性项的一个特定节点并且将所有用户节点和所有项节点都与它们相关联不是更容易足够的根节点?

3:neo4j中有什么办法在创建节点时指定除了创建节点参数类型之外的类型吗? (类似于每组节点都保存在数据库的不同部分中,因此查询或获取特定组确实需要指向此区域而不是遍历所有节点并检查类型参数)

1 个答案:

答案 0 :(得分:2)

那么, 没有黄金法则。如果你有一个类型的很多节点,你可能想要使用和索引,否则类型节点也很好。取决于你的用例,因为真正的大超级节点正在减慢速度并且更好地作为索引处理。

如果您知道节点类型上有唯一属性,那么您当然可以从该属性推断它,并在您的情况下跳过属性type