Dynamodb
简介
dynamodb 是一种无架构的非关系型数据库,这表示属性及其数据类型都不需要预先定义。每个项目都能拥有其自己的独特属性。
基本组件
- 表 – 类似于其他数据库系统,DynamoDB 将数据存储在表中
- 项目 – 每个表包含零个或更多个项目。项目 是一组属性,具有不同于所有其他项目的唯一标识(主键,DynamoDB的主键可以包含一个属性,也可以包含两个属性)
- 属性 – 每个项目包含一个或多个属性。属性 是基础的数据元素,无需进一步分解(DynamoDB允许嵌套属性,支持最高 32 级深度的嵌套属性。)。DynamoDB 中的属性在很多方面都类似于其他数据库系统中的字段或列。
主键
DynamoDB 支持两种不同类型的主键:
- 分区键 – 由一个名为 partition key 的属性构成的简单主键。
DynamoDB 使用分区键的值作为内部散列函数的输入。来自散列函数的输出决定了项目将存储到的分区 (DynamoDB 内部的物理存储)。
在只有分区键的表中,任何两个项目都不能有相同的分区键值。
用户可以通过提供分区键值来直接访问表中的任何项目。 - 分区键和排序键 – 称为复合主键,此类型的键由两个属性组成。第一个属性是分区键,第二个属性是排序键。
复合主键中分区键和简单主键的相同。
在具有分区键和排序键的表中,两个项目可能具有相同的分区键值。但是,这两个项目必须具有不同的排序键值。
用户可以通过提供分区键和排序键值直接访问表中的任何项目。
在查询数据时,复合主键可让您获得额外的灵活性。如果仅提供分区键值,则 DynamoDB 将检索包含分区键的所有项。要仅检索特定分区键的一部分值,可以提供一个 分区键值和一系列排序键值。
注意
项目的分区键也称为其哈希属性。哈希属性 一词源自 DynamoDB 中使用的内部哈希函数,以基于数据项目的分区键值实现跨多个分区的数据项目平均分布。
项目的排序键也称为其范围属性。范围属性 一词源自 DynamoDB 存储项目的方式,它按照排序键值有序地将具有相同分区键的项目存储在互相紧邻的物理位置。
二级索引
用户可以在一个表上创建一个或多个二级索引。利用二级索引,除了可对主键进行查询外,还可使用替代键查询表中的数据。DynamoDB 不需要您使用索引,但它们将为应用程序提供数据查询方面的更大的灵活性。在表中创建二级索引后,用户可以从索引中读取数据,方法与从表中读取数据大体相同。
DynamoDB 支持两种索引:
-
Global secondary index – 一种带有可能与表中不同的分区键和排序键的索引。
-
本地二级索引 – 分区键与表中的相同但排序键与表中的不同的索引。
DynamoDB 中的每个表具有 20 个全局二级索引(默认限制)和 5 个本地二级索引的限制。
请注意有关索引的以下事项:
-
每个索引属于一个表(称为索引的基表)。
-
DynamoDB 将自动维护索引。当添加、更新或删除基表中的某个项目时,DynamoDB 会添加、更新或删除属于该表的任何索引中的对应项目。
当创建索引时,可指定哪些属性将从基表复制或投影到索引。DynamoDB 至少会将键属性从基表投影到索引中。
有关更多信息,请参阅使用二级索引改进数据访问。