diff --git a/HISTORY.md b/HISTORY.md index 9f8b3f258..fa967aded 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -8,6 +8,7 @@ * Add support for updating `full_history_ts_low` option in manual compaction, which is for old timestamp data GC. * Add a mechanism for using Makefile to build external plugin code into the RocksDB libraries/binaries. This intends to simplify compatibility and distribution for plugins (e.g., special-purpose `FileSystem`s) whose source code resides outside the RocksDB repo. See "plugin/README.md" for developer details, and "PLUGINS.md" for a listing of available plugins. * Added memory pre-fetching for experimental Ribbon filter, which especially optimizes performance with batched MultiGet. +* A new, experimental version of BlobDB (key-value separation) is now available. The new implementation is integrated into the RocksDB core, i.e. it is accessible via the usual `rocksdb::DB` API, as opposed to the separate `rocksdb::blob_db::BlobDB` interface used by the earlier version, and can be configured on a per-column family basis using the configuration options `enable_blob_files`, `min_blob_size`, `blob_file_size`, `blob_compression_type`, `enable_blob_garbage_collection`, and `blob_garbage_collection_age_cutoff`. It extends RocksDB's consistency guarantees to blobs, and offers more features and better performance. Note that some features, most notably `Merge`, compaction filters, and backup/restore are not yet supported, and there is no support for migrating a database created by the old implementation. ### Bug Fixes * Since 6.15.0, `TransactionDB` returns error `Status`es from calls to `DeleteRange()` and calls to `Write()` where the `WriteBatch` contains a range deletion. Previously such operations may have succeeded while not providing the expected transactional guarantees. There are certain cases where range deletion can still be used on such DBs; see the API doc on `TransactionDB::DeleteRange()` for details. diff --git a/include/rocksdb/advanced_options.h b/include/rocksdb/advanced_options.h index a7d9f542f..07d15c5bb 100644 --- a/include/rocksdb/advanced_options.h +++ b/include/rocksdb/advanced_options.h @@ -735,7 +735,6 @@ struct AdvancedColumnFamilyOptions { // data is left uncompressed (unless compression is also requested). uint64_t sample_for_compression = 0; - // UNDER CONSTRUCTION -- DO NOT USE // When set, large values (blobs) are written to separate blob files, and // only pointers to them are stored in SST files. This can reduce write // amplification for large-value use cases at the cost of introducing a level @@ -748,7 +747,6 @@ struct AdvancedColumnFamilyOptions { // Dynamically changeable through the SetOptions() API bool enable_blob_files = false; - // UNDER CONSTRUCTION -- DO NOT USE // The size of the smallest value to be stored separately in a blob file. // Values which have an uncompressed size smaller than this threshold are // stored alongside the keys in SST files in the usual fashion. A value of @@ -761,7 +759,6 @@ struct AdvancedColumnFamilyOptions { // Dynamically changeable through the SetOptions() API uint64_t min_blob_size = 0; - // UNDER CONSTRUCTION -- DO NOT USE // The size limit for blob files. When writing blob files, a new file is // opened once this limit is reached. Note that enable_blob_files has to be // set in order for this option to have any effect. @@ -771,7 +768,6 @@ struct AdvancedColumnFamilyOptions { // Dynamically changeable through the SetOptions() API uint64_t blob_file_size = 1ULL << 28; - // UNDER CONSTRUCTION -- DO NOT USE // The compression algorithm to use for large values stored in blob files. // Note that enable_blob_files has to be set in order for this option to have // any effect. @@ -781,7 +777,6 @@ struct AdvancedColumnFamilyOptions { // Dynamically changeable through the SetOptions() API CompressionType blob_compression_type = kNoCompression; - // UNDER CONSTRUCTION -- DO NOT USE // Enables garbage collection of blobs. Blob GC is performed as part of // compaction. Valid blobs residing in blob files older than a cutoff get // relocated to new files as they are encountered during compaction, which @@ -793,7 +788,6 @@ struct AdvancedColumnFamilyOptions { // Dynamically changeable through the SetOptions() API bool enable_blob_garbage_collection = false; - // UNDER CONSTRUCTION -- DO NOT USE // The cutoff in terms of blob file age for garbage collection. Blobs in // the oldest N blob files will be relocated when encountered during // compaction, where N = garbage_collection_cutoff * number_of_blob_files.