📜  DynamoDB –主键(1)

📅  最后修改于: 2023-12-03 15:00:33.442000             🧑  作者: Mango

DynamoDB – 主键

在 DynamoDB 中,主键是用于唯一标识表中每个项的属性或属性集。在每个表中,必须定义一个主键,它可以是单个属性或属性对的组合。

1. 基本概念
(1) Partition Key

分区键是 DynamoDB 中用于分片数据的第一个属性,它决定了表中数据的分布。分区键一般用于获取某个项时,DynamoDB 可以直接计算数据分区位置,从而快速读取数据。

(2) Sort Key

排序键是可选的,也称为范围键,它可以根据指定的顺序对同一分区键下的所有项进行排序。通常用来将多个项组织成有序列表。 sort key 可以为空。

2. 主键类型
(1) 简单主键

简单主键只有一个属性,例如一个唯一的 ID。在表中,每个项的唯一标识由唯一的主键值组成。

示例

{
    "id": "example-id",
    "name": "example-name",
    "age": 18
}
(2) 组合主键

组合主键由两个属性组成:一个分区键和一个排序键。分区键和排序键的值集合确定了唯一的项。

示例

{
    "user_id": "example-user-id",
    "timestamp": "2021-01-01T00:00:00.000",
    "action": "login",
    "data": {}
}

在上面的例子中,user_id 是分区键,timestamp 是排序键。DynamoDB 将按照 user_id 对数据进行分区,并在每个分区内使用 timestamp 对数据进行排序。

3. 分区键使用方式
(1) 单分区键

单分区键是一种最简单的分区方式,所有数据都存储在同一个分区中。分区键在表中必须是唯一的。

示例

{
    "id": "example-id",
    "name": "example-name",
    "age": 18
}

在此示例中,id 是分区键。

(2) 组合分区键

组合分区键是将多个属性组合在一起作为分区键,它允许数据被分布在多个分区上。在 DynamoDB 中,组合分区键可以是任意属性组合。

示例

{
    "city": "example-city",
    "year": 2021,
    "month": 1,
    "day": 1,
    "data": {}
}

在此示例中,city/year/month/day 是组合分区键。这个键的每个部分都可以是任意属性,其值的组合将在不同分区中创建项。

4. 排序键使用方式

排序键可以为空,也可以是单一属性或属性对。排序键允许您在分区内对数据进行排序。排序键的唯一性由分区键和排序键的值决定。

示例

{
    "user_id": "example-user-id",
    "timestamp": "2021-01-01T00:00:00.000",
    "action": "login",
    "data": {}
}

在此示例中,user_id 是分区键,timestamp 是排序键。DynamoDB 将按照 user_id 对数据进行分区,并在每个分区内使用 timestamp 对数据进行排序。

5. 总结

本文介绍了 DynamoDB 的主键类型及其使用方式。根据数据管理的需要,您可以选择不同的主键类型和实现方式。无论您选择哪种方式,都需要确保主键的唯一性,并根据数据的访问模式选择最佳的分区键和排序键。