H release step 2 of 2
[ric-plt/sdlpy.git] / ricsdl-package / README.md
1 RIC SDL
2 =======
3
4 Shared Data Layer in the RAN Intelligent Controller
5
6 Shared Data Layer (SDL) provides a lightweight, high-speed interface for
7 accessing shared data storage. The purpose is to enable utilizing clients to
8 become stateless, conforming with, e.g., the requirements of the fifth
9 generation mobile networks.
10
11
12 Concepts
13 --------
14
15 Namespace
16
17 Namespaces provide data isolation within SDL data storage. That is, data in
18 certain namespace is isolated from the data in other namespaces. Each SDL
19 client uses one or more namespaces. Namespaces can be used, for example, to
20 isolate data belonging to different use cases.
21
22 Keys and Data
23
24 Clients save key-data pairs. Data is passed as a `bytes` type. SDL stores the
25 data as it is. Any structure that this data may have (e.g. a data structure
26 serialized by `pickle`) is meaningful only to the client itself. Clients are
27 responsible for managing the keys. As namespaces provide data isolation,
28 keys in different namespaces always access different data.
29
30 Backend Data Storage
31
32 Backend data storage refers to data storage technology behind SDL API, which
33 handles the actual data storing. SDL API hides the backend data storage
34 implementation from SDL API clients, and therefore backend data storage
35 technology can be changed without affecting SDL API clients. Currently, Redis
36 database is used as a backend data storage solution.
37
38
39 Install
40 -------
41
42 Install from PyPi
43
44 ```
45 python3 -m pip install ricsdl
46 ```
47
48 Install using the source
49
50 ```
51 python3 setup.py install
52 ```
53
54
55 Usage
56 -----
57
58 Instructions how to use SDL can be found from O-RAN Software Community (SC)
59 Documentation under Near Realtime RAN Intelligent Controller (RIC) section:
60 [O-RAN SC Documentation Home](https://docs.o-ran-sc.org/en/latest/)
61
62
63 Unit Testing
64 ------------
65
66 To run the unit tests run the following command in the package directory:
67 `
68 python3 -m pytest
69 `
70
71
72 Examples
73 --------
74
75 See the ``examples`` directory.
76
77
78
79 CI
80 --
81
82 The ci is done with the `tox` tool. See `tox.ini` file for details.