#cql #storage #nosql #array

cql_u64

u64存储支持CQL数据库 - 一个基于数组的轻量级数据库

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

Download history 15/week @ 2024-03-11 16/week @ 2024-03-18 15/week @ 2024-03-25 36/week @ 2024-04-01 9/week @ 2024-04-08 15/week @ 2024-04-15 20/week @ 2024-04-22 13/week @ 2024-04-29 19/week @ 2024-05-06 13/week @ 2024-05-13 14/week @ 2024-05-20 6/week @ 2024-05-27 12/week @ 2024-06-03 16/week @ 2024-06-10 12/week @ 2024-06-17 20/week @ 2024-06-24

每月下载量 60
7 个Crates中使用(通过 cql_db

MIT/Apache

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

更多信息

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

依赖项

~120KB