Java 在基于图形的数据库中存储社交媒体配置文件详细信息

Java 在基于图形的数据库中存储社交媒体配置文件详细信息,java,mongodb,graph,neo4j,database,Java,Mongodb,Graph,Neo4j,Database,我正在构建一个应用程序,从各种社交媒体收集用户配置文件,并将其存储为我的应用程序的一部分。起初,我想使用像mongoDB这样的NoSQL来存储这些细节。但我还需要存储信息,在哪种社交媒体上谁与谁有联系。为了实现这一点,基于图形的数据存储似乎是最合适的 但我从不同社交媒体获得的数据结构并不一致。因此,我考虑只将电子邮件ID存储为graph db(neo4j)的一部分,将所有配置文件数据存储为mongoDB的一部分。还有其他建议吗?或者这会影响以后的性能吗?我认为您不应该使用电子邮件地址作为主键,如

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


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

我认为您不应该使用电子邮件地址作为主键,如果您发现同一用户使用了两个不同的电子邮件地址怎么办?最好总是有一个合成键,你可以映射到多个电子邮件地址


自从我尝试Neo4j已经两年多了,我离开时感觉不值得这么做,我们花了更多的时间试图在Neo4j上实现GC,而不是解决我们的业务问题。您不能对数据进行分区(即碎片),唯一的扩展方法是使用一个主设备和多个读从设备。

那么您建议如何将连接/朋友关系存储在数据库中?我认为图形数据库是最好的选择。除了Neo4j之外,还有GraphDB,如果找不到关系模型,您可以随时将其存储在关系模型中。这里的一切在很大程度上取决于您的用例和使用模式。无模式存储非常擅长存储来自不同来源的数据,并且在合理范围内,甚至可能存储在同一个“集合”(在MongoDB意义上)中。除非您有一个明确的使用模式来定义为什么要引入不同的运动部件,否则您可能在早期阶段过于复杂。如果你真的想对你的应用程序架构提出建议,那么我建议把它分成一系列不太宽泛的问题。我想使用neo4j的主要原因是为了确保我存储了“连接”关系。目前的主要使用案例是通过电子邮件id获取一些个人资料信息。但最终,我希望根据用户的技能集/兴趣等推荐用户个人资料。此时,我需要了解人们的联系方式。