【发布时间】:2019-04-25 05:31:41
【问题描述】:
我想描述两个场景,其中系统有一个大的 xml 文件(包含多个 10.000 行数据)。我的问题是哪个场景的性能更好,A 还是 B?
两种场景的第一步是相同的:一个函数通过xml并将节点和属性放入neo4j数据库:
.xml --> custom function --> neo4j
这个自定义函数的性能并不重要,因为它只发生一次。
例如,我们想知道一个节点的第 N 个叔叔。所以我们查询 neo4j 并返回请求的节点。
一) 第一个场景我们直接查询neo4j
neo4j <-- query: Cypher <-- GUI
B) 在第二种情况下,我们直接使用 Xquery 查询 xml,我们得到一个 ID。
xml <-- query: Xquery <-- GUI
然后我们从 neo4j 中查询该 ID
GUI --> query: Cypher --> neo4j
所以在第一个场景中,我们查询 neo4j 并执行读/写/更新/删除基本操作。
在第二种情况下,我们查询 xml,只在 neo4j 中进行基本的读/写/更新/删除操作。
很高兴知道哪个版本对系统有更好的性能以及为什么!
【问题讨论】:
-
您必须同时测量两者并查看;其他人的测量不太可能外推到您的特定环境。请注意,XQuery 是一种语言,而不是软件。 XQuery 有很多实现,一些在数据库上工作,一些在内存中,它们的性能可能会有很大差异。不过,总的来说,如果您已经努力将数据加载到数据库中,那么数据库应该能够提供比任何处理原始 XML 的东西更好的性能。唯一需要注意的是,您的数据集似乎很小。
标签: xml performance neo4j cypher xquery