返回顶部
D

DynamoDBDynamoDB表设计

Design DynamoDB tables and write efficient queries avoiding common NoSQL pitfalls.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
890
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

DynamoDB

关键设计

  • - 分区键决定数据分布——高基数键可均匀分散负载
  • 热分区 = 单个键承载所有流量——使用复合键或添加随机后缀
  • 排序键支持分区内的范围查询——根据访问模式设计
  • 创建后无法更改键——建表前需建模所有访问模式

查询 vs 扫描

  • - 查询使用分区键 + 可选排序键——复杂度为O(分区内项目数),始终优先使用
  • 扫描读取整个表——成本高、速度慢、跳过索引;几乎永远不正确
  • 我需要按X过滤通常意味着缺少全局二级索引——添加索引,不要扫描
  • FilterExpression在读取后应用——仍消耗完整读取容量

全局二级索引

  • - GSI = 不同的分区/排序键——支持替代访问模式
  • GSI最终一致性——写入传播存在轻微延迟
  • GSI消耗独立容量——需为每个GSI单独预置或付费
  • 稀疏索引技巧:仅包含该属性的项目才会出现在GSI中

单表设计

  • - 一个表存储多种实体类型——分区键前缀:USER#123、ORDER#456
  • 重载排序键:METADATA、ORDER#2024-01-15、ITEM#abc
  • 查询返回混合类型——客户端过滤或使用begins_with
  • 并非总是正确——从访问模式出发,而非教条

分页

  • - 每次请求结果上限1MB——必须处理分页
  • 响应中存在LastEvaluatedKey表示还有更多页——将其作为ExclusiveStartKey传入
  • 循环直到LastEvaluatedKey不存在——常见错误:假设一次调用获取全部
  • Limit限制评估的项目数,而非返回数——仍需分页逻辑

一致性

  • - 读取默认最终一致性——可能返回过期数据
  • ConsistentRead: true实现强一致性——消耗2倍读取容量
  • GSI读取始终最终一致性——无强一致性选项
  • 先写后读需要一致性读取或重试——最终一致性在此处易出问题

条件写入

  • - ConditionExpression用于乐观锁——条件为假时失败
  • 防止覆盖:attributenotexists(pk)
  • 版本检查:version = :expected然后递增
  • ConditionCheckFailedException = 使用新数据重试,而非直接失败

批量操作

  • - BatchWriteItem非原子操作——可能部分成功,需检查UnprocessedItems
  • 使用指数退避重试未处理项——AWS SDK内置支持
  • 每批最多25个项目,总计16MB——拆分更大批次
  • 批量中不支持条件写入——使用TransactWriteItems实现原子性

事务

  • - TransactWriteItems实现原子性多项目写入——全有或全无
  • 每笔事务最多100个项目,总计4MB
  • TransactGetItems实现一致性多读取——快照隔离
  • 成本为普通操作的2倍——仅在需要原子性时使用

TTL

  • - 在时间戳属性上启用TTL——DynamoDB自动删除过期项目
  • 删除为后台进程——项目可能在过期后持续存在数小时
  • TTL值为Unix纪元秒——毫秒值会静默失败
  • 如需查询,过滤attribute_exists(ttl) AND ttl > :now

容量

  • - 按需模式:按请求付费,自动扩缩——适合不可预测流量
  • 预置模式:设置RCU/WCU,规模化后更便宜——需容量规划
  • 预置+自动扩缩适合可预测模式——设置最小/最大/目标值
  • ProvisionedThroughputExceededException = 被限流——退避重试

限制

  • - 项目大小上限400KB——大对象存S3,DynamoDB中存引用
  • 分区吞吐量:3000 RCU,1000 WCU——需分散到各分区
  • 查询/扫描最多返回1MB——更多数据需分页
  • 每个项目属性名总长上限64KB——避免使用长属性名

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 dynamodb-1776420003 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 dynamodb-1776420003 技能

通过命令行安装

skillhub install dynamodb-1776420003

下载

⬇ 下载 DynamoDB v1.0.0(免费)

文件大小: 2.45 KB | 发布时间: 2026-4-17 19:02

v1.0.0 最新 2026-4-17 19:02
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部