Hi everyone,<div><br></div><div><div>I'm working on a new feature for our OMERO.biobank platform: a graph-oriented database developed using Bulbs (<a href="http://bulbflow.com">http://bulbflow.com</a>) with a Neo4j (<a href="http://neo4j.org">http://neo4j.org</a>) backend. </div>
<div>This tool addresses our need to quickly retrieve objects connected by chains of actions --- every object in OMERO.biobank can be generated by performing an action on another object, and since connections are dynamic and unpredictable we can't use a static workflow to represent them.</div>
<div><br></div><div>Our previous solution --- an in-memory graph built by querying all connected objects at runtime --- rapidly reached its scalability limits as we started handling something like 500K objects. Preliminary tests of the new implementation show a speedup of 10, with greatly reduced memory consumption.</div>
<div><br></div><div>The main issue at this point is keeping the Neo4j DB and OMERO synchronized. Our libraries propagate object creations, deletions and updates (only when connections between objects change) to the Neo4j server, but this is not enough. Is there a way to obtain something that can be used as synchronization token from the OMERO server?</div>
<div><br></div><div>I'd like to be able to do something like the following:</div><div><br></div><div>conn = connect_to_omero(host, user, passwd)</div><div>token = conn.get_token()</div><div>neo4j = connect_to_neo4j(host)</div>
<div>if neo4j.check_token(token):</div><div> go_on()</div><div>else:</div><div> raise GraphSyncError('server out of sync')</div><div><br></div><div><br></div><div>Thanks,</div><div><br></div><div>Luca</div><div>
<br></div>-- <br>Luca Lianas<br><div>
<span>Data Fusion - Healthcare Flows</span><br>
CRS4 - Centro di Ricerche, Sviluppo e Studi Superiori della Sardegna<br>
POLARIS, Edificio 1, 09010 PULA (CA - Italy)<br>
<br>
<br>
Phone: 070/9250266<br>
Email: <a href="mailto:luca.lianas@crs4.it" target="_blank">luca.lianas@crs4.it</a><br>
</div>
<br>
</div>