第8章:数据持久化与网络请求
非关系型数据库
1. 非关系型数据库概述
ArkTS支持通过@ohos.data.document模块访问非关系型数据库(NoSQL),其特点包括:
- 文档存储:以键值对(Key-Value)或JSON格式存储数据
- 无固定表结构:灵活适应动态数据模型
- 高性能读写:适用于频繁更新的场景(如用户偏好、缓存数据)
2. 核心API与操作流程
2.1 数据库创建与连接
import document from '@ohos.data.document';
// 获取数据库管理器
let documentStoreManager = document.getDocumentStoreManager();
// 创建/打开数据库
let options: document.StoreOptions = {
persistent: true, // 是否持久化存储
encrypt: false, // 是否加密
backup: false, // 是否自动备份
autoSync: true // 是否自动同步
};
documentStoreManager.create('user_db', options, (err, store) => {
if (err) {
console.error(`Failed to create store. Code:${err.code},message:${err.message}`);
return;
}
console.info('Succeeded in creating store.');
this.userStore = store; // 保存数据库引用
});
2.2 数据操作示例
| 操作类型 | API方法 | 示例 |
|---|---|---|
| 插入数据 | put() | store.put({name: '张三', age: 25}, 'user_001') |
| 查询数据 | get() | store.get('user_001') |
| 删除数据 | delete() | store.delete('user_001') |
3. 数据同步与订阅
// 订阅数据变更
store.on('dataChange', (event) => {
console.log(`Data changed: ${JSON.stringify(event)}`);
});
// 手动同步数据(针对多设备场景)
store.sync((err, result) => {
if (!err) {
console.log('Sync completed:', result);
}
});
4. 最佳实践
- 数据分片:大数据集建议按业务分库(如
user_profile_db、app_config_db) - 批量操作:使用
batch()提升性能store.batch() .put({data: 'value1'}, 'key1') .delete('key2') .commit(); - 错误处理:需捕获
DatabaseBusyException等异常
5. 与关系型数据库对比
| 特性 | 非关系型数据库 | 关系型数据库 |
|---|---|---|
| 数据结构 | 灵活 | 固定表结构 |
| 查询复杂度 | 简单键值查询 | 支持复杂SQL查询 |
| 适用场景 | 配置项/用户偏好 | 交易数据/复杂关系 |
| 性能 | 高吞吐量 | 事务安全优先 |
注意:ArkTS的非关系型数据库实现遵循HarmonyOS分布式数据管理规范,支持跨设备数据同步。
扩展阅读
- HarmonyOS文档数据库开发指南
- 性能优化:避免单文档超过1MB大小
- 安全建议:敏感数据应启用
encrypt: true参数
