Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Indexing Neo4j可伸缩性和索引_Indexing_Neo4j_Cypher_Rdbms_Adjacency List - Fatal编程技术网

Indexing Neo4j可伸缩性和索引

Indexing Neo4j可伸缩性和索引,indexing,neo4j,cypher,rdbms,adjacency-list,Indexing,Neo4j,Cypher,Rdbms,Adjacency List,neo4j(也在neo4j《图形数据库》一书中)提出的一个支持使用本机存储的图形dbms而不是关系dbms的论点是,“无索引邻接”是处理图形中数据的最有效方法(由于基于图形的模型中数据/节点的“集群化”) 基于我执行的一些基准测试,其中3个节点顺序连接(A->BB->C->D->E,并查询给定A的E。因为在这种情况下,我们知道A只有一个匹配项(因此无需强行通过不属于该子网络的所有其他节点) 由于这高度依赖于查询,我在下面列出了一个Cypher查询示例以供参考(其中我匹配id为1的标记为node的

neo4j(也在neo4j《图形数据库》一书中)提出的一个支持使用本机存储的图形dbms而不是关系dbms的论点是,“无索引邻接”是处理图形中数据的最有效方法(由于基于图形的模型中数据/节点的“集群化”)

基于我执行的一些基准测试,其中3个节点顺序连接(A->BB->C->D->E,并查询给定A的E。因为在这种情况下,我们知道A只有一个匹配项(因此无需强行通过不属于该子网络的所有其他节点)

由于这高度依赖于查询,我在下面列出了一个Cypher查询示例以供参考(其中我匹配id为1的标记为node的实体,并返回关联节点(上例中的B)和辅助链接节点(上例中的C)):


MATCH(:entity{id:1})-[:LINK]->(result\u assoc:assoc)根据我的理解,无索引方面仅与相邻节点相关(这就是为什么称为无索引邻接)。您的图所展示的是,当您查找
A
时,查找
C
的额外时间可以忽略不计,而是否使用索引的问题只是查找初始查询的节点
A

要在没有索引的情况下查找
A
,需要O(n),因为它必须扫描数据库中的所有节点,但有了索引,它实际上就像一个哈希表,需要O(1)(也不知道书中为什么说O(n log n))


除此之外,查找相邻节点对Neo4j来说并不难,因为它们链接到
A
,而在RM中,链接没有那么明确-因此需要一个连接,这很昂贵,然后需要扫描/过滤。因此,要真正看到优势,应该通过改变r的深度来比较graph DBs和RM DBs的性能关联/链接。当实体节点的邻居增加时(即图形变得更密集),查看查询的执行情况也会很有趣-Neo4j是否依赖于图形从不过于密集?否则,查看邻居以找到正确的一个的问题会重演。

向下投票很容易;评论为什么更有助于更好地表述问题。Neo4j的书误解并曲解了RM(关系模型)它的一个误解是RM与实现无关——关系是一种抽象。无论如何,它们的“索引”是一个稻草人。当你不想只扫描一堆值时,有多个实现结构可用的好处是改进查询。最终,他们只是说它们针对RDBMS不适用的特定用例进行了优化。尾巴摇狗。@philipxy测试的目的是了解如何执行时间随着节点数量的变化而变化——总体趋势大于绝对值——因此,在这种情况下,架构和系统保持不变。可伸缩性的线性让我思考:无索引邻接的优势是什么?如果索引键值在最坏情况下已经是线性的。这就是为什么我运行索引测试以查看不同的nce。这几乎是O(1)-这是哈希列表的最佳性能。我不认为无索引邻接有什么优势。我想这归结为一个问题:与这里获得的线性非索引性能相比,传统索引rdbms的性能如何?(这将暗示问题的答案:无索引邻接对性能有何影响)
MATCH (:entity{id:1})-[:LINK]->(result_assoc:assoc)<-[:LINK]-(result_entity:entity) RETURN result_entity, result_assoc