Islam AbdelRahman aececc209e Introduce ReadOptions::pin_data (support zero copy for keys)
Summary:
This patch update the Iterator API to introduce new functions that allow users to keep the Slices returned by key() valid as long as the Iterator is not deleted

ReadOptions::pin_data : If true keep loaded blocks in memory as long as the iterator is not deleted
Iterator::IsKeyPinned() : If true, this mean that the Slice returned by key() is valid as long as the iterator is not deleted

Also add a new option BlockBasedTableOptions::use_delta_encoding to allow users to disable delta_encoding if needed.

Benchmark results (using https://phabricator.fb.com/P20083553)

```
// $ du -h /home/tec/local/normal.4K.Snappy/db10077
// 6.1G    /home/tec/local/normal.4K.Snappy/db10077

// $ du -h /home/tec/local/zero.8K.LZ4/db10077
// 6.4G    /home/tec/local/zero.8K.LZ4/db10077

// Benchmarks for shard db10077
// _build/opt/rocks/benchmark/rocks_copy_benchmark \
//      --normal_db_path="/home/tec/local/normal.4K.Snappy/db10077" \
//      --zero_db_path="/home/tec/local/zero.8K.LZ4/db10077"

// First run
// ============================================================================
// rocks/benchmark/RocksCopyBenchmark.cpp          relative  time/iter  iters/s
// ============================================================================
// BM_StringCopy                                                 1.73s  576.97m
// BM_StringPiece                                   103.74%      1.67s  598.55m
// ============================================================================
// Match rate : 1000000 / 1000000

// Second run
// ============================================================================
// rocks/benchmark/RocksCopyBenchmark.cpp          relative  time/iter  iters/s
// ============================================================================
// BM_StringCopy                                              611.99ms     1.63
// BM_StringPiece                                   203.76%   300.35ms     3.33
// ============================================================================
// Match rate : 1000000 / 1000000
```

Test Plan: Unit tests

Reviewers: sdong, igor, anthony, yhchiang, rven

Reviewed By: rven

Subscribers: dhruba, lovro, adsharma

Differential Revision: https://reviews.facebook.net/D48999
2015-12-16 12:08:30 -08:00
..
2015-09-14 11:54:47 -07:00
2015-09-25 13:55:11 -07:00
2015-09-28 11:51:32 -07:00
2015-04-25 18:14:27 +09:00
2014-11-07 15:04:30 -08:00
2015-03-17 14:08:00 -07:00
2014-08-19 06:48:21 -07:00
2015-11-24 16:33:09 +03:00
2015-12-09 14:06:23 -08:00
2015-03-17 14:08:00 -07:00
2015-10-01 08:29:31 +13:00
2015-11-16 12:56:21 -08:00
2015-03-17 14:08:00 -07:00
2015-10-19 13:40:44 -07:00
2015-03-17 14:08:00 -07:00
2014-11-20 10:49:32 -08:00
2015-07-16 11:22:21 +02:00
2015-04-25 18:14:27 +09:00
2015-07-01 16:13:56 -07:00
2015-07-20 17:20:40 -07:00
2015-07-20 17:20:40 -07:00
2015-08-12 10:18:59 -07:00
2015-11-24 16:33:09 +03:00
2015-11-04 21:02:20 -08:00
2015-07-01 16:13:56 -07:00
2015-07-01 16:13:56 -07:00
2015-07-01 16:13:56 -07:00
2015-08-31 16:13:29 -07:00
2014-11-21 11:05:28 -05:00
2015-07-01 16:13:56 -07:00
2015-12-11 01:54:48 +09:00
2015-03-17 14:08:00 -07:00
2015-10-01 08:29:31 +13:00