#key-value-database #storage #key-value-store #entries

bin+lib mu_db

一个简单轻量级的基于键值对的数据库

1个不稳定版本

0.0.1 2024年3月23日

#75#entries

MIT 协议

22KB
321

muDB

  • 数据库是一个简单轻量级的数据库,提供基本的数据库功能,可以通过接受数据库文件路径的新函数创建。
  • 数据库支持基本操作,如插入键值对、检索值、删除条目和清除所有数据。
  • 它还提供高级功能,如指定位置的直接读写操作、检查数据库或缓冲区是否为空,以及通过删除未使用空间来优化数据库文件。

示例

let mut db = mu_db::DataBase::new("./test.db");
// This will generate ./test.db and ./index_test.db if they don't exist.

db.insert("key", "before_value");
db.insert("key", "after_value");

let value = db.get("key");
assert_eq!(value, Some("after_value".to_string()));

db.remove("key");

assert_eq!(db.get("key"), None);
assert!(db.is_empty()); // index is empty
assert!(!db.is_buf_empty()); // db is not empty
assert_eq!(db.buf_len(), 12); // db: `after_valuee`

db.shrink(); // remove unused space
assert!(db.is_buf_empty());

db.write_at(5, "world").unwrap(); // write to db file directly without syncing index
let data = db.read_at(5, 5).unwrap(); // read db file directly

assert_eq!(data, "world".to_string());

db.clear_all().unwrap(); // clear everything (index and db)

assert!(db.is_empty());
assert!(db.is_buf_empty());

请注意,mu_db是一个简单轻量级的数据库,不支持复杂的数据库操作,如事务、连接等。它最适合简单的键值存储需求。

无运行时依赖