DynamoDb 学习笔记

司马昕
2023-12-01

DynamoDb是托管式的,不需要自己安装,注册账号就能使用。把扩展性,吞吐量伸缩等,都交给亚马逊处理。

三个关键概念:

  • 表:类似mysql中的表

  • item:类似mysql中的数据行

  • attribute:类似mysql中的字段

作为NoSql数据库,在创建表时,只需要指定主键。即主键名和主键的数据类型。其它属性都不需要指定。因为它是无结构的。不要求每个item,有一样的属性。

主键:每一个item,有且只有一个唯一的主键。有两种类型的主键:

  • 单一的:partion key,这种情况下,partion key就是主键

  • 由partion key 和 Sort Key 组成的复合主键。这种情况下,单独的 partion key 并不是主键,必须要和sort key一起共同构成主键。

partion key:正如其名,决定了这个item是保存在哪个分区的。有相同的partion key的item,就一定保存在同一个分区中。在老版本中,它又叫做 hash attribute

sort key:排序键,在partion key 相同的情况下,会按sort key 来排序

partion分区:

  1. 数据是保存在分区中的。分区,简单理解就是固态硬盘中的空间。

  2. 同一个表中的数据,可能是存在多个分区中。

  3. 多个分区也是分布式的,简单说,一张表中的数据,可能分散保存在多台服务器上(在同一个可用区中)。

  4. 在新建表时,系统会根据配置的吞吐量来分配初始的分区有多少。吞吐量设置得大,分配到的分区当然就多。

  5. 当修改吞吐量时(可能是自动或手动),就可能导致增加或减少分区。

  6. 在变动分区时,不影响读写,对开发者来说是透明的。

Secondary Indexes:第二索引

  1. 一个表可以有0个或多个二级索引

  2. 如果没有第二索引的话,就只能通过主键来查询指定的数据。

  3. 如果还要查询表中其它属性的值 ,就只有按这个属性,再创建一个第二索引。

  4. 个人理解是,创建一个二级索引。有点像把这个表又重新复制了一次,甚至能指定要复制哪些属性(投影)。

  5. 基表有变动时,二级索引的派生表,会自动更新。(类似mysql的自动维护索引)

Streams:就是事件以及对事件的处理。可以在特定事件发生时,编写自己的业务逻辑。比如新增用户成功后,自动发送邮件。

数据类型:

  • 标量:数字,字符串,布尔,null,二进制

  • document类型:

    • 包括list 和map ,可以互相嵌套,基本上和json一样。

    • list 类似json中的数组 ,map类似json中的对象。

  • set:集合类型。和数组类似,但特点是

    • 元素的数据类型必须一致

    • 不能重复

读取的一致性

  • 最终一致性(默认):

    •     缺点:读取的可能不是最新的数据

    •     优点:速度快,支持全局二级索引,消费的吞吐量小(费用低)

  • 强一致性:

    • 非默认,除非在查询时指定。    

    • 优点和缺点,正好和最终一致性相反。

查询数据的区别

  • getItem:

    • 通过主键,获取一条唯一的item

  • query:

    • 提供 partion key 来获取多条item

    • 个人理解,只有表是复合主键时,query才有意义。否则partion key 就是主键了,只能获得单条item

    • 还可以提供sort key的值以及比较运算符 ,来缩小范围。比如sort key是数字类型的话,我可以只取大于100的item。

  • filter

    • 全表扫描

 类似资料: