【发布时间】:2018-01-08 23:22:42
【问题描述】:
我们尝试将 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
我们尝试在具有最大内存的 Lambda 函数和大型实例 (r3.8xlarge) 上运行它,但结果相同...
我们做错了什么还是正常的?
谢谢。
【问题讨论】:
标签: amazon-dynamodb database-performance titan