Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第8章:数据持久化与网络请求

第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. 最佳实践

  1. 数据分片:大数据集建议按业务分库(如user_profile_db、app_config_db)
  2. 批量操作:使用batch()提升性能
    store.batch()
      .put({data: 'value1'}, 'key1')
      .delete('key2')
      .commit();
    
  3. 错误处理:需捕获DatabaseBusyException等异常

5. 与关系型数据库对比

特性非关系型数据库关系型数据库
数据结构灵活固定表结构
查询复杂度简单键值查询支持复杂SQL查询
适用场景配置项/用户偏好交易数据/复杂关系
性能高吞吐量事务安全优先

注意:ArkTS的非关系型数据库实现遵循HarmonyOS分布式数据管理规范,支持跨设备数据同步。

扩展阅读

  • HarmonyOS文档数据库开发指南
  • 性能优化:避免单文档超过1MB大小
  • 安全建议:敏感数据应启用encrypt: true参数
Last Updated:: 5/22/25, 5:00 PM