Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
RESTAPI或JavaAPI之间的选择_Java_Api_Rest_Scalability_Neo4j - Fatal编程技术网

RESTAPI或JavaAPI之间的选择

RESTAPI或JavaAPI之间的选择,java,api,rest,scalability,neo4j,Java,Api,Rest,Scalability,Neo4j,最近几天我一直在读关于neo4j的书。我对是否需要使用RESTAPI或是否可以使用JavaAPI感到非常困惑 我需要创建数百万个节点,这些节点之间会有一些连接。我想在几个节点属性上添加索引以进行搜索。最初,我使用Java API开始使用GraphDB的嵌入式模式,但很快就达到了OutOfMemory,在少数节点上建立索引,因此我认为如果我的neo4j作为服务运行,我通过REST API连接到它,那么它将通过将输入/输出数据交换到底层文件来自行完成所有内存管理。我的假设正确吗 此外,我还计划将我的

最近几天我一直在读关于neo4j的书。我对是否需要使用RESTAPI或是否可以使用JavaAPI感到非常困惑

  • 我需要创建数百万个节点,这些节点之间会有一些连接。我想在几个节点属性上添加索引以进行搜索。最初,我使用Java API开始使用GraphDB的嵌入式模式,但很快就达到了
    OutOfMemory
    ,在少数节点上建立索引,因此我认为如果我的neo4j作为服务运行,我通过REST API连接到它,那么它将通过将输入/输出数据交换到底层文件来自行完成所有内存管理。我的假设正确吗

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

  • 我可以使用REST API来完成批插入等工作吗?我可以使用Java API在嵌入式模式下运行Graph DB吗

  • 您知道为什么要将
    从内存中删除
    异常吗?这听起来像是在同一个事务中创建所有这些节点,这使它位于内存中。尝试一次提交小块,以便
    Neo4j
    可以将其写入磁盘。除了缓存之类的东西外,您不必管理Neo4j的内存

  • 分布式模式是主/从体系结构,因此在每个系统上仍然有整个数据库的副本。Neo4j对于磁盘存储非常有效,一个节点占用9个字节,关系占用33个字节,属性是可变的

  • 有一个批处理RESTAPI,它将许多调用分组到同一个HTTP调用中,但是如果嵌入了REST调用,则进行REST调用的速度仍然较慢


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

    从RESTfull的角度讲,您可以通过处理文档的POST来执行复杂的操作,该POST告诉系统要做什么(POST,因为它不是幂等的)。然而,除非您在各种事情上对描述性元数据做大量额外工作,否则此类机制的可发现性不是很好。是的,我不是在抨击
    RESTful
    web服务,而是事实上
    Neo4j
    不允许跨多个
    REST
    调用进行事务处理。您确定在集群中运行时,所有实例都包含相同的数据?我想我读过一篇关于发行版的文章,其中的实例只是在它们之间共享一部分数据,而不是全部。谢谢大家!1.“这听起来像是在同一个事务中创建所有这些节点,这会导致它驻留在内存中。”我将对此进行检查。但我的感觉是,当我尝试向索引中添加节点时,我面临OOM,这些节点是在节点的各种属性上创建的。在我的例子中,我有50多个属性需要搜索,因此将它们全部添加到索引中。2.从您的评论来看,保留副本似乎是为了负载平衡,以提高查询性能,而不是在存储方面具有可扩展性。但当我谈到分布式模式时,我需要在存储方面扩展它。我很欣赏有关节点/关系大小的信息,但在某些情况下,它仍将是一个限制因素。Mine是一种数据仓库系统,我们不断添加每日/每月数据,同时仍希望保留旧数据。这个问题仍然悬而未决&这也是一个固有的问题,即我是否只需要在分布式模式下使用restapi。