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.

Reply via email to