过去几周我一直在尝试Titan,并想了解前进的方向,以及一些具体问题。该项目的目的是将日志数据存储在Cassandra集群上(对于这个问题,让我们使用网络流量的例子)并在Titan图中表示关系。所有节点都被建模为具有实体值和类型(例如“google.com”,“hostname”),并且边缘具有标签(例如“连接”)以及关系的若干属性(时间戳,流量长度等)上)。
一旦这些数据存储在cassandra中并表示为Titan图,我计划使用d3代码生成可视化。在隧道的尽头,我希望能够构建如下所示的大规模,交互式,复杂的图形网络:http://goo.gl/CVEd55
我目前的设置如下:
vertices.csv
和edges.csv
文件以供Gremlin加载的python脚本Titan Server 0.4
(使用CassandraThrift作为存储后端) - 将转换后的数据加载到Titan的gremlin脚本理想情况下,作为测试基础案例,我希望用户能够在Web前端键入Gremlin查询,并将其定向到包含结果的交互式d3图表的页面。
我的具体问题如下:
为边缘分配属性的过程是什么?我无法找到帮助我使用上面列出的模型表示图表的示例代码。
我将用于将数据加载到Titan的gremlin脚本使用bg.commit()
创建批处理图,稍后在RexPro连接conn= RexProConnection('localhost,8184,'bg')
中引用该图表。这最初工作,但在更改我的加载脚本,清除Gremlin中的图形然后重新加载后,由于图形bg显然不存在而无法打开RexPro连接。在Titan中更新图表的过程是什么?假设使用相同的图形运行两次加载脚本只会将节点/顶点添加到现有图形中,因此每次更新模型时如何生成具有相同名称的新图形,并让RexPro能够引用它运行查询时?
扩展接口以允许分析师将SQL查询输入前端是多么容易,使用RexPro以与描述的方式类似的方式访问图表?
为长篇文章道歉,但如果有人可以分享他们的专业知识,将非常感激!
答案 0 :(得分:1)
对于d3可视化,您可以使用力导向图。它们有一些变化。
关系图 https://vida.io/documents/qZ5SJdRJfj3XmSXYJ
强制布局树 https://vida.io/documents/sy7vzWW7BJEvKdZeL
如果您的网络包含大量节点和边缘,则需要在可视化之前对数据进行聚类。您可以使用Gephi,NodeXL等工具来执行群集。然后使用聚集数据构建力导向可视化。
答案 1 :(得分:0)
为边缘分配属性的过程是什么?
该过程与向顶点添加属性相同。获取Edge
个实例然后执行:
Edge e = g.addEdge(v1,v2,'label')
e.setProperty('weight',0.1d)
至于:
泰坦更新图表的过程是什么?假设使用相同的图形运行两次加载脚本只会将节点/顶点添加到现有图形中,因此每次更新模型时如何生成具有相同名称的新图形,并让RexPro能够引用它什么时候运行查询?
您不希望在加载BatchGraph
之后引用rexster.xml
来limitations来阻止您查询。听起来你只需要在rexster.xml
中配置“你的图表”,当你加载脚本时,只需将Graph
配置的conn = RexProConnection('localhost,8184,'yourgraph')
包装在你的代码中,然后对它执行加载操作。如果要查询它,只需引用“yourgraph”而不是“bg”。
{{1}}
扩展接口以允许分析师将SQL查询输入前端是多么容易,使用RexPro以与描述的方式类似的方式访问图形?
很难说这是否“容易”,因为这取决于技术之外的因素。我会说可以构建一个接受Gremlin查询的接口(你写的SQL,但我认为你的意思是Gremlin),将它们传递给Rexster并得到答案。你对这个答案做了什么取决于你,但就Rexster的部分而言,我不明白为什么会出现问题。