carnival-data / carnival

JVM property graph data unification framework
https://carnival-data.github.io/carnival/
GNU General Public License v3.0
7 stars 2 forks source link

investigate upgrading neo4j version to support the bolt protocol #60

Closed hjwilli closed 2 years ago

hjwilli commented 2 years ago

Would allow easy access of embedded databases in neo4j desktop, and allow easier swapping between embedded and external databases for the carnival application.

See: https://stackoverflow.com/questions/50219699/connecting-to-an-embedded-neo4j-database-as-a-remote-database

https://neo4j.com/docs/java-reference/current/java-embedded/bolt/#java-embedded-bolt

augustearth commented 2 years ago

This is a great idea. We are constrained by Tinkerpop, however...

th5 commented 2 years ago

neo4j-tinkerpop-api-impl currently only supports Neo4J 3.4. Neo4J maintains that library and hasn't released an update in a bit. https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl/issues/18


It looks like Bolt has been supported since Neo4J 3.0 https://neo4j.com/release-notes/database/neo4j-3-0-0/ However Bolt support has continued to develop, so upgrading Neo4J would be useful.

https://neo4j.com/docs/java-reference/current/java-embedded/bolt/ It sounds like we could enable Bolt on an embedded db without using it exclusively for communication. This would allow us to connect Neo4J Browser to a live running db.

Running Gremlin traversals over Bolt is a different story. Third party documentation I've found uses the neo4j-gremlin-bolt library. https://github.com/SteelBridgeLabs/neo4j-gremlin-bolt The most recent release was in January, 2021. However since then that GitHub org was deleted or made private.

https://repo1.maven.org/maven2/com/steelbridgelabs/oss/neo4j-gremlin-bolt/0.4.6/ Maven still has the source, documentation, and compiled jars. I could put it all on a new repo.

We could try reaching out to Steel Bridge Labs for more information.

There is a separate project that forked and rewrote the above project. It hasn't been updated since 2019 but may be worth trying. https://github.com/Tanemahuta/neo4j-gremlin-bolt

Here is an example using SteelBridgeLabs/neo4j-gremlin-bolt https://community.neo4j.com/t/gremlin-usage-in-neo4j/30332/8

augustearth commented 2 years ago

The upshot of the above is that at the Curren time we can open a Bolt port on our embedded graph and use Neo4j Desktop to interact with it.