OpenHarmony分布式数据管理子系统

OpenHarmony分布式数据管理子系统

  • 简介

  • 目录

  • 组件说明

    • 分布式数据对象
    • 数据共享
    • 分布式数据服务
    • Key-Value数据库
    • 首选项
    • 关系型数据库
    • 标准数据化通路
  • 相关仓

简介

子系统介绍

分布式数据管理子系统支持单设备的各种结构化数据的持久化,以及跨设备之间数据的同步、共享功能。开发者通过分布式数据管理子系统,能够方便地完成应用程序数据在不同终端设备间的无缝衔接,满足用户跨设备使用数据的一致性体验。

子系统架构

图 1 子系统架构图

目录

子系统1-2层目录描述

distributeddatamgr/          # 子系统目录
├── data_object              # 分布式数据对象目录
└── data_share               # 数据共享目录
└── datamgr_service          # 数据服务目录
└── kv_store                 # Key-Value数据库目录
└── preferences              # 首选项目录
└── relational_store         # 关系型数据库目录
└── udmf                     # 标准化数据通路目录

third_party/                 # 开源软件目录
├── bounds_checking_function # bounds_checking_function代码目录
└── cJSON                    # cJSON代码目录
└── flatbuffers              # flatbuffers代码目录
└── googletest               # googletest代码目录
└── jsoncpp                  # jsoncpp代码目录
└── icu                      # icu代码目录
└── libuv                    # libuv代码目录
└── openssl                  # openssl代码目录
└── sqlite                   # SQLite代码目录
└── zlib                     # zlib代码目录

组件说明

分布式数据对象

分布式数据对象管理框架是一款面向对象的内存数据管理框架,向应用开发者提供内存对象的创建、查询、删除、修改、订阅等基本数据对象的管理能力,同时具备分布式能力,满足超级终端场景下,相同应用多设备间的数据对象协同需求。

分布式数据对象提供JS接口,让开发者能以使用本地对象的方式使用分布式对象。分布式数据对象支持的数据类型包括数字型、字符型、布尔型等基本类型,同时也支持数组、基本类型嵌套等复杂类型。

数据共享

数据共享(Data Share) 提供了向其他应用共享以及管理其数据的方法,支持同个设备上不同应用之间的数据共享。

分布式数据服务

分布式数据服务(Distributed Data Service,DDS) 提供不同设备间数据库数据分布式的能力。通过结合帐号、应用和数据库三元组,分布式数据服务对数据进行隔离。在通过可信认证的设备间,分布式数据服务支持数据相互同步,为用户提供在多种终端设备上一致的数据访问体验。

Key-Value数据库

分布式键值数据库(kv Store) 为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式键值数据库各个接口,应用程序可将数据保存到分布式键值数据库中,并可对分布式键值数据库中的数据进行增加、删除、修改、查询、同步等操作。

该模块提供以下分布式键值数据库相关的常用功能:

  • KVManager:分布式键值数据库管理实例,用于获取数据库的相关信息。
  • KVStoreResultSet:提供获取数据库结果集的相关方法,包括查询和移动数据读取位置等。
  • Query:使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。
  • SingleKVStore:单版本分布式键值数据库,不对数据所属设备进行区分,提供查询数据和同步数据的方法。
  • DeviceKVStore:设备协同数据库,继承自SingleKVStore,以设备维度对数据进行区分,提供查询数据和同步数据的方法。

首选项

首选项(Preferences) 主要提供轻量级Key-Value操作,支持本地应用存储少量数据,数据存储在本地文件中,同时也加载在内存中,所以访问速度更快,效率更高。首选项提供非关系型数据存储,不宜存储大量数据,经常用于操作键值对形式数据的场景。

  1. 本模块提供首选项的操作类,应用通过这些操作类完成首选项操作。
  2. 借助getPreferences,可以将指定文件的内容加载到Preferences实例,每个文件最多有一个Preferences实例,系统会通过静态容器将该实例存储在内存中,直到主动从内存中移除该实例或者删除该文件。
  3. 获取Preferences实例后,可以借助Preferences类的函数,从Preferences实例中读取数据或者将数据写入Preferences实例,通过flush将Preferences实例持久化。

关系型数据库

关系型数据库(Relational Database,RDB) 是一种基于关系模型来管理数据的数据库。OpenHarmony关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制。

OpenHarmony关系型数据库底层使用SQLite作为持久化存储引擎,支持SQLite具有的所有数据库特性,包括但不限于事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句。

标准化数据通路

标准化数据通路(Unified Data Management Framework,UDMF) 针对多对多跨应用数据共享的不同业务场景提供了标准化的数据通路,提供了标准化的数据接入与读取接口。同时对文本、图片等数据类型提供了标准化定义,方便不同应用间进行数据交互,减少数据类型适配的工作量。

相关仓

分布式数据管理子系统

distributeddatamgr_data_object

distributeddatamgr_data_share

distributeddatamgr_datamgr_service

distributeddatamgr_kv_store

distributeddatamgr_preferences

distributeddatamgr_relational_store

distributeddatamgr_udmf

third_party_bounds_checking_function

third_party_cJSON

third_party_flatbuffers

third_party_googletest

third_party_jsoncpp

third_party_icu

third_party_libuv

third_party_openssl

third_party_sqlite

third_party_zlib

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/975089.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统使用Docker部署Geoserver并做数据挂载进行地图服务的发布和游览

文章目录 1、前提环境2、拉取geoserver镜像3、创建数据挂载目录4、 运行容器5、 测试使用(发布shp数据为服务)5.1、创建工作区5.2、添加数据存储5.3、发布图层5.4、服务游览 1、前提环境 部署环境:Linux,Centos7 ,Doc…

MySql数据库运维学习笔记

数据库运维常识 DQL、DML、DCL 和 DDL 是 SQL(结构化查询语言)中的四个重要类别,它们分别用于不同类型的数据库操作,下面为你简单明了地解释这四类语句: 1. DQL(数据查询语言,Data Query Langu…

企业内容中台搭建实战手册

内容概要 在数字化转型浪潮中,内容中台作为企业信息资产的核心枢纽,承担着统一管理、智能分发与持续迭代的战略职能。本手册聚焦于构建企业级内容基础设施的完整生命周期,系统梳理从战略规划到技术落地的全链路方法论。通过对内容生产、存储…

VUE四:Vue-cli

什么是Vue-cli vue-cli是官方提供的一个脚手架,用于快速生成一个vue的项目模板; 预先定义好的目录结构及基础代码,就好比咱们在创建 Maven项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速; 什么是web pack 本质上&#…

如何解决‘找不到vcruntime140_1.dll 无法执行’的问题,vcruntime140_1.dll 的解析

当你满心欢喜地点开游戏或专业软件,却被"找不到vcruntime140_1.dll"的报错弹窗打断,这种突如其来的系统警告总让人措手不及。这个微软Visual C运行库的核心组件缺失,可能导致Adobe全家桶、Steam游戏等各类程序集体罢工。不过别急着…

将产品照片(form.productPhotos)转为 JSON 字符串发送给后端

文章目录 1. 前端 form.productPhotos 的当前处理a. 组件绑定b. 当前发送逻辑 2. 如何将 form.productPhotos 转为 JSON 字符串发送给后端a. 修改前端 save() 方法b. 确保 esave API 支持接收字符串 基于你提供的 identify-form.vue 代码,我将分析如何将产品照片&a…

分布式事务-本地消息表学习与落地方案

本文参考: 数据库事务系列04-本地消息表实现分布式事务 基础概念 本地消息表实现分布式事务最终一致性的核心:是通过上游本地事务的原子性持久性,配合中间件的重试机制,从而实现调用下游的最终一致性。 这里有几个要点可以解析一…

java常见面试场景题

1. 如何定位线上OOM 造成OOM的原因 如何快速定位OOM 2. 如何防止重复下单 方案一:前端提交订单按钮置灰 用户点击下单按钮后置灰,防止用户无意点击多次 方案二: 后端Redis setnx 用户token 商品URL KEY 用setnx 命令并设置过期时间3-5秒防止重复下单…

【微服务】深入解析spring aop原理

目录 一、前言 二、AOP 概述 2.1 什么是AOP 2.2 AOP中的一些概念 2.2.1 aop通知类型 2.3 AOP实现原理 2.3.1 aop中的代理实现 2.4 静态代理与动态代理 2.4.1 静态代理实现 三、 jdk动态代理与cglib代理 3.1 jdk动态代理 3.1.1 jdk动态代理模拟实现 3.2 CGLIB 代理…

【JT/T 808协议】808 协议开发笔记 ② ( 终端注册 | 终端注册应答 | 字符编码转换网站 )

文章目录 一、消息头 数据1、消息头拼接2、消息 ID 字段3、消息体属性 字段4、终端手机号 字段5、终端流水号 字段 二、消息体 数据三、校验码计算四、最终计算结果五、终端注册应答1、分解终端应答数据2、终端应答 消息体 数据 六、字符编码转换网站 一、消息头 数据 1、消息头…

go 环境准备

配置路径: GOROOT:D:\GoGOPATH:go的工作目录 D:\workspacego 验证版本:go version 配置第三方仓库: GO111MODULE:开启mod模式GOPROXY:go语言三方库地址GOSUMDB:go语言软件包的M…

嵌入式硬件篇---数字电子技术中的触发器

文章目录 前言简介1. SR触发器(Set-Reset Flip-Flop)工作原理1.基本结构2.输入信号3.真值表4.缺点5.应用示例 2. 钟控SR触发器(Clocked SR Flip-Flop)工作原理1.改进点2.触发条件3.问题4.应用示例 3. D触发器(Data Fli…

安卓/鸿蒙模拟位置信息-Fake Location模拟虚拟定位打卡

一、软件下载安装 需要用到的软件就一个即:FakeLocation虚拟打卡定位 下载地址:FakeLocation虚拟打卡定位.app 二、手机端设置 打开手机设置-关于手机-版本信息-版本号,连续点击版本号直到出现已进入开发者模式字样,此时打开手…

中文Build a Large Language Model (From Scratch) 免费获取全文

中文pdf下载地址:https://pan.baidu.com/s/1aq2aBcWt9vYagT2-HuxdWA?pwdlshj 提取码:lshj 原文、代码、视频项目地址:https://github.com/rasbt/LLMs-from-scratch 翻译工具:沉浸式翻译(https://app.immersivetrans…

20250221 NLP

1.向量和嵌入 https://zhuanlan.zhihu.com/p/634237861 encoder的输入就是向量,提前嵌入为向量 二.多模态文本嵌入向量过程 1.文本预处理 文本tokenizer之前需要预处理吗? 是的,文本tokenizer之前通常需要对文本进行预处理。预处理步骤可…

【HeadFirst系列之HeadFirst设计模式】第7天之命令模式:封装请求,轻松实现解耦!

命令模式:封装请求,轻松实现解耦! 大家好!今天我们来聊聊设计模式中的命令模式(Command Pattern)。如果你曾经需要将请求封装成对象,或者希望实现请求的撤销、重做等功能,那么命令模…

为Eclipse IDE安装插件IBM编程助手watsonx Code Assistant

从Eclipse IDE 安装 从Eclipse IDE 安装插件: _1、在Eclipse IDE 中,单击帮助菜单,然后选择EclipseMarketplace。 _2、根据您计划进行的工作类型选择安装方式: 有关代码建议、代码解释、代码文档和单元测试的集成生成式人工智能&a…

23. AI-大语言模型-DeepSeek简介

文章目录 前言一、DeepSeek是什么1. 简介2. 产品版本1. 类型2. 版本3. 参数规模与模型能力 3. 特征4. 三种访问方式1. 网页端和APP2. DeepSeek API 二、DeepSeek可以做什么1. 应用场景2. 文本生成1. 文本创作2. 摘要与改写3. 结构化生成 3. 自然语言理解与分析1. 语义分析2. 文…

基于WebRTC与AI大模型接入EasyRTC:打造轻量级、高实时、强互动的嵌入式音视频解决方案

随着物联网和嵌入式技术的快速发展,嵌入式设备对实时音视频通信的需求日益增长。然而,传统的音视频解决方案往往存在体积庞大、实时性差、互动体验不佳等问题,难以满足嵌入式设备的资源限制和应用场景需求。 针对以上痛点,本文将介…

Linux 驱动入门(6)—— IRDA(红外遥控模块)驱动

文章目录 一、编译替换内核和设备树二、IRDA(红外遥控模块)1. 红外遥控简介2. 红外遥控器协议3. 编程思路 三、驱动代码1. GPIO 实现1.1 驱动层代码1.2 应用层代码 2. 设备树实现2.1 修改设备树2.2 驱动层代码2.3 应用层代码 3. 上机测试 一、编译替换内…