5个版本
0.2.3 | 2020年3月11日 |
---|---|
0.2.2 | 2020年2月25日 |
0.2.1 | 2020年2月25日 |
0.2.0 | 2020年2月25日 |
0.1.0 | 2020年2月10日 |
2879 在 数据库接口
每月下载量 60
在 7 个Crates中使用(通过 cql_db)
18KB
80 行
CQL U64
此crate实现了用于在CQL数据库中存储u64
值的各种CqlType衍生。
每个值将分配8字节 链接。
基准测试
下方的基准测试相当基础(且已四舍五入),旨在提供一个相对成本的粗略估计。完整的基准测试代码可以在github找到,并可以使用rustup run nightly cargo bench
运行。
操作 | 数据库维度 | 未检查的平均时间(ns) | 平均时间(ns) |
---|---|---|---|
单点读取 | 1 | 2 450 (+/- 300) | 7 500 (+/- 600) |
单点读取 | 4 | 14 850 (+/- 1 000) | 37 550 (+/- 2 300) |
单点写入 | 1 | 2 800 (+/- 400) | 7 700 (+/- 400) |
单点写入 | 4 | 15 400 (+/- 2 500) | 37 700 (+/- 3 000) |
流式读取1点 | 1 | 2 500 (+/- 300) | 10 000 (+/- 850) |
流式读取1点 | 4 | 14 900 (+/- 600) | 42 500 (+/- 6 500) |
流式读取50,000点 | 1 | 27 650 000 (+/- 31 000) | 27 630 000 (+/- 180 000) |
流式读取50,000点 | 4 | 27 660 000 (+/- 1 200 000) | 27 620 000 (+/- 480 000) |
入门
要开始,请将以下依赖项添加到您的Cargo.toml中
[dependencies]
//... (any existing dependencies you may have)
cql_db = "^0.2.4"
cql_u64 = "^0.2"
然后需要在您想要数据库存放的文件夹中创建一个文件夹,然后尝试以下内容
use std::io::{ Cursor, SeekFrom, Seek };
use cql_db::error::Error;
use cql_u64::{ U64, unpack_stream };
const DATABASE_LOCATION: &str = "PATH_TO_YOUR_DATABASE_DIRECTORY";
pub fn example_cql() -> Result<(), Error> {
// create a one dimensional database to hold 3 points
cql_db::create_db::<U64>(
DATABASE_LOCATION,
&[3]
)?;
// write '1', to [1]
cql_db::write_value::<U64>(
DATABASE_LOCATION,
&[1],
1
)?;
let mut result = [0; 2];
let mut stream = Cursor::new(Vec::new());
// read 2 values from [1] to 'stream'
cql_db::read_to_stream::<U64>(
DATABASE_LOCATION,
&mut stream,
&[1],
2
)?;
stream.seek(SeekFrom::Start(0)).unwrap();
unpack_stream(&mut stream, 2, |idx, value| {
result[idx] = value
})?;
assert_eq!(result[0], 1);
assert_eq!(result[1], 0);
Ok(())
}
更多信息
依赖项
~120KB