我使用 Titan 0.4.0 All,在 Ubuntu 12.04 上以共享 VM 模式运行 Rexster。
如何正确删除 Titan 中使用 Cassandra 存储后端的图形?
我试过了TitanCleanup.clear(graph)
,但它并没有删除所有内容。指数还在。我真正的问题是我有一个我不想要的索引(它使每个查询都崩溃),但是据我了解 Titan 的文档,一旦创建索引就不可能删除它。
我使用 Titan 0.4.0 All,在 Ubuntu 12.04 上以共享 VM 模式运行 Rexster。
如何正确删除 Titan 中使用 Cassandra 存储后端的图形?
我试过了TitanCleanup.clear(graph)
,但它并没有删除所有内容。指数还在。我真正的问题是我有一个我不想要的索引(它使每个查询都崩溃),但是据我了解 Titan 的文档,一旦创建索引就不可能删除它。
您可以使用以下命令清除所有边/顶点:
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()
您的测试拆卸方法。
只是为了更新这个答案。
Titan 1.0.0
这可以通过以下方式在 Java 中以编程方式完成:
TitanGraph graph = TitanFactory.open(config);
graph.close();
TitanCleanup.clear(graph);
对于名为 JanusGraph 的 Titan 的延续,命令 is JanusGraphFactory.clear(graph)
but is soon to be JanusGraphCleanup.clear(graph)
。
正如对较早答案的评论之一中 提到的那样,使用DROP
ping 键空间应该这样做:titan
cqlsh
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