卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34658本站已运行393

Gremlin-Go:树步骤不可序列化

gremlin-go:树步骤不可序列化

php小编苹果Gremlin-Go是一种新型的分布式数据库,它采用了树步骤不可序列化的技术,为用户提供了更高效、更可靠的数据存储和处理方案。通过将数据存储在树结构中,并使用不可序列化的步骤来实现数据的读写操作,Gremlin-Go能够在分布式环境下保持数据的一致性和可靠性。这种创新的设计理念使得Gremlin-Go成为了当前领先的分布式数据库之一,为各种规模的企业提供了强大的数据支持。

问题内容

我正在运行一个查询来遍历特定标签后面的所有“入”边,稍后我将对“出”边执行类似的查询。我想将其作为一棵树,因为可能有一个具有多个边的顶点要遍历,并且需要在我的客户端中反映这一点,所以我不能在这里仅使用 tolist()

我目前正在使用 gremlin-go sdk,但是在调用 tree() 步骤时出现反序列化错误。这是我的客户端代码的片段:

    res, err := g.v(id).
        emit().
        repeat(__.in(label)).
        tree().
        next() // other terminal steps produce same issue

这会在数据类型 0x2b 上产生反序列化错误,该数据类型是 graphbinary 核心数据类型“tree”

2023/02/28 12:23:05 Error occurred during operation gremlinServerWSProtocol.readLoop(): 'E0408: unknown data type to deserialize 0x2b'
2023/02/28 12:23:05 Read loop error 'E0408: unknown data type to deserialize 0x2b', closing read loop.
2023/02/28 12:23:05 Connection error callback invoked, closing protocol.

gremlin-go 参考文档似乎没有提及任何有关特定序列化支持的内容。根据 gremlin-go readme,它支持所有核心 graphbinary 数据类型。我已经在 gremlin 控制台中测试了我的查询以验证查询和服务器: g.v().emit().repeat(__.in(

对于一些额外的上下文,我正在本地针对 gremlin-server:3.5.3 进行开发,以进行实验,目的是通过对 aws neptune 的支持来完成查询。我知道这些不能完全互换,并且将遵循 neptune-gremlin 参考。 neptune 的最新版本指定 gremlin 的最新支持版本为 3.5.3。

解决方法

一般来说,只有 Java(以及其他基于 JVM 的客户端)能够反序列化像子图或树这样的结构。这是因为这些是唯一具有当前可用数据结构的本机实现的 Gremlin 客户端(例如 JVM 客户端具有可用的 TinkerGraph)。

这是 TinkerPop 社区非常了解的一项,并且它在值得改进的事项列表中。

一种可能的解决方法(不是很好)是使用 HTTP 端点(以文本形式发送查询)并处理返回的 GraphSON(如果必须返回此类数据结构)。

卓越飞翔博客
上一篇: 为什么结构体字段显示为空?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏