找回密码
 立即注册
搜索
热搜: 加密 软件 破解
查看: 456|回复: 0

基于Facebook开源的 rocksdb 数据库模块 [复制链接]

[复制链接]

该用户从未签到

发表于 2023-5-18 20:51:52 | 显示全部楼层 |阅读模式



什么是rocksdb?


  • RocksDB是一个 持久的键值存储库 ,它是用C++编写的,适合在快速、低延迟的存储设备上存储数据。它是由Facebook数据库工程团队开发和维护。



LevelDB 有什么区别?


  • RocksDB和LevelDB都是基于LSM-Tree的嵌入式键值存储库,但RocksDB是在LevelDB的基础上进行了优化和增强

    [size=1pc]




  • RocksDB可以支持 多线程 合并文件,而LevelDB是 单线程
  • RocksDB可以根据需要开辟 多个Memtable ,而LevelDB只有 一个Memtable
  • RocksDB可支持多种压缩算法,而LevelDB只支持snappy

    [size=1pc]

  • 单线程模式下 LevelDB 可能稍微快一点,而在多线程下 RocksDB 就会发挥出它的优势了

    [size=1pc]




rocksdb的优点

  • 高性能:RocksDB 使用了很多优化技术,如多线程、高效的数据结构等,因此具有非常高的读写性能。
  • 可扩展性:RocksDB 可以处理大规模的数据,并支持自动分片和负载均衡等功能,因此可以很好地应对高并发访问。
  • 可靠性:RocksDB 支持 ACID 事务,保证数据的一致性和可靠性。
  • 灵活性:RocksDB 支持多种数据格式,包括内存映射文件、纯内存等,让用户可以灵活选择适合自己的存储方式。
  • RocksDB在存储数据时是按照键的排序方式进行存储的,它并没有明确的容量限制,可以存储非常大的数据 [理论上无限制容量]。而类似MMKV框架限制容量的方式是使用了一种固定大小的映射文件,即在创建MMKV实例时就已经确定了最大容量,超过容量时就不能再写入数据[大概在 4GB 左右]




  • 另一款开源 leveldb的帖子



下图为 rocksdb和leveldb  单/多线程 写入对比

理论上在单线程下 RocksDB应该比levldb稍微略慢一点

图中可看到300W多线程写入RocksDB一瞬间完成

更新日志  2023/05/15 12:00  - V1.2


  • 增加 取/置长整数
  • 增加 rocksdb_启动参数 [最大后台flush数,最大后台compaction数,允许并发写入memtable,允许写线程自适应yield,允许流水线写入]
  • 增加 rocksdb_Flush 函数 [将缓存写入硬盘]  用于将内存中的数据刷入磁盘中
  • 增加  rocksdb_启动参数 [IncreaseParallelism并发度]  可以增加并行度,提高读写性能,但增加并行度也会增加CPU的使用率
  • 优化 销毁 函数 默认为安全销毁
  • 优化 快速清空 函数



编译下和未编译下运行耗时相差很大,建议编译后再测试




注册成功后,请积极发布主题帖分享软件,发布主题帖可以提升等级获得回帖权限,也可以获得金币进行下载软件
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|689网站

GMT+8, 2025-4-4 05:00 , Processed in 0.777252 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表