在过去的几周里,我一直在尝试使用 Titan,并希望在前进的道路上得到一些指示,以及一些具体的问题。该项目的目的是将日志数据存储在 Cassandra 集群上(对于这个问题,让我们使用 Web 流量的示例)并在 Titan 图中表示关系。所有节点都被建模为具有实体值和类型(例如“google.com”、“主机名”),并且边具有标签(例如“连接”)以及关系的几个属性(时间戳、流长度等)上)。
一旦这些数据存储在 cassandra 中并表示为 Titan 图,我计划使用 d3 代码生成可视化。在隧道的尽头,我希望能够构建看起来像这样的大规模、交互式、复杂的图形网络:http: //goo.gl/CVEd55
我目前的设置如下:
- 一个 python 脚本,用于将日志文件转换为 Gremlin 加载的
vertices.csv
文件edges.csv
Titan Server 0.4
(使用 CassandraThrift 作为存储后端) - 将转换后的数据加载到 Titan 的 gremlin 脚本- 使用 NetworkX 打开 RexPro 连接的 Python 脚本,允许分析师输入自定义 Gremlin 查询,将结果输出为 JSON
- 使用生成的 JSON 和 d3 将查询结果显示为图形的本地 Web 前端
理想情况下,作为测试基础案例,我希望用户能够在 Web 前端输入 Gremlin 查询,并被定向到包含结果的交互式 d3 图的页面。
我的具体问题如下:
将属性分配给边的过程是什么?我很难找到可以帮助我使用上面列出的模型表示图形的示例代码。
我将数据加载到 Titan 的 gremlin 脚本用于
bg.commit()
创建一个批处理图,该图稍后会在 RexPro 连接中引用conn= RexProConnection('localhost,8184,'bg')
。这最初是有效的,但在更改我的加载脚本、清除 Gremlin 中的图形然后重新加载后,由于图形 bg 显然不存在,无法打开 RexPro 连接。Titan中更新图的过程是什么?大概使用相同的图运行加载脚本两次只会将节点/顶点添加到现有的图,所以我将如何在每次更新模型时生成具有相同名称的新图,并让 RexPro 能够引用它运行查询时?扩展界面以允许分析师将 SQL 查询输入前端,使用 RexPro 以与描述的方式类似的方式访问图形,这有多容易?
为这篇长文道歉,但如果有人能分享他们的专业知识,将不胜感激!