4 个版本
0.2.4 | 2022 年 12 月 2 日 |
---|---|
0.2.3 | 2022 年 5 月 27 日 |
0.2.2 | 2022 年 5 月 25 日 |
0.0.0 | 2019 年 2 月 14 日 |
#1510 在 数据库接口
每月 22 次下载
25MB
2.5K SLoC
包含 (WOFF 字体,25KB) 1473b8e731818a5aa2a7e71e2f59a808.woff,(WOFF 字体,21KB) 20516c7a076429487def5c801a0c0450.woff,(WOFF 字体,16KB) assets/stats/fonts/nucleo.woff,(WOFF 字体,13KB) assets/stats/fonts/nucleo.woff2
Rod
Rust 对象数据库。
去中心化社交网络应用 Iris-messenger 默认通过 Rod 节点同步。
使用
首先安装 Rust。
安装并运行
cargo install rod
rod start
库
use rod::{Node, Config, Value};
let mut db = Node::new_with_config(Config {
outgoing_websocket_peers: vec!["wss://some-server-to-sync.with/ws".to_string()],
..Config::default()
});
let mut sub = db.get("greeting").on();
db.get("greeting").put("Hello World!".into());
if let Value::Text(str) = sub.recv().await.unwrap() {
assert_eq!(&str, "Hello World!");
}
状态
15/5/2022:
- 基本
- 用于运行服务器的 CLI
- 传入 WebSocket
- 传出 WebSocket(环境变量 PEERS=wss://some-server-url.herokuapp.com/ws)
- 多播(目前大小限制为 65KB — 消息中的大照片无法通过它同步)
- 内存存储
- TLS 支持(环境变量 CERT_PATH 和 KEY_PATH)
- 高级网络消息去重
- 发布和订阅(仅将网络消息中继到相关节点)
- 磁盘存储 (sled.rs)
- 针对内容寻址数据的哈希验证(《code>db.get('#').get(data_hash).put(data))
- 用户数据的签名验证(《code>db.get('~' + pubkey).get('profile') ...)
- 加密和解密(通常在服务器上不需要,但在客户端(如 js 中的 iris 私信)中使用)
问题
- 多播无法中继像 Iris 带照片的帖子这样的长消息
开发
cargo install cargo-watch
RUST_LOG=debug cargo watch -x 'run -- start'
cargo test
关注代码更改并重新运行包含“stats”一词的测试
RUST_LOG=debug cargo watch -x 'test stats'
cargo bench
在 Heroku 上运行
heroku create --buildpack emk/rust
git push heroku master
或
依赖项
~25–41MB
~776K SLoC