微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查询 DynamoDB GSI 以查找匹配子字符串的选项有哪些?

如何解决查询 DynamoDB GSI 以查找匹配子字符串的选项有哪些?

我有一个 dynamodb 表,其结构类似于:

{
  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 举报,一经查实,本站将立刻删除。