[][src]Crate pagecache

pagecache is a lock-free pagecache and log for building high-performance databases.

Re-exports

pub use self::logger::Log;
pub use self::logger::LogRead;

Modules

logger

Working with Log

Structs

Config

A finalized ConfigBuilder that can be use multiple times to open a Tree or Log.

ConfigBuilder

Top-level configuration for the system.

Guard

A guard that keeps the current thread pinned.

M

A metric collector for all pagecache users running in this process.

Meta

A simple map that can be used to store metadata for the pagecache tenant.

NullMaterializer

A materializer for things that have nothing to materialize or recover, like a standalone Log.

PageCache

A lock-free pagecache which supports fragmented pages for dramatically improving write throughput.

PagePtr

A pointer to shared lock-free state bound by a pinned epoch's lifetime.

Reservation

A pending log reservation which can be aborted or completed. NB the holder should quickly call complete or abort as taking too long to decide will cause the underlying IO buffer to become blocked.

Tx

A handle to an ongoing pagecache transaction. Ensures that any state which is removed from a shared in-memory data structure is not destroyed until all possible readers have concluded.

Enums

CacheEntry

Points to either a memory location or a disk location to page-in data from.

DiskPtr

A pointer to a location on disk or an off-log blob.

Error

An Error type encapsulating various issues that may come up in both the expected and unexpected operation of a PageCache.

PageGet

The result of a get call in the PageCache.

SegmentMode

The log may be configured to write data in several different ways, depending on the constraints of the system using it.

Traits

Materializer

A user of a PageCache needs to provide a Materializer which handles the merging of page fragments.

Functions

debug_delay

This function is useful for inducing random jitter into our atomic operations, shaking out more possible interleavings quickly. It gets fully elliminated by the compiler in non-test code.

pin

Pins the current thread.

unprotected

Returns a reference to a dummy guard that allows unprotected access to Atomics.

Type Definitions

BlobPointer

A pointer to an blob blob.

FastMap1

A fast map that is not resistant to collision attacks. Works on one byte at a time.

FastMap4

A fast map that is not resistant to collision attacks. Works on 4 bytes at a time.

FastMap8

A fast map that is not resistant to collision attacks. Works on 8 bytes at a time.

FastSet1

A fast set that is not resistant to collision attacks. Works on one byte at a time.

FastSet4

A fast set that is not resistant to collision attacks. Works on 4 bytes at a time.

FastSet8

A fast set that is not resistant to collision attacks. Works on 8 bytes at a time.

LogId

A log file offset.

Lsn

A logical sequence number.

MergeOperator

Allows arbitrary logic to be injected into mere operations of the PageCache.

PageId

A page identifier.

Result

The top-level result type for dealing with the PageCache.

SegmentId

An offset for a storage file segment.