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(
。
对于一些额外的上下文,我正在本地针对 gremlin-server:3.5.3
进行开发,以进行实验,目的是通过对 aws neptune 的支持来完成查询。我知道这些不能完全互换,并且将遵循 neptune-gremlin 参考。 neptune 的最新版本指定 gremlin 的最新支持版本为 3.5.3。
解决方法
一般来说,只有 Java(以及其他基于 JVM 的客户端)能够反序列化像子图或树这样的结构。这是因为这些是唯一具有当前可用数据结构的本机实现的 Gremlin 客户端(例如 JVM 客户端具有可用的 TinkerGraph)。
这是 TinkerPop 社区非常了解的一项,并且它在值得改进的事项列表中。
一种可能的解决方法(不是很好)是使用 HTTP 端点(以文本形式发送查询)并处理返回的 GraphSON(如果必须返回此类数据结构)。
以上就是Gremlin-Go:树步骤不可序列化的详细内容,更多请关注编程网其它相关文章!