Amazon dynamodb CreateTableRequest/KeySchemaElement/Attributes
如果我用这些属性定义了一个类Amazon dynamodb CreateTableRequest/KeySchemaElement/Attributes,amazon-dynamodb,Amazon Dynamodb,如果我用这些属性定义了一个类 [DynamoDBTable("UserPictures")] public class UserInfo { public UserInfo() { if (PictureAlbum == null) PictureAlbum = new Dictionary<string, PictureInfo>(); } [DynamoDBHashKey] public strin
[DynamoDBTable("UserPictures")]
public class UserInfo
{
public UserInfo()
{
if (PictureAlbum == null)
PictureAlbum = new Dictionary<string, PictureInfo>();
}
[DynamoDBHashKey]
public string PhoneNumber { get; set; }
[DynamoDBRangeKey]
public string UserName { get; set; }
public Dictionary<string, PictureInfo> PictureAlbum { get; set; }
}
[DynamoDBTable(“用户图片”)]
公共类用户信息
{
公共用户信息()
{
如果(PictureAlbum==null)
PictureAlbum=新字典();
}
[DynamoDBHashKey]
公共字符串PhoneNumber{get;set;}
[动态键]
公共字符串用户名{get;set;}
公共字典PictureAlbum{get;set;}
}
为什么CreateTableRequest需要1)tablename和2)KeySchemaElement?难道不能通过读取类上的属性来确定这些属性吗?DynamoDB基于分区键管理数据。分区键用于标识数据库中的项。没有分区键,无法创建/更新/查询项目。只有在没有分区键的情况下才能执行扫描 分区(排序键,如果可用)和其他非键属性之间的主要区别在于分区键是必需的。所有其他属性都不是强制性的 另外,在创建表时,DynamoDB使分区键和排序键(如果可用)属性具有强制性。它不允许定义任何非关键属性。事件如果您在创建表时试图定义非键属性,DynamoDB将抛出异常,因为它是一个NoSQL数据库,并且没有模式 有两种类型的属性:- 1) 关键属性:- 分区键-创建表时必须定义分区键。所有项都必须具有此属性的值 排序键-根据设计,表可能包含也可能不包含此属性。如果已定义,则所有项都应该具有此属性的值 2) 非关键属性-可选属性。项可以包含也可以不包含非键属性
创建表时,它必须知道键属性。因此,它可以管理数据并根据分区密钥将其分发到不同的分区。整个数据库是基于分区密钥进行管理的。这就是为什么它必须是唯一的,并且价值应该分散以获得良好的性能。换句话说,密钥的设计应该使数据分散在多个分区中 通过读取类的属性,它无法确定键属性。它需要DynamoDBHashKey和DynamoDBRangeKey来识别相同的密码。这些是Dynamodb表的必填字段。这两个字段都用属性标记。。。。