精品软件 400多个 139my辅 3DESIGN 567网盘

RocksDB v6.16.4

RocksDB
软件大小: 7.34 MB 更新时间: 2021-12-30 应用平台: WinAll 软件分类: 编程开发

RocksDB是可以帮助用户设计具有键值存储服务功能模块的一个引擎库,适合大部分快速储存服务使用,例如你需要构建数据存储到硬件设备的功能模块就可以添加这个库,将其嵌入到你的运用系统,当需要发送数据到闪存卡的时候就自动调用RocksDB相关的功能执行数据储存,软件可用于多种快速储存设备,例如内存、硬盘等设备的快速储存都可以通过这款软件配置相关的持久键值存储方案,支持多线程压缩数据,提升数据读写效率,特别适合在单个数据库中存储多个TB的数据!

RocksDB软件功能

RocksDB是具有键/值接口的存储引擎,其中键和值是任意字节流。这是一个C ++库。它是根据LlDB在Facebook上开发的,并为LlDB API提供了向后兼容的支持。

RocksDB支持各种存储硬件,其中以快速刷新为首要重点。它使用志结构化数据库引擎进行存储,完全用C ++编写,并具有一个称为RocksJava的Java包装器。

RocksDB可以适应各种生产环境,包括纯内存,闪存,硬盘或远程存储。在RocksDB无法自动适应的情况下,提供了高度灵活的配置设置,以允许用户对其进行调整。它支持各种压缩算法以及用于生产支持和调试的良好工具。

高能

RocksDB使用完全用C ++编写的志结构化数据库引擎,以实现最佳能。键和值只是任意大小的字节流。

针对快速存储进行了优化

RocksDB针对快速,低延迟的存储(例如闪存驱动器和高速磁盘驱动器)进行了优化。RocksDB充分利用了闪存或RAM提供的高读写速率的全部潜力。

适应强

RocksDB可适应不同的工作负载。从MyRocks等数据库存储引擎到应用程序数据缓存到嵌入式工作负载,RocksDB可以用于各种数据需求。

基本和高级数据库作

RocksDB提供了一些基本作,例如打开和关闭数据库,读写更高级的作(例如合并和压缩过滤器)。

RocksDB软件特色

专为希望在本地或远程存储系统上存储多达几TB数据的应用而设计。

为在快速存储中存储中小型键值而优化-闪存设备或内存中

它在具有多个内核的处理器上运行良好

RocksDB教程

入门概述

RocksDB库提供了一个持久键值存储。键和值是任意字节数组。根据用户指定的比较器功能,在键值存储中对键进行排序。

该库由Facebook数据库工程团队,并基于LlDB,由Google的Sanjay Ghemawat和Jeff Dean进行。

打开数据库

ckdb数据库的名称与文件系统目录相对应。数据库的所有内容都存储在此目录中。以下示例显示了如何打开数据库,并在必要时创建它:

如果要在数据库已存在的情况下引发错误,请在cksdb :: DB :: Open调用之前添加以下行:

地位

您可能已经注意到cksdb::Status上面的类型。RocksDB中的大多数函数都可能返回此类型的值,而这些函数可能会遇到错误。您可以这样的结果是否还可以,还可以打印相关的错误消息:

关闭数据库

完成数据库作后,只需删除数据库对象。例如:

读写

数据库提供了Put,Delete和Get方法来修改/查询数据库。例如,以下代码将存储在下的值移动key1到key2。

RocksDB中的内存使用情况

在这里,我们尝试解释RocksDB如何使用内存。RocksDB中有几个有助于内存使用的组件:

1、块缓存

2、索引和布隆过滤器

3、内存表

4、迭代器固定的块

我们将依次描述它们。

对于一些正在进行的项目,可以提高内存效率。

块缓存

块缓存是RocksDB缓存未压缩数据块的地方。您可以通过设置BlockBasedTableOptions的block_cache属来配置块缓存的大小:

如果在块缓存中找不到该数据块,则RocksDB使用缓冲的IO从文件中读取数据块。这意味着它还使用作系统的页面缓存来存储通常包含压缩数据的原始文件块。在某种程度上,RocksDB的缓存分为两层:块缓存和页面缓存。与直觉相反,减小块高速缓存大小不会增加IO。保存的内存可能会用于页面缓存,因此将缓存更多数据。但是,CPU使用率可能会增加,因为RocksDB需要解压缩从页面缓存读取的页面。

要了解正在使用多少内存块缓存,可以在块缓存对象上调用函数GetUsage()或在数据库对象上调用getPperty():

索引和过滤器块

索引和过滤器块可能是大内存用户,默认情况下,它们不计入您分配给块缓存的内存中。有时这可能会给用户造成混乱:您为块缓存分配了10GB,但是RocksDB使用的是15GB的内存。通常通过索引和Bloom过滤器块来解释差异。

我们不断使索引和过滤器变得更紧凑。要利用最新的改进,请通过来使用最新的格式版本BlockBasedTableOptions.format_version。需要明确启用其他一些较新的功能:

设置BlockBasedTableOptions.optimize_filters_for_memory更多jemalloc友好的Bloom过滤器大小。

还考虑使用新的色带滤光片

内存表

您可以将内存表视为内存中的写入缓冲区。每个新的键值对都首先写入内存表。内存大小由选项控制wte_buffer_size。除非使用许多列系列和/或数据库实例,否则通常不是很大的内存消耗者。但是,存储器大小反而会影响写放大:存储器的更多内存产生更少的写放大。如果您增加了内存大小,请确保也增加L1大小!L1的大小由选件控制max_bytes_for_ll_base。

要获得当前的内存大小,可以使用:

迭代器固定的块

迭代器固定的块通常不会对整体内存使用产生太大影响。但是,在某些情况下,当您同时进行10万次读取事务时,可能会给内存造成压力。固定块的内存使用情况很容易计算。每个迭代器为每个L0文件精确固定一个数据块,为每个L1 +级别精确固定一个数据块。因此,固定块的总内存使用量约为num_iterators * block_size * ((num_lls-1) + num_l0_files)。要获取有关此内存使用情况的统计,请在块缓存对象上调用GetPinnedUsage()或在db对象上调用getPperty():