#storage #cql #nosql #array

cql_tiny_text

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

3个不稳定版本

0.2.1 2020年3月11日
0.2.0 2020年2月25日
0.1.0 2020年2月11日

#2524数据库接口

MIT/Apache

24KB
158

CQL TinyText

该包实现了CQL数据库中存储最多(包括)255个字符的字符串值的各种CqlType派生。

每个值将分配1020字节链接

基准测试

下面提供的基准测试相当基础(且已四舍五入),仅用于提供一个相对成本的粗略估计。完整的基准测试代码可以在github中找到,可以使用rustup run nightly cargo bench运行,但请注意,它们将分配约102MB的磁盘空间。read_to_stream基准测试与其他CqlType派生略有不同,因为它们将数据流到一个Vector中,而不是一个数组。

操作 数据库维度 平均时间(ns)
单点读取 1 3 060 (+/- 200)
单点读取 4 15 800 (+/- 1 100)
单点写入 1 2 800 (+/- 300)
单点写入 4 15 400 (+/- 1 000)
流读取1点 1 3 500 (+/- 300)
流读取1点 4 15 500 (+/- 1 100)
流读取50,000点 1 56 700 000 (+/- 800 000)
流读取50,000点 4 56 400 000 (+/- 150 000)

入门

要开始,请将以下依赖项添加到您的Cargo.toml中

[dependencies]
//... (any existing dependencies you may have)
cql_db = "^0.2.4"
cql_tiny_text = "^0.2"

然后需要创建一个文件夹,其中包含您希望数据库存放的位置,然后尝试以下操作

use std::convert::TryFrom;
use std::io::{ Cursor, SeekFrom, Seek };
use std::error::Error;
use cql_tiny_text::{ TinyText, unpack_stream };

const DATABASE_LOCATION: &str = "PATH_TO_YOUR_DATABASE_DIRECTORY";

pub fn example_cql() -> Result<(), Box<dyn Error>> {
    let value1 = "item one";
    let value3 = "شماره ۳";

    cql_db::create_db::<TinyText>(
        DATABASE_LOCATION,
        &[3]
    )?;

    cql_db::write_value::<TinyText>(
        DATABASE_LOCATION,
        &[1],
        TinyText::try_from(value1)?
    )?;

    cql_db::write_value::<TinyText>(
        DATABASE_LOCATION,
        &[3],
        TinyText::try_from(value3)?
    )?;

    let mut result = Vec::with_capacity(3);
    let mut stream = Cursor::new(Vec::new());

    cql_db::read_to_stream::<TinyText>(
        DATABASE_LOCATION,
        &mut stream,
        &[1],
        3
    )?;

    stream.seek(SeekFrom::Start(0));
    unpack_stream(&mut stream, 3, |_, value| {
        result.push(value)
    })?;

    assert_eq!(result[0], TinyText::try_from(value1)?);
    assert_eq!(result[1], TinyText::new());
    assert_eq!(result[2], TinyText::try_from(value3)?);
    Ok(())
}

更多信息

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

依赖关系

~120KB