When we moved our code to Neo4j 2.0, we ran into a problem caused by a change in behavior to the TransactionEventHandler and the way in which Cypher query results are returned in the REST API. (See this issue https://github.com/neo4j/neo4j/issues/1884).
We were using a TransactionEventHandler implementation as one might use a database trigger. For any entity (Node or Relationship) that was created or updated, our TransactionEventHandler added a GUID, version stamp, and time stamp properties to the entity. The TransactionEventHandler also serialized the entity to the file system to implement a versioning system. We didn't want to store the older versions in the graph db with the current version so the file system works fine for us. The versioning system can still be implemented in Neo4j 2.0 using a TransactionEventHandler. I think everyone who has ever worked with databases can agree that the database and not the application code is the correct place to do this sort of thing. So while it may no longer be possible to implement this using a TransactionEventHandler, I would like to suggest a more generic enhancement to support a sort of database "trigger" to allow us to affect the state of any entity when it is created or updated. Having said this, I realize that it implies some sort of scripting language to implement the triggers. Or the triggers could be implemented as another type of Java plugin similar to the TransactionEventHandler. Regardless of how it's implemented, the state of the entity and the REST response need to be coordinate so that the result of the Cypher query plus any modifications made to the entity or reflected in the REST response. Thanks. -brian -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
