在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中利用内置的数据管理功能来加强数据的可靠性和安全性,从而构建出更加健壮和安全的应用程序。