liv2hak
liv2hak

Reputation: 15010

Using Rexster and Titan Graph DB for scalable applications

I have a python application communicating with Titan graph database backed by Cassandra.

Python App ---------> Rexster Server + Titan Graph DB + Cassandra.

The "Rexster Server + Titan Graph DB + Cassandra" is inside a single JVM.

My python application runs on multiple Virtual machines.i.e Each virtual machine has an identical copy of my application. The idea is to make the application scalable. Now clearly for the initial implementation I am using a single instance of "Rexster Server + Titan Graph DB + Cassandra". This means that the backend database is a single node. My applications running on different virtual machines talk to the same backend.

My questions are as follows.

1) I want to make the backend database scalable as well. How can I do this?

2) Do I need to use the same "Rexster + Titan Graph DB" and configure multiple cassandra nodes?

3) Is Titan Graph DB the best option for this use case? Or can I substitute Titan Graph DB with Neo4j and Rexster with Neo4jserver. why/whynot?

Upvotes: 0

Views: 371

Answers (2)

Mubeen Siddiqui
Mubeen Siddiqui

Reputation: 34

To make your backend database scalable, consider creating a Cassandra cluster for Titan. Add more nodes to distribute data and handle increased traffic.

Scale Cassandra for data storage, while keeping Rexster and Titan for queries; adjust configurations for efficiency as the dataset grows.

Choose Titan if dealing with massive graphs needing distributed scaling; consider Neo4j for ease of use, mature features, and vertical scaling with clustering options.

Upvotes: 0

gnomeria
gnomeria

Reputation: 190

Titan is a highly scalable graph database as has been demonstrated in their examples. To answer your questions, I think it's necessary to express how big is your project could be. If you intend to deploy a hadoop cluster, make sure the rexster is configured to connect to the Zookeeper address of the backend (if managed by it) and not a list of addresses of the nodes.

1. I want to make the backend database scalable as well. How can I do this?
If you intend to scale beyond the confine of one machine, you could refer to this page for more info : Titan-Cassandra Configuration. As to whether how to make the backend database to be scalable, Cassandra and HBase are very scalable databases and I suggest you read more about Hadoop ecosystem to understand how Titan DB fits into this. You could have many HBase/Cassandra nodes that rexster could talk to

2. Do I need to use the same "Rexster + Titan Graph DB" and configure multiple cassandra nodes?
You could start several rexster servers on a different machine in the cluster, with each connecting to the same backend. But each graph from the rexster is independent of each other, so you have to manually partition your graph operations. And in this scenario, it only good for a high number of users instead of deep-traversals/queries

3. Is Titan Graph DB the best option for this use case? Or can I substitute Titan Graph DB with Neo4j and Rexster with Neo4jserver. why/whynot? Because it seems you're going to deploy a cluster, I think Titan is the better choice unless you're willing to pay for the Enterprise edition of Neo4j to support clustering. Neo4j editions Another point to consider : Titan vs OrientDB

Upvotes: 0

Related Questions