【问题标题】:How to stream records by batch with neo4j java driver 4.0.0?如何使用 neo4j java driver 4.0.0 批量流式传输记录?
【发布时间】:2020-03-03 19:41:40
【问题描述】:

假设我有一个对 neo4j 程序的查询,它应该返回 100 000 条记录。 我想要的是一种按 1000 批获取记录的方法。我不想等待 Neo4j 发送 100 000 条记录,我想在客户端控制我收到的记录数量。我注意到ResultCursor 中有一个CompletionStage<Record> nextAsync() 方法,它正在做我想做的事情,但只有一个记录。这不是最优的,因为它需要在客户端和 neo4j 之间进行太多的往返才能获取所有记录。有没有办法查询接下来的 N 条记录?

我在异步模式下使用 neo4j java 驱动程序 4.0.0。

【问题讨论】:

    标签: java neo4j driver


    【解决方案1】:

    [更新]

    neo4j 4.0+中,nextAsync()方法内部为你批量获取记录。

    每当队列大小低于低水位线时,它的实现会从一个异步补充的队列中返回每条记录。

    因此,nextAsync() 方法非常理想,通常应该很快从队列中获取下一条记录。

    【讨论】:

    • 如果我的存储过程应该返回 100 000 条记录,并且如果 nextAsync 方法是批量获取记录,那么客户端和服务器之间完成了多少次往返?如何控制批量大小?
    • 根据discussion,您的答案仅在 Neo4j 4.0 开始有效。对于 Neo4j 3.5 及以下版本,所有记录都是一次拉取的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2017-12-13
    相关资源
    最近更新 更多