RocksDB 学习01

本文详细介绍了RocksDB,一个由Facebook开发的高效数据库软件,它支持多种配置,可在不同环境下进行调优。RocksDB的核心组件包括memtable、sstfile和logfile,提供高速缓存和列族等功能,确保在快存和高压力下的优秀性能。文章还探讨了RocksDB的事务处理、一致性视图、多线程压缩和故障容错机制。
摘要由CSDN通过智能技术生成

https://rocksdb.org.cn/doc/Home.html  中文网站

1、简介
       RocksDB是FaceBook起初作为实验性质开发的一个高效数据库软件,旨在充分实现快存上存储数据的服务能力。RocksDB是一个c++库,可以用来存储keys和values,且keys和values可以是任意的字节流,支持原子的读和写。除此外,RocksDB深度支持各种配置,可以在不同的生产环境(纯内存、Flash、hard disks or HDFS)中调优,支持不同的数据压缩算法、和生产环境debug的完善工具。 RocksDB的主要设计点是在快存和高服务压力下性能表现优越,所以该db需要充分挖掘Flash和RAM的读写速率。RocksDB需要支持高效的point lookup和range scan操作,需要支持配置各种参数在高压力的随机读、随机写或者二者流量都很大时性能调优。

2、High Level Architecture
       RocksDB是一个嵌入式的K-V(任意字节流)存储。所有的数据在引擎中是有序存储,可以支持Get(key)、Put(Key)、Delete(Key)和NewIterator()。RocksDB的基本组成是memtable、sstfile和logfile。memtable是一种内存数据结构,写请求会先将数据写到memtable中,然后可选地写入logfile。logfile是一个顺序写的文件。当内存表溢出的时候,数据会flush到sstfile中,然后这个memtable对应的logfile也会安全地被删除。sstfile中的数据也是有序存储以方便查找
3、Features
Column Families
      RocksDB支持将一个数据库实例分片为多个列族。每个DB新建时默认带一个名为"default"的列族,如果一个操作没有携带列族信息,则默认使用这个列族。如果WAL开启,当实例crash再恢复时,RocksDB可以保证用户一个一致性的视图。通过WriteBatch API,可以实现跨列族操作的原子性。
 

Updates
      Put 接口可以把一对k-v数据写入DB,如果k已经存在的话,则已有的v会被新的v覆盖。Write接口可以实现将多个k-v对写入DB,RockdDB可以保证要么所有的k-v对都写入DB,要么一个都不写入。同理,不管哪个k在DB中已经存在,旧值都会被覆盖。

Gets、Iterators、Snapshots
      RocksDB中的key和value完全是byte stream,key和value的大小没有任何限制。Get接口提供用户一种从DB中查询key对应value的方法,MultiGet提供批量查询功能。DB中的所有数据都是按照key有序存储,其中key的compare方法可以用户自定义。Iterator方法提供用户RangeScan功能,首先seek到一个特定的keyÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值