我们尝试使用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函数中运行它,但结果相同......
我们做错了什么或者在我们的案例中是否正常?
谢谢。
答案 0 :(得分:1)
系统的一般建议是使用vertex centric indexes来加速对Titan的遍历。此外,泰坦是一个死的项目。如果您正在寻找代码更新,JanusGraph已经分享了Titan代码并继续更新它。