如何让DynamoDb扫描和查询更加高效?

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

我们在 DynamoDB 中有 2 个表:

1.组织用户:

  1. 分区键:OrgId

  2. 排序键:entryId

  3. 表目前有 55,000 个项目,大小为 16MB。

2.用户:

  1. PartitionKey:用户的电子邮件

  2. 用户 ID 上还有一个 GSI。

  3. 与第一张桌子尺寸相似

我们有一个内部工具,其中有一个供用户搜索的栏。在服务器端,它向扫描 OrgUser 表的端点发送请求 -> 然后我们使用 GSI 查询第二个表(我们从第一个表获取 userId)以获取用户的电子邮件。目前该请求大约需要 10 秒。

我们正在努力寻找改进这一点的方法,并已尝试过:

1.对 Orguser 表使用并行扫描而不是顺序扫描。然而,我们担心这是一个创可贴修复,因为在某些时候,即使我们增加线程工作线程的数量,我们也会得到收益递减的结果。另外,还有读取单位的问题。

2.研究将表记录提取到 opensearch 管道中,并使用 opensearch 搜索用户的 id、name 和 email。

因此,寻找有关更长期而不是创可贴的解决方案的建议和建议。谢谢!

java amazon-dynamodb dynamodb-queries amazon-dynamodb-index
1个回答
0
投票

我认为 DynamoDB 不是适合搜索用例的产品。此外,您必须扫描一个表,然后使用其结果查询另一个表,这一事实让我相信您的数据模型低于标准。

你说得对,Scan 是不可持续的,你的 API 根本无法很好地扩展。

  1. 以可以在单个请求中有效检索项目的方式重塑数据。
  2. 将 ZeroETL 与 OpenSearch 结合使用,以获得适当的搜索功能。仍然在单个请求中获得结果。
© www.soinside.com 2019 - 2024. All rights reserved.