存储聊天消息图数据库 Neo4j 的最佳方式

shi*_*kar 2 database neo4j graph-databases

我将使用 neo4j 实现聊天应用程序。我将每条消息存储为图中的一个节点,但这可能会产生数十亿个节点。可以吗?

Kis*_*Kim 5

图数据库是存储数据之间的联系。它非常适合其设计用途的情况。您提到的聊天应用程序不是图形数据库的正确用例。也许你可以使用图数据库来存储用户的好友关系,这对于图数据库来说确实很好。但这些消息是某种日志类型的数据。它不是数据之间的关系。对于聊天消息,日期信息比关系更重要。因此,我认为您可以使用另一个 DBMS 来存储聊天消息而不是图形数据库。

另一种选择是使用支持多种数据模型的混合数据库。这些 DBMS 之一是 AgensGraph ( https://github.com/bitnine-oss/agens-graph )。它提供了图数据库功能,包括基于关系数据库PostgreSQL的Cypher支持。因此,您可以将用户的关系存储在图形对象中,并将用户的聊天消息存储在关系表中。因此,使用 AgensGraph,您可以根据数据的属性优化存储。