I am following the AWS docs on how to run Titan with DynamoDB as a storage backend. There seem to be a lot of ways to query my graphs (Gremlin CLI, Rexster via JSON and Web UI). My rexster.xml
configuration file references a graph-name
called "v054".
But how do I actually persist a graph to the storage layer and update it?
From my rexster.xml
:
<graph-name>v054</graph-name>
<graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type>
<graph-location>/tmp/titan</graph-location>
<graph-read-only>false</graph-read-only>
Rexster Web UI:
Update 1
To see the DynamoDB tables created to store the Titan graphs, ensure DynamoDB local is started using the -sharedDb
flag (see documentation). This is not enforced by the start-dynamodb-local
profile yet. Replace the -inMemory
flag by -shared
in your pom.xml
.
<profile>
<id>start-dynamodb-local</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec.maven.plugin.version}</version>
<executions>
<execution>
<phase>initialize</phase>
<configuration>
<executable>java</executable>
<arguments>
<!-- left out other arguments for brevity .. -->
<argument>-sharedDb</argument>
</arguments>
</configuration>
Once you run DynamoDB Local with -sharedDb
, you will see the following tables created:
{
"TableNames": [
"v054_edgestore",
"v054_graphindex",
"v054_system_properties",
"v054_systemlog",
"v054_titan_ids",
"v054_txlog"
]
}
Update 2
I am able to obtain a reference to my graph by running the commands mentioned under step 5 in the docs. However, I had to use the fully-qualified name of TitanFactory.open()
(see below). See this Github issue for more information.
gremlin> conf = new BaseConfiguration()
gremlin> conf.setProperty("storage.backend", "com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager")
gremlin> conf.setProperty("storage.dynamodb.client.endpoint", "http://localhost:4567")
gremlin> conf.setProperty("index.search.backend", "elasticsearch")
gremlin> conf.setProperty("index.search.directory", "/tmp/searchindex")
gremlin> conf.setProperty("index.search.elasticsearch.client-only", "false")
gremlin> conf.setProperty("index.search.elasticsearch.local-mode", "true")
gremlin> conf.setProperty("index.search.elasticsearch.interface", "NODE")
gremlin> g = TitanFactory.open(conf)
==>javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: TitanFactory for class: Script12
gremlin> g = com.thinkaurelius.titan.core.TitanFactory.open(conf)
==>titangraph[com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager:[127.0.0.1]]