标签: amazon-dynamodb-index

DynamoDB 如何在 PartiQL 查询中使用索引?

我已经看过 PartiQL 语法的 dynamoDB 文档:

SELECT expression  [, ...] 
FROM table[.index]
[ WHERE condition ] [ [ORDER BY key  [DESC|ASC] , ...]
Run Code Online (Sandbox Code Playgroud)

但在实践中:

select * from dev .pk-all-index
where "pk" = 'config' AND ("brand" = 'tesla' OR contains("aliases", 'tesla.com'))
Run Code Online (Sandbox Code Playgroud)

给我错误:

执行命令期间发生错误。ValidationException:语句格式不正确,无法处理:意外的关键字

amazon-dynamodb dynamodb-queries amazon-dynamodb-index partiql

8
推荐指数
2
解决办法
1万
查看次数

com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException:无法从回填全局二级索引中读取

我们在我们的应用程序中不断收到此异常,该应用程序有一个计划作业要读取全局二级索引。看起来它会定期回填,即使桌子上没有任何变化。我们桌子上的音量很低,所以每天看到几次有点惊讶。这不是一个新索引,所以想知道它是否应该仅在插入/更新记录时回填。有人见过这个吗?

amazon-dynamodb amazon-dynamodb-index

7
推荐指数
4
解决办法
3996
查看次数

将全局二级索引添加到现有 DynamoDB 表的成本

DynamoDB 中有一个包含数十亿条记录的现有表,我想向其中添加全局二级索引 (GSI)。这是否会消耗表容量中的任何读取请求单元 (RRU) 或索引的写入请求单元 (WRU)。我有兴趣了解与此操作相关的任何成本核算。

我了解 GSI(创建后)涉及的存储成本。

amazon-web-services amazon-dynamodb amazon-dynamodb-index

6
推荐指数
1
解决办法
1万
查看次数

DynamoDB重载了全局二级索引-我做对了吗?

我来自SQL和MongoDB背景,并且确实想将DynamoDB用于新项目。到目前为止,这是可以忍受的。我将数据写入DynamoDB,并使用流神奇地将我的数据摄取到Elastic Search中进行搜索。它完成了我需要做的所有事情。

但是,现在我的位置是我想要直接从DynamoDB进行查询的数据。

受影响的实体是:

  • 合约
  • 供应商
  • 报告期间
  • 付款方式

我正在使用我的付款服务,通过该服务可以发起,更新,审核和查询付款。使用以下属性创建付款:

  • contractId
  • fromVendorId(可空)
  • toVendorId
  • reportPeriodId
  • 状态

使用DynamoDB,我希望能够进行以下查询:

  • 按日期范围获取报告期间
  • 通过报告期获取付款
  • 从供应商处获取付款
  • 通过toVendor获取付款
  • 按状态获取付款

以上各项的某种组合(例如“来自供应商aaaa-bbbb的拒绝付款”)。

遵循DynamoDB官方文档之后,我正试图设置Overloaded Global Secondary Indexs以解决该问题。

我现在还没有开始设置“付款”,因为这感觉很奇怪,但是我确实开始设计用于reportPeriods的键和索引,以便于掌握。这是我现在所拥有的:

按键

指标

主键是id,sort。我的计划是将相同的表用于报告期和付款,因为DynamoDB文档说您可以为整个应用程序使用定义明确的表(我将数据比这保持了一点隔离,并且每个微服务使用一个表)。

我承认保持冗余行的最新状态并通过许多字段进行查询会有开销,但是假设我可以进行维护(我仍然在质疑自己)...我的真正问题是...我我做对了吗?

我假设要查询的任何内容,都需要添加带有ID和正确的“ sort”字段的新行。例如,假设我们有一个ID为dddd-eeee的付款,属于供应商aaaaa-bbbb,状态为1。我假设要按供应商和状态查询此付款,我应该添加一个包含以下字段的附加项目:

  • id:付款-aaaa-bbbb
  • 排序:fromVendorId,状态
  • 值:aaaa-bbbb,1

那是对的吗?如果要按vendorId +状态IN(1,3)查询怎么办?

如果您有过载GSI的经验,请查看我到目前为止所做的一切,并让我知道我是否处在正确的轨道上,或者我是wayyyyy,wayyyyy,wayyyy并最好进行一些更改(快速),或者我要被搞砸了。您建议进行哪些更改?

amazon-web-services nosql amazon-dynamodb dynamodb-queries amazon-dynamodb-index

5
推荐指数
0
解决办法
682
查看次数

何时以及如何对分区密钥和排序密钥进行分区的Dynamodb GSI?

  1. 何时以及如何对分区密钥和排序密钥进行分区的Dynamodb GSI?
  2. 是否有像表分区这样的GSI分区的最大大小限制?
  3. 如果是,那么当一个基本的GSI(即所有记录中具有相同分区键的GSI)超过存储限制时会发生什么?

amazon-dynamodb dynamodb-utilization amazon-dynamodb-index

5
推荐指数
1
解决办法
794
查看次数

当主表具有按需容量模式时,GSI容量模式将是按需容量模式吗?

当主表具有按需容量模式时,GSI容量模式将是按需容量模式吗?

我无法在 AWS 文档中找到此信息。虽然我能找到的是:对于 GSI,RCU 和 WCU(预配置容量模式)应该相同(或更多),否则它可以备份“主”表上的写入,从而限制请求。

我从文档中发现的是:
全局二级索引从基表继承读/写容量模式
(复制自https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html

我是否可以假设 GSI 将继承表的容量模式(因此,如果表是按需的,那么 GSI 将是按需的)?

amazon-dynamodb amazon-dynamodb-index dynamodb-gsi

5
推荐指数
1
解决办法
1739
查看次数

如何删除dynamodb中表的排序键

我一直在删除 dynamodb 表中的排序键。我需要通过 AWS 控制台 UI 或命令行了解。

谢谢!

amazon-dynamodb amazon-dynamodb-index

4
推荐指数
1
解决办法
3399
查看次数

Modeling Relational Data in DynamoDB (nested relationship)

Entity Model:

在此处输入图片说明

I've read AWS Guide about create a Modeling Relational Data in DynamoDB. It's so confusing in my access pattern.

Access Pattern

+-------------------------------------------+------------+------------+
| Access Pattern                            | Params     | Conditions |
+-------------------------------------------+------------+------------+
| Get TEST SUITE detail and check that      |TestSuiteID |            |
| USER_ID belongs to project has test suite |   &UserId  |            |
+-------------------------------------------+------------+------------+
| Get TEST CASE detail and check that       | TestCaseID |            |
| USER_ID belongs to project has test case  |   &UserId …
Run Code Online (Sandbox Code Playgroud)

hierarchical-data amazon-dynamodb dynamodb-queries amazon-dynamodb-index amazon-dynamodb-data-modeling

3
推荐指数
1
解决办法
233
查看次数

在 Golang 中查询 DynamoDB 上的二级索引

我的主键是一个名为“id”的字段

我在“group_number”字段上的表中添加了二级索引

在此处输入图片说明

我通过二级索引查询,如下所示:

// Query the secondary index
queryInput := &dynamodb.QueryInput{
    TableName: aws.String(c.GetDynamoDBTableName()),
    KeyConditions: map[string]*dynamodb.Condition{
        "group_number": {
            ComparisonOperator: aws.String("EQ"),
            AttributeValueList: []*dynamodb.AttributeValue{
                {
                    S: aws.String(c.GroupNumber),
                },
            },
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

然而; 我收到错误“validationexception:查询条件缺少关键架构元素:id”

DynamoDB 是否只允许查询主键?我的印象是您使用“GetItem”作为主键,因为如果您使用主键,则只有一条记录可以返回。要通过二级索引进行搜索,请使用“查询”,要通过非索引键进行搜索,请使用“扫描”。

请让我知道我在这里做错了什么。

go amazon-dynamodb dynamodb-queries amazon-dynamodb-index

3
推荐指数
1
解决办法
3598
查看次数

DynamoDB查询二级索引,如何定义索引

我一直在四处走动,但不清楚该怎么做。

我有一个简单的表,我想在其中对几列进行查询。据我了解,这意味着为要查询的每一列创建二级索引。我已经使用Serverless框架定义了表,serverless.yml并且收到了各种奇怪的错误消息。

当前的serverless.yml定义是:

resources:
  Resources:
    MessagesDynamoDBTable:
      Type: 'AWS::DynamoDB::Table'
      Properties:
        AttributeDefinitions:
          - AttributeName: messageId
            AttributeType: S
          - AttributeName: room
            AttributeType: S
          - AttributeName: userId
            AttributeType: S
        KeySchema:
          - AttributeName: messageId
            KeyType: HASH
          - AttributeName: userId
            KeyType: RANGE
        LocalSecondaryIndexes:
          - IndexName: roomIndex
            KeySchema: 
              - AttributeName: room
                KeyType: HASH
            Projection: 
              ProjectionType: "KEYS_ONLY"
          - IndexName: userId
            KeySchema: 
              - AttributeName: userId
                KeyType: HASH
            Projection: 
              ProjectionType: "KEYS_ONLY"
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
        TableName: ${self:custom.tableName}
Run Code Online (Sandbox Code Playgroud)

它的意思是类似于Slack服务-因此我想查询房间,用户等的条目。

根据我已经找到的文档,此定义很有意义。一个应该为索引中使用的列声明属性,而我已经这样做了。KeySchema-我确实只需要messageId字段,但是一条错误消息表明它需要RANGE索引,因此我将userId字段添加到KeySchema中只是为了关闭它。根据我已经找到的文档,二级索引字段看起来正确。

有了这个定义,当尝试使用 serverless deploy

An error occurred: …
Run Code Online (Sandbox Code Playgroud)

amazon-dynamodb serverless-framework dynamodb-queries amazon-dynamodb-index

2
推荐指数
1
解决办法
3928
查看次数