我使用Titan 0.4.0 All,在Ubuntu 12.04上以共享VM模式运行Rexster。
如何正确删除使用Cassandra存储后端的Titan中的图形?
我尝试了TitanCleanup.clear(graph)
,但它并没有删除所有内容。指数仍在那里。我真正的问题是我有一个我不想要的索引(它会使每个查询崩溃),但是我了解Titan的文档it is impossible to remove an index once it is created。
答案 0 :(得分:10)
您可以使用以下方法清除所有边/顶点:
g.V.remove()
但是你发现它不会清除以前创建的类型/索引。最干净的选择是删除Cassandra数据目录。
如果您通过单元测试执行删除操作,您可能会尝试在测试设置中执行此操作:
this.config = new BaseConfiguration(){{
addProperty("storage.backend", "berkeleyje")
addProperty("storage.directory", "/tmp/titan-schema-test")
}}
GraphDatabaseConfiguration graphconfig = new GraphDatabaseConfiguration(config)
graphconfig.getBackend().clearStorage()
g = (StandardTitanGraph) TitanFactory.open(config)
请务必在测试拆解方法中致电g.shutdown()
。
答案 1 :(得分:5)
只是为了更新这个答案。
使用Titan 1.0.0
,可以使用Java以编程方式完成此操作:
TitanGraph graph = TitanFactory.open(config);
graph.close();
TitanCleanup.clear(graph);
答案 2 :(得分:3)
对于Titan称为JanusGraph的延续,命令为JanusGraphFactory.clear(graph)
,但很快就会JanusGraphCleanup.clear(graph)
。
答案 3 :(得分:1)
正如one of the comments to the earlier answer DROP
中提到的那样,使用titan
的密钥空间cqlsh
应该执行此操作:
cqlsh> DROP KEYSPACE titan;
使用storage.cassandra.keyspace
配置选项设置Titan使用的键空间名称。您可以将其更改为您想要的任何名称,并且可以被Cassandra接受。
storage.cassandra.keyspace=hello_titan
当Cassandra起床时,会按如下方式打印出键区的名称:
INFO 19:50:32创建新的Keyspace:KSMetaData {name = hello_titan, strategyClass = SimpleStrategy,strategyOptions = {replication_factor = 1}, cfMetaData = {},durableWrites = true, userTypes=org.apache.cassandra.config.UTMetaData@767d6a9f}
在 0.9.0-M1 中,该名称会显示在Titan的DEBUG登录中(在log4j.rootLogger=DEBUG, stdout
中设置conf/log4j-server.properties
):
[DEBUG] AstyanaxStoreManager - Found keyspace titan
或以下,当它没有:
[DEBUG] AstyanaxStoreManager - Creating keyspace titan...
[DEBUG] AstyanaxStoreManager - Created keyspace titan