【问题标题】:Fetch Neptune DB data using Gremlin Java client in batch使用 Gremlin Java 客户端批量获取 Neptune DB 数据
【发布时间】:2022-01-20 03:10:52
【问题描述】:

我正在尝试使用带有 RemoteConnection 的 Apache TinkerPop Gremlin 客户端从 AWS Neptune 获取数据。似乎GraphTraversalnext()ResultQueueLinkedBlockingQueue 和另一个网络调用线程中获取数据,将数据排入LinkedBlockingQueue。因此,即使我不使用遍历中的完整数据,它也会继续获取查询的完整结果。 This 答案表明 Gremlin 控制台 next() 如何帮助获取所需的数据,而不是将完整的数据加载到内存中。但这里不是这样。我试图探索RequestOptionbatchSize 参数,但这也无济于事。
有什么方法可以批量加载内存中所需的数据(使用next(size)),而不是使用Java客户端一次加载内存中的所有数据?使用 Java 客户端连接到 Neptune DB 的基本示例是 here

【问题讨论】:

    标签: java gremlin amazon-neptune


    【解决方案1】:

    Apache TinkerPop Gremlin Java 客户端在幕后的工作方式是继续尽可能快地将来自服务器的数据接收到本地缓冲区中,即使您说诸如 next(1) 之类的内容也是如此。这样做是因为如果可能的话,需要在服务器端超时触发之前将整个结果发送到客户端。如果您使用的是 Amazon Neptune,则刚刚引入了一个新的服务器端结果缓存功能,它允许您进行真正的服务器端缓存和分页。详情见this link

    【讨论】:

    • 是的,我看到了 Neptune 的缓存选项。这将是我们无法控制的,如果负载过重,LRU 缓存会丢失数据,最终我们可能会收到许多部分失败的请求。
    猜你喜欢
    • 2011-03-31
    • 2015-06-08
    • 2014-12-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多