pythongroovytitanrexsterbulbs

Performance benchmark while accessing Titan Graph DB from python via Bulbs


I have Titan (with embedded cassandra running on my system).

cd titan-cassandra-0.3.1
bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties

I have rexster client running

cd rexster-console-2.3.0
bin/rexster-console.sh

I have installed bulbs on my system as follows.

sudo apt-get install python2.7-dev
sudo apt-get install libyaml-dev

sudo pip install  https://github.com/espeed/bulbs/tarball/master

After the above setup I proceed to create my graph from my python application.

  from bulbs.titan import Graph
  g = Graph()
  switch = g.vertices.create(name="switch")
  device = g.vertices.create(name="device")
  g.edges.create(switch, "connected to", device)

My questions are as follows.

1) For a simple graph I access the Titan Graph DB from python application using Bulbs via REXSTER server. As I understand REXSTER server exposes Titan via a RESTful interface which the bulbs uses.

2) If I need some complicated operations,I would be better off creating some stored procedures in groovy script and use REXSTER client inbetween Titan+Bulbs and REXSTER server.(Is my understanding correct?)

3) As Bulbs communicates with Titan via a RESTful interface,what would be the performance like? I would like to have an idea about - write performances - querying performance

4) If I use REXSTER client in between would the performance be affected?

It would be great if you could point me to some documentation where they have measured the performance using the above setup.


Solution

  • 2) If I need some complicated operations,I would be better off creating some stored procedures in groovy script and use REXSTER client inbetween Titan+Bulbs and REXSTER server.(Is my understanding correct?)

    For complicated queries, you can execute gremlin queries through Bulbs. Have a look at this page : http://bulbflow.com/docs/api/bulbs/gremlin/

    3) As Bulbs communicates with Titan via a RESTful interface,what would be the performance like? I would like to have an idea about - write performances - querying performance

    4) If I use REXSTER client in between would the performance be affected?

    Using Rexster to write or query data won't have any significant performance degradation, as far as I know. Because, no matter how complicated and heavy your query is, it is going to be executed inside Titan itself. So, using Rexster won't be a bottleneck here.