nebula替换neo4j问题

最近我们在测试用nebula替换neo4j。之前因为neo4j不能分片,为了单机性能和存储,每个节点和边只存储了数据的id,获取到节点和边后再通过id去es中获取真正的数据进行展示。而nebula能支持分片,我想问一下,如果我直接把属性都直接存储到nebula中,会不会性能下降的很厉害?nebula的数据库设计方面有没有什么好的建议

Nebula Graph 在设计之初就没有考虑让用户把顶点和属性分开,而是一起存储在图数据库中,至于你考虑的性能问题,不知道你们用到的属性大概什么量级,你可以简单做些验证

最近 刚好遇到这个问题 一个tag30来个string属性

有观察到属性多了之后,性能下降很多吗?

51放假了,等回来试试,有结果告诉你

等有结果 同步你 要过几天才有结果

3 个赞

我个人是偏爱拓扑和属性分开存放的,或者至少给个开关并通过compact来重新组织格式。。。

请问,拓扑和属性分开存放,除了带来性能提升外还有其他额外的好处吗?

对深度路径遍历的性能应该会有比较大帮助吧。毕竟内存可以放更重要的图拓扑,而不是缓存属性。

在neo4j的时代,确实是这么做的,因为单机,不能扩展,存储了属性,支持的节点和边就少了不少。然后就分开了,我现在想既然nebula支持分片,那么是不是内存这些就不是问题了。是不是就可以直接存储属性了,要不开发维护都有不小困难。

硬件资源总是有限的,贵一点的资源总是应该放重要一点的东西。分布式并不改变这个现实。

「内存这些就不是问题了」

只能说有可能缓解一部分资源压力 完全消除是不现实的

请问,您那边测试有结果吗?属性多了后,性能下降厉害吗?

暂时 还没有发现下降很明显的指标