4个版本
0.2.2 | 2020年3月11日 |
---|---|
0.2.1 | 2020年3月2日 |
0.2.0 | 2020年3月2日 |
0.1.0 | 2020年2月10日 |
#2806 在 数据库接口
19KB
100 行
CQL NullableF64
本crate实现了存储CQL数据库中Option<f64>
值的各种CqlType派生类型。
每个值将分配9个字节链接。
基准测试
以下提供的基准测试相当基础(且已四舍五入),仅用于提供一个相对成本的粗略估计。完整的基准测试代码可在github找到,并可以使用rustup run nightly cargo bench
运行。
操作 | 数据库维度 | 平均时间(ns) |
---|---|---|
单点读取 | 1 | 3 100 (+/- 200) |
单点读取 | 4 | 16 400 (+/- 900) |
单点写入 | 1 | 2 800 (+/- 300) |
单点写入 | 4 | 15 400 (+/- 1 000) |
流读取1个点 | 1 | 2 500 (+/- 300) |
流读取1个点 | 4 | 15 300 (+/- 800) |
流读取50,000个点 | 1 | 27 300 000 (+/- 500 000) |
流读取50,000个点 | 4 | 27 500 000 (+/- 150 000) |
入门指南
要开始,请在您的Cargo.toml中添加以下依赖项
[dependencies]
//... (any existing dependencies you may have)
cql_db = "^0.2.4"
cql_nullable_f64 = "^0.2"
然后需要创建一个文件夹,用于存放数据库,然后尝试以下操作
use std::io::{ Cursor, SeekFrom, Seek };
use std::error::Error;
use cql_nullable_f64::{ NullableF64, 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::<NullableF64>(
DATABASE_LOCATION,
&[3]
)?;
// write '-1.6', to [1]
cql_db::write_value::<NullableF64>(
DATABASE_LOCATION,
&[1],
Some(-1.6)
)?;
// write '5.4', to [3]
cql_db::write_value::<NullableF64>(
DATABASE_LOCATION,
&[3],
Some(5.4)
)?;
let mut result: [Option<f64>; 3] = [None; 3];
let mut stream = Cursor::new(Vec::new());
// read 3 values from [1] to 'stream'
cql_db::read_to_stream::<NullableF64>(
DATABASE_LOCATION,
&mut stream,
&[1],
3
)?;
stream.seek(SeekFrom::Start(0)).unwrap();
unpack_stream(&mut stream, 3, |idx, value| {
result[idx] = value
})?;
assert_eq!(result[0], Some(-1.6));
assert_eq!(result[1], None);
assert_eq!(result[2], Some(5.4));
Ok(())
}
更多信息
依赖项
~120KB