摘要
我正在开发一个能够跨越tinkerpop支持的多个图形数据库工作的应用程序
详情
根据我的研究,相同版本的tinkerpop库(gremlin-python)不能与所有图形数据库的最新版本一起使用。这种情况的最佳方法是什么?我打算测试的数据库是
我仍在尝试整合更多数据库,例如orientDB和亚马逊海王星你知道他们会支持哪个版本。
答案 0 :(得分:5)
这个问题可能有点棘手,尤其是非开源系统没有明确发布版本和功能支持。对于开源系统,您通常可以通过查看项目的pom.xml找到它们支持特定版本的TinkerPop版本。对于OrientDB,这意味着找到你想要的版本(在本例中为3.2.3.0),然后寻找gremlin-core依赖:
https://github.com/orientechnologies/orientdb-gremlin/blob/3.2.3.0/driver/pom.xml#L47
版本指向一个属性,所以进一步检查pom,你会看到上面定义的那个数字:
https://github.com/orientechnologies/orientdb-gremlin/blob/3.2.3.0/driver/pom.xml#L14
因此OrientDB 3.2.3.0支持TinkerPop 3.2.3。使用封闭源系统,你只能搜索到你找到你想要的答案或直接询问供应商我猜 - 我已经看到海王星在3.3.x上,但我不确定是什么版本" x"。
仅仅因为所有这些系统都支持不同版本的TinkerPop,并且一般建议使用匹配的TinkerPop版本连接到它们并不意味着您无法获得3.3.x驱动程序进行连接到基于3.2.x的服务器。你可能没有最好的经验,你需要知道一些事情,但我认为可以做到。
从驱动程序的角度来看,这项工作的关键是确保为要连接的图形提供正确的序列化配置。无论您是否尝试连接到同一版本系统,都是如此。默认情况下,TinkerPop确保同一版本中的这些配置对齐,以便它们开箱即用。这就是为什么我们倾向于建议您尽可能使用相同的版本。如果不可能,您需要手动进行这些对齐。
例如,如果您将此链接向下滚动到"序列化"你会发现海王星支持的格式:
https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.html
只要您将驱动程序配置为匹配其中一种格式,它就适合您。同样可以说JanusGraph,与Neptune相比,不支持Gryo或GraphSON 3.0,因为它绑定到3.2.x线。序列化器的配置可以在JanusGraph的Gremlin Server包装中找到:
关于如何配置python驱动程序进行序列化?不可否认,目前还没有很多内容。关键是在配置message_serializer
时设置Client
(来自gremlinpython 3.3.2):
你可以看到默认设置为GraphSON 3.0。所以,这对海王星来说是完美的,但不是JanusGraph。对于尚不支持GraphSON 3.0的JanusGraph,您只需更改配置即可使用GraphSON 2.0序列化程序:
所以,这只是让连接工作 - 那么还有其他事情需要考虑:
math()
的序列化以及某些扩展类型的事情。您可以随时查看GraphSON类型here的完整列表,并在遇到问题时比较已发布的版本。