# Blob Direct Write With Partitioned Blob Files

DevFeed: [Blob Direct Write With Partitioned Blob Files](<https://devfeed.tech/articles/blob-direct-write-with-partitioned-blob-files-22400.md>)

Original publisher: [Read original article](<http://rocksdb.org/blog/2026/06/20/blob-direct-write-partitioned-blob-files.html>)

Author: Xingbo Wang

Published: 2026-06-20T00:00:00Z

Content type: article

Language: en

Sources: [RocksDB](<https://devfeed.tech/sources/rocksdb.md>)

Topics: [rocksdb](<https://devfeed.tech/topics/rocksdb.md>), [Compression](<https://devfeed.tech/topics/compression.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [compression](<https://devfeed.tech/tags/compression.md>), [rocksdb](<https://devfeed.tech/tags/rocksdb.md>)

## AI overview

This RocksDB article explains Blob Direct Write, which externalizes qualifying large values to blob files earlier in the write path while storing compact BlobIndex references in the WAL and memtable. It also describes partitioning support that lets applications select blob-file destinations, including grouping values with similar TTLs.

## Source excerpt

TL;DR Blob Direct Write moves large-value separation earlier in RocksDB's write path. When enable_blob_files and enable_blob_direct_write are enabled, values at or above min_blob_size can be written directly to blob files during a write, while the WAL and memtable store a compact BlobIndex reference instead of the full value. The companion partitioning support makes this more than a write-path optimization. A column family can have multiple direct-write blob partitions, and applications can provide a BlobFilePartitionStrategy to choose where each large value goes. That turns blob files into a policy-controlled grouping unit. For example, an application can route values with similar TTLs into the same set of blob files while using Universal Compaction for the key and metadata part of the LSM. The reduced-scope v1 implementation landed in pull request #14535, and custom partition selection was added in pull request #14565. Background Integrated BlobDB already separates large values from the LSM tree. The LSM stores keys plus blob references, and blob files store the large value bytes. This reduces compaction write amplification because compaction can rewrite keys and references without repeatedly copying large values. Before Blob Direct Write, however, large values still entered RocksDB through the normal write path first. They were serialized into a write batch, written to the WAL, inserted into the memtable, and later extracted into blob files during flush or compaction. That design is simple and broadly compatible, but it means large values still consume WAL bandwidth and memtable memory before they become out-of-line blobs. Blob Direct Write changes that placement point. The write path can externalize a large value immediately, then publish a BlobIndex through the normal WAL and memtable machinery. Write Path The core write-path logic lives in BlobWriteBatchTransformer and BlobFilePartitionManager. For a regular Put inside a WriteBatch, the transformer does the fo