搜索架构之道:App中的搜索系统设计与优化实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3.1 数据持久化存取

在搜索过程中,记录用户输入的关键字并保存,以便下次用户搜索时进行选择。实现这一功能的主要技术是数据的持久存储和持久化存取。持久存储用于存储App中需要长期依赖的数据,持久化存取则涉及在需要时从存储设备中恢复数据。由于不同设备的存储特性不同,对于文件的存取操作可以抽象地分为三部分:存储路径、存储数据的方式和存储数据的格式。

❑存储路径是指每个数据存储在设备中的文件路径,在移动设备中,iOS和Android平台采用的都是沙盒机制,App内部对文件的读取也有权限管理,不同文件夹的权限不同,包括是否可以修改、创建、读取等。在具体的业务存储实现中,建议采用一个业务一个目录的方式进行管理,一个文件只存储一类内容。同时,文件及目录的命名也要有统一的规范,这样可以有效避免冲突并实现存储自治。

❑存储数据的方式是指将数据以何种方式存储在文件中,基本操作为文件的读取和写入。平台API或第三方开源库都提供了对数据存储方式的封装,例如Plist、NSUserDefaults、SQLite3、CoreData等。选择使用这些工具时,需要考虑要存储的数据量、数据的更新频率、更新方式(全量、增量、替换等)以及数据的格式等。

❑存储数据的格式是指持久化存取的文件数据格式。根据业务需要,对所依赖的数据项进行存储格式的封装,其中包括对数据的操作和存储更新相关能力的封装。在研发过程中,需要关注数据升级带来的变化以及数据异常对App的影响。前面提到的数据加解密和数据校验这些技术在持久化存取过程中也有重要应用。