Titan+dynamodb 遍历后端性能



我们尝试将 Titan(1.0.0 版本(与 DynamoDB 后端一起使用,就像我们的推荐系统引擎一样。我们有一个庞大的用户数据库,其中包含他们的关系。它包含大约 3.5 百万用户和大约 20 亿用户之间的关系。 这是我们用于创建架构的代码

https://gist.github.com/angryTit/3b1a4125fc72bc8b9e9bb395892caf92

如您所见,我们使用一个复合索引来查找快速遍历的起点、5 条边的类型和一些属性。

在我们的例子中,用户可以拥有非常多的边缘。每个都可以有数万个边缘。

这是我们用来在线提供建议的代码

https://gist.github.com/angryTit/e0d1e18c0074cc8549b053709f63efdf

遍历工作非常慢的问题。 这个

https://gist.github.com/angryTit/e0d1e18c0074cc8549b053709f63efdf#file-reco-L28

如果用户有大约 5000 - 6000 条边缘,则需要 20 - 30 秒。

我们的 DynamoDB 表具有足够的读/写容量(我们可以从 CloudWatch 中看到,消耗的容量低于 1000 个单位提供的容量(。

这是我们对泰坦的配置

https://gist.github.com/angryTit/904609f0c90beca5f90e94accc7199e5

我们尝试在具有最大内存的 Lambda 函数中和大实例 (r3.8xlarge( 上运行它,但结果相同......

我们做错了什么还是在我们的案例中是正常的?

谢谢。

该系统的一般建议是使用以顶点为中心的索引来加快您在 Titan 上的遍历速度。此外,泰坦是一个死项目。如果你正在寻找代码的更新,JanusGraph已经分叉了Titan代码并继续更新它。

最新更新