9 releases

✓ Uses Rust 2018 edition

0.3.3 May 29, 2020
0.3.2 May 28, 2020
0.3.0 Mar 2, 2020
0.2.3-alpha.2 Mar 2, 2020
0.1.0 Nov 20, 2019

#66 in Filesystem

Download history 11/week @ 2020-03-14 31/week @ 2020-03-21 12/week @ 2020-03-28 11/week @ 2020-04-04 40/week @ 2020-04-11 5/week @ 2020-04-18 9/week @ 2020-04-25 2/week @ 2020-05-02 14/week @ 2020-05-09 35/week @ 2020-05-16 57/week @ 2020-05-23 50/week @ 2020-05-30 9/week @ 2020-06-06 11/week @ 2020-06-13 15/week @ 2020-06-20 9/week @ 2020-06-27

96 downloads per month

MIT license

110KB
3K SLoC

Pearl

Build Status

Append only key-value blob storage on disk

Table of Contents

Overview

Storage scheme

pearl storage scheme

Blob

Header

Structure:

struct Header {
    magic_byte: u64,
    version: u32,
    flags: u64,
}

Description

Field Size, B Description
magic_byte 8 marks pearl blob
version any used to check compatibility
flags 1 additional file props

Record

Header

Structure:

pub struct Header {
    magic_byte: u64,
    key: Vec<u8>,
    meta_size: u64,
    data_size: u64,
    flags: u8,
    blob_offset: u64,
    created: u64,
    data_checksum: u32,
    header_checksum: u32,
}

Description

Field Size, B Description
magic_byte 8 separates records in blob
key (any) key for record location and searching
meta_size 8 meta length
data_size 8 data length (without header)
flags 1 additional record metadata
blob_offset 8 record offset from blob start
created 8 created timestamp
data_checksum 4 data crc32 checksum (without header)
header_checksum 4 header crc32 checksum (only record header)

Rust Version

pearl works on stable rust and above

$ rustup update
$ cargo build

Dependencies

~7.5MB
~153K SLoC