DynamoDB Toolbox - 让单表设计变得简单易行!
DynamoDB Toolbox 是一套强大的工具集,专门用于简化 Amazon DynamoDB 和其 DocumentClient 的操作。特别适合进行单表设计,同时也支持多表操作。它允许您定义实体(附带类型注解和别名),并将它们映射到DynamoDB的表格中。通过传递JavaScript对象,您可以生成执行 put
、get
、delete
、update
、query
、scan
、batchGet
和 batchWrite
操作所需的API参数。此工具箱会自动处理别名映射、数据验证和类型转换,甚至包括复杂的 UpdateExpression
。
单表设计理念
想了解更多关于单表设计的信息,请参考 Alex Debrie 的博客。
版本更新至0.9
版本0.9带来了许多改进和增强,我们欢迎您提供反馈,并非常感谢贡献者@ThomasAribart的努力工作!
快速上手
使用您喜欢的包管理器,通过以下命令在您的项目中安装 DynamoDB Toolbox 和 aws-sdk v3 相关依赖:
# npm
npm i dynamodb-toolbox
npm install @aws-sdk/lib-dynamodb @aws-sdk/client-dynamodb
# yarn
yarn add dynamodb-toolbox
yarn add @aws-sdk/lib-dynamodb @aws-sdk/client-dynamodb
然后导入并创建 Table
和 Entity
:
import { Table, Entity } from 'dynamodb-toolbox'
通过创建 DynamoDBClient
和 DynamoDBDocumentClient
实例以初始化一个表格:
import { DynamoDBClient } from '@aws-sdk/client-dynamodb'
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb'
创建实体,如 Customer
:
const Customer = new Entity({
// ... 定义属性和表结构 ...
})
随后您可以使用 put
方法保存数据,例如:
const customer = {
id: 123,
// ... 其他属性 ...
}
await Customer.put(customer)
强大的特性
- 表结构与类型注解:通过简单的JavaScript对象结构定义表和实体数据模型,指定DynamoDB数据类型,并可设置默认值。
- 智能更新表达式:构建复杂的
UpdateExpression
字符串不再困难,即使输入数据变化,库也能处理各种情况,包括列表和集合操作,以及智能地应用if_not_exists()
避免覆盖数据。 - 双向映射和别名:在单表设计中,多个实体可以共享同一张表。每个实体可以重用字段(如
pk
和sk
)并为不同类型的项映射不同的别名。 - 复合键生成和字段映射:轻松处理复杂的数据模式,如国家、区域、州等层级的复合键。库会自动生成这些值,并解析为相应的字段。
- 类型强转与验证:确保DynamoDB表中的数据类型一致。验证列表、地图和集合类型。集合类型由库自动处理。
- 强大的查询构造器:只需指定分区键,然后配置排序键条件、过滤器和属性投影,即可针对主键或二级索引进行查询,支持分页功能。
- 简单扫描:轻松扫瞄表或二级索引,添加过滤器、投影,支持并发扫描和更多功能,同样支持分页。
- 过滤和条件表达式构建器:使用标准化的数组和对象语法构建复杂的过滤和条件表达式。
- 投影构建器:根据不同实体类型指定返回哪些属性和路径,自动过滤结果。
- 次级索引支持:将次级索引(全局和局部)映射到表,动态链接实体属性。
- 批量操作:对多个实体和表执行简单的批量操作接口。
- 事务处理:对多个实体和表执行简单的事务接口。
- 默认值依赖图:创建动态属性默认值,通过其他动态属性默认值相互链接。
- TypeScript 支持:提供强类型支持和类型推断功能,使开发更加愉悦。
更多资源
DynamoDB Toolbox 非常适合想要充分利用DynamoDB强大功能,尤其是采用单表设计的开发者。结合其智能功能和类型安全特性,这个开源项目是提升您应用程序效率和可靠性的理想选择。现在就加入,体验它的便捷性吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考