neo4j-contrib / spatial

Neo4j Spatial is a library of utilities for Neo4j that faciliates the enabling of spatial operations on data. In particular you can add spatial indexes to already located data, and perform spatial operations on the data like searching for data within specified regions or within a specified distance of a point of interest. In addition classes are provided to expose the data to geotools and thereby to geotools enabled applications like geoserver and uDig.
http://neo4j-contrib.github.io/spatial
Other
780 stars 192 forks source link

Will it be technically possible to port to Neo4j 4.0 #372

Closed MobiusF closed 3 years ago

MobiusF commented 3 years ago

Craig,

Is it technally possible to port your plugin to 4.0 or are the internal differences to big?

BR,

M.

craigtaverner commented 3 years ago

It is technically possible. I tried this earlier this year, and was blocked by the removal of support for 'explicit indexes' in Neo4j 4.0. We use them in a few places for backing the space-filling-curves, as well as for importing OSM data. We would need to find alternatives to do this instead. I think perhaps two different options for the two features:

I'm not sure when I will have time to work on this again, but would be happy to advise or mentor someone else if they are interested in giving it a go. Otherwise you'll just have to wait until I get a chance.

craigtaverner commented 3 years ago

I have recently been working on porting Neo4j Spatial to Neo4j 4.x. This was a major undertaking because many old deprecated API's were removed in Neo4j 4.x, and since the spatial library was originally built for Neo4j 1.x, it was heavily dependent on those API's. In fact some very deep refactoring needed to be done to get this port completed. As such I consider this work as quite experimental. Since it currently passes all existing tests, I wanted to make releases so that people could try it out and see if it works for them, and let me know if there are issues. Please also read the release notes on the release pages for these releases to fully understand the extent of the changes. Some things are not backwards compatible, and in addition there are new security implications in the way I managed to keep backwards compatibility for cases where it would not normally be possible.

https://github.com/neo4j-contrib/spatial/releases/tag/0.27.0-neo4j-4.0.3 contains a description of the largest changes required to port to Neo4j 4.x • https://github.com/neo4j-contrib/spatial/releases/tag/0.27.1-neo4j-4.1.7 some smaller changes required to support 4.1 • https://github.com/neo4j-contrib/spatial/releases/tag/0.27.2-neo4j-4.2.3 a few more smaller changes to support 4.2