DynamoDB入门知识和一些注意事项

时间:2018-04-22 10:42:15   收藏:0   阅读:2260

什么是DynamoDB

Amazon DynamoDB分布式NoSQL数据库服务,支持动态扩展,性能可靠

DynamoDB基本概念

DynamoDB的组成

DynamoDB主键

DynamoDB中使用主键标识唯一的项目,在创建表时必须指定主键。DynamoDB主键支持两种类型

DynamoDB流

DynamoDB流可以捕获表中的数据修改事件,这些事件以发生的顺序写入到流中。流有生命周期,从计入到结束一共有24小时,到期后将从流中自动删除。

以下几个事件将触发流的产生

DynamoDB二级索引

DynamoDB提供了本地二级索引和全局二级索引,二者有一定的差异。

  本地二级索引  全局二级索引
概念

本地二级索引的含义是“本地”,意思是说二级索引的索引范围限定为具有相同分区键的表分区。

也就是说该索引只能在同一个分区中索引

 全局是指对索引执行的查询可以跨基表中所有分区的所有数据
一致性  支持强一致性  仅支持最终一致性
限制  一个表中只能创建5个本地二级索引  一个表中只能创建5个全局二级索引

 

 

 

 

 

 

DynamoDB读写限制

在创建表时需指定表的读取、写入的吞吐量。在生产环境中如果实际吞吐量超过了当前为DynamoDB设置的吞吐量,在经过重试后(如果DynamoDB Client设置了重试机制)最终将会抛出异常。

一旦超过DynamoDB的限制,那么请求会被限制,这种错误在程序中是无法自动恢复的,因此需要合理设置吞吐量和一个项目大小。

DynamoDB吞吐量预置值计算

吞吐量在创建表时候可以指定,在运行中的线上业务也可以通过DynamoDB后台可视化界面或提供的API动态调整。API方式相对来说非常灵活。注意:DynamoDB每天每个表仅允许向下调整4次,向上调整无限制

这个预置值有一套计算方式,如果您的业务读写量可预估那么请参考下面公式

DynamoDB分区

初始分区数计算

在数据存储时,DynamoDB会将表的项目划分至多个分区,并由SSD支撑。数据的分布主要是根据分区值决定。

DynamoDB服务全权负责分区的管理,包括起始表分区个数、分区拆分。

首先我们需要知道,在DynamoDB中一个分区大约可保存10GB的数据,最多支持每秒3000个读请求和每秒1000个写请求。

在创建一个表时,会根据预置的读写吞吐量初始化表分区个数,计算公式如下:

初始化分区个数 = 向上取整( (读取预设吞吐量 / 3000) + (写入预设吞吐量 / 1000)  )

比如:读取预设5000,写入预设2000,那么套用公式(5000 / 3000) + (2000 / 1000) = 3.6667 向上取整后 = 4个分区数

那么每个分区的可以支持5000 / 4 = 1250个读和(2000 / 4) = 500个写

分区拆分

DynamoDB是可以动态扩容的,吞吐量也可以保证。但这些都是基于它的分区设计。

分区拆分方式

既然是DynamoDB全权负责分区管理,那么分区拆分的时机和方式由DynamoDB决定。当必要的时候DynadmoDB会自动拆分现有的分区,以提供更多的分区以支持吞吐量。我们首先了解拆分的方式

技术分享图片

  1. 图中第1步,DynamoDB会分配两个新分区
  2. 图中第2步,DynamoDB将原分区数据均匀分配到新分区
  3. 图中第3步,DynamoDB不再给原分区分配数据

分区拆分触发条件

上面提到,“在DynamoDB中一个分区大约可保存10GB的数据,最多支持每秒3000个读请求和每秒1000个写请求”

那么分区触发条件也是围绕着分区实际存储量和读写来触发的。

 

参考:https://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/Introduction.html

 

 

 

技术分享图片

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!