【问题标题】:Storing social media profile details in a graph based db在基于图形的数据库中存储社交媒体配置文件详细信息
【发布时间】:2014-05-05 06:36:48
【问题描述】:

我正在构建一个应用程序,我从各种社交媒体收集用户个人资料并将它们存储为我的应用程序的一部分。最初我正在考虑使用像 mongoDB 这样的 NoSQL 来存储这些详细信息。但我还需要在哪个社交媒体上存储谁与谁有联系的信息。为了实现这一点,基于图形的数据存储似乎是最合适的。

但我从不同社交媒体获得的数据结构并不一致。因此,我正在考虑仅将电子邮件 ID 存储为图形数据库(neo4j)的一部分,并将所有配置文件数据存储为 mongoDB 的一部分。还有其他建议吗?或者这会影响以后的表现吗?

【问题讨论】:

  • 这里的一切很大程度上取决于您的用例和使用模式。无模式存储非常擅长存储来自不同来源的数据,并且在合理范围内甚至可能在同一个“集合”中(在 MongoDB 意义上)。除非您有一个明确的使用模式来定义为什么要引入不同的移动部件,否则您可能在早期阶段过于复杂。如果您真的想为您的应用程序架构提供建议,那么我建议您将其分解为一系列不太广泛的问题。
  • 我想使用neo4j的主要原因是为了确保我存储“连接”关系。目前的主要用例是在给定电子邮件 ID 的情况下获取一些个人资料信息。但最终我想根据用户的技能/兴趣等推荐用户个人资料。这时我需要知道人们是如何联系起来的。

标签: java mongodb graph neo4j database


【解决方案1】:

我认为您不应该使用电子邮件地址作为主键,如果您发现同一个用户使用了 2 个不同的电子邮件地址怎么办?最好始终拥有一个可以映射多个电子邮件地址的合成密钥。

自从我尝试使用 Neo4j 已经 2 年多了,我觉得这不值得付出努力,我们花了更多的时间试图让 Neo4j 上的 GC 正确,而不是解决我们的业务问题。您无法对数据(即分片)进行分区,唯一的扩展方法是拥有一个主服务器和多个读取从服务器。

【讨论】:

  • 那么您建议如何将连接/朋友关系存储在数据库中?我认为图形数据库是要走的路。
  • 除了 Neo4j 之外,还有其他 GraphDB,如果找不到,您可以随时将其存储在关系模型中。
猜你喜欢
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多