2013-10-20 21 views
9

Ich benutze Titan 0.4.0 Alle, läuft Rexster im freigegebenen VM-Modus auf Ubuntu 12.04.Wie lösche ich ein Diagramm in Titan mit Cassandra Storage Backend?

Wie kann ich ein Diagramm in Titan, das das Cassandra Storage-Backend verwendet, ordnungsgemäß löschen?

Ich habe versucht, die TitanCleanup.clear(graph), aber es löscht nicht alles. Die Indizes sind immer noch da. Mein wirkliches Problem ist, dass ich einen Index habe, den ich nicht will (es stürzt jede Abfrage ab), aber wie ich Titans Dokumentation verstehe it is impossible to remove an index once it is created.

Antwort

10

Sie können alle Kanten/Ecken mit leeren:

g.V.remove() 

aber wie Sie gefunden haben, dass die Typen/Indizes zuvor erstellten nicht klar wird. Am saubersten wäre es, das Cassandra-Datenverzeichnis einfach zu löschen.

Wenn Sie die Ausführung der über eine Unit-Test löschen Sie, dies zu tun als Teil der Testaufbau könnte versuchen:

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) 

Seien Sie sicher, g.shutdown() in Ihrem Test Teardown-Methode aufzurufen.

+0

Wenn Sie also das Cassandra-Datenverzeichnis löschen, wird das Diagramm komplett entfernt, einschließlich des Index, den ich nicht haben möchte. – Automatico

+1

Ja ... Alle Daten einschließlich Indizes sind in Cassandra gespeichert. Ich nehme an, du könntest auch den "Titan" Schlüsselraum (das ist der Standard-Schlüsselraumname) in Cassandra fallen lassen. Das würde auch funktionieren. –

+0

Ich habe das versucht, aber wenn ich den Datenordner Cassandra (oder möglicherweise Titan/Rexster) lösche erstellt den Ordner neu und ich bekomme immer noch den gleichen Fehler (einige Index existiert, die ich nicht will). Ich habe versucht, jeden Cassandra-Ordner zu löschen, den ich auf dem Rechner finden kann, habe das System neu gestartet usw., aber der Index ist immer noch da. Gibt es eine Möglichkeit, dies definitiv zu tun? Vielleicht Cassandra Konsole oder etwas? – Automatico

1

Wie in one of the comments to the earlier answerDROP ping ein Schlüsselraum erwähnt titancqlsh verwenden sollte es tun:

cqlsh> DROP KEYSPACE titan; 

Der Name des Schlüsselraums Titan verwendet wird, eingerichtet mit storage.cassandra.keyspace Konfigurationsoption. Sie können es auf den von Ihnen gewünschten Namen ändern und von Cassandra akzeptiert werden.

storage.cassandra.keyspace=hello_titan 

Wenn Cassandra aufsteht, druckt er den Schlüsselraum Namen wie folgt:

INFO 19.50.32 Neuen Schlüsselraum: KSMetaData {name = hello_titan, strategyClass = SimpleStrategy, strategyOptions = {replication_factor = 1}, cfMetaData = {}, durableWrites = true, userTypes=org.apa[email protected]}

In 0.9.0-M1, wird der Name in Titan-Protokoll in DEBUG (set log4j.rootLogger=DEBUG, stdout in conf/log4j-server.properties):

[DEBUG] AstyanaxStoreManager - Found keyspace titan 

oder die folgende, wenn dies nicht der Fall:

[DEBUG] AstyanaxStoreManager - Creating keyspace titan... 
[DEBUG] AstyanaxStoreManager - Created keyspace titan 
5

Nur diese aktualisieren Antworten.

Mit Titan 1.0.0 dieser programmatisch in Java gemacht werden:

TitanGraph graph = TitanFactory.open(config); 
graph.close(); 
TitanCleanup.clear(graph); 
+0

rettete mein Leben Puh. – jayant

+0

Für den neuen Titan, JanusGraph, lautet der Befehl JanusGraphCleanup.clear(), soll aber bald JanusGraphCleanup.clear() sein. – rjurney

3

Für die Fortsetzung von Titan genannt JanusGraph, lautet der Befehl JanusGraphFactory.clear(graph) aber bald JanusGraphCleanup.clear(graph) sein.