10.0.1 (03/05/2025)
Public API Changes
- Add an unordered map of name/value pairs, ReadOptions::property_bag, to pass opaque options through to an external table when creating an Iterator.
- Introduced CompactionServiceJobStatus::kAborted to allow handling aborted scenario in Schedule(), Wait() or OnInstallation() APIs in Remote Compactions.
- Added a column family option disallow_memtable_writes to safely fail any attempts to write to a non-default column family. This can be used for column families that are ingest only.
10.0.0 (02/21/2025)
New Features
- Introduced new
auto_refresh_iterator_with_snapshot
opt-in knob that (when enabled) will periodically release obsolete memory and storage resources for as long as the iterator is making progress and its suppliedread_options.snapshot
was initialized with non-nullptr value. - Added the ability to plug-in a custom table reader implementation. See include/rocksdb/external_table_reader.h for more details.
- Experimental feature: RocksDB now supports FAISS inverted file based indices via the secondary indexing framework. Applications can use FAISS secondary indices to automatically quantize embeddings and perform K-nearest-neighbors similarity searches. See
FaissIVFIndex
andSecondaryIndex
for more details. Note: the FAISS integration currently requires using the BUCK build. - Add new DB property
num_running_compaction_sorted_runs
that tracks the number of sorted runs being processed by currently running compactions - Experimental feature: added support for simple secondary indices that index the specified column as-is. See
SimpleSecondaryIndex
andSecondaryIndex
for more details. - Added new
TransactionDBOptions::txn_commit_bypass_memtable_threshold
, which enables optimized transaction commit (seeTransactionOptions::commit_bypass_memtable
) when the transaction size exceeds a configured threshold.
Public API Changes
- Updated the query API of the experimental secondary indexing feature by removing the earlier
SecondaryIndex::NewIterator
virtual and adding aSecondaryIndexIterator
class that can be utilized by applications to find the primary keys for a given search target. - Added back the ability to leverage the primary key when building secondary index entries. This involved changes to the signatures of
SecondaryIndex::GetSecondary{KeyPrefix,Value}
as well as the addition of a new methodSecondaryIndex::FinalizeSecondaryKeyPrefix
. See the API comments for more details. - Minimum supported version of ZSTD is now 1.4.0, for code simplification. Obsolete
CompressionType
kZSTDNotFinalCompression
is also removed.
Behavior Changes
VerifyBackup
inverify_with_checksum
=true
mode will now evaluate checksums in parallel. As a result, unlike in case of original implementation, the API won't bail out on a very first corruption / mismatch and instead will iterate over all the backup files logging success / degree_of_failure for each.- Reversed the order of updates to the same key in WriteBatchWithIndex. This means if there are multiple updates to the same key, the most recent update is ordered first. This affects the output of WBWIIterator. When WriteBatchWithIndex is created with
overwrite_key=true
, this affects the output only if Merge is used (#13387). - Added support for Merge operations in transactions using option
TransactionOptions::commit_bypass_memtable
.
Bug Fixes
- Fixed GetMergeOperands() API in ReadOnlyDB and SecondaryDB
- Fix a bug in
GetMergeOperands()
that can return incorrect status (MergeInProgress) and incorrect number of merge operands. This can happen whenGetMergeOperandsOptions::continue_cb
is set, both active and immutable memtables have merge operands and the callback stops the look up at the immutable memtable.