# <center><i class="fa fa-edit"></i> SDL </center> ###### tags: `SDL` :::warning **References:** - [SDL](https://docs.o-ran-sc.org/projects/o-ran-sc-ric-plt-sdl/en/latest/index.html) ::: --- ## Overview Shared Data Layer provides a lightweight, high-speed interface (API) for accessing shared data storage. SDL can be used for storing and sharing any data. Data can be shared at VNF level. One typical use case for SDL is sharing the state data of stateful application processes. Thus enabling stateful application processes to become stateless, conforming with, e.g., the requirements of the fifth generation mobile networks. Some main point of SDL: ![](https://i.imgur.com/M1gog5Y.png) --- ### Backend Data Storage Backend data storage refers to data storage technology behind SDL API which handles the actual data storing. SDL API hides the backend data storage implementation from SDL API clients, and therefore backend data storage technology can be changed without affecting SDL API clients. Currently, Redis database is the most commonly used backend data storage implementation. Illustration of SDL API hides backend data storage technology from application: ![](https://i.imgur.com/AwDCZgt.png) --- ### Namespace Namespaces provide data isolation within SDL data storage. That is, data in certain namespace is isolated from the data in other namespaces. Each SDL client uses one or more namespaces. Namespaces can be used, for example, to isolate data belonging to different use cases. Example of SDL namespace concept: ![](https://i.imgur.com/7AMefiR.png) In the figure above there are two SDL clients, both accessing SDL backend data storage using an SDL API instance (C++ object). Client 1 uses both namespaces: A and B, while client 2 uses only namespace: B. Therefore, data in the namespace: A is visible only to client 1 and data in namespace: B is shared between clients 1 and 2. Namespace management is planned to be moved under a managing entity which enforces some control over how the namespaces are created. For now, however, namespace naming needs to be manually coordinated between clients. --- ### Keys and Data Clients save key-data pairs. Data is passed as byte vectors. SDL stores the data as it is. Any structure that this data may have (e.g. a serialized JSON) is meaningful only to the client itself. Clients are responsible for managing the keys. As namespaces provide data isolation, keys in different namespaces always access different data. --- ### [Notable Note: **SDL Configuration**](https://docs.o-ran-sc.org/projects/o-ran-sc-ric-plt-sdl/en/latest/user-guide.html#configuration)