How to delete graph in Titan with Cassandra storag

2020-06-12 05:49发布

I use Titan 0.4.0 All, running Rexster in shared VM mode on Ubuntu 12.04.

How could I properly delete a graph in Titan which is using the Cassandra storage backend?

I have tried the TitanCleanup.clear(graph), but it does not delete everything. The indices are still there. My real issue is that I have an index which I don't want (it crashes every query), however as I understand Titan's documentation it is impossible to remove an index once it is created.

4条回答
成全新的幸福
2楼-- · 2020-06-12 06:19

As was mentioned in one of the comments to the earlier answer DROPping a keyspace titan using cqlsh should do it:

cqlsh> DROP KEYSPACE titan;

The name of the keyspace Titan uses is set up using storage.cassandra.keyspace configuration option. You can change it to whatever name you want and is acceptable by Cassandra.

storage.cassandra.keyspace=hello_titan

When Cassandra is getting up, it prints out the keyspace's name as follows:

INFO 19:50:32 Create new Keyspace: KSMetaData{name=hello_titan, strategyClass=SimpleStrategy, strategyOptions={replication_factor=1}, cfMetaData={}, durableWrites=true, userTypes=org.apache.cassandra.config.UTMetaData@767d6a9f}

In 0.9.0-M1, the name appears in Titan's log in DEBUG (set log4j.rootLogger=DEBUG, stdout in conf/log4j-server.properties):

[DEBUG] AstyanaxStoreManager - Found keyspace titan

or the following when it doesn't:

[DEBUG] AstyanaxStoreManager - Creating keyspace titan...
[DEBUG] AstyanaxStoreManager - Created keyspace titan
查看更多
来,给爷笑一个
3楼-- · 2020-06-12 06:26

Just to update this answer.

With Titan 1.0.0 this can be done programmatically in Java with:

TitanGraph graph = TitanFactory.open(config);
graph.close();
TitanCleanup.clear(graph);
查看更多
冷血范
4楼-- · 2020-06-12 06:30

For the continuation of Titan called JanusGraph, the command is JanusGraphFactory.clear(graph) but is soon to be JanusGraphCleanup.clear(graph).

查看更多
【Aperson】
5楼-- · 2020-06-12 06:38

You can clear all the edges/vertices with:

g.V.remove()

but as you have found that won't clear the types/indices previously created. The most cleanly option would be to just delete the Cassandra data directory.

If you are executing the delete via a unit test you might try to do this as part of your test setup:

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)

Be sure to call g.shutdown() in your test teardown method.

查看更多
登录 后发表回答