【问题标题】:Titan+dynamodb traversal backend performanceTitan+dynamodb 遍历后端性能
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • pantalohnes 关于使用以顶点为中心的索引是正确的。此外,您的查询正在寻找 has(USER_LABEL, USER_ID_PROPERTY, userId),但复合索引不受标签限制。当您 define the index 时,请尝试包含 indexOnly(USER_LABEL)s3.thinkaurelius.com/docs/titan/1.0.0/…
    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 2018-01-18
    • 2016-04-19
    • 1970-01-01
    • 2018-01-07
    • 2016-08-08
    • 2016-09-07
    • 2016-07-21
    相关资源
    最近更新 更多