4

关于将 Neptune DB 用作网络数据库及其扩展复杂计算能力的最佳实践,我有一个一般性问题。我想开发一个用户推荐系统,在该系统中,平台上的传入用户会被提示他们可能关注的其他用户,以发展网络。

为了实现像 Triadic Closure 这样的简单技术,我应该在网络数据库(在我的例子中是 AWS Neptune)上使用 gremlin 查询来生成建议吗?我相信在这种情况下,我将不得不创建 python 脚本来并行化多个节点的查询并为每个节点大规模生成推荐。

或者是将网络数据以节点、边及其属性的形式存储到关系数据库中,然后通过运行 SQL 查询将网络数据加载到 python 中,然后使用包来执行计算,这是一种更常见的做法吗?就像 NetworkX 一样。在这种情况下,我不必担心批量计算,因为像 Redshift 这样的关系数据库会处理它。但是,我将编写 python 逻辑来实现诸如三元闭包之类的技术。

此外,在未来,我可能想使用更复杂的图计算技术,如图聚类、分区、计算不同类型的中心性。在 Neptune+Gremlin 的框架内,所有这些/任何这些都是可能的。

以下是我正在寻求答案的问题:

  1. 数据科学团队使用图形数据构建解决方案(例如用户推荐)时常用的技术堆栈是什么?我所说的数据科学技术堆栈是指帮助查询、分析、可视化、计算和服务的技术。

  2. Neptune + Gremlin 能否替代 NetworkX 等 python 包进行网络分析和中心度测量?

  3. Neptune DB 仅作为数据存储是理想的,还是它还可以支持复杂的网络分析和推荐服务?

任何对此的见解/资源都会非常有帮助!

4

1 回答 1

2

在 Gremlin 中绝对可以进行三元闭合。我还看到数据科学家通过在 Jupyter Notebook 中运行 gremlin-python 客户端同时使用 NetworkX 和 Gremlin。由于这个问题是针对 Amazon Neptune 的,您可能需要在 [1] 的 Neptune 支持论坛上发帖。[2] 也有一些有用的 Gremlin 食谱

如果您在支持论坛上发帖,我相信有人会回复。

于 2020-03-28T00:56:19.163 回答