2个不稳定版本
0.2.0 | 2024年7月31日 |
---|---|
0.1.0 | 2024年6月25日 |
#469 在 数据库接口 中
每月 76 次下载
65KB
546 行
小石头库
[!警告] 小石头库仍在早期开发阶段,目前不应用于任何生产环境。
欢迎来到小石头库,一个真正酷炫的数据库!🚀 想象一个世界,小石头不仅仅是一块块小石头;它们是你数据梦想的基石。小石头库是一个带有MySQL特色的内存数据库,包裹在Rust舒适的内存安全毛毯中。这就像是拥有一个宠物小石头收藏,但针对有严肃数据需求的大人!
为什么选择小石头库? 🌟
- 速度:基于内存的存储,让你的小石头以光速访问。
- 安全性:得益于Rust,你的数据就像保险库中的小石头一样安全。不再担心内存泄漏或数据损坏。
- 灵活性:当需要更持久的存储时,轻松将小石头扔到MySQL中。这就像扔一块小石头到湖中,但波纹更少,数据完整性更高。
- 简单性:添加、删除和扔小石头的简单操作,使管理你的数据就像在宁静的池塘上扔小石头一样容易。
- 惊人的父亲笑话
主要功能 🎉
- 内存速度:将小石头保留在内存中,以实现超快访问。
- MySQL持久性:将小石头扔到MySQL中进行长期存储,确保数据稳固。
- Rust可靠性:使用Rust构建,因此你的小石头安全无虞,免受外界(以及元素,指的是错误)的影响。
操作 🔧
定义类(创建小石头类)
使用JSON定义一个具有特定字段和字段类型的小石头类。
vault.define_class("gem", r#"{
"name": "string",
"color": "string",
"carat": "float"
}"#);
收集(插入数据)
将小石头(数据对象)存储在内存中。
vault.collect("gem", "my_precious_pebble", r#"{
"name": "Ruby",
"color": "Red",
"carat": 1.5
}"#);
扔(持久化数据)
将小石头发送到MySQL进行长期存储。
vault.throw("gem", "my_precious_pebble");
删除(删除数据)
从内存或磁盘中删除小石头。
vault.drop("gem", "my_precious_pebble");
撇(读取数据)
从内存或磁盘中检索小石头。
let data = vault.skim("gem", "my_precious_pebble");
小石头堆(创建表)
创建一个新的小石头表(或集合)。
vault.pebblestack("gem", "my_pebble_stack");
小石头倾倒(批量插入)
一次性添加多个小石头。
let data1 = r#"{
"name": "Sapphire",
"color": "Blue",
"carat": 2.5
}"#;
let data2 = r#"{
"name": "Emerald",
"color": "Green",
"carat": 1.8
}"#;
let data3 = r#"{
"name": "Topaz",
"color": "Yellow",
"carat": 3.0
}"#;
vault.pebbledump("gem", "my_pebble_stack", vec![data1, data2, data3]);
小石头移动(更新数据)
更新现有小石头的数据。
vault.pebbleshift("gem", "my_precious_pebble", r#"{
"carat": 2.0
}"#);
小石头筛选(查询数据)
过滤和查找特定的小石头。
let results = vault.pebblesift("gem", "my_pebble_stack", r#"{
"color": "Red"
}"#);
小石头修补(修补数据)
部分更新小石头的数据。
vault.pebblepatch("gem", "my_precious_pebble", r#"{
"color": "Deep Red"
}"#);
小石头流动(事务)
确保原子操作。
vault.pebbleflow(|txn| {
txn.collect("gem", "pebble1", data1);
txn.collect("gem", "pebble2", data2);
txn.throw("gem", "pebble1");
txn.drop("gem", "pebble2");
});
小石头压榨(删除表)
删除整个小石头表(或集合)。
vault.pebblesquash("gem", "my_pebble_stack");
安装 🛠️
要开始使用小石头库,只需运行
cargo install pebblevault
示例用法
use pebblevault::Vault;
let vault = Vault::new();
// Define a class of pebbles
vault.define_class("gem", r#"{
"name": "string",
"color": "string",
"carat": "float"
}"#);
// Create a new table (or collection) of pebbles
vault.pebblestack("gem", "my_pebble_stack");
// Insert data into the vault
vault.collect("gem", "my_precious_pebble", r#"{
"name": "Ruby",
"color": "Red",
"carat": 1.5
}"#);
// Bulk insert multiple pebbles
vault.pebbledump("gem", "my_pebble_stack", vec![data1, data2, data3]);
// Query the vault to find specific pebbles
let results = vault.pebblesift("gem", "my_pebble_stack", r#"{
"color": "Red"
}"#);
// Update an existing pebble's data
vault.pebbleshift("gem", "my_precious_pebble", r#"{
"carat": 2.0
}"#);
// Partially update a pebble's data
vault.pebblepatch("gem", "my_precious_pebble", r#"{
"color": "Deep Red"
}"#);
// Retrieve data from the vault
let data = vault.skim("gem", "my_precious_pebble");
// Persist data to MySQL
vault.throw("gem", "my_precious_pebble");
// Remove data from the vault
vault.drop("gem", "my_precious_pebble");
// Ensure atomic operations with a transaction
vault.pebbleflow(|txn| {
txn.collect("gem", "pebble1", data1);
txn.collect("gem", "pebble2", data2);
txn.throw("gem", "pebble1");
txn.drop("gem", "pebble2");
});
// Delete an entire table (or collection) of pebbles
vault.pebblesquash("gem", "my_pebble_stack");
贡献 🤝
您有让 PebbleVault 更好的想法吗?想要让我们的鹅卵石派对更有趣吗?加入我们,让 PebbleVault 成为满足您所有鹅卵石保存需求的最佳场所!查看我们的贡献指南,开始向我们提出您的想法。
许可 📜
PebbleVault 采用 Apache 2.0 许可协议。摇滚起来!🤘
依赖项
~25MB
~492K SLoC