1

尽管我在这里阅读了另一个问题,建议不要同时使用 neo4j 和 mysql(neo4j - 图形数据库以及关系数据库?),但我想知道哪种方法最适合具有可以像图形一样建模的数据的数据集其余的看起来是相关的。由于某些原因,我无法发布我正在使用的那种数据。

我可以将关系部分硬塞到 neo4j 中,但它看起来既丑陋又复杂,这是我想避免的。

另一方面,如果我同时使用两者,我将不得不做双倍的查询来获得结果,降低性能(假设数据库在不同机器上的云上)。

我不能单独使用 mysql,因为其中一个查询需要大约 20-30 的深度,我认为 mysql 无法处理。

你们有没有遇到过这样的情况?如果是这样,您是如何解决的?

4

1 回答 1

1

正如其他人所说:“让我们更好地了解您要建模的数据,以便我们可以最好地给您建议”。

话虽如此,处理 2 个 DB 并不是问题,而且它比人们想象的更常见:通常您使用全文存储进行搜索,然后返回文档 ID 列表,然后点击关系 DB 获取更多信息元数据。或者点击 Redis 获取 ID 列表,您还可以点击关系数据库获取更多数据。

我基于你的社交网络对 Neo4j+MySQL 系统进行了概念验证(“显示我的网络推荐的所有餐厅,按深度排序(例如,第一级朋友推荐的权重高于第二级,等等)并没有觉得尴尬。但我也没有把它放大。

您将不得不保持两个数据存储同步。因此,在我的情况下,当用户在 Web 应用程序上推荐一个位置(将其插入 MySQL)时,您需要转身并在 Neo 中执行相同的插入操作。您可能也希望异步执行此操作,因此您需要使用工作人员设置一个消息队列。

于 2013-10-14T21:55:53.857 回答