#状态 #应用 #容器 #命令 #日志 #持久化 #操作

madeleine

具有预定义操作和状态容器的透明对象持久化

2 个版本

0.2.1 2023年6月16日
0.2.0 2023年6月16日

#1817 in 数据结构

Apache-2.0

25KB
393

你好,我是 Madeline

警告:我还处于非常早期的 alpha 版本,甚至还没有完成所有功能!请勿使用我,但您可以随时提供帮助。

我是一个 Rust 库,用于构建具有持久状态容器的状态应用程序。我的灵感来自 Ruby 的 madeleine 钩子 和,间接地,早期的 Java Prevalayer 库

概述

使用 Madeleine,您将应用程序纯粹建模为对受保护数据结构的预定义操作。这些操作称为 命令,并且可能改变称为 系统 的受保护数据结构的状态。使用此模型,执行的所有命令都透明地序列化并添加到追加日志中,其中保留了它们的顺序。由于命令是 唯一 能够更改系统的事物,因此这构成了应用程序当前状态的完整历史。由于每个命令日志都持久化到磁盘,因此应用程序可以在退出或崩溃后重新启动,理解它可以重新播放命令日志而不会产生明显的影响。换句话说,它可以想象地继续从上次离开的地方开始。

用法

要查看其实际应用,请查看 examples 目录中的示例代码。

安装

此安装方法需要支持 cargo-add 的最新版本的 Cargo

cargo add madeleine

对于较旧的 Rust 安装,您可以使用 cargo-edit 或直接将依赖项添加到您的 Cargo.toml

madeleine = "0.2.0" # Or latest version

功能路线图

  • 主、顶级 Madeleine 接口
  • 示例代码
  • 快照逻辑
  • 命令日志记录
  • 持久化
    • 命令
    • 快照
    • 命令日志
    • 快照
    • 涉及快照后跟随命令的混合场景
  • 垃圾收集
  • 基准测试
  • 集成测试

愿望清单

  • 并发/并行支持
  • 异步接口
  • 后台处理
  • 存储压缩
  • 附加和可插拔的存储格式,可能通过 功能 实现
    • JSON
    • TOML
    • CBOR

获取帮助

如果您有任何问题、担忧、错误报告等,请在此存储库的问题跟踪器中提交问题。

参与进来

请参阅 CONTRIBUTING.md 文件,了解如何参与其中。

许可证

Madeleine 是开源软件,根据 Apache 2.0 许可证 发布。

依赖项

~1.2–2.5MB
~49K SLoC