标签,顶点和边缘TitanDB

时间:2014-06-03 10:05:52

标签: cassandra gremlin titan bulbs

我在Titan Graph数据库中有以下信息。我试图通过在gremlin shell上发送查询来理解信息。我试图调查的Graph数据库模拟了Network.There有两种类型的顶点< / p>

        - `Switch`
        - `Port`

我试图找出这两种顶点之间的关系。

g = TitanFactory.open("/tmp/cassandra.titan")

查看每种类型的顶点列表

$ g.V('type', 'switch') 
==>v[228]
==>v[108]
==>v[124]
==>v[92]
==>v[156]
==>v[140]

$ g.V('type', 'port')

==>v[160]
==>v[120152]
==>v[164]
==>v[120156]
==>v[560104]
==>v[680020]
==>v[680040]
==>v[112]
==>v[120164]
==>v[560112]
==>v[680012]
==>v[680004]
==>v[144]
==>v[680032]
==>v[236]
==>v[100]
==>v[560128]
==>v[128]
==>v[680028]
==>v[232]
==>v[96]

找到交换机和端口之间的关系。

g.v(108).out         
==>v[560104]
==>v[680004]
==>v[112]

这是什么“出局”?据我所知,有一个向外箭头指向从顶点108表示的Switch到由顶点560104 680004112表示的端口

这是inout是什么?它是图形数据库特有的东西吗?图形数据库中的标签是什么?是inout标签吗?

1 个答案:

答案 0 :(得分:2)

使用inout描述了边缘从一个顶点到另一个顶点的方向。在你的情况下,你有这个:

switch --> port

当你写:

g.v(108).out

你告诉Gremlin在108处找到顶点,然后沿着指向out或远离它的边缘行走。您可能还会认为out从箭头尾部开始走向头部。鉴于您的架构,这些会导致“端口”。

同样,in只是意味着让Gremlin沿着指向in的边缘走向顶点。你可能还会想到in从箭头开始走到尾巴。根据您的架构,交换机将没有in边缘,因此将始终不返回任何结果。但是,如果您从“端口”顶点开始并遍历in

g.v(560104).in

你至少会回到顶点108,因为顶点“560104”至少有一条带箭头的边指向它(鉴于我对你的样本数据的了解)。

到目前为止,您已经收集到inout是“方向”而不是“标签”。标签有不同的用途;它将边缘分类。例如,您可能具有以下架构:

switch --connectsTo--> port
company --manufactures--> switch
switch --locatedIn--> rack

换句话说,您可能有三个边缘标签,表示“开关”与架构的其他部分相关的不同方式。通过这种方式,您的查询可以更加描述您想要的内容。鉴于您之前的示例和此修订的架构,您必须编写以下内容以获得最初显示的相同结果:

g.v(108).out("connectsTo")         
==>v[560104]
==>v[680004]
==>v[112]

图形数据库通常会利用这些标签来帮助提高查询性能。