4 个版本 (2 个重大更新)
0.3.0 | 2023年12月7日 |
---|---|
0.2.1 | 2023年11月15日 |
0.2.0 | 2023年9月22日 |
0.1.0 | 2023年6月1日 |
#8 在 #dynamo
每月 229 次下载
在 5 个crate中使用 (通过 modyne)
23KB
457 行
Modyne
一个用于与AWS DynamoDB单表设计交互的具有偏见的库。
Motive
Modyne遵循在处理DynamoDB时,有效单表设计的原则,如Alex DeBrie的DynamoDB Book和DynamoDB Guide配套网站中所述。这种设计利用了某些访问模式非常适合AWS DynamoDB相对简单的架构的事实,其中分区包含给定分区键的所有项,这些项在一个BTree结构中按排序键排序。
由于这种架构,DynamoDB通过查询操作奖励对单个分区内项目范围的访问。可以通过全局二级索引启用其他访问模式,稀疏索引可以用于启用高效的扫描操作。
利用单表设计,可以将多个不同的实体类型混合到单个DynamoDB表中,并且多个实体类型可以共存于单个分区中。通常不使用项目的原始属性作为键。相反,从这些原始属性生成合成键,以支持查询和扫描操作中分区和索引的有效使用。
概念
在modyne中,crate的消费者将在代码中定义各种实体,提供Serde序列化和反序列化的实现,以及提供对Entity
特质的实现。这个特质是modyne的核心。它定义了实体的名称、对实体重要的属性以及为实体生成主键和任何二级索引键的方式。
本库中的下一个重大概念是 QueryInput
和 ProjectionSet
。查询输入使得定义键表达式、过滤表达式以及从查询中读取的投影所需属性集变得简单。对于扫描操作,存在 QueryInput
的对偶:ScanInput
。
在这些概念之外,modyne 提供了高级流畅接口,用于与这些 DynamoDB 实体交互,有助于将使用引导至成功的深渊,远离无意中的错误。此外,该库还提供了用于执行批量读取和写入操作的流畅接口,这在将非规范化数据与单表设计同步时可能需要。
要全面了解本库的功能,请参阅 docs.rs 上的文档。
†:通过启用 once_cell
功能,可以将本库的最低支持版本降低到 1.68.0。
依赖关系
~275–730KB
~17K SLoC