Pearl

Build Status

Append only key-value blob storage on disk

Table of Contents

Overview

Storage scheme

pearl storage scheme

Blob

Header

Structure: rust 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: rust 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 | | -------------- | :----: | :----------- | |magicbyte | 8 | separates records in blob |key | (any) | key for record location and searching |metasize | 8 | meta length |datasize | 8 | data length (without header) |flags | 1 | additional record metadata |bloboffset | 8 | record offset from blob start |created | 8 | created timestamp |datachecksum | 4 | data crc32 checksum (without header) |headerchecksum | 4 | header crc32 checksum (only record header)

Rust Version

pearl works on stable rust and above $ rustup update $ cargo build