如何使用Cassandra存储后端删除Titan中的图形?

时间:2013-10-20 12:43:17

标签: cassandra titan tinkerpop rexster

我使用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

4 个答案:

答案 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