📅  最后修改于: 2023-12-03 15:00:33.442000             🧑  作者: Mango
在 DynamoDB 中,主键是用于唯一标识表中每个项的属性或属性集。在每个表中,必须定义一个主键,它可以是单个属性或属性对的组合。
分区键是 DynamoDB 中用于分片数据的第一个属性,它决定了表中数据的分布。分区键一般用于获取某个项时,DynamoDB 可以直接计算数据分区位置,从而快速读取数据。
排序键是可选的,也称为范围键,它可以根据指定的顺序对同一分区键下的所有项进行排序。通常用来将多个项组织成有序列表。 sort key 可以为空。
简单主键只有一个属性,例如一个唯一的 ID。在表中,每个项的唯一标识由唯一的主键值组成。
{
"id": "example-id",
"name": "example-name",
"age": 18
}
组合主键由两个属性组成:一个分区键和一个排序键。分区键和排序键的值集合确定了唯一的项。
{
"user_id": "example-user-id",
"timestamp": "2021-01-01T00:00:00.000",
"action": "login",
"data": {}
}
在上面的例子中,user_id
是分区键,timestamp
是排序键。DynamoDB 将按照 user_id
对数据进行分区,并在每个分区内使用 timestamp
对数据进行排序。
单分区键是一种最简单的分区方式,所有数据都存储在同一个分区中。分区键在表中必须是唯一的。
{
"id": "example-id",
"name": "example-name",
"age": 18
}
在此示例中,id
是分区键。
组合分区键是将多个属性组合在一起作为分区键,它允许数据被分布在多个分区上。在 DynamoDB 中,组合分区键可以是任意属性组合。
{
"city": "example-city",
"year": 2021,
"month": 1,
"day": 1,
"data": {}
}
在此示例中,city/year/month/day
是组合分区键。这个键的每个部分都可以是任意属性,其值的组合将在不同分区中创建项。
排序键可以为空,也可以是单一属性或属性对。排序键允许您在分区内对数据进行排序。排序键的唯一性由分区键和排序键的值决定。
{
"user_id": "example-user-id",
"timestamp": "2021-01-01T00:00:00.000",
"action": "login",
"data": {}
}
在此示例中,user_id
是分区键,timestamp
是排序键。DynamoDB 将按照 user_id
对数据进行分区,并在每个分区内使用 timestamp
对数据进行排序。
本文介绍了 DynamoDB 的主键类型及其使用方式。根据数据管理的需要,您可以选择不同的主键类型和实现方式。无论您选择哪种方式,都需要确保主键的唯一性,并根据数据的访问模式选择最佳的分区键和排序键。