精易论坛

标题: 基于谷歌开源的 LevelDB 键值库封装模块 [打印本页]

作者: Buei    时间: 2023-4-6 16:39
标题: 基于谷歌开源的 LevelDB 键值库封装模块
本帖最后由 Buei 于 2023-4-6 22:26 编辑



什么是LevelDB


LevelDB还支持数据压缩,可以在磁盘使用更少的空间来存储更多的数据。此外,它还提供了一些高级特性,如事务、快照和迭代器,以便于处理和管理数据。
LevelDB整体架构
  • LevelDb本质上是一套存储系统以及在这套存储系统上提供的一些操作接口。为了便于理解整个系统及其处理流程,我们可以从两个不同的角度来看待LevleDb:静态角度和动态角度。从静态角度,可以假想整个系统正在运行过程中(不断插入删除读取数据),此时我们给LevelDb照相,从照片可以看到之前系统的数据在内存和磁盘中是如何分布的,处于什么状态等;从动态的角度,主要是了解系统是如何写入一条记录,读出一条记录,删除一条记录的,同时也包括除了这些接口操作外的内部操作比如compaction,系统运行时崩溃后如何恢复系统等等方面。

  LevelDB的优点
  • LevelDB采用了写前日志(WAL)和快照(Snapshot)等机制,保证了数据的可靠性和一致性
  • LevelDB的存储引擎支持数据分片,可以将大型数据集分成多个小型的数据集进行存储,从而提高了存储的可扩展性。
  • LevelDB使用一种称为“后台压缩(Background Compression)”的技术来压缩数据。它会在后台运行一个压缩线程,定期检查数据库中的数据并压缩需要压缩的数据块。这样可以避免在压缩时对数据库的读写操作造成影响。
  • LevelDB在存储数据时是按照键的排序方式进行存储的,它并没有明确的容量限制,可以存储非常大的数据 [理论上无限制容量]。而类似MMKV框架限制容量的方式是使用了一种固定大小的映射文件,即在创建MMKV实例时就已经确定了最大容量,超过容量时就不能再写入数据[大概在 4GB 左右]


  • 如果你的应用需要大规模数据存储、数据持久化、支持多种编程语言,可以考虑使用LevelDB。因为LevelDB采用了基于日志结构的存储引擎,能够支持大规模数据存储,并且提供了多语言支持。
  • 虽然速度上虽然没Hashmap快,但LevelDB数据安全比较可靠,同时支持线程安全



更新日志: 1.2   2023/04/06 20:00






补充内容 (2023-4-8 23:25):
新版本转至 https://125.confly.eu.org/forum.php?mod=viewthread&tid=14770677

补充内容 (2023-4-20 10:51):
新版本 1.5 已发布,请前往新帖查看

leveIDB.zip

497.19 KB, 下载次数: 71, 下载积分: 精币 -2 枚

1.2


作者: jiang910615    时间: 2023-4-6 16:41
学习学习
作者: sinewtec    时间: 2023-4-6 16:42
老规矩,先回后下!!!!!!!
作者: xh1020    时间: 2023-4-6 16:44
学习学习
作者: chr8828    时间: 2023-4-6 16:47

学习学习

作者: wjswzj0    时间: 2023-4-6 16:49
学习学习
作者: quary    时间: 2023-4-6 16:50
谢谢楼主分享!!!
好人一生平安!!!

作者: quary    时间: 2023-4-6 16:50
感谢大神为E添砖加瓦
作者: 安哥    时间: 2023-4-6 17:01
感谢大神为E添砖加瓦
作者: 不苦小和尚    时间: 2023-4-6 17:03
主要用在哪里?可以加密吗
作者: Buei    时间: 2023-4-6 17:07
不苦小和尚 发表于 2023-4-6 17:03
主要用在哪里?可以加密吗

不是加密,类似易语言的hash哈希表能快速匹配到对应键的写入值,相比hash存储更安全
作者: xiaoj88    时间: 2023-4-6 17:53
66666666666666666
作者: 文西哥    时间: 2023-4-6 18:53
不是加密,类似易语言的hash哈希表能快速匹配到对应键的写入值,相比hash存储更安全
作者: 为爱好停留    时间: 2023-4-6 19:11
感谢分享。。。
作者: 小小C    时间: 2023-4-6 19:40
下载看看实现方式
作者: 11053    时间: 2023-4-6 19:43
键值表,也就相当于字典吧
作者: 飘零    时间: 2023-4-6 19:59
感谢分享,很给力!~
作者: mier001    时间: 2023-4-6 20:14
支持一下。。。。。
作者: xiaoniu1230    时间: 2023-4-6 20:16
感谢分享 支持开源 !
作者: mooo    时间: 2023-4-6 20:31
谢谢分享....
作者: 神话1999    时间: 2023-4-6 21:42
读不出来键呢
作者: Buei    时间: 2023-4-6 21:45
神话1999 发表于 2023-4-6 21:42
读不出来键呢

先写入键(Key)再读取你写入的键名
作者: 易语言QA    时间: 2023-4-6 22:05
开源精神必须支持~
作者: 神话1999    时间: 2023-4-6 22:06
Buei 发表于 2023-4-6 21:45
先写入键(Key)再读取你写入的键名

0.0   好了 谢谢大佬
作者: 夏亿    时间: 2023-4-6 22:31
支持开源~!感谢分享
作者: 动鸡不淳    时间: 2023-4-6 22:45
基于谷歌开源的 LevelDB 键值库封装模块
作者: xxm1    时间: 2023-4-6 23:17
{:3_41:}{:3_41:}{:3_41:}{:3_41:}
作者: a358498501    时间: 2023-4-6 23:37
支持开源~!感谢分享
作者: 794229345    时间: 2023-4-6 23:43
膜拜大佬!大佬牛B!
作者: 黑白之翼    时间: 2023-4-6 23:59
注册了
作者: 396384183    时间: 2023-4-7 01:01
感谢分享
作者: a5661333    时间: 2023-4-7 01:36
        感谢分享,很给力!~
作者: 一一一2    时间: 2023-4-7 08:16
感谢分享!
作者: webmaster999    时间: 2023-4-7 08:44
        感谢分享,很给力!~
作者: impkq    时间: 2023-4-7 09:01
感谢分享,密码拿来
作者: mengxinmeng    时间: 2023-4-7 09:34
感谢分享,密码拿来
作者: faith0    时间: 2023-4-7 09:34
感谢分享,很给力!~
作者: dlq663    时间: 2023-4-7 09:50

作者: kanhaiyouyue    时间: 2023-4-7 09:58
9999999999999999999999999999999999999999999999999
作者: kanhaiyouyue    时间: 2023-4-7 10:02
这个和哈希比哪个更快?
作者: kanhaiyouyue    时间: 2023-4-7 10:07
老板建群,这个库要持续更新下去,太实用了
作者: kanhaiyouyue    时间: 2023-4-7 11:19
传指针试试
作者: kanhaiyouyue    时间: 2023-4-7 11:20
楼主加群,大神都在这个群里:166270122
作者: kanhaiyouyue    时间: 2023-4-7 11:21
维数+成员数+指针
作者: kanhaiyouyue    时间: 2023-4-7 11:46
老板能否把高级功能加上,如事务、快照和迭代器等等,最好是搞成支持库的形式,类似mysql支持库的命令
作者: 站在月光下想你    时间: 2023-4-7 13:15
干啥用的
作者: lm88818    时间: 2023-4-7 14:11
感谢分享,很给力!~
作者: 街边太多人与车    时间: 2023-4-7 14:18
基于谷歌开源的 LevelDB 键值库封装模块
作者: mmlai8    时间: 2023-4-7 15:04
感谢分享,很给力!~
作者: 794229345    时间: 2023-4-7 15:58
感谢楼主分享!
作者: 安陆华硕专卖    时间: 2023-4-7 16:20
感谢分享,很给力!~
作者: 胖虎O    时间: 2023-4-7 17:03
感谢分享,下载学习
作者: Buei    时间: 2023-4-7 18:10
kanhaiyouyue 发表于 2023-4-7 11:46
老板能否把高级功能加上,如事务、快照和迭代器等等,最好是搞成支持库的形式,类似mysql支持库的命令 ...

好的,等有空我看下
作者: ゞωǒ天堂牧心    时间: 2023-4-7 18:17
LevelDB数据安全比较可靠
作者: imoling    时间: 2023-4-7 19:29
好像有点意思,有空好好研究一下,那是不是可以当做像access这样的简易数据库使用,这个有没有表的定义,还是单纯的只是value => keys.这样其他都没了。。
作者: weihua2018    时间: 2023-4-7 20:05
干什么用的,有例子吗
作者: imoling    时间: 2023-4-7 20:06
我看c++上还有关闭 销毁  迭代器 等,不关闭不会出问题么。
作者: caoljie    时间: 2023-4-7 20:13
LevelDB数据安全比较可靠
作者: 亿泽    时间: 2023-4-7 22:41
感谢分享!
作者: Buei    时间: 2023-4-7 23:08
本帖最后由 Buei 于 2023-4-7 23:16 编辑



更新日志: 1.3   2023/04/07 22:00







LevelDB.zip

499.34 KB, 下载次数: 17, 下载积分: 精币 -2 枚

1.3


作者: Buei    时间: 2023-4-7 23:12
imoling 发表于 2023-4-7 20:06
我看c++上还有关闭 销毁  迭代器 等,不关闭不会出问题么。

在C++上返回之前已经做了销毁
作者: Buei    时间: 2023-4-7 23:13
weihua2018 发表于 2023-4-7 20:05
干什么用的,有例子吗

常用的hash表比较相似
作者: aadada    时间: 2023-4-7 23:14
缓存中间件可以
作者: 咸鱼666    时间: 2023-4-8 01:48
        支持开源~!感谢分享
作者: incwin    时间: 2023-4-8 02:40
缓存中间件可以

作者: Ctrl0101    时间: 2023-4-8 03:14
感谢分享
作者: 不苦小和尚    时间: 2023-4-8 06:42
还行,就是取所有键有点慢
作者: sksksz    时间: 2023-4-8 13:08
感谢分享,很给力!~
作者: yxl2008    时间: 2023-4-8 13:15
感谢分享,很给力!~!
作者: zytlj    时间: 2023-4-8 15:06
谢谢分享。
作者: h4xk    时间: 2023-4-8 15:43
先顶再看!!!!
作者: jysoft2022    时间: 2023-4-8 17:30
谢谢分享
作者: static007    时间: 2023-4-8 20:27

作者: 易达通讯    时间: 2023-4-8 20:29
由于不清楚 C++数组怎么传递至易语言的数组【取所有键】目前是先返回所有键的字符再分割
作者: 晓风残月梦微凉    时间: 2023-4-8 22:36
如果您要查看本帖隐藏内容请回复
作者: kaxin    时间: 2023-4-9 03:14
        小小心意,请老板继续优化.....
作者: CaiACha    时间: 2023-4-9 12:41
感谢分享,很给力!~
作者: qq85668684    时间: 2023-4-9 13:38
解压密码回复可见
作者: 寻找星空    时间: 2023-4-9 14:33
最新的版本帖子被删除了?
作者: Buei    时间: 2023-4-9 14:59
寻找星空 发表于 2023-4-9 14:33
最新的版本帖子被删除了?

稍等一下,在审核
作者: 794229345    时间: 2023-4-9 21:31
感谢分享
作者: 胖虎O    时间: 2023-4-9 21:46
最新版本咋还没审核好
作者: Buei    时间: 2023-4-9 21:50
胖虎O 发表于 2023-4-9 21:46
最新版本咋还没审核好

审核刚刚过了,发现排版有点BUG重新编辑又要审核
作者: d425923971    时间: 2023-4-9 22:13
感谢分享,下载看看
作者: IIIllIIl    时间: 2023-4-9 22:18
感谢分享
作者: 胖虎O    时间: 2023-4-9 23:06
Buei 发表于 2023-4-9 21:50
审核刚刚过了,发现排版有点BUG重新编辑又要审核

坐等新版本
作者: Buei    时间: 2023-4-9 23:30
胖虎O 发表于 2023-4-9 23:06
坐等新版本

ok  终于过审了
作者: 变成自己    时间: 2023-4-10 03:08
以前翻谷歌目录就有看到过,不清楚是什么
作者: Buei    时间: 2023-4-10 11:08
变成自己 发表于 2023-4-10 03:08
以前翻谷歌目录就有看到过,不清楚是什么

类似哈希表应该比较清楚
作者: 恶魔天尊    时间: 2023-4-10 12:45
感谢分享源码
作者: cymx735243556    时间: 2023-4-10 15:25

感谢分享,下载看看
作者: 花荡无痕    时间: 2023-4-10 15:56
希望继续优化
作者: Buei    时间: 2023-4-10 16:10
本帖最后由 Buei 于 2023-4-10 17:33 编辑
Buei 发表于 2023-4-7 23:08
更新日志: 1.3   2023/04/07 22:00
初始化时增加随机写

-
更新日志: 1.4   2023/04/09 21:00





注意:如果要大批量多线程测试请编译后再测试,调试模式大批量多线程会且循环写入CPU可能会100


LevelDB.zip

509.03 KB, 下载次数: 10, 下载积分: 精币 -2 枚

1.4


作者: xp26    时间: 2023-4-10 19:12
感谢分享,很给力!~
作者: kanhaiyouyue    时间: 2023-4-10 20:37
请继续优化。。。。。。。。。。。。。。。。。。。
作者: 菜鸟小杰    时间: 2023-4-10 20:49
66666666666666666666666666
作者: caskywz    时间: 2023-4-10 21:06
LevelDB...................
作者: fyhfzt    时间: 2023-4-11 03:14
感谢分享,很给力!~
作者: lyliu    时间: 2023-4-11 08:56
感谢分享,
作者: ppppzj    时间: 2023-4-11 12:39
感谢分享,很给力!~





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4