Titan vs Neo4j

15,908 views
Skip to first unread message

Marc Grue

unread,
Aug 24, 2012, 6:01:44 PM8/24/12
to aureliu...@googlegroups.com

Hi guys,


First, thank you for making Titan!


I'm new to the graph world and wonder how you see the differences between Neo4j and Titan from a high perspective (if they are not apples and oranges)? Some issues that comes to mind are:


- Schema/types/migration

- Performance

- Indexing

- full text search

- Modeling principles

- APIs - Blueprints=Native?, Gremlin, Cypher, any Scala api/dsl plans?

- Other issues?


Maybe what I'm looking for is a simple "Comparison Chart"! :-)


I would love to use type safe algebraic data types in Scala mapping more or less directly to typed Vertexes in Titan and have a Scala dsl that would enforce those type constraints. Would you recommend me to have such a dsl call the blueprints api (thought I would use the Neo4j native api before leaning towards Titan)? Isn't that what Gremlin does too?


Given the open Apache license, I see a great potential for engaging the (Scala) Lift webframework community to start using Titan too! Neo4j hasn't been much welcomed there because of their half-open license. If I'm not mistaken it seems like document stores like CouchDb and MongoDb have been the main NoSql stores used there until now - no big commitment to graph databases yet. Would be cool to get Titan introduced there!...


Thanks for any thoughts!


Cheers,

Marc


Matthias Broecheler

unread,
Aug 27, 2012, 3:33:37 PM8/27/12
to aureliu...@googlegroups.com
Hey Marc,

the primary difference between Titan and Neo4j is scalability: Titan can distribute the graph across multiple machines (using either Cassandra or Hbase as the storage backend) which does three things:
1) It allows Titan to store really, really large graphs by scaling out
2) It allows Titan to handle massive write loads
3) No single point of failure for very high availability. While Neo4j's HA setup gives you redundancy through replication, death of the master in such a setup leads to temporary service interruption while a new master is elected.

This allows Titan to scale to large deployments with thousands of concurrent users as demonstrated in the benchmark:

Neo4j has been around much longer and is therefore more "mature" in some regards:
1) Integrated with an external lucene index gives it more sophisticated search capabilities
2) More integration points into other programming languages and development frameworks (e.g. spring)
3) Has been used by more people 

Titan is a native blueprints implementation and benefits from all the features that come with the Tinkerpop stack. Titan does not support cypher but only the gremlin standard.

Hope this provides a starting point for comparison. In general, if you implement your software using the standard blueprints interface you will be able to switch out the graph database and find the one that suits your use case best.

Cheers,
Matthias


--
 
 



--
Matthias Broecheler, PhD
http://www.matthiasb.com
E-Mail: m...@matthiasb.com

Ilan Y

unread,
Dec 2, 2013, 11:14:50 AM12/2/13
to aureliu...@googlegroups.com
Hi Marc,

I'm interested to know which you ended up using (if any) and the main reason. I'm also trying to figure the best option for my project.

Thank you

Marko Rodriguez

unread,
Dec 2, 2013, 12:11:14 PM12/2/13
to aureliu...@googlegroups.com
Hi Ilan and Marc,

One thing to consider with Titan 0.4.1+ is that there is now an in-memory cache that makes Titan great for single-machine use cases. Prior to 0.4.1, Titan was primarily oriented towards cluster computing. However, we wanted to make sure that we also support smaller deployments so we can take a project through its growth stages (from single machine to cluster). With Titan 0.4.1+, the argument for using Titan is strong -- Apache2 licensed, performant single-machine use, HA replication, full distribution when needed, OLAP support via Faunus, vertex-centric indices, etc.

I recommend reading these two blog posts in full detail as they lay out the aforementioned argument in grueling detail:


HTH,
Marko.
--
You received this message because you are subscribed to the Google Groups "Aurelius" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aureliusgraph...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Marc Grue

unread,
Dec 2, 2013, 12:12:45 PM12/2/13
to aureliu...@googlegroups.com
Hi Ilan,

I actually ended up going for Datomic which is an immutable database of facts: [entity-attribute-value-transaction] - like [key-value] stores but with time incorporated. Being able to track all changes to my data back in time was too compelling to me and the nature of the project I work on. 

Good luck with your choices!

All the best,
Marc

--
You received this message because you are subscribed to a topic in the Google Groups "Aurelius" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/aureliusgraphs/vkQkzjN8fo0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to aureliusgraph...@googlegroups.com.

Marc Grue

unread,
Dec 2, 2013, 12:16:38 PM12/2/13
to aureliu...@googlegroups.com
Thanks, Marko for your update! I love that you’re offering the apache licensing for Titan - something that Datomic doesn’t have :-(

Cheers,
Marc

You received this message because you are subscribed to a topic in the Google Groups "Aurelius" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/aureliusgraphs/vkQkzjN8fo0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to aureliusgraph...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages