如何解决查询 DynamoDB GSI 以查找匹配子字符串的选项有哪些?
{
Type: 'AWS::DynamoDB::Table',Properties: {
KeySchema: [
{
AttributeName: 'itemID',KeyType: 'HASH'
}
],AttributeDeFinitions: [
{
AttributeName: 'itemID',AttributeType: 'S'
},{
AttributeName: 'label',AttributeType: 'S'
}
],GlobalSecondaryIndexes: [
{
IndexName: 'byLabel',KeySchema: [
{
AttributeName: 'label',KeyType: 'HASH'
}
],Projection: {
ProjectionType: 'ALL'
}
}
]
}
}
对于我的访问模式之一,我想获取包含带有特定子字符串的标签的所有数据。我对 dynamodb 很陌生,所以我不确定实现这一目标的最佳方法。
我让它为下面的平等工作。但是我更喜欢更多结果,因此返回包含输入的数据将是理想的。
当前请求 VTL 模板:
{
"version": "2018-05-29","operation": "Query","query": {
"expression": "label = :label","expressionValues": {
":label": $util.dynamodb.toDynamoDBJson($context.arguments.label)
}
},"index": "byLabel",}
我正在寻找有关如何使用 dynamodb 实现通常完成此操作的建议。
解决方法
当您在 dynamodb 中执行 Query 时,您提供了一个准确(完整)的哈希键。
如果您想在哈希键上匹配子字符串,则不能使用查询。相反,您需要执行包含 FilterExpression 的 Scan。
虽然此扫描将仅返回您想要的项目,但它会评估您表中的每一个项目,因此会花费您更多的 RCU,并且可能会随着您的表扩展而变慢(尽管您可以使用 ParallelScan 抵消这一点) .
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。