rocksdb

RocksDB 之Write Ahead Log(WAL)

倾然丶 夕夏残阳落幕 提交于 2019-11-29 05:01:00
Overview 对RocksDB 的每次写操作都必写到两个地方: 1)基于内存的数据结构memtable(达到quota 后会flush 至SST file)。 2)预写日志-Write Ahead Log(WAL)。 如果出现异常情况,WAL 可以用来完整恢复memtable 中的数据,恢复db 的原有的状态。默认配置下,RocksDB 通过每次用户写之后flush WAL,来保证进程crash 后的一致性。 WAL 的生命周期 TODO 来源: https://www.cnblogs.com/dengchj/p/11426114.html

Why Apache Kafka Streams uses RocksDB and if how is it possible to change it?

大兔子大兔子 提交于 2019-11-29 02:20:57
问题 During investigation within new features in Apache Kafka 0.9 and 0.10, we had used KStreams and KTables. There is interesting fact, that Kafka uses RocksDB internally. See Introducing Kafka Streams: Stream Processing Made Simple. RocksDB is not written in JVN compatible language, so it needs careful handling of the deployment, as it needs extra shared library (OS dependent). And here there are simple questions: Why Apache Kafka Streams uses RocksDB? How is it possible to change it? I had

RocksDB Version管理概述

拥有回忆 提交于 2019-11-28 10:33:59
  之前再看RocksDB Version管理部分代码,查找网上资料发现关于RocksDB Version管理的内容大部分就是对LevelDB RocksDB version管理的摘抄。对于VersionEdit、VersionBuilder两者基本类似,但是RocksDB中由于新增ColumnFamily的概念,导致两者在Version管理中存在些许的差别,而网上资料对于Version管理中ColumnFamily的部分介绍较少,结合之前代码时的记录,将自己的总结分享出来。   Version管理用于维护当前RocksDB中文件列表,包括磁盘中SSTable文件和内存中的Memtable和Immutable Memtable文件。RocksDB中有Column Family的概念,可以将一个Column Family理解为独立的LSM-Tree。Column Family会维护自己的文件列表,内存中MemTable、Immutable Memtable和磁盘中按层排列的SSTable。不同的Column Family之间不共享Memtable和SSTable。每个Column Family的数据信息由ColumnFamilyData维护。RocksDB中可能会存在多个Column Family,多个Column Family由ColumnFamilySet管理。  

想玩转分布式存储引擎?快来加入 TiKV 团队吧 | PingCAP 招聘季

孤街浪徒 提交于 2019-11-27 15:30:14
上周我们推送了 TiDB 团队职位解读文章 ,当天就有很多简历砸来,我们深深感受到了小伙伴们的热情~ 趁热打铁,今天我司首席架构师 唐刘 老师将带大家了解一下传说中「面试通过率最低、难度最高」的研发团队—— TiKV 团队 。 Team 简介 我们 Team 主要负责 TiKV 的研发工作,下图是我们产品的架构图,大家可以看到,无论是 TiDB 还是 TiSpark,都是从 TiKV 存取数据的,所以我们一定要保证 TiKV 的稳定和高效。 在我们官网招聘页面,TiKV 研发工程师的岗位职责就两个: 负责分布式数据库 TiKV 相关的设计,开发。 负责构建分布式压力测试框架,稳定性测试框架。 是不是特别简单?说实话,我们也想好好写清楚,但无奈 TiKV 这边要做的事情实在是太多,所以这里我会详细介绍一下。 TiKV 研发工程师职位信息: https://pingcap.com/recruit-cn/engineering/tikv-engineer/ TiKV 简介 TiKV 是一个支持事务的、数据强一致的分布式 Key-Value 数据库。也许有人会说,造一个 Key-Value 数据库有啥难的,我不这么认为,因为造一个工业级、通用的、有超高性能的 Key-Value,真的是一件很难的事情。而且这个 Key-Value 数据库上面还加了很多限定词来修饰,要支持这些特性就更难了

RocksDB解析

孤人 提交于 2019-11-27 02:12:55
0. 存储引擎基础 存储引擎的基本功能和数据结构 一个存储引擎需要实现三个基本的功能: write(key, value) 二分查找并插入 read(key) -> return value 二分查找并返回 scan(begin, end) -> return values 求key在某区间内的所有元素。先两次二分查找,确定begin和end的位置。两位置之间的数据就是结果集 values 上述的存储引擎和普通的哈希表不同。最大的区别就是存储引擎内要求数据的存储顺序是 按照key有序 的。这比哈希表更节省空间,也容易实现scan()操作。 乍一看使用普通的有序数组好像就可以解决问题啦,但是普通的有序数组也有个问题:当一个新元素要write插入进来时,为保证数组有序,需要把后面的数据都移动一位,这样开销是很大的。 还有一种有序的结构叫做 平衡二叉树 。如果把数据有序放入平衡二叉树好像也不是不行。但是平衡二叉树会占用很多的额外空间(用于存放节点指针),另外 局部性 很差,读性能(read/scan)低。 ( 在OS的页面置换这一节中我们学过工作集的概念 ,其实这个和局部性很像。硬件、操作系统等等系统,绝大部分时候,执行一次 操作流程会有额外的开销(overhead)。因此很多部件、模块都设计成:连续执行类似或相同 的操作、访问空间相邻的内容时,则将多次操作合并为一次

ceph-kvstore-tool 工具使用详解

烈酒焚心 提交于 2019-11-26 19:24:16
文章目录 简介 使用 总结 简介 ceph-kvstore-tool 工具是用来获取存放在 leveldb 或者 rocksdb 数据库中的键值元数据。并且该工具能够对kvstore中的数据进行配置,就像是对离线后的osd操作osd map一样 使用该工具,需要安装 ceph-test-12.2.1.06-0.el7.centos.x86_64 包 本文该工具的介绍是基于 ceph12.2.1 版本的 使用 执行 ceph-kvstore-tool -h 查看帮助信息如下 [ root@node1 ~ ] # ceph-kvstore-tool -h Usage: ceph-kvstore-tool < leveldb | rocksdb | bluestore-kv > < store path > command [ args .. . ] Commands: list [ prefix ] list-crc [ prefix ] exists < prefix > [ key ] get < prefix > < key > [ out < file > ] crc < prefix > < key > get-size [ < prefix > < key > ] set < prefix > < key > [ ver < N > | in < file > ] rm <