Untitled Document.md
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, just
cd
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 on
bin/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 this
moha@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:
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 this
gremlin> 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.