Story of my app : Chose the datastore for graph data

Just like any day dreaming entrepreneur in this mobile apps world, I also got an idea to develop a mobile application. Bascially I want to build route suggestion application. So I started my research to find best way to implement this idea. I wanted to write notes about all my findings and my work through out, starting from idea development till getting it live. And also I feel its better to get suggestions from people about my approach at every step so that I can “Fail Early” rather than waiting till the end. I will be publishing my notes regularly including different technical and non-technical aspects of developing this mobile app. In this blog I am putting my thoughts regarding chosing the datastore for this app.

As I said above this application is about navigation from/to different places. So obviosly you can visualise it as connected graph with multiple nodes. I have very big data of nodes. And I need to search the connecting path between them based on different parameters. Also the edges connecting these nodes are not simple nodes, they are weighted edges. So first decision to take is “How to manage this data?”.

With typical RDBMS, I need to manage all the relations as foreign key relationships and traversing will be bit difficult with joins especially when the data grows. So started looking at NoSql options especially graph databases. Found following options suiting my requirements :

  • Neo4j
  • FlockDB
  • AllegroGraph
  • Hypergraph

Evaluated all above and decided to go ahead with Neo4j. My evaluation is based on following points

  1. Ease of storing and retrieving data
  2. Support for Java language (All above have java interfaces)
  3. Out of the box support for graph traversal algorithms.
  4. Integration points with other systems like REST services for consumtpion etc
  5. IDE support to manage and inspect data
  6. And also typical other parameters like scalability and baclup\restoration

Although Neo4j is fully transactional, this is not of much importance me as users of my app will only read data. Only administrators write\modify data. Please let me know if anyone intersted in detailed comparison. I am newbie to this NoSql world. So my decision might be wrong šŸ˜¦ . If you have any suggestions for me, pleaseĀ don’tĀ hesitate to say that I am wrong :). Infact that is the purpose of this blog – “I like to fail early” .

Next few blogs will be about “Getting started with Neo4j” and “How can you make sure you got a good idea”


One thought on “Story of my app : Chose the datastore for graph data

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s