AUTOSAR_EXP_PlatformDesign - 10 Persistency
【translated by sky8336, 2019.06.09, Shanghai】
10 Persistency
10.1Overview
持久性为自适应平台的应用程序和其他功能集群提供了在自适应机器的非易失性内存中存储信息的机制。数据在启动和点火周期是可获得的。持久性提供了访问非易失性内存的标准接口。
持久性api将存储位置标识符作为来自应用程序的参数,用于定位不同的存储位置。
可用的储存地点可分为两类:
- 键值存储(Key-Vaue Storage)
- 文件存储(File Storage)
每个应用程序都可以使用这些存储类型的多种组合。
持久数据对于一个应用程序总是私有的。没有使用持久性在不同应用程序之间共享数据的机制。这个决定是为了防止在通信管理提供的功能下出现第二个通信路径。
持久性为存储的数据提供加密,以确保在将敏感数据存储到物理设备之前对其进行加密。
10.2Key-Value Storage
键值存储提供了在一个存储位置存储和检索多个键值对的机制。键值存储直接支持以下三种数据类型:
- 在SWS_AdaptivePlatformTypes中定义的数据类型。
- 由应用程序中复杂类型流产生的简单字节数组。
- 在应用程序设计中,通过 "PersistencyKeyValueDatabaseInterface" 或专门化为该接口的"PersistencyDataElements" 的 "dataTypeForSerialization" 引用的所有实现数据类型(Implementation Data Types )。
对于每个键值数据库,键值必须是惟一的,并且由应用程序使用持久性提供的方法来定义。
计划为在应用程序设计中定义的AUTOSAR数据类型添加基于应用程序/平台特定序列化代码的序列化/存储支持。
10.3File-Proxy Storage
并不是所有与持久性存储相关的数据都是以键值数据库组织的, 这不一定是合适的存储机制。
针对这类数据,引入了文件存储机制。文件存储端口允许应用程序访问存储位置并在其中创建一个或多个评估器(assessor)。同样,这些评估器是由字符串格式的惟一键标识的。
为了更好地理解这种机制,与文件系统进行比较会有所帮助:可以将文件存储端口理解为文件系统目录,其中允许应用程序创建多个文件(assessor)。
由于文件存储接近于经典的文件系统访问,所以API被设计为具有类似行为的著名c++ std::iostream类的子集。
10.4Use cases for handling persistent data for UCM(用于处理UCM的持久数据的用例)
在UCM 进程(process)中通过持久性来处理UCM用例的持久性数据/持久性文件完全依赖于持久性配置。
通常,UCM支持三个主要用例来处理CAR ECU或adaptive machine生命周期中的自适应应用程序。
- 安装新的应用软件到自适应机器
- 更新现有的应用软件到自适应机器
- 从自适应计算机卸载现有应用程序软件
在所有三个场景中,UCM都使用持久性来部署/删除/更新应用程序的持久性数据。
持久性应该支持下面提到的场景。
- 持久性应该能够将持久数据部署到应用程序设计人员在自适应应用程序安装期间定义的键值数据库或文件代理
- 持久性应该能够将持久性数据部署到由集成者更改的键值数据库或文件代理
- 持久性应该能够将持久数据部署到由集成者定义的键值数据库或文件代理
- 持久性应该能够覆盖或保留持久数据到KeyValue数据库或文件代理,这是根据在安装应用程序的新版本时为Key-Value数据库或文件代理配置的更新策略实现的
- 卸载应用程序时,持久性应能够删除持久数据键值数据库(data Key-Value database)或文件代理
通常,持久性层是在应用程序设计和部署期间配置的。持久性应该能够使用部署阶段配置来覆盖应用程序设计配置。如果缺少部署阶段配置,则将考虑应用程序设计中的配置来部署持久数据。
持久性应在集成到键值数据库或文件代理之前检查新安装和更新的持久性数据。
------------
【end-2019.06.09】