> Would anybody be willing to share experiences with trying to introduce Neo4j 
> into a system with another relational (or other NoSQL) database?

Let me contribute my 2 cents here.

I have developed a rough demo that shows what my thoughts are for
integration of Neo4j instances in a managed environment. Using this
JCA 1.6 compliant connector module I have successfully

- Injected a ConnectionFactory (akin to a DataSource from JDBC) that
returns NeoConnections (similar to javax.sql.Connection).
- Performed operations on it (node creations/property settings) in
tandem with operations on a mySQL instance. That is, in the same EJB
method, with a container managed transaction. Both resources were
enlisted in the top level tx and were successfully committed or
rolledback (when I violated constraints in either db, for instance),
in proper 2PC manner.

So far, based on my experience working with JDBC, the feeling is the
same, as far as usability goes. The GraphDatabaseService interface is
not yet completely available.

The code is available at the repository:

The transaction manager to use (based on previous work):
https://svn.neo4j.org/laboratory/users/cgioran/ContainerProvidedTxManager/

The connector module:
https://svn.neo4j.org/laboratory/users/cgioran/NeoJCA/

The modified kernel (nothing major, just exposed retrieval of
XAResources and enforced the new txm)
https://svn.neo4j.org/laboratory/users/cgioran/neo4j-kernel-jta/

The idea is that you build/install all three above, add the jta kernel
and the txm service in your ear's libraries and the connector module
as an ear connector module (in application.xml). Create a pool and
bind it to the JNDI and retrieve it from there in your EJB/Servlet.

DISCLAIMER: The above code is a toy and completely temporary. I have
not verified its operation in any significant way, I do not even know
if (in fact I doubt that) the pooling mechanism works properly. Do not
use it in any way that might be remotely important.

The connector will work only in glassfish. Other app servers (JonAS
and Geronimo for certain) require additional descriptor files apart
from ra.xml If you want to deploy in another container, please consult
its manual on the proper procedure.

I will now go and write a post explaining in more detail how to build,
install and use the above. If, in the meantime, someone feels
adventurous and decides to look at the code, feedback is always
welcome. The important thing for me is not the correctness of the code
- there is not much there anyway. What I am interested in is its
dynamics and the possible interactions in an app server.

cheers,
CG
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to