I'm currently prototyping an application that will use both a RDBMS and Neo4j 
in parallel. The RDBMS currently exists as the backing store for a web 
application. While it's feasible to move all of the data into Neo4j, that's not 
politically palatable right now. So I plan to use Neo4j to store dependency 
relationships and associated data with references back to the RDBMS. To 
minimize synchronization issues, I plan to only store entity type and id 
information in nodes unless specific information is needed to control 
traversals.
Right now most of the data access is via JPA using hibernate through a pretty 
good DAO-domain abstraction. I plan to extend the domain model to include neo4j 
nodes and relationships along the lines of your examples and extend the DAOs to 
include management of the embedded Neo4j instance. 
My prototype is a Spring app and currently uses aspect oriented transaction 
management, but in order to manage the transactions on the two databases, I'll 
probably have to handle transactions programmatically, probably wrapping one in 
the other. It would be nice to combine the transaction management somehow.

In terms of data migration, although I'm trying to minimize migration right 
now, I have thought about how I might migrate if I were to use Neo4j 
exclusively. I'm still not sure what the best approaches are to properties vs 
nodes for entity attributes, indexes (lucene) vs type subnodes, etc. 

One of the hurdles to migrating to Neo4j is the lack of tool support, 
particularly for general access. This has been acknowledged by Emil and others, 
so I'm not complaining. But with our current app, if we need to import data or 
fix general data problems, we can use a SQL workbench to directly access the 
database rather than write a special capability in the app. That's not always 
the best approach but it does allow other developers more familiar with other 
technologies the ability to access the DB with their tools/language due to the 
prevalence of SQL. With Neo4j it seems that programmatic access will be 
required. Granted, I haven't explored the REST server, SPARQL support, or the 
shell very much. They may offer more generalized access.

I'm interested to hear how others are approaching the polyglot-persistence 
task. As I move forward, I'll share what I learn or have problems with.

Thanks,
 Kalin

On Dec 1, 2010, at 10:52 AM, Andreas Kollegger wrote:

> Would anybody be willing to share experiences with trying to introduce Neo4j 
> into a system with another relational (or other NoSQL) database? 
> 
> We're starting to think about best practices for integration:
> * Hybrid data-modeling: what goes where?
> * XA transactions
> * message queues for data distribution
> * data migration strategies
> 
> Any problems or feature-requests related to living in a 
> multi-storage-platform world are welcome.
> 
> Cheers,
> Andreas
> 
> 
> _______________________________________________
> Neo4j mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
> 

_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to