neo4j - 图形数据库以及关系数据库?

mur*_*mur 8 rdbms neo4j nosql graph-databases

这是一个关于最佳实践的问题,我知道有很多不同的选择可以做到这一点,但我想你的意见如何解决这个问题.请将其视为在此系统中性能至关重要,换句话说,可扩展.

我最近发现了图形数据库的奇迹,所以我想出了一个公司想要管理它的客户关系的理论情况,为了做到这一点,他们将使用neo4j,这是伟大的,并允许真正伟大的管理客户,不同员工及其关系,这一切都很棒,但公司现在想要创建一个需要身份验证的基于Web的界面,neo4j数据库中的任何人都应该能够登录系统才能看到它们如何与公司数据库中的其他人相关联,因此每个用户必须具有与其姓名相关联的密码/电子邮件/ ID.

所以我的问题是,在这种情况下,最好将password_hash/password_salt/id/email存储在mysql数据库中,然后根据节点在mysql数据库中查找它.或者将password_hash/password_salt/id/email存储在节点内的哈希表中更好.

此外,每个商店都有1000多种产品,它们可以存储在图形数据库中,或者我可以将产品存储在mysql数据库中,然后在那里查找产品,并在那里进行更改,因为产品彼此无关,所以没有必要将它们存储在图形数据库中,那么它们是否应该存储在那里以提高性能?

所以我的问题归结为:大型项目最好是使用图形数据库以及更常见的rdms数据库,如mysql?如果没有,那么你开始使用这两个数据库系统的重点是什么?

因缺乏有关数据库术语的知识而提前道歉.

小智 11

图形DB主要用于维护关系.如果app有一个图形数据库,并不意味着应用程序需要将所有内容存储在Graph DB中.

Graph上的每个节点请求都在内存中,因此如果你的节点中有不必要的属性,它将会变得臃肿,可能会使事情变得更慢并占用更多内存.我通常会决定需要在图表中找到什么,以及需要在DB中做什么简单的规则.

高级属性(定义关系和定义节点的其他重要属性)在图中,而附加信息在RDMS中.

例如,在FB中可以是FBID,Name在Graph中定义,因为它定义了一个节点与另一个节点的关系.但是当用户点击某人的脸书ID时,他/她会看到其他用户DOB,年龄,大学.所有这些都可以进入RDBMS.

PS:RDMS还有另一个优势,它可以用于快速分析.我知道图表也可以这样做,但我不确定它是否像RDBMS一样可扩展和简单.

这种方法的缺点是:你需要维持两个星展银行.