使用图形数据库存储和检索按性格分数排序的用户
Using a graph database to store and retrieve sorted users by personality scores
我有兴趣存储一组具有个性分数的用户。
我想让他们根据应用于他们分数的公式相互联系更紧密(更紧密?)。用户越相似,他们之间的联系就越紧密或彼此越近(就像在一个集群中)。节点越接近,越相似。
我目前通过关系数据库中的多个步骤(一些在 SQL 中,其他在代码中)执行此操作。
那里的大多数帖子和文档似乎都集中在如何开始以及与关系数据库相比有哪些高级优势。
我想知道图形数据库是否更适合这个,并且可以开箱即用或更本地地完成大部分繁重的工作。非常感谢任何细节。
你可以考虑这样建模:
其中引入了名为 Score_range 的顶点 type/label,以及标签 User(得分 属性)。
用户顶点连接到 Score_range 个顶点,例如 User with score: 101 连接到 Score_range(vertexID=100),代表 [100, 110]。
因此,那些分数接近的顶点在该图中更多connected/clusterred,并且在您的应用程序中,当分数为recaculated/changed时,您需要对图数据库进行连接更改。
然后,在整个图上使用 运行 聚类算法(即 Louvain)或图查询以找到任意两个用户节点之间的路径(即 FIND PATH in Nebula Graph,一个开源分布式图数据库使用 opencypher ), 亲近度就会体现出来
但是,我认为由于这个 connection/closness 实际上是 numerical/sortable,简单地处理这种紧密关系可能不需要来自您已经提供的上下文的图形数据库。
PS。我在上面的模式中画了一张图:
我有兴趣存储一组具有个性分数的用户。 我想让他们根据应用于他们分数的公式相互联系更紧密(更紧密?)。用户越相似,他们之间的联系就越紧密或彼此越近(就像在一个集群中)。节点越接近,越相似。
我目前通过关系数据库中的多个步骤(一些在 SQL 中,其他在代码中)执行此操作。
那里的大多数帖子和文档似乎都集中在如何开始以及与关系数据库相比有哪些高级优势。
我想知道图形数据库是否更适合这个,并且可以开箱即用或更本地地完成大部分繁重的工作。非常感谢任何细节。
你可以考虑这样建模:
其中引入了名为 Score_range 的顶点 type/label,以及标签 User(得分 属性)。
用户顶点连接到 Score_range 个顶点,例如 User with score: 101 连接到 Score_range(vertexID=100),代表 [100, 110]。
因此,那些分数接近的顶点在该图中更多connected/clusterred,并且在您的应用程序中,当分数为recaculated/changed时,您需要对图数据库进行连接更改。
然后,在整个图上使用 运行 聚类算法(即 Louvain)或图查询以找到任意两个用户节点之间的路径(即 FIND PATH in Nebula Graph,一个开源分布式图数据库使用 opencypher ), 亲近度就会体现出来
但是,我认为由于这个 connection/closness 实际上是 numerical/sortable,简单地处理这种紧密关系可能不需要来自您已经提供的上下文的图形数据库。
PS。我在上面的模式中画了一张图: