#内存数据库 # #MySQL #性能 #解决方案 #高性能 #小石头

小石头库

一个用Rust编写的性能数据存储解决方案

2个不稳定版本

0.2.0 2024年7月31日
0.1.0 2024年6月25日

#469数据库接口

Download history 105/week @ 2024-06-22 3/week @ 2024-06-29 103/week @ 2024-07-27 5/week @ 2024-08-03 1/week @ 2024-08-10

每月 76 次下载

Apache-2.0

65KB
546

小石头库

[!警告] 小石头库仍在早期开发阶段,目前不应用于任何生产环境。

logo-no-background


欢迎来到小石头库,一个真正酷炫的数据库!🚀 想象一个世界,小石头不仅仅是一块块小石头;它们是你数据梦想的基石。小石头库是一个带有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