Dynamodb专题系列第一讲
dynamodb是aws NOSQL全托管数据库。
1.所有的表都是分区的,主键有两种
a》只设置一个partition key
b》设置一个partion key和一个range key,相当于联合主键
2.它可以根据表的数据量以及capacity unit自动进行分区扩展
a》每个分区最大10GB,如果表的数据量超过10GB,会自动创建两个分区,把数据平均分散到新建的两个分区里面,然后删除原来的分区,也就是由原来的一个分区变成两个新的分区
b》一个分区最大支持3000个read capacity unit和1000个write capacity unit,如果capacity unit发生变化,有可能会导致分区数量的增加,比如
原来的capacity是 read 1000 write 500 1000/3000+500/1000=0.888 1个分区
新的capacity是 read 1000 write 1000 1000/3000+1000/1000=1.333 2个分区
3.No schema,建表的时候只需要指定主键,其它字段在往表里面插入数据的时候动态指定,每条记录可以有不同数量的字段,不同记录的同名字段,其类型也可以不同
4.多种字段类型,支持json数据的存储
Scalar类型,也就是单值类型
String abcd
Number 24.56
Boolean true,false
Binary 二进制数据,比如图片
Null 不明或者未定义
Document类型
Map json格式
List 列表,列表内可以存储不同类型的item
Set 集合 集合内存储的item的类型必须一致,比如都是String,或者都是Number
5.支持TTL,如果希望表里面的记录只存在一个时间段,过期自动删除的话,可以指定一个ttl字段,这样dynamodb会根据存留期限的数值来自动帮助你进行过期数据的删除工作,比如两个小时,一周,两年,期限任意
6.表的操作支持stream,也就是流。通过开启stream,可以把对表的增删改操作记录到stream管道里面,然后我们可以通过trigger来触发lambda函数,来消费流里面的数据。启用stream的话,有三种类型可以选择
a》only new image 只输出修改后的record 比如 insert
b》only old image 只输出修改前的record 比如delete
c》new image and old image 变更前后的record都输出 比如 update
7.支持全局二级索引和本地二级索引,也就是GSI和LSI
GSI支持跨分区检索
LSI只支持同一个分区内部的检索
8.不支持外键关联,也不支持表联结,支持begins_with,contains等条件表达式
9.检索包括query和scan
query通过主键或者索引来检索,速度较快
scan可以通过任意字段进行检索,因为不走索引和分区,速度较慢,全表查询
10.支持batch检索和batch插入和删除
BatchGetItem每次最大可以返回100条record
BatchWriteItem每次最大可以写入或者删除25条record
11.针对capacity unit进行按小时收费,比如write capacity unit 10unit一个小时0.00742USD,read capacity unit 50unit一个小时0.00742USD
12.检索分为最终一致性和强一致性,默认是最终一致性
强整合性的话,1 read capacity unit,4K以内的record,1秒可以读取1条
最终一致性的话,1秒可以读取2条
1 write capacity unit,1K以内的record,1秒可以写入1条,如果record占2K,同样1秒写入一条的话,则需要2个write capacity unit
推荐阅读