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.

Related Topics