rocksdb/HISTORY.md
Igor Canadi 8b7ab9951c [CF] Handle failure in WriteBatch::Handler
Summary:
* Add ColumnFamilyHandle::GetID() function. Client needs to know column family's ID to be able to construct WriteBatch
* Handle WriteBatch::Handler failure gracefully. Since WriteBatch is not a very smart function (it takes raw CF id), client can add data to WriteBatch for column family that doesn't exist. In that case, we need to gracefully return failure status from DB::Write(). To do that, I added a return Status to WriteBatch functions PutCF, DeleteCF and MergeCF.

Test Plan: Added test to column_family_test

Reviewers: dhruba, haobo

CC: leveldb

Differential Revision: https://reviews.facebook.net/D16323
2014-02-26 10:10:00 -08:00

2.9 KiB

Rocksdb Change Log

Unreleased (will be released in 3.0)

  • By default, max_background_flushes is 1 and flush process is removed from background compaction process. Flush process is now always executed in high priority thread pool.

Unreleased (will be relased in 2.8)

Public API changes

  • Removed arena.h from public header files.
  • By default, checksums are verified on every read from database
  • Added is_manual_compaction to CompactionFilter::Context
  • Added "virtual void WaitForJoin() = 0" in class Env

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
  • Implemented TailingIterator, 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 -- huge increase in performance -- shared pointers are slow
  • Optimized locking for Get() -- 1fdb3f -- 1.5x QPS increase for some workloads
  • Cache speedup - e8d40c3
  • 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
  • Lots of efforts to move malloc, memcpy and IO outside of locks