P-ART
is a crash consistent version of Adaptive Radix Tree
(ART). ART is a radix tree variant reducing space consumption by adaptively varying node sizes
based on varid key entries. ART is an ordered index supporting both point and range queries.
Conversion. ART using ROWEX
for concurrency is converted into P-ART
by applying crash detection
and recovery mechanisms, along with cache line flushes and memory fences.
Performance. Compared with FAST&FAIR
that is a state-of-the-art ordered index, P-ART
shows 1.8x, 1.6x, 1.12x, and 1.04x better performance
in YCSB Load and workload A, B, C respectively using random integer keys while 0.54x worse in workload E.
Support. P-ART
supports Insert, Delete, Point Lookup, and Range Scan operations.
Each operation works for both integer and string keys.
Use Case. P-ART
is highly optimized for insertion-dominated workloads since it requires the smallest number of
cache line flushes among RECIPE-converted indexes for persistency. Therefore, P-ART
is suitable to be applied for
the applications using insertion-dominated workloads while also requiring a small portion of range scans.
$ mkdir build
$ cd build
$ cmake ..
$ make -j
$ ./example 10000 4
usage: ./example [n] [nthreads]
n: number of keys (integer)
nthreads: number of threads (integer)