代码之家  ›  专栏  ›  技术社区  ›  Joey Yi Zhao

我如何支持dynamodb中的许多可排序字段

  •  0
  • Joey Yi Zhao  · 技术社区  · 4 年前

    我需要查询数据,但要按不同的字段排序(可能超过30个)。 我知道我可以建立一个二级索引,并在不同的GSI中使用不同的字段作为排序键。但是,它将超过一个表可以具有的最大gsi。

    是否有一种模式可以重组数据,使其可以通过单个GSI甚至不通过GSI进行排序?

    我需要支持的数据如下:

    Table: OrderProductUser
    
    # Order Items:
    type
    createdDate
    updatedDate
    amount (number)
    fee (number)
    tax (number)
    
    # Product Items:
    type
    name
    price
    ...
    
    # User Items:
    
    type
    firstName
    lastName
    dob
    gender
    ...
    
    ...
    

    由于Dynamodb建议使用一个表,所以我将所有不同的记录放在一个表中。这个 type 每行中的字段指示该行是什么。

    但我想支持所有不同字段的排序,包括字符串、日期和数字。如果我在应用程序中对它们进行排序,它将不能很好地支持分页。有彭定康支持吗?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Charles    4 年前

    每张桌子只需要1个GSI。。。因为你可以让它们过载

    只需将属性名称连接到GSI Partition或Sort键。。。
    前-

    Partition    Sort
    AMOUNT       99.99
    FEE          1.50
    xxx          AMOUNT:00099.99
    xxx          FEE:001.50
    

    但您一次只能按一列进行排序,并且必须将多条记录写入DDB。

    考虑到DDB中排序/过滤的限制,标准RDS可能是高功能UI的更好选择。

    通常的建议是用ElasticSearch来引导DDB。。。如果你真的需要DDB+ElasticSearch所能提供的那种伸缩性,那就去吧。

    但对于大多数用户来说,RDS Aurora的性价比要高得多。