9

我使用 Titan 0.4.0 All,在 Ubuntu 12.04 上以共享 VM 模式运行 Rexster。

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

我试过了TitanCleanup.clear(graph),但它并没有删除所有内容。指数还在。我真正的问题是我有一个我不想要的索引(它使每个查询都崩溃),但是据我了解 Titan 的文档,一旦创建索引就不可能删除它

4

4 回答 4

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()您的测试拆卸方法。

于 2013-10-20T13:02:16.507 回答
5

只是为了更新这个答案。

Titan 1.0.0 这可以通过以下方式在 Java 中以编程方式完成:

TitanGraph graph = TitanFactory.open(config);
graph.close();
TitanCleanup.clear(graph);
于 2016-07-21T15:38:59.977 回答
3

对于名为 JanusGraph 的 Titan 的延续,命令 is JanusGraphFactory.clear(graph)but is soon to be JanusGraphCleanup.clear(graph)

于 2018-02-15T01:00:03.427 回答
1

正如对较早答案的评论之一中 提到的那样,使用DROPping 键空间应该这样做:titancqlsh

cqlsh> DROP KEYSPACE titan;

Titan 使用的键空间的名称是使用storage.cassandra.keyspace配置选项设置的。您可以将其更改为您想要的任何名称,并且 Cassandra 可以接受。

storage.cassandra.keyspace=hello_titan

当 Cassandra 起床时,它会打印出键空间的名称,如下所示:

INFO 19:50:32 创建新的键空间: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
于 2015-01-23T20:55:51.903 回答