2

我正在使用带有 hbase 作为后端的 gremlin 服务器。我读到要存储多个图形,我们必须使用不同的表,所以我在 hbase 中以不同的表名存储了多个图形。

属性 storage.hbase.tablename 在 titan-hbase.properties 中指定。但是我必须根据组动态提供图表,并且我无法在 hbase.properties 文件中指定表名(可能有数百个图表)。

实现这一目标的方法是什么?

4

2 回答 2

2

当使用到 3.2.4 的 TinkerPop 版本时,您必须在 Gremlin Server 周围编写一个包装器,并在其中使用以下内容启动它:

Settings settings = new Settings()
GremlinServer server = new GremlinServer(settings);
server.start().join();

然后你将操纵GraphManager你可以从GremlinServer实例中得到的:

GraphManager manager = server.getServerGremlinExecutor().getGraphManager() 

GraphManager.getGraphs()返回Map<String,Graph>实例,您可以在其中动态添加/删除正在服务的图形。我会认为这种方法是一种破解/解决方法来完成你想要的,但没有另一种方法。

从 3.2.5 开始(截至撰写本文时尚未发布)和转发,GraphManager是一个您可以自己实现以动态提供图形列表的接口。您的实现可以在 Gremlin 服务器配置文件中引用,从而允许将其动态插入服务器。

于 2017-04-18T10:36:41.637 回答
1

不过,他仍然需要一种方法来实例化图形引用。而且由于用户不想创建/编辑他们的 .properties 文件,您可以做的是基于“共享”属性文件动态创建一个配置对象,并将 hbase 表名作为该配置对象的属性附加,并使用GraphFactory实例化图形对象。然后,您可以将图形存储在由表名命名的 GraphManager 的 Map 中,或者您喜欢的任何内容。这最后一步不是必需的,但是,存储在那里的图形会在 Gremlin 脚本执行结束时为您提供自动提交和回滚功能。

于 2017-04-18T13:58:39.910 回答