gpt4 book ai didi

java - 在 REST API 或 Java API 之间进行选择

转载 作者:行者123 更新时间:2023-11-30 09:26:54 25 4
gpt4 key购买 nike

最近几天我一直在阅读有关 neo4j 的内容。我对是否需要使用 REST API 或是否可以使用 Java API 感到非常困惑。

  1. 我的需要是创建数百万个节点,这些节点之间会有某种联系。我想在几个节点属性上添加索引以进行搜索。最初,我从使用 Java API 的 GraphDB 嵌入式模式开始,但很快就遇到了 OutOfMemory,在几个节点上建立了索引,所以我认为如果我的 neo4j 作为服务运行并通过 REST API 连接到它会更好它将通过将数据换入/换出底层文件来自行完成所有内存管理。我的假设对吗?

  2. 此外,我计划将我的解决方案扩展到十亿个节点,我相信单机的 neo4j 安装是不可能的。我也相信 Neo4j 具有在分布式模式下运行的能力。出于这个原因,我也认为继续实现 REST API 是最好的主意。虽然我找不到任何关于如何在分布式环境中运行 Neo4j 的好文档。

  3. 我是否也可以使用 REST API 执行批量插入等操作,我可以使用 Java API 和以嵌入式模式运行的图形数据库来执行这些操作?

最佳答案

  1. 您知道为什么会出现 OutOfMemory 异常吗?这听起来像是您在同一个事务中创建所有这些节点,这导致它驻留在内存中。尝试一次提交小块,以便 Neo4j 可以将其写入磁盘。除了缓存之类的东西,您不必管理 Neo4j 的内存。

  2. 分布式模式采用主/从架构,因此您在每个系统上仍然拥有整个数据库的副本。 Neo4j 对于磁盘存储非常高效,一个 Node 占用 9 Bytes,Relationship 占用 33 Bytes,属性是可变的。

  3. 有一个批处理 REST API,它将许多调用分组到同一个 HTTP 调用中,但是如果将其嵌入,则进行 REST 调用仍然要慢一些。

使用 REST API 有一些您没有提到的缺点,比如事务。如果您要执行原子操作,需要创建多个节点、关系、更改属性,并且如果任何步骤失败也不提交任何操作,则不能在 REST API 中执行此操作。

关于java - 在 REST API 或 Java API 之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com