本帖最后由 Buei 于 2023-4-6 22:26 编辑
什么是LevelDB
- LevelDB是一个开源的键值对存储库,由Google开发和维护。它是一个快速、轻量级、高性能的存储库,适用于各种应用程序和平台。LevelDB支持多种语言,如C++、Java、Python等。
- LevelDB采用单一进程、单线程的设计,它的存储方式类似于一个有序的键值对列表。每个键值对都被存储在磁盘上,并且可以按照键的顺序进行迭代。LevelDB的存储引擎使用了一种基于内存的B树数据结构,这种数据结构可以快速地插入、查找和删除数据。
LevelDB还支持数据压缩,可以在磁盘使用更少的空间来存储更多的数据。此外,它还提供了一些高级特性,如事务、快照和迭代器,以便于处理和管理数据。
LevelDB整体架构
LevelDB的优点 - LevelDB采用了写前日志(WAL)和快照(Snapshot)等机制,保证了数据的可靠性和一致性
- LevelDB的存储引擎支持数据分片,可以将大型数据集分成多个小型的数据集进行存储,从而提高了存储的可扩展性。
- LevelDB使用一种称为“后台压缩(Background Compression)”的技术来压缩数据。它会在后台运行一个压缩线程,定期检查数据库中的数据并压缩需要压缩的数据块。这样可以避免在压缩时对数据库的读写操作造成影响。
- LevelDB在存储数据时是按照键的排序方式进行存储的,它并没有明确的容量限制,可以存储非常大的数据 [理论上无限制容量]。而类似MMKV框架限制容量的方式是使用了一种固定大小的映射文件,即在创建MMKV实例时就已经确定了最大容量,超过容量时就不能再写入数据[大概在 4GB 左右]
模块函数
单线程10W次循环
- 如果你的应用需要大规模数据存储、数据持久化、支持多种编程语言,可以考虑使用LevelDB。因为LevelDB采用了基于日志结构的存储引擎,能够支持大规模数据存储,并且提供了多语言支持。
- 虽然速度上虽然没Hashmap快,但LevelDB数据安全比较可靠,同时支持线程安全
解压密码:neko
更新日志: 1.2 2023/04/06 20:00
- 修复键值为空时取出数据出现报错
- 优化写入和读取的代码,单线程10W写入650毫秒
- 由于不清楚 C++数组怎么传递至易语言的数组【取所有键】目前是先返回所有键的字符再分割
- 有谁清楚 C++数组怎么传递至易语言的数组 可以联系我
补充内容 (2023-4-8 23:25):
新版本转至 https://bbs.125.la/forum.php?mod=viewthread&tid=14770677
补充内容 (2023-4-20 10:51):
新版本 1.5 已发布,请前往新帖查看 |