主键用于唯一标识表中的每个项目。任何两个项目都不能具有相同的主键。在DynamoDB中,创建表时必须指定主键以及表名。
DynamoDB支持两种不同类型的主键:
- 分区键
- 分区键和排序键
分区键–
这是一个简单的主键,由一个属性组成。DynamoDB利用分区键的值作为内部哈希函数的输入。该哈希函数的输出将设置要存储项目的分区(DynamoDB内部的物理存储)。仅具有分区键的表不允许有多个具有相同分区键值的项。例如,查看下面描述的表:
People
表具有一个简单的主键(PersonID)。您可以通过提供该项目的PersonId
值来直接访问“ People
表中的任何项目。
分区键和排序键–
也称为复合主键,此键包含两个属性,即partition
键和sort
键。DynamoDB使用分区键值作为内部哈希函数的输入。哈希函数的输出设置将存储项目的分区。具有相同分区键值的每个项目都按排序键值的排序顺序存储在一起。在具有分区键和排序键的表中,假设两个项目具有不同的排序键值,则允许两个项目具有相同的分区键值。例如,查看下面描述的音乐数据库:
上面的Music
表是带有复合主键( Artist
和SongTitle
)的表的示例。如果您提供“ Music
表中的“ Artist
和“ SongTitle
值,则可以直接访问“ Music
表中的任何项目。复合主键在查询数据时为用户提供了更多的灵活性。例如,如果您仅提供Artist的值,则DynamoDB会检索该Artist的所有歌曲。要仅获取特定歌手的歌曲的子集,可以提供Artist
的值以及SongTitle
的值范围。