DynamoDB是一个NoSQL数据库,支持键值和文档数据模型。开发人员可以使用DynamoDB来构建现代的无服务器应用程序,这些应用程序从小规模开始,然后扩展到全局。这些应用程序可以支持pb级的数据和每秒数千万个读/写请求。DynamoDB设计用于运行高性能、互联网规模的应用程序,这些应用程序可能会使传统的关系数据库负担过重。
DynamoDB是完全管理的,并卸载了操作和扩展分布式数据库的管理任务。DynamoDB还提供静态加密,这有助于消除保护敏感数据所涉及的操作任务。
1.毫秒级性能和自动多区域复制。
2.静态数据加密,自动备份和恢复。
3.完全托管的无服务数据库。
4.与其他AWS服务集成,用于分析和性能或流量监控。
1.表
与其他数据库系统一样,DynamoDB将数据存储在表中。表是数据的集合。例如,您可能有一个名为People的表,您可以使用它来存储有关解决方案架构师、业务合作伙伴或其他人的联系信息。您还可以使用一个Locations表来存储有关办公楼的信息。
2.项目
每一个表包含零个或多个项目。项目是在所有其他项目中唯一可识别的一组属性。在People表中,每个项目代表一个人。对于Locations表,每个项目代表一个建筑。DynamoDB中的项目在许多方面与其他数据库系统中的行、记录或元组相似。在DynamoDB中,可以在表中存储的项目没有限制。
3.属性
每个项目有一个或多个属性组成。属性是基本的数据元素,不需要进一步细分。例如,People表中的一个项目包含名为PersonID、LastName、FirstName等属性。对于Department表,项目可能具有departmentd、Name、Manager等属性。DynamoDB中的属性在许多方面与其他数据库系统中的字段或列相似。
4.主键
创建表时,除了表名之外,还必须指定表的主键。主键唯一标识表中的每个项目,因此没有两个项目可以具有相同的键。
DynamoDB支持两种主键:分区键和分区键加排序键。
- 分区键-一个简单的主键,由一个称为分区键的属性组成。DynamoDB使用分区键的值作为内部散列函数的输入。哈希函数的输出决定了项目将存储在哪个分区(DynamoDB内部的物理存储)中。在只有一个分区键的表中,没有两个项目可以具有相同的分区键值。
- 分区键和排序键-称为复合主键,这种类型的键由两个属性组成。第一属性是分区键,第二个属性是排序键。DynamoDB使用分区键值作为内部散列函数的输入。哈希函数的输出决定了项目将存储在哪个分区(DynamoDB内部的物理存储)中。具有相同分区键值的所有项按照排序键值的顺序存储在一起。在具有分区键和排序键的表中,多个项目可能具有相同的分区键值。但是,这些项必须具有不同的排序键值。
5.二级索引
可以在一个表上创建一个或多个二级索引。使用二级索引,您可以使用备用键查询表中的数据,也可以针对主键查询。DynamoDB不要求您使用索引,但是它们在查询数据时提供了更大的灵活性。在表上创建二级索引后,可以像从表中读取数据一样从索引中读取数据。
DynamoDB支持两种索引:
- 全局二级索引-具有分区和排序键的索引,可以不同于表上的分区键和排序键
- 本地二级索引-具有与表相同的分区键,但排序键不同的索引
DynamoDB中的每个表都有20个全局二级索引(默认配额)和5个本地二级索引的配额。
6.Amazon DynamoDB Streams
DynamoDB Streams是一个可选特性,它捕获DynamoDB Streams表中的数据修改事件。关于这些事件的数据几乎实时地出现在流中,并按照事件发生的顺序出现。
每个事件由一个流记录表示。如果你在表上启用一个流,DynamoDB Streams会在发生以下事件之一时写入一个流记录:
- 一个新项目被添加到表中:流捕获整个项目的图像,包括其所有属性。
- 更新项:流捕获在项中修改的任何属性的前后图像。
- 从表中删除一个项目:流捕获整个项目在删除之前的图像。
每个流记录还包含表的名称、事件时间戳和其他元数据。流记录的生存期为24小时,之后将自动从流中删除。
7.读容量单位
一个读容量单位(RCU)代表每秒一次强一致读,或者每秒两次最终一致读,对于大小不超过4kb的项。事务性读请求需要两个rcu每秒对最大4kb的项执行一次读。如果需要读取大于4kb的项,DynamoDB必须消耗额外的rcu。所需ruc的总数取决于项的大小以及你是想要一秒一次强一致的读。例如,如果你的项目大小是8kb,你需要两个RSU,或者一个事务性读请求需要四个RSU。
8.写容量单位
一个写容量单位(WCU)表示对大于不超过1kb的项目每秒写一次。如果需要编写大于1kb的项,DynamoDB必须消耗额外的wcu。事务性写请求需要两个wcu每秒对不超过1kb的项执行一次写操作。所需要wcu的总数取决于项目大小。例如,如果项目大小为2kb则需要两个wcu来维持每秒一个写请求,或者需要四个wcu来维持一个事务性写请求。
9.节流
节流是限制客户端在给定时间内提交给指定的操作的请求数量的操作。节流可防止应用程序消耗过多的容量单元。当请求被节流时,并出现HTTP 400 Bad request错误和Provisioned Throughput Exceeded Exception(以分配吞吐量超出异常)
10.读写容量模式
DynamoDB有两种读/写容量模式来处理表上的读/写事务:
- 随需求变
- 供给(默认情况下,符合AWS免费层的条件)
读/写容量模式控制如何对读/写吞吐量收以及如何管理容量。您可以在创建表时设置读写容量模式,也可以在创建表后修改。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!