Reputation: 469
I need to share a Neo4J graph visualization with end users. They should be able to interact with the graph, and perform some very basic querying. For example: - show me the relationships up to 3 hops away from node named 'Joe'
A first option would be to just give them the standard user interface (usually exposed at port 7474); however this is too powerful as they could perform anything in Cypher.
Is there any way of restricting this interface (so that they cannot trigger expensive queries or even graph updates)? Or maybe other open source / community alternatives?
Thanks
Upvotes: 1
Views: 1301
Reputation: 16355
I suggest you the chapter 8 of the excellent book Learning Neo4j, by Rik Van Bruggen. This book is available for download at Neo4j web site.
One of the sections of this chapter shows some open source visualization libraries and visualization solutions.
EDIT 1:
Analyzing a bit more the chapter 8 of the Learning Neo4j book I believe that a promising tool for your use case is the paid solution Linkurio.us (you can run a demo in the site). This solution has a native integration with Neo4j and others graph databases.
EDIT 2:
Alternatively you can build your own visualization solution with a graph visualization library in JavaScript, for example. Here a very useful answer from another StackOverflow question that lists more some libraries that can help you.
Upvotes: 1
Reputation: 1097
You may also build a custom web UI that calls the REST endpoint (need to auth in headers)
or
create an unmanaged extension https://neo4j.com/docs/java-reference/3.1/#server-unmanaged-extensions
Upvotes: 1
Reputation: 66957
If you are using the Enterprise Edition of neo4j, you will have access to extensive authentication and authorization capabilities, including the ability to assign a reader
role to specific user names.
Upvotes: 3
Reputation: 30397
If you do want to use the standard browser interface, you can apply some settings on the neo4j.conf file that may help you out:
dbms.transaction.timeout=10s
dbms.read_only=true
dbms.transaction.timeout
will terminate queries exceeding the timeout, so that can prevent expensive queries.
dbms.read_only
makes the entire db instance read-only.
Upvotes: 2