abd*_*yaz 3 node.js amazon-dynamodb dynamodb-queries
我有7列,
id, firstname, lastname, email, phone, createAt, updatedAt
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 Nodejs 中编写一个 api 来获取项目phone。
id是主键。
我正在尝试通过电话或电子邮件获取数据。我还没有创建 sortkey 或 GSI。
我最终得到了scan在 dynamodb 中使用过滤器并获取所有记录的建议。
还有其他方法可以实现吗?
您的问题已经包含两个很好的答案:
Scan和 aFilterExpression来查找匹配项。这将花费时间(并且成本!)在每次查询时读取整个数据库。仅当这些查询非常罕见时才有意义。phone不是非常罕见,最好提前做好准备:添加一个以 为分区键的 GSI ,以允许使用和来phone按电话值查找项目。这些查询将快速且廉价:您只需为实际检索到的项目付费。这种方法的缺点是写入成本增加:每次写入的成本都会增加一倍(DynamoDB 同时写入基表和索引),并且存储成本也会增加。但是,除非您的工作负载主要是写入(项目非常频繁地更新并且很少读取),否则使用 GSI 的选项 2 仍然比选项 1 - 全表更好。QueryIndexNameKeyConditionExpressionScan最后,您的另一个选择是重新考虑您的数据模型。例如,如果您总是按 查找项目但从phone不按查找项目id,则可以设置phone数据的分区键和id排序键(以允许多个项目具有相同的phone)。但我不知道这是否与您的用例相关。id如果您需要有时按、有时按查找项目phone,那么 GSI 可能正是您所需要的。
| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |