首页 > 解决方案 > 如何管理 dynamoDB 结构?

问题描述

我们正在尝试创造类似 uber-eats 的东西。后端是无服务器的。我们有菜单项,每个项目都有它的属性,这些属性存储在 DynamoDB 的菜单表中。

此应用程序仅适用于单一餐厅特许经营权。我们具有从不同商店订购同一特许经营权的功能。产品的一些属性,如标题、价格、SKU 是常见的。但是促销、可用库存等属性对于不同的网点是不同的。

我正在尝试将结构管理为:

{
    "title": "title",
    "sku": "sku00",
    "price": "$20",
    "promotions": {
        "outlet1": {
            "discount": "20",
            "start_date": "12-02-2021"
        },
        "outlet2": {
            "discount": "10",
            "start_date": "10-02-2021"
        }
    },
    "stock": {
        "outlet1": {
            "available": "20",
            "alert": false
        },
        "outlet2": {
            "available": "10",
            "alert": true
        }
    }
}

但是我不能为促销创建二级索引,因为二级索引只支持 B|N|S。如何管理数据,以便我可以保持后端的高性能。

我们需要根据网点查询数据,因为当我们获取单品数据时,过滤器将根据网点进行,促销和库存中的数据将仅针对过滤器中的网点。例如,我想查询 outlet1 的数据,然后

{
    "title": "title",
    "sku": "sku00",
    "price": "$20",
    "promotions": {
         "discount": "20",
         "start_date": "12-02-2021"
    },
    "stock": {
         "available": "20",
         "alert": false
    }
}

标签: amazon-dynamodbserverless

解决方案


推荐阅读