Storage Layer
The Storage Layer is a module that extends the Resource Distributor functionality, responsible for managing storage instances across all tenants within the core system.
Each tenant is allocated a dedicated StorageLayer instance. However, multiple StorageLayer instances may utilize the same Storage instance based on the tenant's database connection configuration.
There is one instance of StorageLayer for each of the tenants. However, they might
share same instance of a Storage depending on the database connection settings of the
tenant.
graph TD
%% Tenants
Public[public]
Tenant1[tenant1]
Tenant2[tenant2]
Tenant3[tenant3]
Tenant4[tenant4]
%% Storage Layers
PublicSL[StorageLayer1]
Tenant1SL[StorageLayer2]
Tenant2SL[StorageLayer3]
Tenant3SL[StorageLayer4]
Tenant4SL[StorageLayer5]
%% Storage
Storage1[StorageA]
Storage2[StorageB]
%% Connections from tenants to their storage layers
Public --> PublicSL
Tenant1 --> Tenant1SL
Tenant2 --> Tenant2SL
Tenant3 --> Tenant3SL
Tenant4 --> Tenant4SL
%% Convergence to Storage
PublicSL --> Storage1
Tenant1SL --> Storage1
Tenant2SL --> Storage2
Tenant3SL --> Storage2
Tenant4SL --> Storage2
style Public fill:#faedcd,stroke:none,rx:10,ry:10
style Tenant1 fill:#faedcd,stroke:none,rx:10,ry:10
style Tenant2 fill:#faedcd,stroke:none,rx:10,ry:10
style Tenant3 fill:#faedcd,stroke:none,rx:10,ry:10
style Tenant4 fill:#faedcd,stroke:none,rx:10,ry:10
style PublicSL fill:#caf0f8,stroke:none,rx:10,ry:10
style Tenant1SL fill:#caf0f8,stroke:none,rx:10,ry:10
style Tenant2SL fill:#caf0f8,stroke:none,rx:10,ry:10
style Tenant3SL fill:#caf0f8,stroke:none,rx:10,ry:10
style Tenant4SL fill:#caf0f8,stroke:none,rx:10,ry:10
style Storage1 fill:#ccd5ae,stroke:none,rx:10,ry:10
style Storage2 fill:#ccd5ae,stroke:none,rx:10,ry:10
Storage is an interface defined in the Plugin Interface Repo. Each instance of Storage essentially is a connection pool to a database.