类似二叉树这种关系可以使用neo4j这样的图形数据库吗?
发布于 6 年前 作者 wangyibo8080 2498 次浏览 来自 问答

楼主需求是这样的:redis里面通过zset记录了所有的二叉树关系, key是节点id, score是层级关系,比如节点key=1,儿子节点key为儿子节点id,score为-1,孙子key为孙子节点id,score为-2,以此内推。。层级可能很多,没有限制 现在要取节点1下所有叶子节点,通过redis可以直接取出,但是这些节点id对应的其他数据信息存储在mysql中,有一些需求比较难实现,比如需要统计出节点1当天新增节点数是多少?这样的需求目前是从redis取出所有节点1下的叶子节点,然后去mysql通过in查询,匹配出当天的新增节点,但是随着树越来越大,这样查询显然会有问题,目前刚开始研究neo4j,不知道能不能满足我这样的需求:1.需要很快的查询出某个节点下的儿子,孙子,或者孙孙子,或者所有节点,2.需要查询出某一个时间段某个节点下的新增数据(统计功能)? 看了一天neo4j,小白我初步理解是:image.png 貌似报错,所有的节点都是一个类型的node,但是创建的时候必须用不同的node_name?各位大神知道的指点一下,谢谢。

3 回复

是的,第二个Numer节点要用一个不同的变量名,例如a1。

谢谢,再请教一个问题,关于设计的问题,目前我这边的需求是这样的,a1下面有很多个儿子节点,比如有a2,a3(个数不限制), a2和a3下面又有很多个儿子节点,比如a4,a5,a5,a6等,以此类推,整个关系是一个庞大的多叉树(可理解为二叉树),树层级没有限定. 我现在想通过a1查找出所有它下面的所有节点,或者通过某一个子节点,查找到他上面的所有节点, 还有可能这个树节点关系会变化,比如a4挂在a2上的,有可能变化到a9上,主要需求就是这么几个,目前我想到的方案就是:a1节点和a2节点建立儿子关系(这里就叫它r:son),然后a1和他下面的所有其他非儿子节点建立非儿子关系(这里就叫它r:rec) ,这样就组成了一个很大的网络结构,类似这样:image.png 这样查询起来也方便,更新也还算比较便利,但是我这里还有一个,就是每个节点只建立儿子节点关系,类似这种:a1-[r:son]->a2-[r:son]->a3-[r:son]->a4…类似这种,形成一个大的多叉树,类似这种:但是这种结构如果我要查询a1下面的所有节点,改怎么查询呢,两种设计方案,那个更好,大神能否给点建议呀?image.png

回到顶部