DynamoDB 中全局二级索引 (GSI) 的最大非键属性数是多少?

What is the maximum number non-key attributes of Global Secondary Index (GSI) in DynamoDB?

根据 AWS 文档,我们在 DynamoDB 的本地二级索引 (LSI) 中最多可以有 20 个非键属性,但是全局二级索引呢?

我们遇到的问题是我们想在 GSI 中包含 20 多个非关键属性,但我们找不到方法或文档来解释这一点。我们唯一的选择是使用 ALL 来包含所有非键属性,这会导致巨大的存储成本。

谢谢

docs 指定用于全局和本地二级索引的 Projection.NonKeyAttributes 字段的限制:

NonKeyAttributes

Represents the non-key attribute names which will be projected into the index.

For local secondary indexes, the total count of NonKeyAttributes summed across all of the local secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

Type: Array of strings

Array Members: Minimum number of 1 item. Maximum number of 20 items.

Length Constraints: Minimum length of 1. Maximum length of 255.

Required: No

这不是可以调整的东西。

解决方法可能是更改您的数据结构 - 您需要平面数据结构吗?您还可以将一些属性组合在一个映射中:

{
  "id": 123,
  "address": {
    "city": "Berlin",
    "street": "Straße des 17. Juni",
    "number": "17",
  }
}
// instead of 
{
  "id": 123,
  "city": "Berlin",
  "street": "Straße des 17. Juni",
  "number": "17"
}