Expand description
pagecache
is a lock-free pagecache and log for building high-performance databases.
Re-exports
pub use self::log::Log;
pub use self::log::LogRead;
Modules
Working with
Log
Structs
A finalized
ConfigBuilder
that can be use multiple times
to open a Tree
or Log
.Top-level configuration for the system.
A metric collector for all pagecache users running in this
process.
A materializer for things that have nothing to
materialize or recover, like a standalone
Log
.A lock-free pagecache which supports fragmented pages
for dramatically improving write throughput.
A pointer to shared lock-free state bound by a pinned epoch’s lifetime.
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.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
Points to either a memory location or a disk location to page-in data from.
A pointer to a location on disk or an off-log blob.
An Error type encapsulating various issues that may come up
in both the expected and unexpected operation of a PageCache.
The result of a
get
call in the PageCache
.The log may be configured to write data
in several different ways, depending on
the constraints of the system using it.
Traits
A user of a
PageCache
needs to provide a Materializer
which
handles the merging of page fragments.Functions
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.
Enter an epoch which allows us to safely
access shared data structures without
using mutexes.
Type Definitions
A pointer to an blob blob.
A guard used with epoch-based reclamation (EBR)
to track threads accessing shared lock-free
data structures, and safely drop data
after any thread may have accessed it.
A log file offset.
A logical sequence number.
Allows arbitrary logic to be injected into mere operations of the
PageCache
.A page identifier.
The top-level result type for dealing with
the PageCache.
An offset for a storage file segment.