-
Notifications
You must be signed in to change notification settings - Fork 135
Roadmap
This page is both a planning and an informational page.
Please consider joining our discussion group if you're interested in this stuff!
https://groups.google.com/group/node-neo4j
The current v1.0 of node-neo4j is pretty functional and feature-complete. You can do most things supported by the Neo4j REST API, including sending custom Cypher queries and Gremlin scripts. We've been using it in production for over a year, and it works just fine.
We very likely need to give this library a thorough overhaul for Neo4j 2.0 support. We'll take the opportunity to improve this library in other ways as well. Here are some ideas and areas to consider:
-
Indexing. Should add first-class support for auto-indexes (currently, client code has to e.g. hardcode the
node_auto_index
name in queries), but should also centralize index operations in general. Maybe anIndex
class? -
Node creation.
GraphDatabase.createNode()
should at least persist automatically now, but we may also want to add agetOrCreate()
type of method tied to unique indexing and/or mutable Cypher'sCREATE UNIQUE
operation. -
Batch API. We need to look more closely at how this works, but if possible, could we auto-support it for all operations done within a single Node event loop tick? That may not be a good idea though given that one failed request would cause the entire batch to fail, which would be unwanted for unrelated operations. But maybe we could support it explicitly e.g. via
beginBatch()
/endBatch()
type methods. We might not be able to support having one operation depend on the outcome of another unless we really rethink the API to incorporate promises/futures. -
Move to a
load()
/loaded
API. Currently,Node
andRelationship
instances returned as part ofPath
instances aren't "loaded" -- we only know their endpoint URLs. We should consider shifting the API slightly to expose this notion formally ofload()
/loaded
to go well withsave()
. -
Cypher DSL? We could streamline common use cases like fetching multiple nodes, fetching adjacent nodes, filtering, etc. But maybe we should just leave it alone and let clients write Cypher queries just the way they want?
-
Streaming support! Now that Neo4j can stream its responses, we should strongly consider adding support for clients to react to streams now too, e.g. for Cypher results.