aws dynamodb 基础概念和理论

news2025/7/14 19:29:09

参考资料

  • https://amazon-dynamodb-labs.workshop.aws/
  • https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/Introduction.html

dynamodb的工作原理

核心概念

table、item和attributes是dynamodb的核心组件,可以分别对应关系型数据库中的表,行和列

  • table包含多个item,item是一组attributes,dynamodb没有item的数量的限制

  • item包括attributes,例如People 表中的一个item包含名为 PersonIDLastNameFirstName 等的属性

  • ddb的表没有固定结构,不需要预先定义,每个项目都能够拥有自己的独特属性

  • ddb最多支持高达 32 级深度的嵌套属性

dynamodb的服务配额

读写方面(指定的吞吐量是ddb可以交付的最大容量)

  • RCU,读取容量单位,4KB 及以下,每秒一次强一致性读取(4KB),或每秒两次最终一致性读取(8KB)
  • WCU,写入容量单位,1KB 及以下,每秒一次写入(10个2KB需要20个WCU)

表的限制

  • 表大小没有限制;表的数量限制为每账号每region2500个;每个查询和扫描的大小为1MB

索引和键

  • LSI,5个;GSI,每个表20个;投影SI,最多 100 个

item大小最大为400KB

主键和二级索引

分区键和排序键,分区键就是主键,排序键是索引键,通过哈希函数对数据进行分区(具有相同分区键的项目存储在互相紧邻的物理位置)。和mysql函数的逻辑类似,dynamodb中的每个分区默认按照排序键进行排序。复合主键唯一即可

二级索引为数据的查询提供了另一个子树

参考《mysql是怎样运行的?》索引章节内容,聚簇索引通过b+树的方式实现了数据的快速检索

在这里插入图片描述

页按照主键大小顺序排列,每个页内的记录也按照主键的大小顺序排列

二级索引和聚簇索引的逻辑类似,但是每个页中不再是完整的用户数据,而是索引键+主键的组合,查询的路径变成了二级索引->主键->数据页。联合索引即多个列组成的索引,本质上还是个二级索引

dynamodb的索引可以和mysql的索引进行类比

  • 全局二级索引,实际上是个联合索引,并且联合索引的内容可以和基表中的分区和排序键不一致

  • 本地二级索引,也是个联合索引,但是分区键必须相同,排序键可以不同

注意:每个索引属于一个表,dynamodb在基表的项目进行增删改的时候自动维护索引,存在一定的性能损耗

dynamodb启用流时,当对item出现增删改事件是,stream会写入流记录(表名,事件时间戳,元数据),保留24小时后自动删除

典型用法是将dynamodb stream和lambda函数结合,捕获感兴趣的事件并触发对应行为
在这里插入图片描述

dynamodb的api操作(DDL和DML)

https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/HowItWorks.API.html

总体的操作可以分为

  • 管理层面
  • 数据平面,即crud操作,可以使用partiql或标准api,支持事务操作

创建删除表

aws dynamodb list-tables
aws dynamodb put-item --table-name Music --item "{\"Artist\": {\"S\": \"No One You Know\"}, \"SongTitle\": {\"S\": \"Call Me Today\"}, \"AlbumTitle\": {\"S\": \"Somewhat Famous\"}, \"Awards\": {\"N\": \"1\"}}"
aws dynamodb delete-table --table-name Music

增删改查

aws dynamodb put-item --table-name Music --item file://item.json
aws dynamodb get-item --table-name Music --item file://item.json
aws dynamodb delete-item --table-name Music --key file://key.json

查询表

aws dynamodb query --table-name Music --key-condition-expression "ArtistName=:Artist and SongName=:Songtitle" 

一致性问题

dynamodb 是region隔离的,数据在多可用区中存储,写入数据持久化后,短时间内(1s)最终在所有存储未知保持一致

dynamodb支持最终一致性和强一致性读取

  • 最终一致性,当前读数据可能不是最新的
  • 强一致性读取,无论何时都读取最新写入的数据,有局限性
    • GSI不支持
    • 相比最终一致性有更高的吞吐量,但是会收到延迟和终端的影响(500错误)
    • 更高的延迟(leader未找到最新数据时)

默认使用最终一致性读取,使用ConsistentRead 将api调用指定为强一致性读取

读写容量问题

dynamodb支持两个读写容量模式处理表操作

  • 按需模式
  • 预置模式(默认)

读写容量模式在创建表时设置,也可以之后进行修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript新手学习手册-基础代码(三)

与上篇博客相接 一:Date对象 var date new Date();console.log(date); //全部时间console.log(date.getFullYear()); //年console.log(date.getMonth()); //月console.log(date.getDay()); //星期几console.log(date.getHours()) //时console.log(d…

java实现Hbase 增删改查

目录 一、新建一个maven工程 二、代码实现 2.1、配置hbase信息,连接hbase数据库 2.2、创建命名空间 2.3、创建表 2.4、删除表,删除之前要设置为禁用状态 2.5、添加数据 2.6、获取命令表空间 / tables列表 2.7、get方法查看表的内容 2.8、scan方法…

腾势D9改装来了,帮大家总结了一些需要改装的项目

最近腾势D9真的太火了,不仅外观霸气,内饰也是非常豪华。 1月份销量在MPV里已经排名第二了,性价比很高。 这边整理了一些改装项目供大家参考,有什么想法可以评论区一起讨论哦1. 电吸门 有车主吐槽车门难关,由于车内空间…

计算机网络:ICMP协议

网际控制报文协议ICMP ICMP协议支持主机或者路由器差错报告和网络探询 类型表明ICMP报文是哪类检验和:检验整个ICMP报文ICMP报文可分为ICMP差错报文和ICMP询问报文。 ICMP差错报告报文 终点不可达:当路由器或者主机不能交付数据报时,向源站…

Spring - Spring框架概述面试题总结

文章目录01. 什么是Spring?02. Spring框架的设计目标,设计理念,和核心是什么?03. Spring的优点是什么?04. Spring框架中都用到了哪些设计模式?05. Spring有哪些应用场景?06. Spring由哪些模块组成&#xf…

基于DDD的微服务落地

DDD四层架构对实时性要求高的强一致性业务场景,可采取分布式事务。分布式事务有性能代价,在设计时需要平衡考虑业务拆分、数据一致性、性能和实现的复杂度,尽量避免分布式事务的产生。领域事件驱动的异步方式是分布式架构常用的设计方式&…

【python】使用python将360个文件夹里的照片,全部复制到指定的文件夹中,并且按照顺序重新命名

最近要做一个图像生成的课题,在网上找了一个混合的数据集。这个数据集中一共有360个文件夹,然后文件夹中有6-9张不等的照片,我的目标就是编写python代码将所有的照片取出来,放到一个指定的文件夹里,并且从1开始按照顺序…

yolov8行人识别教程(2023年毕业设计+源码)

yolov8识别视频直接上YOLOv8的结构图吧,小伙伴们可以直接和YOLOv5进行对比,看看能找到或者猜到有什么不同的地方? Backbone:使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻…

VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)

名人说:君子生非异也,善假于物也。——荀子 Code_流苏(CSDN) o(‐^▽^‐)o很高兴你打开了这篇博客,跟着步骤一步步尝试安装吧。✧ 目录 一、简单介绍二、安装虚拟机VMware三、Ubuntu镜像下载四、虚拟机VMware配置及运行★如有疑问,欢迎评论,博主看到即回!当然,期待你的…

【基础算法】双指针---判断子序列

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

极速开发,无限可能,2023网易低代码大赛全新赛季启动

去年火爆的低代码大赛还犹在目,近800人用轻舟低代码平台畅享开发乐趣。这不,2023网易低代码大赛即刻启动,3月6日至3月27日限时开放报名,全新角逐,正式展开!1\ 获胜者可得万元大奖、猪厂工作机会 /Low Code …

JavaEE课程实践-Servlet的部署(tomcat服务器)

目录 Servlet简述 tomcat服务器的安装和运行 Servlet的部署 部署具体步骤 一、创建maven工程 二、创建Servlet类 三、导入相应jar包 四、编写Servlet代码 五、运行maven项目,启动tomcat服务器 六、测试访问是否成功。 Servlet简述 Servlet 是 Java EE 技术…

第六章:多线程

第六章:多线程 6.1:程序、进程、线程基本概念 程序 程序program是为了完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程 ​ 进程process是程序的一次执行过程,或是正在运行的一个程序。是一个…

vue3相比vue2性能上提升体现

vue3相比vue2,在 编译阶段,源码体积 响应式系统 都做了性能提升不以解决实际业务痛点的更新都是耍流氓1. ts的支持2. 移除了不常用的api,例如 过滤器 $on $off $once 实例方法 内联模板attribute $destroy3. 加了tree - shaking4. 移除了mixin缺点&#…

ESP32设备驱动-RFID-RC522模块驱动

RFID-RC522模块驱动 文章目录 RFID-RC522模块驱动1、RFID-RC522介绍2、硬件准备3、软件准备4、驱动实现1、RFID-RC522介绍 基于 NXP 的 MFRC522 IC 的 RC522 RFID 模块通常带有一个 RFID 卡标签和具有 1KB 内存的密钥卡标签。 最重要的是,它可以写一个标签,这样你就可以在里…

前端老赵一次给你讲透“微前端”架构

一、引言: 随着Web应用程序的规模和复杂度的不断增加,前端技术也在不断发展和演进。微前端是近年来兴起的一种前端架构模式,通过将大型Web应用程序拆分为小型、可独立开发和部署的模块,从而降低开发和维护的难度,同时…

【LeetCode与《代码随想录》】二叉树篇:做题笔记与总结-JavaScript版

文章目录代码随想录144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历102.二叉树的层序遍历226.翻转二叉树101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数110.平衡二叉树257. 二叉树的所有路径404.左叶子之和513.找树左下角…

盘点曾经很火但消失了的8个软件

目录 1、飞信 3、暴风影音 4、千千静听 5、虾米音乐 6、快车下载 7、人人网 8、QQ农场 今天小编给大家分享曾经很火但消失了的8个软件,你都用过吗? 1、飞信 飞信是中国移动通信集团公司推出的一款短信、语音、视频通信应用程序。它于2007年推出&a…

JDK的动态代理(powernode 文档)(内含源代码)

JDK的动态代理(powernode 文档)(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87546086 一、动态代理 目录JDK的动态代理(powernode 文档)&#xff0…

什么是L1和L2正则化,以及它们有什么区别

一、L1和L2正则化是什么? 在防止过拟合的方法中有L1正则化和L2正则化,L1和L2是正则化项,又叫做惩罚项,是为了限制模型的参数,防止模型过拟合而加在损失函数后面的一项。 在二维的情况下,黄色的部分是L2和…