Titan + dynamodb遍历后端性能

时间:2017-08-01 22:57:57

标签: amazon-dynamodb database-performance titan

我们尝试使用Titan(1.0.0版本)和DynamoDB后端,就像我们的推荐系统引擎一样。我们拥有庞大的用户数据库及其关系。它包含大约350万用户和用户之间约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个单位提供的容量。)

这是我们的Titan配置

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

系统的一般建议是使用vertex centric indexes来加速对Titan的遍历。此外,泰坦是一个死的项目。如果您正在寻找代码更新,JanusGraph已经分享了Titan代码并继续更新它。