Neo4j与社交网络建模时的ArangoDB

Flo*_*ger 9 neo4j arangodb

我想建立一个社交网络.(例如,人们有其他人作为朋友)我想图形数据库比传统数据库更好.我想在边缘和节点上存储属性.他们可以是json,但我不在乎DB是否理解JSON.

ArangoDB还可以存储文档,而Neo4J"只是"图形数据库.

我希望每个人都有一个用户节点2,例如.

用户 - [用户名] - >个人
用户 - [ID] - >个人

并且需要边缘上有索引.我不想要一个不同的数据库,所以将数据(字节数组)存储在数据库中可能会很好,甚至可能为每个图像/视频设置不同的大小.还应将帖子等存储在数据库中.

我得到的是Neo4j更好地支持独立于制造的查询语言,但我想学习制造商标准更容易也更好.有关哪种数据库管理系统更适合的建议?我将用Java(和一些Scala)编写代码.

mik*_*son 30

ArangoDB和Neo4j都能够完成您的工作.这两个项目都有令人惊叹的文档,并且很容易获得其中任何一个的答 两者都可以在Java中使用(尽管可以嵌入 Neo4j ).

可能有助于您决策制定过程的一件事是认识到许多NoSQL数据库解决的问题比人们所理解的要窄得多.

Sarah Mei 使用一些关于电视节目的数据的例子写了一篇关于MongoDB史诗博客文章.从摘要:

MongoDB的理想用例甚至比我们的电视数据还要窄.它唯一擅长的是存储任意JSON片段.

我相信Neo4j解决了一个类似的狭窄问题,就像使用Neo4j 其他一些数据存储一样常见.

我不知道在ArangoDB或Neo4j中存储图片或视频数据是一个好主意.我希望将它存储在其他服务器(如S3)上,并将url保存到Neo4j/Arango中的该文件中.

虽然确实可以创建只有图形数据库可以回答的查询,但任何给定查询的图形数据库的性能都会有很大差异,并且可以给你一些非常令人惊讶的结果.例如,这里有一篇来自国际计算机科学与信息技术期刊的论文,对Neo4j与MySQL,Vertica和VoltDB进行了比较,你会认为Neo4j会让人惊叹: 性能比较

我们的想法是,"社交网络"并不会自动暗示图形数据库的优势,甚至使用(特别是自GraphQLFalcor发布以来).

解决有关查询语言的问题.图形数据库没有标准语言.

AQL是一种查询语言,为处理键/值,文档和图形数据提供统一的界面.

Cypher是一种图形查询语言.

Badwolf查询语言是一种SPARQL灵感的时态图语言.

存在这些语言是因为它们解决了不同的问题.支持它们的数据库也解决了不同的问题.

Neo4j 在他们的网站上有一个 "多语言持久性" 的例子:

一起使用neo4j redis和mongo

我认为是ArangoDB和AQL要解决的问题,假设是可以解决这个问题,而不是像Neo4j这样的专家.到目前为止看起来他们可能是对的.