易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

rocksdb 数据库模块1.7 自带哈希hash   [复制链接]

    2024-01-03 14:48:49
    模块控件源码
    易语言资源网
    859 次浏览
    来源链接

由于之前帖子内容太多,这里重新发布一篇,之前帖子地址--> 地址

什么是rocksdb?

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

LevelDB 有什么区别?

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

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

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

rocksdb的优点

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

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

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

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

更新日志   - V1.7  本次更新内容很大[使用前记得备份数据库] [rocksdb内核版本:8.9.1]

  • rocksdb从 1.1 更新到 1.7 已临近半年了,已很多易语言后端项目都是基于rocksdb搭建的
  • 增加 备份/还原 数据库
  • 增加 补全options启动类的大部分参数[目前很多参考官方函数未汉化,未汉化部分懒得汉化了等个有缘人]
  • 增加 哈希表
  • 增加 rocksdb 列族[子表]  一个数据库可创建多个子表
  • 优化 优化指针传递

  • ...

  • 以下为Facebook官方更新说明
  • Avoid destroying the periodic task scheduler's default timer in order to prevent static destruction order issues.



点我下载 (已有 63 次下载)

引用模块


源码文件名 模块文件名
调用例子.e
精易模块.ec
rocksdb 数据库.ec


引用支持库


源码文件名 支持库文件名 支持库标识
Release模块.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
调用例子.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0


[错误报告]   上一篇:模板类,框架排序器举例,自定义数据的快速...     下一篇:磁盘空间不足时清理旧文件&定时删重复文件...