HarmonyOS角落里的知识:标准化数据定义—ArkData

 功能介绍

ArkData (方舟数据管理)为开发者提供数据存储、数据管理和数据同步能力,比如联系人应用数据可以保存到数据库中,提供数据库的安全、可靠以及共享访问等管理机制,也支持与手表同步联系人信息。

  • 标准化数据定义:提供HarmonyOS跨应用、跨设备的统一数据类型标准,包含标准化数据类型和标准化数据结构。

  • 数据存储:提供通用数据持久化能力,根据数据特点,分为用户首选项、键值型数据库和关系型数据库。

  • 数据管理:提供高效的数据管理能力,包括权限管理、数据备份恢复、数据共享框架等。

  • 数据同步:提供跨设备数据同步能力,比如分布式对象支持内存对象跨设备共享能力,分布式数据库支持跨设备数据库访问能力。

应用创建的数据库,都保存到应用沙盒,当应用卸载时,数据库也会自动删除。

运作机制

数据管理模块包括用户首选项、键值型数据管理、关系型数据管理、分布式数据对象、跨应用数据管理和统一数据管理框架。Interface接口层提供标准JS API接口,定义这些部件接口描述,供开发者参考。Frameworks&System service层负责实现部件数据存储、同步功能,还有一些SQLite和其他子系统的依赖。

图1 数据管理架构图

  • 用户首选项(Preferences):提供了轻量级配置数据的持久化能力,并支持订阅数据变化的通知能力。不支持分布式同步,常用于保存应用配置信息、用户偏好设置等。

  • 键值型数据管理(KV-Store):提供了键值型数据库的读写、加密、手动备份以及订阅通知能力。应用需要使用键值型数据库的分布式能力时,KV-Store会将同步请求发送给DatamgrService由其完成跨设备数据同步。

  • 关系型数据管理(RelationalStore):提供了关系型数据库的增删改查、加密、手动备份以及订阅通知能力。应用需要使用关系型数据库的分布式能力时,RelationalStore部件会将同步请求发送给DatamgrService由其完成跨设备数据同步。

  • 分布式数据对象(DataObject):独立提供对象型结构数据的分布式能力。如果应用需要重启后仍获取之前的对象数据(包含跨设备应用和本设备应用),则使用数据管理服务(DatamgrService)的对象持久化能力,做暂时保存。

  • 跨应用数据管理(DataShare):提供了数据提供者provider、数据消费者consumer以及同设备跨应用数据交互的增、删、改、查以及订阅通知等能力。DataShare不与任何数据库绑定,可以对接关系型数据库、键值型数据库。如果开发C/C++应用甚至可以自行封装数据库。在提供标准的provider-consumer模式基础上,同时提供了静默数据访问能力,即不再拉起provider而是直接通过DatamgrService代理访问provider的数据(目前仅关系型数据库支持静默数据访问方式)。

  • 统一数据管理框架(UDMF):提供了数据跨应用、跨设备交互标准,定义了跨应用、跨设备数据交互过程中的数据语言,提升数据交互效率。提供安全、标准化数据流通通路,支持不同级别的数据访问权限与生命周期管理策略,实现高效的数据跨应用、跨设备共享。

  • 数据管理服务(DatamgrService):提供其它部件的同步及跨应用共享能力,包括RelationalStore和KV-Store跨设备同步,DataShare静默访问provider数据,暂存DataObject同步对象数据等。

标准化数据定义概述

设备、应用交互的核心在于数据的互通,高效的数据互通基础是共识。为了降低应用/业务数据交互成本,促进数据生态建设,统一数据管理框架(UDMF)提供了标准化数据定义作为统一的HarmonyOS数据语言,用于构建跨应用、跨设备的统一数据标准与交互共识。

UDMF标准化数据定义包括标准化数据类型标准化数据类型标准化数据类型标准化数据结构标准化数据结构标准化数据结构

标准化数据类型:主要针对同一种数据类型,提供统一定义,即标准数据类型描述符,定义了包括标识数据类型的ID、类型归属关系等相关信息,用于解决HarmonyOS系统中的类型模糊问题。一般用于过滤或者识别某一种数据类型的场景,比如文件预览、文件分享等。

标准化数据结构:主要针对部分标准化数据类型定义了统一的数据内容结构,并明确了对应的描述信息。应用间使用标准化数据结构进行数据交互后,将遵从统一的解析标准,可有效减少适配相关的工作量。一般用于跨应用跨设备间的数据交互,比如拖拽。
 

标准化数据类型

场景介绍

标准化数据类型(Uniform Type Descriptor,简称UTD)用于解决系统中的类型模糊问题,即针对同一种数据类型,存在不同的类型描述方式:MIME Type、文件扩展名等。例如描述jpg/jpeg类型图片时,可以使用image/jpeg、.jpg、.jpeg或image/picture等方式进行描述。

当相关类型的数据进行跨应用、跨设备传输时,目标端应用/设备需要进行多方面的适配,才能够对数据内容进行相关处理,且存在无法识别的情况。

标准化数据类型分为预置数据类型预置数据类型预置数据类型应用自定义数据类型应用自定义数据类型应用自定义数据类型。并且支持从其他类型体系,如文件名后缀和MIME type转换为UTD标准类型。

针对标准化数据类型,典型的应用场景有:文件管理中的图片预览、系统分享等。

标准化数据类型的设计和分类原则

标准化数据类型按层级结构构建

基于MIME Type或文件后缀名进行类型区分,存在另一个不足:即扁平化的数据类型定义。

扁平/松散的类型定义难以描述不同类型间的兼容与继承关系,且在实际使用过程中,会增加应用处理数据类型时的开发复杂度。例如搜索场景,用户从精确地搜索动物相关的任意类型图片,进一步扩展到动物相关的任意图片、视频或音频资源。为了满足上述场景,我们需要在定义数据类型时,支持类型层级结构。

构建标准类型的层级结构,定义层级结构中的类型归属关系,能够帮助系统、应用实现数据类型的分层、分类管理。当用户进行数据分享或拖拽时,如果数据中同时包含图片、视频、音频等内容,系统/应用可以根据层级按需对分享内容进行整理,如分享了几张照片、几条视频或几个媒体资源文件等。

标准化数据类型的分类原则

UTD中定义的标准化数据类型在设计原则上按物理和逻辑分为两类。图中涉及的标准化数据类型可见UniformDataTypeUniformDataTypeUniformDataType

  • 按物理分类的根节点为general.entity,用于描述类型的物理属性,比如文件、目录等,具体可见图1。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值