问题场景:HarmonyOS标准系统支持典型的存储数据形态,包括用户首选项、键值型数据库、关系型数据库。如果开发者要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。ArkTS根据不同特性,提供了多种应用状态管理的能力:包括LocalStorage:页面级UI状态存储、AppStorage:应用全局的UI状态存储、PersistentStorage:持久化存储UI状态。那么开发者如何选择合适的数据存储方案呢?参考答复:开发者可以根据如下功能介绍,选择合适的数据形态以满足自己应用数据的持久化需要。<p id="p87768222013">用户首选项(Preferences)</p> <p id="p1077615226019">通常用于保存应用的配置信息。数据通过文本的形式保存在设备中,应用使用过程中会将文本中的数据全量加载到内存中,所以访问速度快、效率高,但不适合需要存储大量数据的场景。</p> <p id="p117765227010">键值型数据库(KV-Store)</p> <p id="p2077611221803">一种非关系型数据库,其数据以“键值”对的形式进行组织、索引和存储,其中“键”作为唯一标识符。适合很少数据关系和业务关系的业务数据存储,同时因其在分布式场景中降低了解决数据库版本兼容问题的复杂度,和数据同步过程中冲突解决的复杂度而被广泛使用。相比于关系型数据库,更容易做到跨设备跨版本兼容。</p> <p id="p1776112212013">关系型数据库(RelationalStore)</p> <p id="p1477616222011">一种关系型数据库,以行和列的形式存储数据,广泛用于应用中的关系型数据的处理,包括一系列的增、删、改、查等接口,开发者也可以运行自己定义的SQL语句来满足复杂业务场景的需要。</p> <p id="p277610221708"><span>LocalStorage:页面级UI状态存储</span></p> <p id="p10776172218018"></p> <p id="p6776142217010">页面级UI状态存储,通常用于UIAbility内、页面间的状态共享。</p> <p id="p5776322709"><span>AppStorage:应用全局的UI状态存储</span></p> <p id="p13776122211016">特殊的单例LocalStorage对象,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。</p> <p id="p207761422302"><span>PersistentStorage:持久化存储UI状态</span></p> <p id="p77761221901">持久化存储UI状态,通常和AppStorage配合使用,选择AppStorage存储的数据写入磁盘,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。</p>
在鸿蒙中选择数据存储方案时,应根据数据类型、访问频率、持久性需求、安全性要求以及是否需要跨设备同步等因素来决定使用分布式数据库、文件系统、SharedPreferences、SQLite、内存数据库、远程数据库或缓存等存储方式。
问题场景:
HarmonyOS标准系统支持典型的存储数据形态,包括用户首选项、键值型数据库、关系型数据库。
如果开发者要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。ArkTS根据不同特性,提供了多种应用状态管理的能力:包括LocalStorage:页面级UI状态存储、AppStorage:应用全局的UI状态存储、PersistentStorage:持久化存储UI状态。
那么开发者如何选择合适的数据存储方案呢?
参考答复:
开发者可以根据如下功能介绍,选择合适的数据形态以满足自己应用数据的持久化需要。