简介

leveldb是一种快速键值存储库,提供从字符串键到字符串值的有序映射。

OpenHarmony其他工具类—leveldb【GN编译】_OpenHarmony

下载安装

直接在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"
         ]
       }
     }
   }
  1. 用命令 ./build.sh --product-name rk3568 --ccache 编译
  2. 测试文件编译

在 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. 将 <key, value> 对写入数据库, 成功返回 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       #安装使用方法

OpenHarmony其他工具类—leveldb【GN编译】_GN编译_02