Titan DB Tutorial (1): Getting started
Download and Run Titan 1.0.0
So you must porbably have been fascinated about graph databases and would like to give Titan DB a try.In this tutorial, I will show you how to download and run Titan 1.0.0 version on Ubuntu and Windows. Then we will learn how to use it in next lessons.
Let’s get started
Download it:
Click to download Titan 1.0.0 with Hadoop 1 – recommended. Alternatively, you can go to download page here and pick the Titan 1.0.0 with Hadoop 1.P.S: If you wonder why we choose Hadoop 1 over Hadoop 2, it seems like Titan 1.0.0 that uses Tinkerpop has some issues with it at the current version. So once it solves the problem, Titan 1.+ will use Hadoop 2. In short, use Hadoop 1 because it’s more stable.Great, now you have Titan DB downloaded. So, let’s unzip this ZIP file. You can use WinRAR on Windows or
unzip
command on Linux.Run it on Linux/Mac:
In Linux or Mac, it will be straight forward, justcd
to the root directory of Titan which is titan-1.0.0-hadoop1
. Then run this:bin/gremlin.sh
You may skip to Hello World: Example section :).Run it on Windows:
Well, there is a bug that needs to be fixed onbin/gremlin.bat
file.
There is a a solution in this google group for this issue but I summarized it for you here. Open bin/gremlin.bat
using a text editor of your choise then:Change:
set LIBDIR=..\lib
To:set LIBDIR=lib
Change:if "%CP%" == "" (
set CP=%LIBDIR%\%1
)else (
set CP=%CP%;%LIBDIR%\%1
)
To:if "%CP%" == "" (
set CP=%1
)else (
set CP=%CP%;%1
)
To add command history abilities to the gremlin command line
in the gremlin.bat file add to the set JAVA_OPTIONS line (solution from same source):set JAVA_OPTIONS=-Xms32m -Xmx512m -javaagent:%LIBDIR%\jamm-0.3.0.jar
add:set JAVA_OPTIONS=-Xms32m -Xmx512m -javaagent:%LIBDIR%\jamm-0.3.0.jar -Djline.terminal=none
Once you are done, you can run it using:bin/gremlin.bat
Hello World: Example
So now you have the gremlin console running giving you a message like thismoha@me:~/dev/titan-1.0.0-hadoop1$ bin/gremlin.sh
\,,,/
(o o)
-----oOOo-(3)-oOOo-----
plugin activated: aurelius.titan
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/moha/dev/titan-1.0.0-hadoop1/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/moha/dev/titan-1.0.0-hadoop1/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
17:39:17 INFO org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph - HADOOP_GREMLIN_LIBS is set to: /home/moha/dev/titan-1.0.0-hadoop1/lib
plugin activated: tinkerpop.hadoop
plugin activated: tinkerpop.tinkergraph
gremlin>
Gremlin console is very cool, it will allow you to conenct to a Titan graph and play with it. But what is Gremlin console anyway? Well, it’s this tool that will give you all the powers to manipulate a Titan graph, load a local graph or even connect to a remote graph. It’s amazing. I will teach you more things about it as you go deeper in next tutorials.So, let’s try to play a bit with gremlin console
gremlin> 1+1
==>2
gremlin> 1+9
==>10
gremlin>
Yaaaay, it’s a calculator too? Hahaha, no don’t worry. We will do more sophisticated things with it.Now, let’s load a graph. YES SIR !
gremlin> graph=TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> graph
==>tinkergraph[vertices:6 edges:6]
gremlin>
So what did we do? We loaded a graph called Tinkerpop Graph
and assigned it to a variable called graph
that we could retreive later too. You see? Gremlin console is cool.So what is
Tinkerpop Graph
? It’s a pre-built simple graph to test the capabilities of this console and do some exercises on several Gremlin queries.Here is a visual view of it:
God, what is Gremlin? Gremlin is the name of the query language (or API) that you will use to manipulate the graph. i.e., open and load a graph, create, update and delete edges and vertexes. And also traverse the graph. The langauge is very easy so don’t be scared. It will be straight forward.
Gremlin is soo coool
Let’s see all vertices in the graph, run thisgremlin> g=graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin>
This creates a new variable called g
which is the traversal of the graph. If we want to play with the graph, we should use g
instead of calling graph.traversal()
every time.Now let’s see all vertices in the graph
V() for vertices
gremlin> g.V()
==>v[1]
==>v[2]
==>v[3]
==>v[4]
==>v[5]
==>v[6]
so v[1]
means there is a vertex with ID 1. If you want to load a vertex or vertices by ID, all you need to run is this:g.V(1)
g.V(1,3)
g.V(1,3,6)
Get it? Great.How about edges?
E() for edges
gremlin> g.E()
==>e[7][1-knows->2]
==>e[8][1-knows->4]
==>e[9][1-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
==>e[12][6-created->3]
gremlin>
so e[12]
means there is an edge with ID 12 connecting vertex 6 with vertex 3. And created
is the label of this edge. Makes sense?As an exercise for today, I want you to load edge by ID, could you do it? Multiple edges by ID?
Alright, that was enough for today. I will continue with more tutorials if I see some engagements here. Would you please help me fill this survey? Please leave any comments or questions you have below.
Truly awesome. Hope to see more here!
ReplyDeleteOn gremlin.bat from console, I got this error:
ReplyDeletejava.utli.prefs,WindowsPreferences
WARNING Could nor open/create prefs root node Software/JavaSoft/Prefs at root 0x80000002. Windows RegCreateKeyEx<...> returned error code 5.
Please help me. Thank you.
Good Starting point. Thank you
ReplyDeleteHi, very nice starting point hope there is more
ReplyDelete