在云中托管一个公共(只读)Neo4j实例



我正在进行一个开放科学项目,以了解药物为什么有效。我们创建了一个名为Hetionet的网络,其中包含47031个节点和2250197个关系。我们正在使用Neo4j,并有一个GraphGist教程展示我们的方法。

我想让任何人与我们的网络互动。Neo4j浏览器提供了我们想要的灵活性和良好的用户界面。因此,我认为的解决方案是设置一个公共Neo4j 3.0社区服务器,设置为:

  • dbms.security.auth_enabled=false禁用登录
  • dbms.read_only=true以防止写入查询
  • 设置Execution Guard以限制查询运行时

以下是其他注意事项:

  1. 云托管:我们希望将其托管在云中,以便始终可用。看起来AWS是最便宜的选择
  2. 可复制性:如果我们能使配置具有可复制性并易于重新部署,那就太好了。从GitHub下载数据库的Neo4j Docker
  3. 一个致命的功能是链接到或嵌入带有预填充查询的浏览器(请参阅这个未解决的问题)

所以我的问题是:

  • 是否会有任何问题阻止托管公共Neo4j实例
  • 我在AWS/Docker方面走对了吗
  • 在并发使用的情况下,设置会中断吗?假设一次最多打开30个浏览器,并发查询不超过几个

附加说明:

  • 请参阅相关问题一和二
  • Twitter图形演示提供了类似的功能,但为每个用户创建了一个新的实例

你的想法都是有意义的。

你可以为你的数据集创建一个浏览器指南,例如从你的图表集,类似于:play http://guides.neo4j.com/graphgists

有了这个repo,你可以把asciidoc(像graphgists)变成浏览器指南:https://github.com/jexp/neo4j-guides

李写了一些博客:http://blog.bruggen.com/2016/03/an-easier-better-tastier-beergraphguide.html

自3.0.1以来,甚至有一些方法可以添加一个表单,然后在查询中使用该表单的内容。

您必须在conf/neo4j.conf的白名单中启用浏览器指南

browser.remote_content_hostname_whitelist=http://host:port

从Neo4j 3.0.1开始,您可以为用户设置:playURL:

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

关于Docker,我的同事Ryan刚刚发布了巴拿马论文的Docker图片,该图片基于他们发布的数据库:https://github.com/ryguyrg/panama-neo4j

附言:也可以通过电子邮件联系我,迈克尔在neo4j

感谢@michael饥饿让我们走上正轨。我们现在在https://neo4j.het.io.

简而言之,我们使用Docker并在DigitalOcean Droplet上托管实例。这是一个更长的讨论,有更多的细节。您也可以查看我们的Docker设置和修改的neo4j.conf

到目前为止,我们还没有遇到任何安全或扩展问题。如果我们这样做了,我们将把这些添加到上面提到的讨论中。