统一存储简介

服务概述

TMF 统一存储组件提供完整的持久化存储解决方案,组件 SDK 提供多样的存储方式以满足不同的存储需求。目前 TMF 统一存储组件由数据库存储(WCDB)与 键值对存储(MMKV)及 文件存储 三部分组成。

  • WCDB 是一个高效、完整、易用的移动数据库框架,基于 SQLCipher,支持 iOS、macOS 和 Android,提供数据库存储、键值对存储、文件存储三种存储方式。
  • MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。
  • 文件存储是基于 Android 原生 File 封装的接口,提供了加解密读写文件的能力,提高了文件存储的简便性和安全性。

应用场景

TMF 统一存储技术,可以应用于所有涉及数据存储、数据持久化的业务。提供客户端持久化存储解决方案,底层提供多样化的存储方式以满足不同的存储需求,支持数据加密功能。可以视为传统数据存储的更优替代技术组件。

产品优势

数据库存储(WCDB)

TMF 统一存储组件中 WCDB 部分具有以下优势:

  • 易用,WCDB 支持一句代码即可将数据取出并组合为 object。
    • WINQ(WCDB语言集成查询):通过 WINQ,开发者无须为了拼接 SQL 的字符串而写一大坨胶水代码。
  • 高效,WCDB 通过框架层和 SQLCipher 源码优化,使其更高效的表现。
    • 多线程高并发:WCDB 支持多线程读与读、读与写并发执行,写与写串行执行。 下面是 WCDB 与 FMDB 的一系列性能对比:
      • 单线程
        • 读操作性能测试:该测试为从数据库中取出所有数据,并拼装为object。
        • 写操作性能测试:该测试为将 object 的数据不断插入到数据库中(不使用事务)。
        • 批量写操作性能测试:该测试为将 object 的数据批量插入数据库(使用事务)。
        • WCDB 写操作和批量写操作的性能分别优于 FMDB 28% 和 180% 。
      • 多线程
        • 多线程读操作性能测试:该测试同时启动两个线程,分别从数据库中取出所有数据,并拼装为object。
        • 多线程读写操作性能测试:该测试同时启动两个线程,一个线程从数据库中取出所有数据,并拼装为 object;另一个将 object 的数据批量插入到数据库中。
        • 多线程写操作性能测试:该测试同时启动两个线程,分别将 object 的数据批量插入数据库。
        • WCDB 的多线程读写操作性能优于 FMDB 62% ,而多线程读操作基本与 FMDB 持平。FMDB 在多线程写测试中,直接返回错误 SQLITE_BUSY,因此无法比较。而基于 SQLite 的机制,WCDB 的多线程写操作实质也是串行执行,但不会出错导致操作中断。
      • 初始化
        • 初始化性能测试:该测试针对创建 SQLite 连接的初始化过程,即创建 SQLite 连接,并设置最基本的配置。SQLite 的初始化速度会根据表的数量而增加。
        • WCDB 通过针对性的优化,使得初始化性能优于 FMDB 107% 。
  • 完整,WCDB 覆盖了数据库相关各种场景的所需功能。
    • 加密:WCDB 提供基于 SQLCipher 的数据库加密。
    • 损坏修复:WCDB 内建了 Repair Kit 用于修复损坏的数据库。
    • 反注入:WCDB 内建了对 SQL 注入的保护。

键值对存储(MMKV)

TMF 统一存储组件中 MMKV 部分性能极佳:

循环写入随机的 int 1千次,我们有如下性能对比:

  • 下面是 iOS 端 MMKV 与 NSUserDefaults 性能对比:
  • 下面是 Android 端 MMKV 与 SharedPreferences 性能对比:

文件存储(File)

文件存储基于系统原生文件操作,提供了加密能力,封装文件加解密/明文读写及文件删除接口,无需关注文件存储过程中繁杂的try/catch流程,提高了使用的简便性。

Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""