|
| 1 | +# Rocksdb Change Log |
| 2 | + |
| 3 | +## Unreleased (3.1.0) |
| 4 | + |
| 5 | +### Public API changes |
| 6 | +* Replaced ColumnFamilyOptions::table_properties_collectors with ColumnFamilyOptions::table_properties_collector_factories |
| 7 | + |
| 8 | +## 3.0.0 (05/05/2014) |
| 9 | + |
| 10 | +### Public API changes |
| 11 | +* Added _LEVEL to all InfoLogLevel enums |
| 12 | +* Deprecated ReadOptions.prefix and ReadOptions.prefix_seek. Seek() defaults to prefix-based seek when Options.prefix_extractor is supplied. More detail is documented in https://github.com/facebook/rocksdb/wiki/Prefix-Seek-API-Changes |
| 13 | +* MemTableRepFactory::CreateMemTableRep() takes info logger as an extra parameter. |
| 14 | + |
| 15 | +### New Features |
| 16 | +* Column family support |
| 17 | +* Added an option to use different checksum functions in BlockBasedTableOptions |
| 18 | +* Added ApplyToAllCacheEntries() function to Cache |
| 19 | + |
| 20 | +## 2.8.0 (04/04/2014) |
| 21 | + |
| 22 | +* Removed arena.h from public header files. |
| 23 | +* By default, checksums are verified on every read from database |
| 24 | +* Change default value of several options, including: paranoid_checks=true, max_open_files=5000, level0_slowdown_writes_trigger=20, level0_stop_writes_trigger=24, disable_seek_compaction=true, max_background_flushes=1 and allow_mmap_writes=false |
| 25 | +* Added is_manual_compaction to CompactionFilter::Context |
| 26 | +* Added "virtual void WaitForJoin()" in class Env. Default operation is no-op. |
| 27 | +* Removed BackupEngine::DeleteBackupsNewerThan() function |
| 28 | +* Added new option -- verify_checksums_in_compaction |
| 29 | +* Changed Options.prefix_extractor from raw pointer to shared_ptr (take ownership) |
| 30 | + Changed HashSkipListRepFactory and HashLinkListRepFactory constructor to not take SliceTransform object (use Options.prefix_extractor implicitly) |
| 31 | +* Added Env::GetThreadPoolQueueLen(), which returns the waiting queue length of thread pools |
| 32 | +* Added a command "checkconsistency" in ldb tool, which checks |
| 33 | + if file system state matches DB state (file existence and file sizes) |
| 34 | +* Separate options related to block based table to a new struct BlockBasedTableOptions. |
| 35 | +* WriteBatch has a new function Count() to return total size in the batch, and Data() now returns a reference instead of a copy |
| 36 | +* Add more counters to perf context. |
| 37 | +* Supports several more DB properties: compaction-pending, background-errors and cur-size-active-mem-table. |
| 38 | + |
| 39 | +### New Features |
| 40 | +* If we find one truncated record at the end of the MANIFEST or WAL files, |
| 41 | + we will ignore it. We assume that writers of these records were interrupted |
| 42 | + and that we can safely ignore it. |
| 43 | +* A new SST format "PlainTable" is added, which is optimized for memory-only workloads. It can be created through NewPlainTableFactory() or NewTotalOrderPlainTableFactory(). |
| 44 | +* A new mem table implementation hash linked list optimizing for the case that there are only few keys for each prefix, which can be created through NewHashLinkListRepFactory(). |
| 45 | +* Merge operator supports a new function PartialMergeMulti() to allow users to do partial merges against multiple operands. |
| 46 | +* Now compaction filter has a V2 interface. It buffers the kv-pairs sharing the same key prefix, process them in batches, and return the batched results back to DB. The new interface uses a new structure CompactionFilterContext for the same purpose as CompactionFilter::Context in V1. |
| 47 | +* Geo-spatial support for locations and radial-search. |
| 48 | + |
| 49 | +## 2.7.0 (01/28/2014) |
| 50 | + |
| 51 | +### Public API changes |
| 52 | + |
| 53 | +* Renamed `StackableDB::GetRawDB()` to `StackableDB::GetBaseDB()`. |
| 54 | +* Renamed `WriteBatch::Data()` `const std::string& Data() const`. |
| 55 | +* Renamed class `TableStats` to `TableProperties`. |
| 56 | +* Deleted class `PrefixHashRepFactory`. Please use `NewHashSkipListRepFactory()` instead. |
| 57 | +* Supported multi-threaded `EnableFileDeletions()` and `DisableFileDeletions()`. |
| 58 | +* Added `DB::GetOptions()`. |
| 59 | +* Added `DB::GetDbIdentity()`. |
| 60 | + |
| 61 | +### New Features |
| 62 | + |
| 63 | +* Added [BackupableDB](https://github.com/facebook/rocksdb/wiki/How-to-backup-RocksDB%3F) |
| 64 | +* Implemented [TailingIterator](https://github.com/facebook/rocksdb/wiki/Tailing-Iterator), a special type of iterator that |
| 65 | + doesn't create a snapshot (can be used to read newly inserted data) |
| 66 | + and is optimized for doing sequential reads. |
| 67 | +* Added property block for table, which allows (1) a table to store |
| 68 | + its metadata and (2) end user to collect and store properties they |
| 69 | + are interested in. |
| 70 | +* Enabled caching index and filter block in block cache (turned off by default). |
| 71 | +* Supported error report when doing manual compaction. |
| 72 | +* Supported additional Linux platform flavors and Mac OS. |
| 73 | +* Put with `SliceParts` - Variant of `Put()` that gathers output like `writev(2)` |
| 74 | +* Bug fixes and code refactor for compatibility with upcoming Column |
| 75 | + Family feature. |
| 76 | + |
| 77 | +### Performance Improvements |
| 78 | + |
| 79 | +* Huge benchmark performance improvements by multiple efforts. For example, increase in readonly QPS from about 530k in 2.6 release to 1.1 million in 2.7 [1] |
| 80 | +* Speeding up a way RocksDB deleted obsolete files - no longer listing the whole directory under a lock -- decrease in p99 |
| 81 | +* Use raw pointer instead of shared pointer for statistics: [5b825d](https://github.com/facebook/rocksdb/commit/5b825d6964e26ec3b4bb6faa708ebb1787f1d7bd) -- huge increase in performance -- shared pointers are slow |
| 82 | +* Optimized locking for `Get()` -- [1fdb3f](https://github.com/facebook/rocksdb/commit/1fdb3f7dc60e96394e3e5b69a46ede5d67fb976c) -- 1.5x QPS increase for some workloads |
| 83 | +* Cache speedup - [e8d40c3](https://github.com/facebook/rocksdb/commit/e8d40c31b3cca0c3e1ae9abe9b9003b1288026a9) |
| 84 | +* Implemented autovector, which allocates first N elements on stack. Most of vectors in RocksDB are small. Also, we never want to allocate heap objects while holding a mutex. -- [c01676e4](https://github.com/facebook/rocksdb/commit/c01676e46d3be08c3c140361ef1f5884f47d3b3c) |
| 85 | +* Lots of efforts to move malloc, memcpy and IO outside of locks |
0 commit comments