我有一组平面文件形式的日志数据,我想从中形成一个图形(基于日志中的信息)并将其加载到Titan数据库中.这个数据的大小是几千兆字节.我正在探索批量加载选项Faunus和BatchGraph(我在https://github.com/thinkaurelius/titan/wiki/Bulk-Loading中读到过).选项卡分隔的日志数据我需要对文件的每一行进行一些处理,以形成我想到的图形节点和边缘.Faunus/BatchGraph会服务于这个用例吗?如果是,我的输入文件应采用什么格式才能使这些工具正常工作?如果没有,是否正在使用BluePrints API?由于我是新手,因此非常感谢您可以在建议中分享的任何资源.谢谢!
请帮助我,我在决定使用图形数据库时非常困惑,我正在开发一个社交网站.所以请建议我必须使用哪个.
我使用spring和liferay 6.2开发这个项目.
请帮我 .
提前致谢.
到目前为止,我想删除现有索引并按照文档中的步骤进行操作。我现在没有配置单独的索引后端。但是,当我到达必须等待索引状态更改的步骤时,m.awaitGraphIndexStatus
它会永远等待更改并超时并出现以下错误:
GraphIndexStatusReport[success=false, indexName='usernameComposite', targetStatus=DISABLED, notConverged={username=INSTALLED}, converged={}, elapsed=PT1M0.092S]
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个新的时,也会发生同样的情况。任何想法可能导致这种情况?
我正在使用以下代码片段创建 indizes:
graph.tx().rollback()
mgmt = graph.openManagement()
name = mgmt.getPropertyKey('username')
mgmt.buildIndex('username-composite', Vertex.class).addKey(name).unique().buildCompositeIndex()
mgmt.commit()
mgmt.awaitGraphIndexStatus(graph, 'username-composite').call()
Run Code Online (Sandbox Code Playgroud) 我正在创建一个Titan图(由Dynamodb支持); 我正在使用Titan 1.0.0并运行Gremlin-Server 3(在TinkerPop3上).
我正在尝试将一个顶点添加到我的图表中,并在一行中添加标签和多个属性.我能够添加一个带有标签和单个属性的顶点,并且我可以在创建顶点后为顶点添加多个属性,但似乎我无法一次完成所有操作.
为了测试我在gremlin shell中运行命令,但最终用例是通过REST api与它进行交互(已经正常工作).
作为一个说明,我在每次交易后回滚,所以我有一个清白的板岩.
以下是我发起会话的方式:
gremlin> graph = TitanFactory.open('conf/gremlin-server/dynamodb.properties')
==>standardtitangraph[com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager:[127.0.0.1]]
gremlin> g = graph.traversal()
==>graphtraversalsource[standardtitangraph[com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager:[127.0.0.1]], standard]
Run Code Online (Sandbox Code Playgroud)
我可以创建一个带有标签和单个属性的顶点,如下所示:
gremlin> graph.addVertex('date_of_birth').property('date_of_birth','1949-01-01')
==>vp[date_of_birth->1949-01-01]
gremlin> g.V().hasLabel('date_of_birth').has('date_of_birth','1949-01-01').valueMap()
==>[date_of_birth:[1949-01-01]]
Run Code Online (Sandbox Code Playgroud)
我也可以创建一个顶点,然后在我刚刚创建的顶点开始遍历遍历许多属性:
gremlin> v1 = graph.addVertex('date_of_birth')
==>v[409608296]
gremlin> g.V(v1).property('date_of_birth','1949-01-01').property('year_of_birth',1949).property('date_of_birth','1949-01-01').property('day_of_birth',1).property('age',67).property('month_of_birth',1)
==>v[409608296]
gremlin> g.V(v1).valueMap()
==>[day_of_birth:[1], date_of_birth:[1949-01-01], month_of_birth:[1], age:[67], year_of_birth:[1949]]
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我试图避免进行2次调用来实现这个结果,所以我想一次创建具有所有这些属性的顶点.从本质上讲,我希望能够执行以下操作,但失败超过1 .property()
:
gremlin> graph.addVertex('date_of_birth').property('date_of_birth','1949-01-01').property('year_of_birth',1949).property('date_of_birth','1949-01-01').property('day_of_birth',1).property('age',67).property('month_of_birth',1)
No signature of method: com.thinkaurelius.titan.graphdb.relations.SimpleTitanProperty.property() is applicable for argument types: (java.lang.String, java.lang.String) values: [date_of_birth, 1949-01-01]
Run Code Online (Sandbox Code Playgroud)
我也尝试使用.property()
具有多个属性的1 (以及我能想到的所有其他语法变体),但它似乎只捕获第一个:
gremlin> graph.addVertex('date_of_birth').property('date_of_birth','1949-01-01','year_of_birth',1949,'date_of_birth','1949-01-01','day_of_birth',1,'age',67,'month_of_birth',1)
gremlin> g.V().hasLabel('date_of_birth').has('date_of_birth','1949-01-01').valueMap()
==>[date_of_birth:[1949-01-01]]
Run Code Online (Sandbox Code Playgroud)
我查看了所有可以从我找到的所有来源获得的文档,我找不到任何关于"一次性"的方法.有没有人以前做过这个或知道怎么做?
提前致谢!
我有一个带有几个索引的图表.它们是两个具有标签限制的综合指数.(两者在不同的属性/标签上完全相同).一个肯定似乎工作,但另一个没有.我已完成以下配置文件()以加倍检查:
一个叫做KeyOnNode
:属性uid
和标签node
:
gremlin> g.V().hasLabel("node").has("uid", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step Count Traversers Time (ms) % Dur
=============================================================================================================
TitanGraphStep([~label.eq(node), uid.eq(dammit_... 1 1 2.565 96.84
optimization 1.383
backend-query 1 0.231
SideEffectCapStep([~metrics]) 1 1 0.083 3.16
>TOTAL - - 2.648 -
Run Code Online (Sandbox Code Playgroud)
以上是完全可以接受的,效果很好.我假设魔术线是backend-query
.
另一种叫做NameOnSuperNode
:属性name
和标签supernode
:
gremlin> g.V().hasLabel("supernode").has("name", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step Count Traversers Time (ms) % Dur
=============================================================================================================
TitanGraphStep([~label.eq(supernode), name.eq(n... 1 1 5763.163 100.00
optimization 2.261
scan 0.000
SideEffectCapStep([~metrics]) 1 1 0.073 0.00 …
Run Code Online (Sandbox Code Playgroud) 考虑我从 v1 到 v5 大约有 5 个顶点。并且在它们之间有边缘。结构如下。
v1->v2
v1->v3
v4->v2
v2->v1
v2->v3
v3->v5
v5->v1
Run Code Online (Sandbox Code Playgroud)
现在我想编写一个 gremlin 查询来显示出边为 2 的顶点。
例如 v1 有 2 个到 v2 和 v3 的传出边,所以这里的查询应该显示 v1,v2,v3
我在Spring Web应用程序中使用Titan.当我添加新边缘,或删除它实际删除但不反映在我的网页中的顶点.我的查询仍然获得旧边或顶点.
要做到这一点,我必须重新启动我的应用程序.
g.commit()
每次新增或删除后我都在做.
首先,我不是泰坦和图形数据库的专家,因此任何评论都将受到赞赏.
目前我有大约12.000.000个顶点和16.000.000个边缘.我创建了2个索引,为Vertex索引"fbid",为边缘索引"dateInMs".
graph.makeKey("fbid").dataType(String.class).single().indexed(Vertex.class).unique().make();
graph.makeKey("dateInMs").dataType(Long.class).indexed(Edge.class).make();
Run Code Online (Sandbox Code Playgroud)
然后,我运行以下查询.
g.query().interval("dateInMs",1394247600000,1394420400000).edges()
Run Code Online (Sandbox Code Playgroud)
数字代表ms的两个日期(2014-03-08和2014-03-10)
因为我基于索引字段查询,所以我期待快速响应,但是查询速度太快,所以我不知道它是否是预期的结果或者我做错了什么.
注意:当我运行查询时,我收到以下消息: com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - Query requires iterating over all vertices [(dateInMs >= 1394247600000 AND dateInMs < 1394420400000)]. For better performance, use indexes,
但是我正在使用索引dateInMs.
有线索吗?
我想将属性添加到顶点属性.在gremlin中我将属性"phone"添加到顶点属性"places",其值为"place1"
g.V(v).properties('places').hasValue('place1').property('phone',"123456789")
Run Code Online (Sandbox Code Playgroud)
没有使用事务提交它工作正常.但是当我在java代码中使用这种方式时,它没有用.那么在java代码中,如何向vertex属性添加属性?谢谢您帮忙.
我从网址上下载了EC2服务器上的Titan Version 1.0
然后我用以下命令解压缩并运行titan服务器:
bin/titan.sh启动
Forking Cassandra...
Running `nodetool statusthrift`... OK (returned exit status 0 and printed string "running").
Forking Elasticsearch...
Connecting to Elasticsearch (127.0.0.1:9300).... OK (connected to 127.0.0.1:9300).
Forking Gremlin-Server...
Connecting to Gremlin-Server (127.0.0.1:8182).... OK (connected to 127.0.0.1:8182).
Run gremlin.sh to connect.
Run Code Online (Sandbox Code Playgroud)
然后我尝试从Titan 1.0版本的HTTP请求(在titan 0.4版本Rexster工作正常)但我得到以下错误