Database design 将SQL模式建模到DynamoDB
在我的项目中,AWS Lambda每天都会从电子商店中删除数据,并将其保存到MySQL中 因为我想更具成本效益,所以我想使用DynamoDB 我想如何查询 这很清楚 按包含最新报废产品数据的类别(价格、评级等)表示父亲、厨房和刀具类别中的所有产品 这个箱子适合发电机吗?模型看起来怎么样 我有三种方法,但每一种都有缺点: 有两个表,第一个是有报废数据的产品,第二个是有产品的类别。这意味着第一次查询要找出类别中的产品,第二次查询要获取产品数据+同步的两个表 productId上有一个表分区键,时间戳上有一个排序键,对于每个废料,我会为产品保存3行,为每个类别保存一行,并在类别上使用时间戳作为排序键生成GLI。但如果我每天有100个产品报废,每个产品平均分为8个类别,每天将有800行,只是为了有这种多对多的关系。在一个月内,我将有2.4万行。假设我想在一个月后从产品中删除一个类别,我必须更新240行 或者这种情况不适合DynamoDB,使用MySQL会更容易吗Database design 将SQL模式建模到DynamoDB,database-design,amazon-dynamodb,database-schema,Database Design,Amazon Dynamodb,Database Schema,在我的项目中,AWS Lambda每天都会从电子商店中删除数据,并将其保存到MySQL中 因为我想更具成本效益,所以我想使用DynamoDB 我想如何查询 这很清楚 按包含最新报废产品数据的类别(价格、评级等)表示父亲、厨房和刀具类别中的所有产品 这个箱子适合发电机吗?模型看起来怎么样 我有三种方法,但每一种都有缺点: 有两个表,第一个是有报废数据的产品,第二个是有产品的类别。这意味着第一次查询要找出类别中的产品,第二次查询要获取产品数据+同步的两个表 productId上有一个表分区键,时间戳
你可以把这个当桌子用
productId | sortKey | GSI1 |
1234232 | event#123232323 | | price1 | orders1 | rating1 | rating_count1 | created_at1
1234232 | event#123232327 | | price2 | orders2 | rating2 | rating_count2 | created_at2
1234232 | category#father | Father | <other properties of category>
1234232 | category#kitchen| kitchen | <other properties of category?>
这里productid是GSI1的次键
这将解决以下用例
对于一个产品,请参见事件历史记录。选择*其中id=X,然后选择sortKey startswith event
获取产品的所有类别。选择*其中id=X,然后按类别排序
使用一个类别获取所有产品。选择*其中GSI1=x
从产品中删除一个类别而不更新多行。在执行更新时,如果新添加,则获取所有现有类别;如果不存在,则删除并添加特定事件
下面是一个很好的解释模式设计