欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dynamodb专题系列第一讲 博客分类: awsdynamodb DynamodbNosqlCapacity unitstreamttl 

程序员文章站 2024-03-23 09:14:58
...

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