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 日

#489数据库接口

Download history 173/week @ 2024-03-13 159/week @ 2024-03-20 105/week @ 2024-03-27 119/week @ 2024-04-03 173/week @ 2024-04-10 53/week @ 2024-04-17 61/week @ 2024-04-24 115/week @ 2024-05-01 247/week @ 2024-05-08 198/week @ 2024-05-15 167/week @ 2024-05-22 140/week @ 2024-05-29 94/week @ 2024-06-05 149/week @ 2024-06-12 223/week @ 2024-06-19 148/week @ 2024-06-26

640 每月下载量
用于 4 crate

MIT/Apache

185KB
4.5K SLoC

Modyne

Modyne 是一个针对 AWS DynamoDB 单表设计的意见库。

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

Motive

Modyne 遵循 Alex DeBrie 的《DynamoDB 书籍》和 DynamoDB Guide 伴随网站 中阐述的有效单表设计原则。这种设计利用了 AWS DynamoDB 相对简单的架构,其中分区包含所有给定 分区键 的项目,并按 排序键 排序。

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

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

概念

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

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

在这些概念之外,modyne 为与这些 DynamoDB 实体交互提供了更高级别的流畅接口,有助于引导使用,避免无意中的错误。该包还提供了用于执行批量读取和写入操作的流畅接口,这在将非规范化数据与单表设计同步时有时是必需的。

要更全面地了解此包中的功能,请参阅 docs.rs 上的文档


†:通过启用 once_cell 功能,可以将此包的 MSRV 降低到 1.68.0。

依赖项

~21MB
~367K SLoC