Amazon DynamoDB 开发人员指南 API 版本 2012-08-10 Amazon DynamoDB 开发人员指南 Amazon DynamoDB: 开发人员指南 Copyright © 2022 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. Amazon 的商标和商业外观不得用于任何非 Amazon 的商品或服务,也不得以任何可能引起客户混淆、贬低或诋毁 Amazon 的方式使用。所有非 Amazon 拥有的其它商标均为各自所有者的财产,这些所有者可能附属于 Amazon、与 Amazon 有关联或由 Amazon 赞助,也可能不是如此。 Amazon DynamoDB 开发人员指南 Table of Contents 什么是 Amazon DynamoDB?.............................................................................................................. 1 高可用性和持久性....................................................................................................................... 1 DynamoDB 入门......................................................................................................................... 1 DynamoDB 教程......................................................................................................................... 2 工作原理 .................................................................................................................................... 2 核心组件 ............................................................................................................................ 2 DynamoDB API.................................................................................................................. 8 支持的数据类型和命名规则................................................................................................. 10 读取一致性....................................................................................................................... 14 读/写容量模式................................................................................................................... 15 表类 ................................................................................................................................ 19 分区和数据分布................................................................................................................. 19 从 SQL 到 NoSQL.................................................................................................................... 21 关系 (SQL) 还是 NoSQL?................................................................................................. 22 数据库的特点.................................................................................................................... 23 创建表............................................................................................................................. 25 获取有关表的信息 .............................................................................................................. 26 将数据写入表.................................................................................................................... 27 从表中读取数据................................................................................................................. 30 管理索引 .......................................................................................................................... 35 修改表中的数据................................................................................................................. 39 删除表中的数据................................................................................................................. 41 移除表............................................................................................................................. 43 其他 Amazon DynamoDB 资源................................................................................................... 43 博客文章、存储库和指南.................................................................................................... 43 数据建模和设计模式表示.................................................................................................... 44 培训课程 .......................................................................................................................... 44 编程和可视化工具 .............................................................................................................. 44 设置 DynamoDB............................................................................................................................... 45 设置 DynamoDB local(可下载版本).......................................................................................... 45 部署 ................................................................................................................................ 45 使用说明 .......................................................................................................................... 49 设置 DynamoDB(Web 服务)................................................................................................... 51 注册 AWS........................................................................................................................ 51 获取 AWS 访问密钥.......................................................................................................... 52 配置凭证 .......................................................................................................................... 52 访问 DynamoDB............................................................................................................................... 53 使用控制台............................................................................................................................... 53 使用 AWS CLI.......................................................................................................................... 54 下载和配置 AWS CLI......................................................................................................... 54 将 AWS CLI 与 DynamoDB 结合使用................................................................................... 54 将 AWS CLI 与可下载的 DynamoDB 结合使用....................................................................... 55 使用 API.................................................................................................................................. 55 使用 NoSQL Workbench............................................................................................................ 56 IP 地址范围.............................................................................................................................. 56 DynamoDB 入门............................................................................................................................... 57 基本概念 .................................................................................................................................. 57 先决条件 .................................................................................................................................. 57 第 1 步:创建一个表 ................................................................................................................. 57 第 2 步:写入数据 ..................................................................................................................... 61 第 3 步:读取数据 ..................................................................................................................... 64 第 4 步:更新数据 ..................................................................................................................... 66 第 5 步:查询数据 ..................................................................................................................... 68 第 6 步:创建一个全局二级索引.................................................................................................. 70 API 版本 2012-08-10 iii Amazon DynamoDB 开发人员指南 第 7 步:查询该全局二级索引 ..................................................................................................... 74 第 8 步:(可选)清除 .............................................................................................................. 77 后续步骤 .................................................................................................................................. 77 DynamoDB 和 AWS SDK 入门........................................................................................................... 78 创建 表.................................................................................................................................... 78 使用 AWS SDK 创建 DynamoDB 表.................................................................................... 78 写入项目 .................................................................................................................................. 88 使用 AWS SDK 向 DynamoDB 表中写入项目........................................................................ 88 读取项目 .................................................................................................................................. 98 使用 AWS SDK 从 DynamoDB 表中读取项目........................................................................ 98 更新项目 ................................................................................................................................ 106 使用 AWS SDK 更新 DynamoDB 表中的项目...................................................................... 106 删除项目 ................................................................................................................................ 116 使用 AWS SDK 删除 DynamoDB 表中的项目...................................................................... 116 查询表................................................................................................................................... 125 使用 AWS SDK 查询 DynamoDB 表................................................................................... 125 扫描表................................................................................................................................... 137 使用 AWS SDK 扫描 DynamoDB 表................................................................................... 125 使用 AWS SDK....................................................................................................................... 146 使用 DynamoDB 进行编程................................................................................................................ 147 DynamoDB 的 AWS SDK 支持概述............................................................................................ 147 编程接口 ................................................................................................................................ 149 低级别接口..................................................................................................................... 150 文档接口 ........................................................................................................................ 151 对象持久化接口............................................................................................................... 151 低级别 API............................................................................................................................. 153 请求格式 ........................................................................................................................ 154 响应格式 ........................................................................................................................ 155 数据类型描述符............................................................................................................... 155 数值数据 ........................................................................................................................ 156 二进制数据..................................................................................................................... 156 错误处理 ................................................................................................................................ 156 错误组成部分.................................................................................................................. 157 事务性错误..................................................................................................................... 157 错误消息和代码............................................................................................................... 157 应用程序中的错误处理...................................................................................................... 160 错误重试和指数回退 ......................................................................................................... 161 批处理操作和错误处理...................................................................................................... 161 更高级别编程接口.................................................................................................................... 162 Java:DynamoDBMapper................................................................................................. 162 .NET:文档模型.............................................................................................................. 208 .NET:对象持久化模型..................................................................................................... 230 运行代码示例.......................................................................................................................... 256 加载示例数据.................................................................................................................. 256 Java 代码示例................................................................................................................ 261 .NET 代码示例................................................................................................................ 263 使用 DynamoDB............................................................................................................................. 266 使用表................................................................................................................................... 266 针对表的基本操作 ............................................................................................................ 266 更改读取/写入容量模式时的注意事项.................................................................................. 271 选择表类别时的注意事项................................................................................................... 272 预置容量表..................................................................................................................... 273 项目大小和格式............................................................................................................... 276 使用自动扩缩管理吞吐能力................................................................................................ 277 使用全局表..................................................................................................................... 290 为资源添加标签............................................................................................................... 311 使用表:Java................................................................................................................ 315 API 版本 2012-08-10 iv Amazon DynamoDB 开发人员指南 使用表:.NET................................................................................................................. 320 使用读取和写入操作 ................................................................................................................. 326 DynamoDB API............................................................................................................... 326 PartiQL 查询语言............................................................................................................. 441 使用索引 ................................................................................................................................ 472 全局二级索引.................................................................................................................. 474 本地二级索引.................................................................................................................. 511 使用事务 ................................................................................................................................ 546 工作原理 ........................................................................................................................ 546 将 IAM 与事务结合使用.................................................................................................... 551 示例代码 ........................................................................................................................ 553 处理流................................................................................................................................... 556 选项 .............................................................................................................................. 556 处理 Kinesis Data Streams............................................................................................... 557 使用 DynamoDB Streams................................................................................................. 565 使用按需备份和还原 ................................................................................................................. 605 使用 AWS 备份............................................................................................................... 605 使用 DynamoDB 备份...................................................................................................... 611 使用时间点恢复 ....................................................................................................................... 624 工作原理 ........................................................................................................................ 624 开始前的准备工作 ............................................................................................................ 626 将表还原到某个时间点...................................................................................................... 626 利用 DAX 实现内存中加速................................................................................................................ 630 DAX 使用案例......................................................................................................................... 630 DAX 使用注意事项.................................................................................................................. 631 工作方式 ................................................................................................................................ 632 DAX 处理请求的方式....................................................................................................... 632 项目缓存 ........................................................................................................................ 634 查询缓存 ........................................................................................................................ 634 DAX 集群组件......................................................................................................................... 634 节点 .............................................................................................................................. 635 集群 .............................................................................................................................. 635 区域和可用区.................................................................................................................. 636 参数组........................................................................................................................... 636 安全组........................................................................................................................... 636 集群 ARN....................................................................................................................... 636 集群终端节点.................................................................................................................. 637 节点端点 ........................................................................................................................ 637 子网组........................................................................................................................... 637 事件 .............................................................................................................................. 637 维护时段 ........................................................................................................................ 637 创建 DAX 集群 ....................................................................................................................... 638 为 DAX 创建一个 IAM 服务角色以访问 DynamoDB............................................................... 638 使用 AWS CLI................................................................................................................ 639 使用控制台..................................................................................................................... 643 一致性模型............................................................................................................................. 646 DAX 集群节点之间的一致性.............................................................................................. 646 DAX 项目缓存行为.......................................................................................................... 646 DAX 查询缓存行为.......................................................................................................... 648 强一致性读取和事务读取................................................................................................... 649 逆向缓存 ........................................................................................................................ 649 针对写入的策略............................................................................................................... 649 使用 DAX 客户端进行开发 ........................................................................................................ 651 教程:运行示例应用程序................................................................................................... 652 修改现有应用程序以使用 DAX........................................................................................... 683 管理 DAX 集群 ....................................................................................................................... 684 用于管理 DAX 集群的 IAM 权限........................................................................................ 684 API 版本 2012-08-10 v Amazon DynamoDB 开发人员指南 DAX 集群的扩缩.............................................................................................................. 686 自定义 DAX 集群设置...................................................................................................... 686 配置 TTL 设置................................................................................................................ 687 对 DAX 的标记支持......................................................................................................... 688 AWS CloudTrail 集成....................................................................................................... 689 删除 DAX 集群............................................................................................................... 689 监控 DAX............................................................................................................................... 689 监控工具 ........................................................................................................................ 690 使用 CloudWatch 进行监控............................................................................................... 691 使用 AWS CloudTrail 记录 DAX 操作日志........................................................................... 703 DAX T3/T2 具爆发能力的实例................................................................................................... 704 DAX T2 实例系列............................................................................................................ 704 DAX T3 实例系列............................................................................................................ 704 DAX 访问控制......................................................................................................................... 704 适用于 DAX 的 IAM 服务角色............................................................................................ 705 允许 DAX 集群访问权限的 IAM policy................................................................................. 706 案例研究:DynamoDB 和 DAX 访问权限............................................................................ 706 DynamoDB 访问权限,但使用 DAX 时无访问权限................................................................ 708 访问 DynamoDB 和 DAX.................................................................................................. 709 通过 DAX 访问 DynamoDB 的权限,但无 DynamoDB 直接访问权限........................................ 713 DAX 静态加密......................................................................................................................... 714 使用 AWS Management Console启用静态加密..................................................................... 715 DAX 传输加密......................................................................................................................... 716 使用 DAX 的服务相关角色 ........................................................................................................ 717 DAX 的服务相关角色权限................................................................................................. 717 创建 DAX 的服务相关角色................................................................................................ 718 编辑 DAX 的服务相关角色................................................................................................ 718 删除 DAX 的服务相关角色................................................................................................ 718 跨 AWS 账户访问 DAX............................................................................................................ 719 设置 IAM........................................................................................................................ 719 设置 VPC....................................................................................................................... 721 修改 DAX 客户端以允许跨账户存取.................................................................................... 723 DAX 集群大小调整指南............................................................................................................ 726 概览 .............................................................................................................................. 726 估计流量 ........................................................................................................................ 726 负载测试 ........................................................................................................................ 727 API 参考................................................................................................................................ 727 NoSQL Workbench.......................................................................................................................... 728 下载 ...................................................................................................................................... 728 数据建模器............................................................................................................................. 729 创建新模型..................................................................................................................... 729 导入现有模型.................................................................................................................. 735 导出模型 ........................................................................................................................ 738 编辑现有模型.................................................................................................................. 740 数据可视化工具 ....................................................................................................................... 742 添加示例数据.................................................................................................................. 743 从 CSV 中导入............................................................................................................... 744 分面 .............................................................................................................................. 745 聚合视图 ........................................................................................................................ 749 提交数据模型.................................................................................................................. 750 操作生成器............................................................................................................................. 753 浏览数据集..................................................................................................................... 753 生成操作 ........................................................................................................................ 756 导出到 CSV.................................................................................................................... 774 示例数据模型.......................................................................................................................... 775 员工数据模型.................................................................................................................. 775 论坛数据模型................................................................................................................. 775 API 版本 2012-08-10 vi Amazon DynamoDB 开发人员指南 音乐库数据模型............................................................................................................... 776 滑雪胜地数据模型 ............................................................................................................ 776 信用卡优惠数据模型 ......................................................................................................... 776 书签数据模型.................................................................................................................. 776 发布历史记录.......................................................................................................................... 777 代码示例........................................................................................................................................ 779 操作 ...................................................................................................................................... 780 创建 表.......................................................................................................................... 780 删除表........................................................................................................................... 791 从表中删除项目............................................................................................................... 796 获取一批项目.................................................................................................................. 805 从表中获取项目............................................................................................................... 808 有关表的信息.................................................................................................................. 816 列出表........................................................................................................................... 821 在表中放置项目............................................................................................................... 826 查询表........................................................................................................................... 835 运行 PartiQL 语句........................................................................................................... 847 运行批量 PartiQL 语句..................................................................................................... 857 扫描表........................................................................................................................... 870 更新表中的项目............................................................................................................... 879 写入一批项目.................................................................................................................. 889 场景 ...................................................................................................................................... 897 借助 DAX 加快读取速度................................................................................................... 897 开始使用表、项目和查询................................................................................................... 902 使用批量 PartIQL 语句查询表............................................................................................ 968 使用 PartiQL 查询表....................................................................................................... 1000 跨服务示例........................................................................................................................... 1027 构建应用程序以将数据提交到 DynamoDB 表...................................................................... 1027 创建 REST API 以跟踪 COVID-19 数据............................................................................ 1028 创建 Messenger 应用程序............................................................................................... 1029 创建 Web 应用程序来跟踪 DynamoDB 数据....................................................................... 1029 创建 Websocket 聊天应用程序......................................................................................... 1031 检测图像中的 PPE......................................................................................................... 1031 从浏览器调用 Lambda 函数............................................................................................. 1032 保存 EXIF 和其他图像信息.............................................................................................. 1033 使用 API Gateway 调用 Lambda 函数............................................................................... 1033 使用 Step Functions 调用 Lambda 函数............................................................................ 1034 使用计划的事件调用 Lambda 函数.................................................................................... 1035 安全性......................................................................................................................................... 1036 数据保护 .............................................................................................................................. 1036 静态加密 ...................................................................................................................... 1036 DAX 中的数据保护......................................................................................................... 1043 互联网络流量隐私 .......................................................................................................... 1043 身份和访问管理 ..................................................................................................................... 1044 身份和访问管理............................................................................................................. 1044 DAX 中的身份和权限管理................................................................................................ 1071 合规性验证........................................................................................................................... 1071 弹性 ..................................................................................................................................... 1072 基础设施安全性 ..................................................................................................................... 1072 使用 VPC 端点.............................................................................................................. 1073 配置和漏洞分析 ..................................................................................................................... 1078 安全最佳实践........................................................................................................................ 1079 预防性安全最佳实践 ....................................................................................................... 1079 检测性安全最佳实践 ....................................................................................................... 1080 监控 ............................................................................................................................................. 1082 DynamoDB 中的日志记录和监控.............................................................................................. 1082 监控工具 ...................................................................................................................... 1082 API 版本 2012-08-10 vii Amazon DynamoDB 开发人员指南 使用 Amazon CloudWatch 监控....................................................................................... 1083 使用 AWS CloudTrail 记录 DynamoDB 操作日志................................................................ 1101 DAX 中的日志记录和监控........................................................................................................ 1116 Contributor Insights................................................................................................................ 1117 工作原理 ...................................................................................................................... 1117 开始使用 ...................................................................................................................... 1120 使用 IAM...................................................................................................................... 1124 最佳实践...................................................................................................................................... 1128 NoSQL 设计......................................................................................................................... 1130 NoSQL 与 RDBMS........................................................................................................ 1130 两个关键概念................................................................................................................ 1130 一般方法 ...................................................................................................................... 1130 分区键设计........................................................................................................................... 1131 容量爆增 ...................................................................................................................... 1131 自适应容量................................................................................................................... 1131 分配工作负载................................................................................................................ 1132 写入分片 ...................................................................................................................... 1133 高效上传数据................................................................................................................ 1134 排序键设计........................................................................................................................... 1135 版本控制 ...................................................................................................................... 1135 二级索引 .............................................................................................................................. 1136 一般指导原则................................................................................................................ 1136 稀疏索引 ...................................................................................................................... 1138 聚合 ............................................................................................................................. 1139 GSI 重载...................................................................................................................... 1139 GSI 分片...................................................................................................................... 1140 创建副本 ...................................................................................................................... 1141 大型项目 .............................................................................................................................. 1142 压缩 ............................................................................................................................. 1142 使用 Amazon S3........................................................................................................... 1142 时间序列数据........................................................................................................................ 1142 时间序列数据的设计模式................................................................................................. 1143 时间序列表示例............................................................................................................. 1143 多对多关系........................................................................................................................... 1143 相邻列表 ...................................................................................................................... 1143 具体化图表................................................................................................................... 1144 混合 DynamoDB–RDBMS....................................................................................................... 1147 不迁移......................................................................................................................... 1147 混合系统的实现............................................................................................................. 1147 关系建模 .............................................................................................................................. 1148 初始步骤 ...................................................................................................................... 1150 示例 ............................................................................................................................. 1151 查询和扫描........................................................................................................................... 1153 扫描性能 ...................................................................................................................... 1153 避免峰值 ...................................................................................................................... 1154 并行扫描 ...................................................................................................................... 1156 成本优化 .............................................................................................................................. 1157 表级别成本分析............................................................................................................. 1157 表级别成本优化............................................................................................................. 1157 表容量模式分析(按需与预置) ........................................................................................ 1158 评估表容量模式............................................................................................................. 1159 针对预置容量表的自动扩缩.............................................................................................. 1162 表类分析 ...................................................................................................................... 1162 评估表类 ...................................................................................................................... 1162 未使用的资源分析 .......................................................................................................... 1163 确定未使用的资源 .......................................................................................................... 1164 次优使用模式................................................................................................................ 1169 API 版本 2012-08-10 viii Amazon DynamoDB 开发人员指南 降低流成本................................................................................................................... 1171 与其他 AWS 服务集成.................................................................................................................... 1172 与 Amazon Cognito 集成........................................................................................................ 1172 与 Amazon Redshift 集成....................................................................................................... 1173 集成 Amazon EMR................................................................................................................ 1174 概览 ............................................................................................................................. 1175 教程:使用 Amazon DynamoDB 和 Apache Hive................................................................ 1175 在 Hive 中创建外部表..................................................................................................... 1181 处理 HiveQL 语句.......................................................................................................... 1182 查询 DynamoDB 中的数据.............................................................................................. 1183 在 Amazon DynamoDB 之间复制数据............................................................................... 1185 性能优化 ...................................................................................................................... 1194 与 S3 集成 ........................................................................................................................... 1197 从 Amazon S3 导入....................................................................................................... 1197 导出到 Amazon S3........................................................................................................ 1207 配额和限制................................................................................................................................... 1214 读/写容量模式和吞吐量........................................................................................................... 1214 容量单位大小(对于预调配表) ........................................................................................ 1214 请求单位大小(对于按需表) ........................................................................................... 1214 吞吐量默认限额............................................................................................................. 1215 增加或减少吞吐量(对于预调配表).................................................................................. 1215 表 ........................................................................................................................................ 1216 表大小......................................................................................................................... 1216 最大表数(每个账户、每个区域)..................................................................................... 1216 全局表................................................................................................................................. 1216 二级索引 .............................................................................................................................. 1217 每个表的二级索引 .......................................................................................................... 1217 每个表的投影二级索引属性.............................................................................................. 1217 分区键和排序键 ..................................................................................................................... 1217 分区键长度................................................................................................................... 1217 分区键值 ...................................................................................................................... 1217 排序键长度................................................................................................................... 1218 排序键值 ...................................................................................................................... 1218 命名规则 .............................................................................................................................. 1218 表名称和二级索引名称.................................................................................................... 1218 属性名称 ...................................................................................................................... 1218 数据类型 .............................................................................................................................. 1218 字符串......................................................................................................................... 1218 数字 ............................................................................................................................. 1219 二进制......................................................................................................................... 1219 项目 ..................................................................................................................................... 1219 项目大小 ...................................................................................................................... 1219 具有本地二级索引的表的项目大小..................................................................................... 1219 属性 ..................................................................................................................................... 1219 每个项目的属性名称-值对................................................................................................ 1219 列表、映射或集中值的数量.............................................................................................. 1219 属性值......................................................................................................................... 1220 嵌套属性深度................................................................................................................ 1220 表达式参数........................................................................................................................... 1220 长度 ............................................................................................................................. 1220 运算符数和操作数 .......................................................................................................... 1220 保留字......................................................................................................................... 1220 DynamoDB 事务.................................................................................................................... 1220 DynamoDB Streams.............................................................................................................. 1221 DynamoDB Streams 中的分片同时读取器.......................................................................... 1221 启用了 DynamoDB Streams 的表的最大写入容量................................................................ 1221 DynamoDB Accelerator (DAX)................................................................................................. 1221 API 版本 2012-08-10 ix Amazon DynamoDB 开发人员指南 AWS 区域可用性........................................................................................................... 1221 节点 ............................................................................................................................. 1221 参数组......................................................................................................................... 1221 子网组......................................................................................................................... 1222 特定于 API 的限制................................................................................................................. 1222 静态 DynamoDB 加密............................................................................................................ 1223 将表导出到 Amazon S3.......................................................................................................... 1223 备份与还原........................................................................................................................... 1223 API 参考...................................................................................................................................... 1224 附录 ............................................................................................................................................. 1225 排除建立 SSL/TLS 连接的问题................................................................................................. 1225 测试您的应用程序或服务................................................................................................. 1225 测试您的客户端浏览器.................................................................................................... 1225 更新软件应用程序客户端................................................................................................. 1226 更新您的客户端浏览器.................................................................................................... 1226 手动更新您的证书捆绑.................................................................................................... 1226 示例表和数据........................................................................................................................ 1226 示例数据文件................................................................................................................ 1227 创建示例表并上传数据............................................................................................................ 1236 创建示例表并上传数据 – Java.......................................................................................... 1236 创建示例表并上传数据 – .NET.......................................................................................... 1243 使用 AWS SDK for Python (Boto3) 的示例应用程序.................................................................... 1251 第 1 步:在本地进行部署和测试....................................................................................... 1252 第 2 步:检查数据模型和实施详细信息.............................................................................. 1255 第 3 步:在生产环境中进行部署....................................................................................... 1262 步骤 4:清理资源.......................................................................................................... 1268 集成 AWS Data Pipeline......................................................................................................... 1269 导出和导入数据的先决条件.............................................................................................. 1271 将数据从 DynamoDB 导出到 Amazon S3.......................................................................... 1275 将数据从 Amazon S3 导入 DynamoDB............................................................................. 1276 问题排查 ...................................................................................................................... 1277 AWS Data Pipeline 和 DynamoDB 的预定义模板................................................................ 1277 Amazon DynamoDB Storage Backend for Titan......................................................................... 1278 DynamoDB 中的保留字.......................................................................................................... 1278 遗留条件参数........................................................................................................................ 1287 AttributesToGet............................................................................................................. 1288 AttributeUpdates............................................................................................................ 1288 ConditionalOperator....................................................................................................... 1290 Expected...................................................................................................................... 1290 KeyConditions............................................................................................................... 1293 QueryFilter.................................................................................................................... 1295 ScanFilter..................................................................................................................... 1296 使用遗留参数编写条件.................................................................................................... 1297 早期低级别 API 版本(2011-12-05)........................................................................................ 1303 BatchGetItem................................................................................................................ 1303 BatchWriteItem.............................................................................................................. 1307 CreateTable.................................................................................................................. 1312 DeleteItem.................................................................................................................... 1316 DeleteTable.................................................................................................................. 1320 DescribeTables............................................................................................................. 1322 GetItem........................................................................................................................ 1325 ListTables..................................................................................................................... 1327 PutItem........................................................................................................................ 1329 Query.......................................................................................................................... 1333 Scan............................................................................................................................ 1340 UpdateItem................................................................................................................... 1349 UpdateTable................................................................................................................. 1353 API 版本 2012-08-10 x
Description: