我们尝试将Titan(1.0.0版本)与DynamoDB后端一起使用,就像我们的推荐系统引擎一样。我们有一个庞大的用户数据库与他们的关系。它包含大约350万用户和大约20亿用户之间的关系。 这里是我们用来创建模式Titan + dynamodb遍历后端性能
https://gist.github.com/angryTit/3b1a4125fc72bc8b9e9bb395892caf92
正如你所看到的,我们使用一个综合指数,以寻找穿越启动速度快,5边的类型和一些属性点的代码。
在我们的案例中,用户可以拥有非常多的边缘。每个可以有数万个边缘。
这里是我们用来提供在线
https://gist.github.com/angryTit/e0d1e18c0074cc8549b053709f63efdf
的穿越作品非常慢的问题建议的代码。 这一个
https://gist.github.com/angryTit/e0d1e18c0074cc8549b053709f63efdf#file-reco-L28
tooks 20 - 30秒的情况下,当用户具有约5000 - 6000的边缘。
我们DynamoDB的表有足够的读/写能力(我们可以从消费比1000个单位提供的能力较低的CloudWatch看到。)
这里是我们的泰坦
的配置https://gist.github.com/angryTit/904609f0c90beca5f90e94accc7199e5
我们试图在最大内存和大实例(r3.8xlarge)的Lambda函数中运行它,但结果相同...
我们是在做错什么或者在我们的情况下是正常的吗?
谢谢。
pantalohnes正确使用以顶点为中心的索引。此外,您的查询正在查找'has(USER_LABEL,USER_ID_PROPERTY,userId)',但复合索引不受标签限制。尝试在[定义索引](https://gist.github.com/angryTit/3b1a4125fc72bc8b9e9bb395892caf92#file-schema-L25-L29)时包括'indexOnly(USER_LABEL)'。 http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html#_label_constraint –