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

Download history 182/week @ 2024-04-08 64/week @ 2024-04-15 45/week @ 2024-04-22 106/week @ 2024-04-29 262/week @ 2024-05-06 111/week @ 2024-05-13 257/week @ 2024-05-20 136/week @ 2024-05-27 119/week @ 2024-06-03 111/week @ 2024-06-10 147/week @ 2024-06-17 247/week @ 2024-06-24 75/week @ 2024-07-01 18/week @ 2024-07-08 57/week @ 2024-07-15 74/week @ 2024-07-22

每月 229 次下载
5 个crate中使用 (通过 modyne)

MIT/Apache

23KB
457

Modyne

一个用于与AWS DynamoDB单表设计交互的具有偏见的库。

docs.rs crates.io MIT/Apache-2.0 dual licensed modyne: rustc 1.70+

Motive

Modyne遵循在处理DynamoDB时,有效单表设计的原则,如Alex DeBrie的DynamoDB BookDynamoDB Guide配套网站中所述。这种设计利用了某些访问模式非常适合AWS DynamoDB相对简单的架构的事实,其中分区包含给定分区键的所有项,这些项在一个BTree结构中按排序键排序。

由于这种架构,DynamoDB通过查询操作奖励对单个分区内项目范围的访问。可以通过全局二级索引启用其他访问模式,稀疏索引可以用于启用高效的扫描操作。

利用单表设计,可以将多个不同的实体类型混合到单个DynamoDB表中,并且多个实体类型可以共存于单个分区中。通常不使用项目的原始属性作为键。相反,从这些原始属性生成合成键,以支持查询和扫描操作中分区和索引的有效使用。

概念

modyne中,crate的消费者将在代码中定义各种实体,提供Serde序列化和反序列化的实现,以及提供对Entity特质的实现。这个特质是modyne的核心。它定义了实体的名称、对实体重要的属性以及为实体生成主键和任何二级索引键的方式。

本库中的下一个重大概念是 QueryInputProjectionSet。查询输入使得定义键表达式、过滤表达式以及从查询中读取的投影所需属性集变得简单。对于扫描操作,存在 QueryInput 的对偶:ScanInput

在这些概念之外,modyne 提供了高级流畅接口,用于与这些 DynamoDB 实体交互,有助于将使用引导至成功的深渊,远离无意中的错误。此外,该库还提供了用于执行批量读取和写入操作的流畅接口,这在将非规范化数据与单表设计同步时可能需要。

要全面了解本库的功能,请参阅 docs.rs 上的文档


†:通过启用 once_cell 功能,可以将本库的最低支持版本降低到 1.68.0。

依赖关系

~275–730KB
~17K SLoC