- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 Java 中的 Tinkerpop3 作为客户端从已经运行的 TitanDB 服务器获取 Graph 对象(我不想创建服务器)。
换句话说,我正在尝试实现这样的功能:
public Graph obtainGraph(String serverIp, String graphName);
我试着像这里那样做: AWS Lambda + Tinkerpop/Gremlin + TitanDB on EC2 + AWS DynamoDB in cloud
但据我所知,TitanFactory.open()
启动服务器,我不想这样做 - 我只想连接到现有服务器。
文档以及 Internet 上的大多数资料都使用内存中的图表作为示例,但我找不到一个说明如何:
创建新图并将其保存在远程服务器上
从远程服务器检索现有图
更新此类远程图,因此在添加/删除边后提交更改
删除整个图
我不想通过 Gremlin 语言(字符串)来做上述事情,而是通过 Java API(TinkerpopBlueprins)。这家伙越来越接近我需要的东西了: Add vertices to TitanDB Graph in Java然而,他的方法已经将 Graph
作为参数。
我在 Internet 的很多地方都看到 GraphFactory.open() 获取属性文件的路径,但是我还没有看到此类文件内容的示例,尤其是与 TitanDB 相关的数据,所以我更愿意使用 Configuration
对象。
Graph graph = GraphFactory.open(new BaseConfiguration())
说,没有 gremlin.graph 属性。
Configuration configuration = new BaseConfiguration();
configuration.setProperty("gremlin.graph", "titan");
Graph graph = GraphFactory.open(configuration);
说 GraphFactory
找不到 [titan] - 确保 jar 在类路径中
是否有任何带有枚举和常量的静态类型构建器,而不是 Map<String, Object>
,它会告诉我,我必须提供哪些属性以及它们的类型是什么?是否有任何开源项目使用 Tinkerpop3 作为客户端连接到远程 TitanDB 服务器,我可以将其用作示例?
我希望看到完整的工作示例,而不是在内存中使用外部配置。
最佳答案
这是连接到正在运行的 Titan 服务器的 Titan 驱动程序示例。 https://github.com/pluradj/titan-tp3-driver-example正如您所注意到的,这会将 Gremlin 作为字符串传递给远程 Titan 服务器。
如果你不想这样做,因为你想直接使用 Java API,你应该使用 TitanFactory.open()
直接连接到您的图表。 TitanFactory.open()
创建一个 TitanGraph您可以对其执行图形 API 调用的实例。 它不会启动 Titan 服务器。在幕后,它会创建到后端存储和索引的客户端连接。
没有Titan Server的Titan Java程序可以引用这个例子https://github.com/pluradj/titan-tp3-java-example
您可以使用属性文件(这里是使用 Cassandra 和 Elasticsearch 的 example configuration)或通过构建 Configuration
来配置它通过代码对象(基本上设置与属性文件中相同的键值对)。
如果在您的初始连接之前图形不存在,Titan 将在 Cassandra 中创建图形键空间并在 Elasticsearch 中创建索引。
记下 storage.hostname
和 index.search.hostname
,因为它们分别是您的 Cassandra 和 Elasticsearch 集群。 这些本质上是您的“图形服务器”。您不需要运行单独的 Titan 服务器。
Titan 没有任何 API 可以从后端存储中删除图形。要删除整个图表,您需要通过 Java client driver 连接到 Cassandra。 ,并执行 API 以删除 key 空间。同样,您需要通过其 Indices API 连接到 Elasticsearch , 并删除索引。
关于java - Tinkerpop3 连接到远程 TitanDB 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38747193/
我想使用Java API来操作远程服务器上的图形,该服务器实际上位于localhost中。我用来连接服务器的代码是: JanusGraphFactory.Builder b = JanusGraphF
我的数据结构如下: { number: Integer letter: String } 我想像这样按两个属性进行分组计数: g.V().values('number', 'lette
我目前正在使用 TinkerPop Java API 进行图形遍历。目前我必须创建相同遍历的副本来计算计数。 Long allUsersCount = gt.V().hasLabel("user").
示例数据:TinkerPop Modern Graph 条件: vadas 是否在 2 跳内连接到 lop vadas 是否在 3 跳内连接到 peter vadas 是否在 1 跳 中连接到 doe
我研究 Tinkerpop 堆栈已有一段时间了。我想我很清楚它能做什么以及它适用于哪些数据库。我现在正在考虑几个不同的数据库,但还没有确定。所以我决定只为接口(interface)编写代码,现在不考虑
如果不遍历整个事物,我似乎无法在图中找到特定节点。有什么我想念的吗? 我正在使用 tinkerpop 蓝图。 Orientdb 为诸如“#8:1”之类的节点提供了某种无意义的 id - 我如何在不知道
给定一个树形结构的 TinkerPop 图,其顶点通过标记的父子关系 ([parent-PARENT_CHILD->child]) 连接,遍历并查找所有这些节点的惯用方法是什么? 我是图形遍历的新手,
我想匹配所有 b1,其中不存在节点 b2 ,如下所示。 这是某种 2 跳不对称性。请注意,不存在 b2 必须链接到与 b1 相同的 c:C,因此其他 >(a2) --> (b3) --> (a1) 可
有没有办法在创建顶点后设置T.label。我尝试了以下方法: Vertex v = graph.addVertex(); v.property(T.label.name(), "test"); 但是当
我是 Gremlin 的新手,我需要帮助来设置最佳查询以选择唯一和过滤的结果。 从一个 team 开始,我会得到每个 的 player (注意:每个玩家可以为多个团队效力)由 is_friends_w
我正在尝试遍历图形以追踪特定节点的沿袭。我希望我的查询以广度优先模式生成该节点的前因。注意,每个节点可以有多个父节点。该图可以有很多层,我想查看给定节点的所有级别的结果。我正在尝试跟进 this配方,
总结 我正在开发一个应用程序,该应用程序旨在跨 tinkerpop 支持的多个图形数据库工作 详情 根据我的研究,相同版本的 tinkerpop 库(gremlin-python)不适用于所有图形数据
执行以下遍历时: graph.addVertex("a") graph.addVertex("b") graph.addVertex("c") graph.traversal().V().range(
当我查询路径时,例如: g.V(1).inE().outV().inE().outV().inE().outV().path() path()中既有顶点也有边,请问有没有办法只计算路径中的顶点数而忽略
我目前正在阅读 The Practitioner's Guide to Graph Data 并试图解决以下问题(仅用于学习目的)。以下是书籍电影数据集的上下文,在此示例中,它使用了一个“标签”顶点、
我有一个非常简单的示例图,我正在尝试对其进行深度优先查询。假设图形边缘如下所示 A->B A->C B->D B->E C->F C->G 从 A 开始的深度优先搜索应该返回 A-B-D-E-C-F-
例如,给定这张图: gremlin> graph = TinkerFactory.createModern() (1) ==>tinkergraph[vertices:6 edges:6] greml
我第一次使用 Frames,但我的 Java 已经很生疏了。我坚持通过框架将信息写入数据库。我一直在关注文档并拥有一个 Person 界面。 public interface Person { @
给定一组 User 顶点,我需要找到连接到这些顶点的所有 Chat 顶点,但没有其他顶点。例如,只有 Alice 和 Bob 参与的所有聊天。查询应对结果进行排序,以便首先返回连接到最新消息的聊天。
我的 Java 应用程序中有一个图形遍历,在遍历完成后需要 300 毫秒以上才能填充路径对象。这很奇怪,因为它只发生在某些特定的遍历上,而其他遍历会立即填充它们的路径。以下是 Java 代码示例,使用
我是一名优秀的程序员,十分优秀!