在 DynamoDb 中,在访问经常一起获取的数据记录时如何优化额外的联接

问题描述 投票:0回答:1

假设我正在运行一个论坛,每个用户都可以发表多个帖子。

所以我按以下方式构建数据库:(省略不相关的列)

PK SK STRING_0
帖子,post_id 线程,seq_num 用户 ID
用户,用户ID 不相关 大元数据

一个常见的用例是呈现整个讨论线程,其中包含所有帖子。但是,每当我们渲染帖子时,我们都会渲染一些用户元数据,如上面所示

big_meta_data
(这可能包括用户的个人资料图片、用户的声誉等)

我们当然可以首先执行查询来获取所有帖子,然后对于我们看到的每个用户执行额外的查询(很可能是批处理的)。

有什么办法可以避免对用户记录进行额外的查询,或者上面的方法足够了吗?

我能想到的唯一方法是在 POST 行中保留该

big_meta_data
的副本,但这似乎很难管理并消耗额外的存储空间。

amazon-dynamodb nosql
1个回答
0
投票

要获取用户数据,您需要执行额外的查询,考虑到延迟只有个位数毫秒,发出多个请求是很正常的。

如果您在每个帖子项目中保留用户信息,并且如果用户更改其个人资料中的属性,您将需要更改他们存储的每个帖子项目,这很复杂且不推荐。

© www.soinside.com 2019 - 2024. All rights reserved.