发布于 2017-05-26 23:28:50 | 134 次阅读 | 评论: 0 | 来源: 网友投递
RocksDB key-value存储系统
RocksDB 是一个来自 facebook 的可嵌入式的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,但主要目的还是嵌入式。RocksDB 基于 LevelDB 构建。
RocksDB 5.4.5 发布了,本次更新如下:
公共 API 更改
Support dynamically changing stats_dump_period_sec
option via SetDBOptions().
Added ReadOptions::max_skippable_internal_keys to set a threshold to fail a request as incomplete when too many keys are being skipped while using iterators.
DB::Get in place of std::string accepts PinnableSlice, which avoids the extra memcpy of value to std::string in most of cases.
PinnableSlice releases the pinned resources that contain the value when it is destructed or when ::Reset() is called on it.
The old API that accepts std::string, although discouraged, is still supported.
Replace Options::use_direct_writes with Options::use_direct_io_for_flush_and_compaction. See Direct IO wiki for details.
新功能
Memtable flush can be avoided during checkpoint creation if total log file size is smaller than a threshold specified by the user.
Introduce level-based L0->L0 compactions to reduce file count, so write delays are incurred less often.
(Experimental) Partitioning filters which creates an index on the partitions. The feature can be enabled by setting partition_filters when using kFullFilter. Currently the feature also requires two-level indexing to be enabled. Number of partitions is the same as the number of partitions for indexes, which is controlled by metadata_block_size.
DB::ResetStats() to reset internal stats.
Added CompactionEventListener and EventListener::OnFlushBegin interfaces.
Added DB::CreateColumnFamilie() and DB::DropColumnFamilies() to bulk create/drop column families.
Facility for cross-building RocksJava using Docker.
Bug 修复
Fix WriteBatchWithIndex address use after scope error.
Fix WritableFile buffer size in direct IO.
Add prefetch to PosixRandomAccessFile in buffered io.
Fix PinnableSlice access invalid address when row cache is enabled.
Fix huge fallocate calls fail and make XFS unhappy.
Fix memory alignment with logical sector size.
Fix alignment in ReadaheadRandomAccessFile.
Fix bias with read amplification stats (READ_AMP_ESTIMATE_USEFUL_BYTES and READ_AMP_TOTAL_READ_BYTES).
Fix a manual / auto compaction data race.
Fix CentOS 5 cross-building of RocksJava.
Build and link with ZStd when creating the static RocksJava build.
Fix snprintf's usage to be cross-platform.
Fix build errors with blob DB.
Fix readamp test type inconsistency.
下载地址