2017-08-01 83 views
1

我们尝试将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函数中运行它,但结果相同...

我们是在做错什么或者在我们的情况下是正常的吗?

谢谢。

回答

1

该系统的一般建议是使用vertex centric indexes来加速你在泰坦上的遍历。另外,泰坦是一个死的项目。如果你正在寻找代码的更新,JanusGraph分叉泰坦代码并继续更新它。

+0

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 –