HarmonyOS开发篇—数据管理(分布式数据服务)_harony分布式数据,移动端h5开发面试题及答案

35 阅读5分钟

**表1 **分布式数据服务关键API功能介绍


开发步骤

以单版本分布式数据库为例,说明开发步骤。

在config.json中添加permisssion权限。

// 添加在abilities同一目录层级 "reqPermissions": [ { "name": "ohos.permission.DISTRIBUTED_DATASYNC" } ]

应用启动时,需要弹出授权提示框,请求用户进行授权。

根据配置构造分布式数据库管理类实例。

  • 根据应用上下文创建KvManagerConfig对象。
  • 创建分布式数据库管理器实例。

以下为创建分布式数据库管理器的代码示例:

Context context = getApplicationContext(); ... KvManagerConfig config = new KvManagerConfig(context); KvManager kvManager = KvManagerFactory.getInstance().createKvManager(config);

获取/创建单版本分布式数据库。

  • 声明需要创建的单版本分布式数据库ID描述。
  • 创建单版本分布式数据库,默认开启组网设备间自动同步功能,如果应用对性能比较敏感建议设置关闭自动同步功能setAutoSync(false),主动调用sync接口同步。

以下为创建单版本分布式数据库的代码示例:

try { Options options = new Options(); options.setCreateIfMissing(true).setEncrypt(false).setKvStoreType(KvStoreType.SINGLE_VERSION); String storeId = "testApp"; SingleKvStore singleKvStore = kvManager.getKvStore(options, storeId); } catch (KvStoreException e) { HiLog.warn(LABEL_LOG, "getKvStore:" + e.getKvStoreErrorCode()); }

  1. 说明

组网设备间同步数据的场景,建议在应用启动时打开分布式数据库,获取数据库的句柄。在该句柄(如上例中的singleKvStore)的生命周期内无需重复创建数据库,可直接使用句柄对数据库进行数据的插入等操作。

如果没有调用kvManager.closeKvStore()方法关闭句柄,则该句柄会一直存在直到程序结束。

订阅分布式数据变化。

  1. 客户端需要实现KvStoreObserver接口。

  2. 构造并注册KvStoreObserver实例。

以下为订阅单版本分布式数据库所有(本地及远端)数据变化通知的代码示例:

class KvStoreObserverClient implements KvStoreObserver { @Override public void onChange(ChangeNotification notification) { List insertEntries = notification.getInsertEntries(); List updateEntries = notification.getUpdateEntries(); List deleteEntries = notification.getDeleteEntries(); } }

KvStoreObserver kvStoreObserverClient = new KvStoreObserverClient(); singleKvStore.subscribe(SubscribeType.SUBSCRIBE_TYPE_ALL, kvStoreObserverClient);

将数据写入单版本分布式数据库。

  • 构造需要写入单版本分布式数据库的Key(键)和Value(值)。
  • 将键值数据写入单版本分布式数据库。

以下为将字符串类型键值数据写入单版本分布式数据库的代码示例:

try { String key = "todayWeather"; String value = "Sunny"; singleKvStore.putString(key, value); } catch (KvStoreException e) { HiLog.warn(LABEL_LOG, "putString:" + e.getKvStoreErrorCode()); }

如果应用对性能比较敏感,建议使用批量写入接口putBatch。查询单版本分布式数据库数据。

  • 构造需要从单版本分布式数据库快照中查询的Key(键)。
  • 从单版本分布式数据库快照中获取数据,需要捕获KvStoreException。

以下为从单版本分布式数据库中查询字符串类型数据的代码示例:

try { String key = "todayWeather"; String value = singleKvStore.getString(key); } catch (KvStoreException e) { HiLog.warn(LABEL_LOG, "getString:" + e.getKvStoreErrorCode()); }

同步数据到其他设备。

  1. 获取已连接的设备列表。

  2. 选择同步方式进行数据同步。

以下为单版本分布式数据库进行数据同步的代码示例,其中同步方式为PUSH_ONLY:

List deviceInfoList = kvManager.getConnectedDevicesInfo(DeviceFilterStrategy.NO_FILTER); List deviceIdList = new ArrayList<>(); for (DeviceInfo deviceInfo : deviceInfoList) { deviceIdList.add(deviceInfo.getId()); } singleKvStore.sync(deviceIdList, SyncMode.PUSH_ONLY);

关闭单版本分布式数据库。如果组网设备间不再需要同步数据并且本地也不再访问,就可以执行关闭数据库的操作。以下为关闭单版本分布式数据库的代码示例:

try { kvManager.closeKvStore(singleKvStore); } catch (KvStoreException e) { HiLog.warn(LABEL_LOG, "closeKvStore:" + e.getKvStoreErrorCode()); }

删除单版本分布式数据库。以下为删除单版本分布式数据库的代码示例:

try { kvManager.deleteKvStore(storeId); } catch (KvStoreException e) { HiLog.warn(LABEL_LOG, "deleteKvStore:" + e.getKvStoreErrorCode()); }

为了能让大家更好的学习鸿蒙 (OpenHarmony) 开发技术,这边特意整理了《鸿蒙 (OpenHarmony)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (OpenHarmony)开发学习手册》:https://qr21.cn/FV7h05

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. ……

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!