在HarmonyOS中,数据的可靠性和安全性是至关重要的,尤其是在面对存储损坏、存储空间不足、文件系统权限问题以及系统意外中断等情况时。为了确保关键数据的完整性与机密性,HarmonyOS提供了包括备份与恢复、数据库加密、数据库分类分级等功能在内的全面解决方案。

基本概念

数据库备份与恢复

  • 备份:对数据库文件进行全量备份,即使在数据库运行状态下也能执行。
  • 恢复:从备份文件恢复数据库,确保数据一致性。

数据库加密

  • 加密整个数据库文件,增加安全性,保护敏感数据。

数据库分类分级

  • 实施基于数据安全标签和设备安全等级的访问控制,确保数据安全。

运作机制

数据库备份与恢复机制

  • 备份文件独立于当前数据库,可在任何时间点恢复,实现数据回滚。

数据库加密机制

  • 应用开发者只需设定加密状态,系统自动完成密钥管理和加密过程。

约束限制

  • 密钥每年自动更新一次。
  • 键值型数据库最多备份5份。
  • 自动备份在熄屏且充电状态下进行。

场景介绍

事务处理与恢复

  • 在多表关联事务处理中,若中途遇到问题,可使用恢复功能回到之前的状态。

数据恢复

  • 当数据库被篡改、删除或设备断电,通过备份恢复能力使数据库恢复正常。

存储空间管理

  • 删除数据库备份以释放本地存储空间。

键值型数据库备份、恢复与删除示例

// 创建数据库
import distributedKVStore from '@ohos.data.distributedKVStore';

let kvManager = distributedKVStore.createKVManager({
  context: getContext(this),
  bundleName: 'com.example.datamanagertest'
});
let kvStore = kvManager.getKVStore('storeId', {
  createIfMissing: true,
  encrypt: false,
  backup: false,
  kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  securityLevel: distributedKVStore.SecurityLevel.S2
});

// 插入数据
kvStore.put('key_test_string', 'value_test_string');

// 备份数据
kvStore.backup('BK001');

// 删除数据(模拟意外删除)
kvStore.delete('key_test_string');

// 恢复数据
kvStore.restore('BK001');

// 删除备份
kvStore.deleteBackup(['BK001']);

关系型数据库备份与恢复示例

// 创建关系型数据库
import relationalStore from '@ohos.data.relationalStore';

let store = relationalStore.getRdbStore(getContext(this), {
  name: 'RdbTest.db',
  securityLevel: relationalStore.SecurityLevel.S1
});

// 插入数据
store.insert('EMPLOYEE', {
  NAME: 'Lisa',
  AGE: 18,
  SALARY: 100.5,
  CODES: new Uint8Array([1, 2, 3, 4, 5])
});

// 备份数据
store.backup('dbBackup.db');

// 删除数据(模拟意外删除)
let predicates = new relationalStore.RdbPredicates('EMPLOYEE');
predicates.equalTo('NAME', 'Lisa');
store.delete(predicates);

// 恢复数据
store.restore('dbBackup.db');

通过以上示例代码,我们能够看到如何在HarmonyOS中利用内置的数据管理功能来加强数据的可靠性和安全性,从而构建出更加健壮和安全的应用程序。