# leveldb **Repository Path**: openharmony-sig/leveldb ## Basic Information - **Project Name**: leveldb - **Description**: No description available - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2022-04-16 - **Last Updated**: 2025-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # leveldb ## 简介 > leveldb是一种快速键值存储库,提供从字符串键到字符串值的有序映射。 ![](screenshot/result.gif) ## 下载安装 直接在OpenHarmony-SIG仓中搜索leveldb并下载。 ## 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 1. 库代码存放路径:./third_party/leveldb 2. 修改添加依赖的编译脚本,路径:/developtools/bytrace_standard/ohos.build ``` { "subsystem": "developtools", "parts": { "bytrace_standard": { "module_list": [ "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core", "//developtools/bytrace_standard/bin:bytrace_target", "//developtools/bytrace_standard/bin:bytrace.cfg", "//developtools/bytrace_standard/interfaces/kits/js/napi:bytrace", "//third_party/leveldb:leveldb" ], "inner_kits": [ { "type": "so", "name": "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core", "header": { "header_files": [ "bytrace.h" ], "header_base": "//developtools/bytrace_standard/interfaces/innerkits/native/include" } } ], "test_list": [ "//developtools/bytrace_standard/bin/test:unittest" ] } } } ``` 3. 用命令 ./build.sh --product-name rk3568 --ccache 编译 4. 测试文件编译 在 developtools/hiperf/BUILD.gn 中的 group("hiperf_all") 添加leveldb 的UT测试程序入口: deps += [ "//third_party/leveldb/test:leveldbtest", ] 然后在编译时指定 --build-target hiperf_all参数: ./build.sh --product-name rk3568--ccache --build-target hiperf_all 编译生成的UT测试程序在 \out\rk3568\tests\unittest\developtools\hiperf\ 目录下。 将以下UT测试程序推送到开发板上依次执行即可。 ./arena_test ./autocompact_test ./bloom_test ./c_test ./cache_test ./coding_test ./corruption_test ./crc32c_test ./db_bench ./db_test ./dbformat_test ./env_posix_test ./env_test ./fault_injection_test ./filename_test ./filter_block_test ./hash_test ./issue178_test ./issue200_test ./issue320_test ./log_test ./logging_test ./memenv_test ./no_destructor_test ./recovery_test ./skiplist_test ./status_test ./table_test ./version_edit_test ./version_set_test ./write_batch_test ## 接口说明 1. 打开一个名为 name 的数据库 `Open(const Options& options, const std::string& name, DB** dbptr)` 2. 将 对写入数据库, 成功返回 OK, 失败返回错误状态 `Put(const WriteOptions& options, const Slice& key, const Slice& value)` 3. 从数据删除指定键为 key 的键值对 `Delete(const WriteOptions& options, const Slice& key)` 4. 对数据库进行批量更新写操作 `Write(const WriteOptions& options, WriteBatch* updates)` 5. 查询键为 key 的数据项, 如果存在则将对应的 value 地址存储到第二个参数中 `Get(const ReadOptions& options, const Slice& key, std::string* value)` 6. 返回基于堆内存的迭代器, 可以用该迭代器遍历整个数据库的内容. `NewIterator(const ReadOptions& options)` 7. 返回当前 DB 状态的一个快照 `GetSnapshot()` 8. 释放一个之前获取的快照, 释放后, 调用者不能再使用该快照了 `ReleaseSnapshot(const Snapshot* snapshot)` 9. 导出自身状态相关的信息 `GetProperty(const Slice& property, std::string* value)` 10. 将 key 范围 [*begin,*end] 对应的底层存储压紧 `CompactRange(const Slice* begin, const Slice* end)` ## 约束与限制 在下述版本验证通过: DevEco Studio 版本:3.1 Beta1(3.1.0.200),SDK:API9 Beta5(3.2.10.6) ## 目录结构 ```` |---- leveldb | |---- cmake #cmake的相关文件 | |---- db #主要机制的实现,包括版本管理,compact,业务读写等功能机制实现 | |---- doc #文档 | |---- helpers | |---- memenv #简单完全内存的文件系统,提供操作目录文件接口 | |---- include | |---- leveldb #头文件,外部工程使用leveldb时引用的头文件 | |---- issues #测试问题 | |---- test #单元测试用例 | |---- third_party #三方库代码 | |---- util #通用功能实现 | |---- README.md #安装使用方法 ```` ## 贡献代码 使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/leveldb/issues) 给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-sig/leveldb/pulls) 。 ## 开源协议 本项目基于 [BSD 3-clause License](https://gitee.com/openharmony-sig/leveldb/blob/master/LICENSE) ,请自由地享受和参与开源。