|
| 1 | +Feature Architecture : persistency/key_val_storage |
| 2 | +================================================== |
| 3 | + |
| 4 | +Overview |
| 5 | +-------- |
| 6 | + |
| 7 | +- key_val_storage provides the capability to efficiently store, retrieve, and |
| 8 | + manage key-value pairs in a persistent storage system. |
| 9 | + |
| 10 | +Description |
| 11 | +----------- |
| 12 | + |
| 13 | +- key_val_storage organize data as pairs, where each unique key is associated with a specific value. |
| 14 | + The key acts as a unique identifier for getting the value. |
| 15 | +- The data is persisted in JSON format to the file system, providing a human-readable, |
| 16 | + and widely supported way to store and manage key-value pairs. |
| 17 | +- The JSON data persisted is according to RFC-8259. |
| 18 | + |
| 19 | +Rationale Behind Architecture Decomposition |
| 20 | +******************************************* |
| 21 | + |
| 22 | +- The architecture is decomposed to include a dedicated JSON parser component (TinyJSON) to facilitate the persistent storage of data in JSON format. |
| 23 | +- The architecture is decomposed to include a FileStorage component (fs) to read and write to the file system. |
| 24 | + |
| 25 | + |
| 26 | +Static Architecture |
| 27 | +------------------- |
| 28 | + |
| 29 | +.. feat_arc_sta:: key_val_storage |
| 30 | + :id: FEAT_ARC_STA__persistency_key_val_storage__key_value_storage |
| 31 | + :security: YES |
| 32 | + :safety: ASIL_B |
| 33 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation |
| 34 | + :status: valid |
| 35 | + |
| 36 | +.. uml:: _assets/kvs_static_view.puml |
| 37 | + |
| 38 | +Dynamic Architecture |
| 39 | +-------------------- |
| 40 | + |
| 41 | +.. feat_arc_dyn:: KVS Builder |
| 42 | + :id: FEAT_ARC_DYN__persistency_key_val_storage__builder_pattern |
| 43 | + :security: YES |
| 44 | + :safety: ASIL_B |
| 45 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation,FEAT_REQ__persistency_key_val_storage__initialization,FEAT_REQ__persistency_key_val_storage__error,FEAT_REQ__persistency_key_val_storage__get_value |
| 46 | + :status: valid |
| 47 | + |
| 48 | +.. uml:: _assets/kvs_dyn_builder.puml |
| 49 | + |
| 50 | +.. feat_arc_dyn:: Check if key contains default value |
| 51 | + :id: FEAT_ARC_DYN__persistency_key_val_storage__check_key_default_value |
| 52 | + :security: YES |
| 53 | + :safety: ASIL_B |
| 54 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation,FEAT_REQ__persistency_key_val_storage__initialization,FEAT_REQ__persistency_key_val_storage__error,FEAT_REQ__persistency_key_val_storage__get_value |
| 55 | + :status: valid |
| 56 | + |
| 57 | +.. uml:: _assets/kvs_dyn_check_value_default.puml |
| 58 | + |
| 59 | +.. feat_arc_dyn:: Delete key from KVS instance |
| 60 | + :id: FEAT_ARC_DYN__persistency_key_val_storage__delete_key |
| 61 | + :security: YES |
| 62 | + :safety: ASIL_B |
| 63 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation,FEAT_REQ__persistency_key_val_storage__initialization,FEAT_REQ__persistency_key_val_storage__error,FEAT_REQ__persistency_key_val_storage__get_value |
| 64 | + :status: valid |
| 65 | + |
| 66 | +.. uml:: _assets/kvs_dyn_delete_data_key.puml |
| 67 | + |
| 68 | +.. feat_arc_dyn:: Flush to permanent storage |
| 69 | + :id: FEAT_ARC_DYN__persistency_key_val_storage__flush |
| 70 | + :security: YES |
| 71 | + :safety: ASIL_B |
| 72 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation,FEAT_REQ__persistency_key_val_storage__initialization,FEAT_REQ__persistency_key_val_storage__error,FEAT_REQ__persistency_key_val_storage__get_value |
| 73 | + :status: valid |
| 74 | + |
| 75 | +.. uml:: _assets/kvs_dyn_flush_local_repr_to_file.puml |
| 76 | + |
| 77 | +.. feat_arc_dyn:: Read key value |
| 78 | + :id: FEAT_ARC_DYN__persistency_key_val_storage__read_key |
| 79 | + :security: YES |
| 80 | + :safety: ASIL_B |
| 81 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation,FEAT_REQ__persistency_key_val_storage__initialization,FEAT_REQ__persistency_key_val_storage__error,FEAT_REQ__persistency_key_val_storage__get_value |
| 82 | + :status: valid |
| 83 | + |
| 84 | +.. uml:: _assets/kvs_dyn_read_data_key.puml |
| 85 | + |
| 86 | +.. feat_arc_dyn:: Read data from permanent storage |
| 87 | + :id: FEAT_ARC_DYN__persistency_key_val_storage__read_data_from_perm_storage |
| 88 | + :security: YES |
| 89 | + :safety: ASIL_B |
| 90 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation,FEAT_REQ__persistency_key_val_storage__initialization,FEAT_REQ__persistency_key_val_storage__error,FEAT_REQ__persistency_key_val_storage__get_value |
| 91 | + :status: valid |
| 92 | + |
| 93 | +.. uml:: _assets/kvs_dyn_read_file_into_local_repr.puml |
| 94 | + |
| 95 | +.. feat_arc_dyn:: Write value to key |
| 96 | + :id: FEAT_ARC_DYN__persistency_key_val_storage__write_key |
| 97 | + :security: YES |
| 98 | + :safety: ASIL_B |
| 99 | + :satisfies: FEAT_REQ__persistency_key_val_storage__creation,FEAT_REQ__persistency_key_val_storage__initialization,FEAT_REQ__persistency_key_val_storage__error,FEAT_REQ__persistency_key_val_storage__get_value |
| 100 | + :status: valid |
| 101 | + |
| 102 | +.. uml:: _assets/kvs_dyn_write_data_key.puml |
| 103 | + |
| 104 | + |
| 105 | +Logical Interfaces |
| 106 | +------------------ |
| 107 | + |
| 108 | +.. feat_arc_int:: Ikvs |
| 109 | + :id: FEAT_ARC_INT__persistency_key_val_storage__keyvaluestorage |
| 110 | + :security: YES |
| 111 | + :safety: ASIL_B |
| 112 | + :satisfies: FEAT_REQ__persistency_key_val_storage__get_keys,FEAT_REQ__persistency_key_val_storage__set_value,FEAT_REQ__persistency_key_val_storage__get_value,FEAT_REQ__persistency_key_val_storage__persistency,FEAT_REQ__persistency_key_val_storage__reset |
| 113 | + :status: valid |
| 114 | + |
| 115 | + |
| 116 | +.. uml:: _assets/kvs_interface.puml |
0 commit comments