Hosting a public (read only) Neo4j instance in the

2019-04-11 20:13发布

问题:

I'm working on a open science project to learn why drugs work. We've created a network called Hetionet with 47,031 nodes and 2,250,197 relationships. We're using Neo4j and have a GraphGist tutorial showcasing our approch.

I'd like to let anyone interact with our network. The Neo4j Browser offers the flexibility we want with a nice user interface. So I was thinking a solution would be to setup a public Neo4j 3.0 Community server with the settings:

  • dbms.security.auth_enabled=false to disable login
  • dbms.read_only=true to prevent write queries
  • setting the Execution Guard to limit query runtime

Here are additional considerations:

  1. Cloud hosting: we want to host this in the cloud so it's always available. It looks like AWS would be the cheapest option?
  2. Reproducibility: it would be nice if we could make the configuration reproducible and easy to redeploy. Docker for Neo4j that downloads the database from GitHub?
  3. A killer feature would be linking to or embedding a browser with a prefilled query (see this unresolved question).

So my question is:

  • Will there be any problems that prevent hosting a public Neo4j instance?
  • Am I on the right track with AWS/Docker?
  • Will the setup break under concurrent usage? Let's assume we'll have at most 30 browsers open at once with no more than a few concurrent queries.

Additional notes:

  • See related questions one and two.
  • The Twitter graph demo gives similar functionality but creates a new instance for every user.

回答1:

your ideas all make sense.

You can create a browser-guide for your dataset, e.g. from your graphgist, similar to :play http://guides.neo4j.com/graphgists

With this repo you can turn asciidoc (like graphgists) into browser guides: https://github.com/jexp/neo4j-guides

Rik did some blog posts on it: http://blog.bruggen.com/2016/03/an-easier-better-tastier-beergraphguide.html

Since 3.0.1, there are even some means to add a form, whose content is then used in the queries.

You have to enable the browser guide in the whitelist in conf/neo4j.conf

browser.remote_content_hostname_whitelist=http://host:port

Since Neo4j 3.0.1 you can setup the browser with an :play URL for your users:

http://host:7474/browser?cmd=play&arg=http://host:port/path/to/guide.html

Regarding Docker, my colleague Ryan just published a docker image for the panama papers that is based on their published database: https://github.com/ryguyrg/panama-neo4j

PS: Feel also free to reach out to me via email michael at neo4j



回答2:

Thanks @michael-hunger for setting us on the right track. We're now publicly hosting Hetionet v1.0 at https://neo4j.het.io.

In short, we used Docker and host the instance on a DigitalOcean Droplet. Here is a longer discussion with more details. You can also check out our Docker setup and modified neo4j.conf.

Thus far we haven't run into any security or scaling issues. If we do, we'll add those to discussion mentioned above.



标签: neo4j cloud