小编A. *_*oob的帖子

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
查看次数