HISTORY.md 9.2 KB
Newer Older
K
kailiu 已提交
1 2
# Rocksdb Change Log

3
### Unreleased
4 5
### New Features
* Support Multiple DB paths in universal style compactions
S
Stanislau Hlebik 已提交
6
* Add feature of storing plain table index and bloom filter in SST file.
7 8 9

### Public API changes
* DBOptions.db_paths now is a vector of a DBPath structure which indicates both of path and target size
S
Stanislau Hlebik 已提交
10
* NewPlainTableFactory instead of bunch of parameters now accepts PlainTableOptions, which is defined in include/rocksdb/table.h
11
* Moved include/utilities/*.h to include/rocksdb/utilities/*.h
L
Lei Jin 已提交
12
* Statistics APIs now take uint32_t as type instead of Tickers. Also make two access functions getTickerCount and histogramData const
S
sdong 已提交
13
* Add DB property rocksdb.estimate-num-keys, estimated number of live keys in DB.
14
* Add DB::GetIntProperty(), which returns DB properties that are integer as uint64_t.
15

16
## 3.3.0 (7/10/2014)
17
### New Features
18
* Added JSON API prototype.
19
* HashLinklist reduces performance outlier caused by skewed bucket by switching data in the bucket from linked list to skip list. Add parameter threshold_use_skiplist in NewHashLinkListRepFactory().
20 21
* RocksDB is now able to reclaim storage space more effectively during the compaction process.  This is done by compensating the size of each deletion entry by the 2X average value size, which makes compaction to be triggerred by deletion entries more easily.
* Add TimeOut API to write.  Now WriteOptions have a variable called timeout_hint_us.  With timeout_hint_us set to non-zero, any write associated with this timeout_hint_us may be aborted when it runs longer than the specified timeout_hint_us, and it is guaranteed that any write completes earlier than the specified time-out will not be aborted due to the time-out condition.
L
Lei Jin 已提交
22
* Add a rate_limiter option, which controls total throughput of flush and compaction. The throughput is specified in bytes/sec. Flush always has precedence over compaction when available bandwidth is constrained.
S
sdong 已提交
23

24 25 26
### Public API changes
* Removed NewTotalOrderPlainTableFactory because it is not used and implemented semantically incorrect.

S
sdong 已提交
27
## 3.2.0 (06/20/2014)
I
Igor Canadi 已提交
28 29 30 31 32 33 34

### Public API changes
* We removed seek compaction as a concept from RocksDB because:
1) It makes more sense for spinning disk workloads, while RocksDB is primarily designed for flash and memory,
2) It added some complexity to the important code-paths,
3) None of our internal customers were really using it.
Because of that, Options::disable_seek_compaction is now obsolete. It is still a parameter in Options, so it does not break the build, but it does not have any effect. We plan to completely remove it at some point, so we ask users to please remove this option from your code base.
S
sdong 已提交
35
* Add two paramters to NewHashLinkListRepFactory() for logging on too many entries in a hash bucket when flushing.
H
Haobo Xu 已提交
36
* Added new option BlockBasedTableOptions::hash_index_allow_collision. When enabled, prefix hash index for block-based table will not store prefix and allow hash collision, reducing memory consumption.
S
sdong 已提交
37 38 39 40

### New Features
* PlainTable now supports a new key encoding: for keys of the same prefix, the prefix is only written once. It can be enabled through encoding_type paramter of NewPlainTableFactory()
* Add AdaptiveTableFactory, which is used to convert from a DB of PlainTable to BlockBasedTabe, or vise versa. It can be created using NewAdaptiveTableFactory()
I
Igor Canadi 已提交
41

H
Haobo Xu 已提交
42 43 44
### Performance Improvements
* Tailing Iterator re-implemeted with ForwardIterator + Cascading Search Hint , see ~20% throughput improvement.

I
Igor Canadi 已提交
45
## 3.1.0 (05/21/2014)
I
Igor Canadi 已提交
46 47 48 49

### Public API changes
* Replaced ColumnFamilyOptions::table_properties_collectors with ColumnFamilyOptions::table_properties_collector_factories

K
Kai Liu 已提交
50 51
### New Features
* Hash index for block-based table will be materialized and reconstructed more efficiently. Previously hash index is constructed by scanning the whole table during every table open.
I
Igor Canadi 已提交
52
* FIFO compaction style
K
Kai Liu 已提交
53

54
## 3.0.0 (05/05/2014)
55 56 57

### Public API changes
* Added _LEVEL to all InfoLogLevel enums
I
xxHash  
Igor Canadi 已提交
58
* 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
59
* MemTableRepFactory::CreateMemTableRep() takes info logger as an extra parameter.
60 61

### New Features
I
Igor Canadi 已提交
62
* Column family support
I
xxHash  
Igor Canadi 已提交
63
* Added an option to use different checksum functions in BlockBasedTableOptions
64
* Added ApplyToAllCacheEntries() function to Cache
65

S
sdong 已提交
66 67
## 2.8.0 (04/04/2014)

K
kailiu 已提交
68
* Removed arena.h from public header files.
69
* By default, checksums are verified on every read from database
S
sdong 已提交
70
* 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
71
* Added is_manual_compaction to CompactionFilter::Context
72
* Added "virtual void WaitForJoin()" in class Env. Default operation is no-op.
I
Igor Canadi 已提交
73
* Removed BackupEngine::DeleteBackupsNewerThan() function
74
* Added new option -- verify_checksums_in_compaction
75
* Changed Options.prefix_extractor from raw pointer to shared_ptr (take ownership)
76
  Changed HashSkipListRepFactory and HashLinkListRepFactory constructor to not take SliceTransform object (use Options.prefix_extractor implicitly)
77
* Added Env::GetThreadPoolQueueLen(), which returns the waiting queue length of thread pools
I
Igor Canadi 已提交
78 79
* Added a command "checkconsistency" in ldb tool, which checks
  if file system state matches DB state (file existence and file sizes)
J
James Pearce 已提交
80
* Separate options related to block based table to a new struct BlockBasedTableOptions.
S
sdong 已提交
81 82 83
* WriteBatch has a new function Count() to return total size in the batch, and Data() now returns a reference instead of a copy
* Add more counters to perf context.
* Supports several more DB properties: compaction-pending, background-errors and cur-size-active-mem-table.
84

I
Igor Canadi 已提交
85 86 87 88
### New Features
* If we find one truncated record at the end of the MANIFEST or WAL files,
  we will ignore it. We assume that writers of these records were interrupted
  and that we can safely ignore it.
S
sdong 已提交
89 90 91
* A new SST format "PlainTable" is added, which is optimized for memory-only workloads. It can be created through NewPlainTableFactory() or NewTotalOrderPlainTableFactory().
* 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().
* Merge operator supports a new function PartialMergeMulti() to allow users to do partial merges against multiple operands.
92
* 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.
D
Dhruba Borthakur 已提交
93
* Geo-spatial support for locations and radial-search.
I
Igor Canadi 已提交
94

K
kailiu 已提交
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
## 2.7.0 (01/28/2014)

### Public API changes

* Renamed `StackableDB::GetRawDB()` to `StackableDB::GetBaseDB()`.
* Renamed `WriteBatch::Data()` `const std::string& Data() const`.
* Renamed class `TableStats` to `TableProperties`.
* Deleted class `PrefixHashRepFactory`. Please use `NewHashSkipListRepFactory()` instead.
* Supported multi-threaded `EnableFileDeletions()` and `DisableFileDeletions()`.
* Added `DB::GetOptions()`.
* Added `DB::GetDbIdentity()`.

### New Features

* Added [BackupableDB](https://github.com/facebook/rocksdb/wiki/How-to-backup-RocksDB%3F)
* Implemented [TailingIterator](https://github.com/facebook/rocksdb/wiki/Tailing-Iterator), a special type of iterator that
  doesn't create a snapshot (can be used to read newly inserted data)
  and is optimized for doing sequential reads.
* Added property block for table, which allows (1) a table to store
  its metadata and (2) end user to collect and store properties they
  are interested in.
* Enabled caching index and filter block in block cache (turned off by default).
* Supported error report when doing manual compaction.
* Supported additional Linux platform flavors and Mac OS.
* Put with `SliceParts` - Variant of `Put()` that gathers output like `writev(2)`
* Bug fixes and code refactor for compatibility with upcoming Column
  Family feature.

### Performance Improvements

* 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]
* Speeding up a way RocksDB deleted obsolete files - no longer listing the whole directory under a lock -- decrease in p99
* 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
* Optimized locking for `Get()` -- [1fdb3f](https://github.com/facebook/rocksdb/commit/1fdb3f7dc60e96394e3e5b69a46ede5d67fb976c) -- 1.5x QPS increase for some workloads
* Cache speedup - [e8d40c3](https://github.com/facebook/rocksdb/commit/e8d40c31b3cca0c3e1ae9abe9b9003b1288026a9)
* 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)
* Lots of efforts to move malloc, memcpy and IO outside of locks