Persistency KVS Architecture#

Persistency KVS Feature Architecture
status: valid
security: NO
safety: ASIL_B
tags: persistency
version: 1

Overview#

The Key-Value-Storage (kvs) provides the capability to efficiently store, retrieve, and manage key-value pairs in a persistent storage system.

Description#

  • kvs organize data as pairs, where each unique key is associated with a specific value. The key acts as a unique identifier for getting the value.

  • The data is persisted in JSON format to the file system, providing a human-readable, and widely supported way to store and manage key-value pairs.

  • The JSON data persisted is according to RFC-8259.

Glossary:

  • User: Program code that is written by a person that initiates the given functionality call or receives a callback.

Requirements#

Overview of Feature Requirements#

Title

ID

Separate data stores

feat_req__persistency__access_control

Asynchronous operation

feat_req__persistency__async_api

Signalling completion of asynchronous operation

feat_req__persistency__async_completion

Atomic store operation

feat_req__persistency__atomic_store

Cached access

feat_req__persistency__cached_access

Configuration

feat_req__persistency__cfg

Intra-Process data access

feat_req__persistency__concurrency

Confidential storage

feat_req__persistency__confidential_storage

C++ and Rust language support

feat_req__persistency__cpp_rust

Provisioning of default values via external file

feat_req__persistency__default_value_file

Retrieval of default values

feat_req__persistency__default_value_get

Default values

feat_req__persistency__default_values

Support development mode

feat_req__persistency__dev_mode

Direct access

feat_req__persistency__direct_access

Dynamic memory allocation during runtime

feat_req__persistency__dynamic_memory_alloc

Random access time

feat_req__persistency__fast_access

Integrity check

feat_req__persistency__integrity_check

Load persistent data

feat_req__persistency__load_data

Access from multiple applications

feat_req__persistency__multiple_app

Multiple KVS per application

feat_req__persistency__multiple_kvs

Operating system agnostic implementation

feat_req__persistency__os_agnostic

Support production mode

feat_req__persistency__prod_mode

Recovery from reset

feat_req__persistency__recovery_from_reset

Reset resistant storage

feat_req__persistency__reset_resistant

Reset to default values

feat_req__persistency__reset_to_default

Snapshot create

feat_req__persistency__snapshot_create

Snapshot remove

feat_req__persistency__snapshot_remove

Snapshot restore

feat_req__persistency__snapshot_restore

Multiple storage backends

feat_req__persistency__storage_backends

Store persistent data

feat_req__persistency__store_data

Supported datatypes (Keys)

feat_req__persistency__support_datatype_keys

Supported datatypes (Values)

feat_req__persistency__support_datatype_value

Tooling

feat_req__persistency__tooling

Update Mechanism

feat_req__persistency__update_mechanism

Variant management support

feat_req__persistency__variant_management

Versioning

feat_req__persistency__versioning

Write amplification minimization

feat_req__persistency__write_amplification

Rationale Behind Architecture Decomposition#

  • The architecture has one component comp__persistency_kvs and it uses mod__baselibs for JSON handling and file system access.

Static Architecture#

The static view shows the feature with its logical interface and the components implementing it. The diagram is generated from the Sphinx Needs model.

Dynamic Architecture#

The dynamic views describe the interactions between the user and the components of the feature for the main use cases of the KVS.

Logical Interfaces#

The logical interfaces of the feature are defined in the platform documentation: Ikvs (logic_arc_int__persistency__interface).

See SCORE Features for more information.

Used Components#

The feature is realized by the following components of the module: