For the past year I’ve been investigating various ways of building out a
graph database (using Neo4j) that would serve as a backbone graph for an
enterprise MySQL database. This has been dealt with as a POC in mind of
eventually migrating portions of the enterprise database over to the graph
This means a) we need to initially perform a mass import of data from the
source MySQL database, then b) either periodically or event-driven we’d
need to synchronize the graph and MySQL databases as users modify
their data (this system has a UI front end). BTW, both the enterprise
application and the graph database application are written in Java.
I have quite a lot of experience with Neo4j and enjoy working with it. I’ve
found Cypher invaluable in various tasks such as modifying the graph,
merging nodes, etc. and at the scale we’re dealing with (millions but not
billions of nodes and edges) things work fine. (so yes, I’d be very much
in favor of Dgraph supporting Cypher…)
Where we hit a hitch was in the synchronization requirements. Neo4j
has an ETL (Extract Transform Load) tool but it’s quite limited in functionality,
and while fine for an initial load, it’s not fit for purpose in doing live synchronization.
So with all that said, what I’m wondering is: given an enterprise application
written in Java and a requirement to build a graph database that remains
synchronized with some of the core entities and relationships, particularly
during a migration period, what would Dgraph’s engineers recommend as a
means of keeping these two databases synchronized?
I’m like to be using the Java Dgraph client, but as my Go skills improve it
might be possible to build a pure Go application, though selling that to my
team would be more difficult; we’re entirely at this point a Java shop.
Thanks for any advice,