HarmonyOS鸿蒙Next支持哪些类型数据库,安卓与ios使用的数据库是否都能够全部支持,是否需要进行数据转换与迁移?

HarmonyOS鸿蒙Next支持哪些类型数据库,安卓与ios使用的数据库是否都能够全部支持,是否需要进行数据转换与迁移? 鸿蒙Next支持哪些类型数据库,安卓与ios使用的数据库是否都能够全部支持,是否需要进行数据转换与迁移?有没有具体的实现方案

4 回复

Harmony支持的数据库类型包含以下四种:PersistentStorage用户首选项(Preferences)键值型数据库(KV-Store)关系型数据库(RelationalStore)在对应链接下均有使用场景介绍和示例代码。

关系型数据库基于SQLite实现,是否需要进行数据转换与迁移取决于你这边的数据类型和业务场景,可以详细描述您的场景和需求。

其适用的场景分别如下:

PersistentStorage 用户首选项(Preferences) 键值型数据库(KV-Store) 关系型数据库(RelationalStore)
介绍 PersistentStorage持久化存储UI状态,通常和AppStorage配合使用,选择AppStorage存储的数据写入磁盘,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。 Preferences是用于存储应用程序设置的轻量级数据库。它提供了一种简单的机制来存储和检索应用程序的配置信息,数据通常以键值对的形式存储。Preferences的数据是同步存储的,适用于存储少量的结构化数据。 一种非关系型数据库,其数据以“键值”对的形式进行组织、索引和存储,其中“键”作为唯一标识符。 关系型数据库基于SQLite组件,适用于存储包含复杂关系数据的场景。
适用场景 ①需要持久化存储UI状态的应用程序。②需要在UI实例初始化后进行持久化操作。③希望在应用程序关闭后重新启动时恢复上次的状态。 ①需要存储应用程序的配置信息。②需要支持数据的快速读取和写入。③希望在应用程序的不同部分共享数据。④应用保存用户的个性化设置(字体大小,是否开启夜间模式)。 存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等。 数据之间有较强的对应关系场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等;公司的雇员信息,需要包括姓名、工号、职位等。
是否支持加密 —— 不支持。 支持,参考数据库加密文档 支持,参考数据库加密文档
限制条件 ①不支持嵌套对象(对象数组,对象的属性是对象等)。②PersistentStorage适用于存储<2KB的轻量数据,其同步写入磁盘机制会影响UI线程性能。需存储大量数据时,应改用数据库API以避免界面渲染卡顿。更多详细参考官方文档 ①首选项无法保证多进程并发安全,易导致数据损坏,不支持多进程使用。②Key键为string类型,非空且长度≤1024字节。③字符串类型的Value使用UTF-8编码,可为空,非空时长度不超过16MB。③内存随数据量增加而增长,建议存储≤50MB轻量数据,大数据的同步持久化操作易引发主线程卡顿,可能出现appfreeze问题。更多详细参考官方文档 ①设备协同数据库,针对每条记录,Key的长度≤896 Byte,Value的长度<4 MB。②单版本数据库,针对每条记录,Key的长度≤1 KB,Value的长度<4 MB。③每个应用程序最多支持同时打开16个键值型分布式数据库。④键值型数据库事件回调方法中不允许进行阻塞操作,例如修改UI组件。更多详细参考官方文档 ①为保证数据的准确性,数据库同一时间只能支持一个写操作。②为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。③当应用被卸载完成后,设备上的相关数据库文件及临时文件会被自动清除。更多详细参考官方文档 。

更多关于HarmonyOS鸿蒙Next支持哪些类型数据库,安卓与ios使用的数据库是否都能够全部支持,是否需要进行数据转换与迁移?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


sqlite

HarmonyOS Next支持关系型数据库(SQLite)、对象关系映射数据库(ORM)和分布式数据对象。安卓使用的SQLite和iOS使用的Core Data在鸿蒙中均有对应支持方案,但无法直接兼容。需要进行数据转换与迁移,具体可通过鸿蒙提供的数据库接口和工具实现跨平台数据适配。

HarmonyOS Next 在数据库支持方面采用了与安卓和iOS不同的技术路线,因此开发者需要特别注意。

1. 支持的数据库类型: HarmonyOS Next 主要支持其自研的、面向对象的关系型数据库 关系型数据库(RelationalStore) 和轻量级偏好数据库 首选项(Preferences)。这是其原生应用开发的首选和核心数据持久化方案。

2. 对安卓/iOS数据库的兼容性: 无法直接全部支持。 HarmonyOS Next 是一个独立的全场景操作系统,其系统底座、API和开发框架(ArkTS/ArkUI)与安卓(Java/Kotlin)和iOS(Swift/Objective-C)完全不同。

  • SQLite:虽然鸿蒙Next的关系型数据库底层基于SQLite,但API接口是全新的、鸿蒙专属的。安卓或iOS中原生使用SQLite的代码(如直接调用SQLiteOpenHelperCore Data的SQLite后端)无法直接在HarmonyOS Next上编译或运行。
  • Room、GreenDAO、Core Data、Realm等:这些是建立在各自平台原生API之上的高级ORM或封装库,均无法在HarmonyOS Next上使用

3. 数据转换与迁移: 需要进行数据转换与迁移。 将现有安卓或iOS应用迁移到HarmonyOS Next时,数据库部分属于“业务逻辑重构”范畴,而不仅仅是简单的数据文件拷贝。

  • 迁移本质:你需要将原有应用的数据模型(Schema)数据访问逻辑(DAO/Repository层),使用HarmonyOS Next的关系型数据库API首选项API进行重新实现。
  • 数据迁移:如果已有用户数据需要保留,通常的方案是:
    1. 在鸿蒙新应用中,使用新API创建新的数据库表结构。
    2. 编写特定的数据迁移逻辑。这可能需要将旧版应用(安卓/iOS)的数据库文件(如.db文件)或通过导出的结构化数据(如JSON、CSV),在新应用的首次安装或更新时进行解析,并插入到新的鸿蒙数据库中。这个过程需要开发者自行实现。

4. 实现方案概述: 没有一键转换工具。具体实现路径如下:

  • 设计阶段:分析原有应用的数据模型和访问模式,在鸿蒙应用中设计对应的关系型数据库表结构或首选项数据项。
  • 开发阶段
    • 使用 @ohos.data.relationalStore 模块的 RdbStore 相关API来创建、操作关系型数据库。
    • 使用 @ohos.data.preferences 模块的 Preferences 相关API来存储键值对数据。
    • 使用ArkTS语言重新实现所有的数据增删改查操作。
  • 数据迁移阶段:如需保留旧数据,需设计一个安全的数据导入模块,明确旧数据格式,在新应用初始化时完成转换和插入。

总结:HarmonyOS Next提供了自研的数据库解决方案,但不兼容安卓和iOS的数据库API。从安卓/iOS迁移至鸿蒙Next,数据库部分需要基于鸿蒙的新API进行重构开发,并可能需要为现有用户数据设计专门的迁移路径。

回到顶部