F2
F2 is a key-value store that separates write-hot and write-cold record logs and uses a dedicated read cache for frequently read disk records.
Placement: Its hot tier uses a hybrid log with in-place updates. Both hot-to-cold and cold-to-cold compaction copy live records into the cold log, keeping cleaning traffic away from the hot tail. [1]
Indexing: The cold tier groups hash entries into disk-backed chunks with a smaller in-memory index. Reducing index memory can require an extra lookup before fetching a record; it is not a free reduction in read cost. [1]
False absence: A reader can follow an old hash chain while compaction relocates a matching record and removes its original address. The pinned code checks a compaction-truncation counter after a pending read returns NotFound, then retries over the newly introduced range. A miss on the old chain is not sufficient evidence that the key is absent. [2]
Deletion: A hot-tier tombstone stops a read without falling through to an older cold-tier value. This rule appears in both the immediate and asynchronous read paths. [3]
Relations
- related
- Hybrid log, Value log, Key-value separation, LSM tombstone
Limitations
- The 2025 evaluation disables persistence layers, compression and checksums where supported. Its throughput results do not establish performance with durable acknowledgements enabled. [1]
Citations
- Kanellis et al. From FASTER to F2: Evolving Concurrent Key-Value Store Designs for Large Skewed Workloads. PVLDB 18(12), 2025, sections 4-8.
- FASTER C++ source, revision 332ea7d: pending-read retry after compaction truncation.
- FASTER C++ source, revision 332ea7d: F2Kv immediate and asynchronous reads.
- FASTER documentation: FasterKV C++ Port, F2Kv configuration and API.
Sources & caveats
- Source synthesis of the final 2025 paper (DOI 10.14778/3750601.3750615) and pinned C++ implementation, not an engine benchmark or crash-recovery reproduction.
- F2Kv is a C++ component; the alias FASTER v2 names the paper's design, not a blanket claim about every FASTER package or language binding. [4]