ArangoDB 和 Neo4j 的区别?主要解释一下在 perform graph queries 方面的区别
SQL无法处理表达图节点之间关系所需的语义,因此图数据库必须提供其他方式来访问数据。
第一个选择是编写小程序,即所谓的“路径遍历”。在 ArangoDB 中,您使用 Javascript;在 Neo4j Java 中,一般方法非常相似。
编程让您可以自由地做任何您想做的事情。那挺好的。对于标准用例,编程可能需要花费太多精力。因此,ArangoDB 和 neo4j 都提供了一种声明性语言——neo4j 有“Cypher”,ArangoDB 有“ArangoDB 查询语言”——AQL。两者都实现了蓝图标准,以便您可以在 Java 中使用“Gremlin”作为查询语言。我们已经提到,ArangoDB 是一个多模型数据库:AQL 涵盖文档和图形,它提供对联接、列表、变量的支持,等等。
以下示例取自neo4j网站:
“例如,下面的查询在索引中查找名为 John 的用户,然后遍历图表查找 John 的朋友的朋友(尽管不是他的直接朋友),然后返回 John 和找到的任何朋友的朋友。
START john=node:node_auto_index(name = ‘John’)
MATCHjohn-[:friend]->()-[:friend]->fof
RETURNjohn, fof ”
相同的查询在 AQL 中如下所示:
FOR t IN TRAVERSAL(users, friends, “users/john”, “outbound”,
{minDepth: 2}) RETURN t.vertex._key
The result is:
[ “maria”, “steve” ]
您会看到 Cypher 描述模式,而 AQL 描述连接。在内部,ArangoDB 有一个图形函数库——这些函数返回路径和路径的集合,或者在连接中使用这些集合。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。