Appearance
存储方案对比与选择
鸿蒙多种存储方案,面试高频:根据场景选择正确的存储方案。
1. 存储方案全景
鸿蒙存储体系
├── 键值存储
│ ├── Preferences(小配置)
│ └── KV-Store(分布式同步)
├── 关系型数据库
│ └── RDB(SQLite)
├── 文件存储
│ ├── 内部存储(沙箱)
│ ├── 外部存储(公共目录)
│ └── rawfile / resource
├── 安全存储
│ └── AssetStore(卸载保留)
└── 缓存
├── LruCache(内存)
└── 多级缓存2. 决策树
2.1 如何选择存储方案
需要存储数据?
├─ 简单的键值配置?
│ └─ 单设备 → Preferences
│ └─ 多设备同步 → KV-Store
├─ 结构化数据?
│ └─ 关系型查询 → RDB
│ └─ 大量数据 → RDB(百万级)
├─ 大文件?
│ └─ 图片/视频 → 文件存储
│ └─ 大文件传输 → request 代理
├─ 敏感数据?
│ └─ 应用卸载后保留 → AssetStore
│ └─ 密钥管理 → KeyStore
├─ 缓存?
│ └─ 频繁访问 → LruCache(内存)
│ └─ 重启恢复 → KV-Store
└─ 其他
└─ 图片缓存 → LruCache + 文件缓存2.2 场景速查表
| 场景 | 推荐方案 | 原因 |
|---|---|---|
| 用户偏好设置 | Preferences | 简单 K-V |
| 登录 Token | AssetStore | 卸载保留 |
| 用户列表 | RDB | 结构化、查询 |
| 分布式配置 | KV-Store | 多设备同步 |
| 图片 | 文件存储 | 容量大 |
| 图片缓存 | LruCache | 内存快 |
| 密码 | AES + KeyStore | 安全 |
| 应用状态 | KV-Store | 持久化+同步 |
| 临时数据 | 内存缓存 | 快,不用持久化 |
3. 详细对比表
| 方案 | 类型 | 容量 | 持久化 | 分布式 | 速度 | 加密 |
|---|---|---|---|---|---|---|
| Preferences | K-V | ≤1MB | ✅ | ❌ | ⚡⚡ | ❌ |
| KV-Store | K-V | 大 | ✅ | ✅ | ⚡⚡ | ❌ |
| RDB | 关系型 | 大 | ✅ | ❌ | ⚡ | ❌ |
| 文件存储 | 文件 | 大 | ✅ | ❌ | ⚡ | ❌ |
| AssetStore | 安全 | 小 | ✅卸载后 | ❌ | ⚡ | ✅ |
| LruCache | 内存 | 小 | ❌ | ❌ | ⚡⚡⚡ | ❌ |
4. 面试高频考点
Q1: 鸿蒙有哪些存储方案?
回答:Preferences(K-V配置)、KV-Store(分布式)、RDB(关系型数据库)、文件存储(沙箱/外部)、AssetStore(安全卸载保留)、缓存(LruCache)。
Q2: 如何选择合适的存储方案?
回答:根据场景选:简单配置用 Preferences,分布式同步用 KV-Store,结构化数据用 RDB,大文件用文件存储,敏感数据用 AssetStore,频繁访问用 LruCache 缓存。
Q3: Preferences vs KV-Store?
回答:Preferences 单设备简单 K-V;KV-Store 支持分布式同步。
🐱 小猫提示:存储方案选择记住 "场景→方案对应关系。Preferences 小配置、KV-Store 分布式、RDB 结构化、AssetStore 敏感、LruCache 缓存"。**