首先,我有这样的表结构,
Users:{
UserId
Name
Email
SubTable1:[{
Column-111
Column-112
},
{
Column-121
Column-122
}]
SubTable2:[{
Column-211
Column-212
},
{
Column-221
Column-222
}]
}
由于我是DynamoDB的新手,所以我对此有以下几个问题:
1.我可以创建这样的结构吗?
2.我们可以为子表设置主键吗?
3.幸运的是,我发现DynamoDB helper类可以对数据库进行一些操作。
https://www.gopiportal.in/2018/12/aws-dynamodb-helper-class-c-and-net-core.html
但是,不知道如何仅提取垂直子表
4.我们能否仅从主表中获取特定的列?还需要有关子表的建议
注意:我正在使用.net核心c#语言与DynamoDB通信。
答案 0 :(得分:0)
是
否,只能在顶级标量属性(字符串,数字等)上设置哈希键
幸运的是,我找到了DynamoDB helper类来对数据库进行一些操作。 interesting article 但是,不知道如何仅获取垂直子表
当您说子表时,我假设您是在上面的示例表中引用Array数据类型。为了从DynamoDB表中获取数据,您需要使用哈希键才能使用查询API。如果没有哈希键,则可以使用Scan API扫描整个表。扫描API是一项昂贵的操作。
可以创建GSI(全局二级索引)以避免扫描操作。但是,只能在标量属性上创建它。无法在Array属性上创建GSI。
其他选择是相应地重新设计表以匹配您的查询访问模式。
我们只能从主表中获取特定的列吗?还需要有关子表的建议
是的,您可以使用ProjectionExpression
获取特定的列。这样,您就只能在结果集中获得必需的属性