#cql #storage #nosql #array

cql_nullable_f64

CQL数据库的Nullable f64存储支持 - 一种轻量级的基于数组的数据库

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数据库接口

MIT/Apache

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(())
}

更多信息

有关更多信息以及更多示例,请参阅rustdocs。其他存储类型在cql_db crate中有文档说明。

依赖项

~120KB