Multitenant RTDB: MongoDB
De forma predeterminada, cada tenant tiene una base de datos separada dentro de la misma instancia/clúster de MongoDB.
Por ejemplo, supongamos que tenemos la vertical Energy y los tenants sandbox y production. El servidor MongoDB está en realtimedb:27017. Los strings de conexión URI de MongoDB resultantes de ambos tenants serán:
sandbox → mongodb://realtimedb:27017/onesaitplatform_rtdb_sandbox
production → mongodb://realtimedb:27017/onesaitplatform_rtdb_production
Pero, si es necesario, puedes configurar instancias de MongoDB dedicadas para cada Vertical o Tenant, de la siguiente manera.
Actualmente solo soportamos esta funcionalidad sobre MongoDB, desde la versión 2.0.2-fireball.
Configuración Maestra para RTDB
En primer lugar, lógate como platform_admin (Rol PLATFORM_ADMIN), ya que deberás configurar una Configuración Maestra.
A continuación, ve a Administración de Multitenancy > Configuraciones de Multitenancy:
Ahora haz clic en el botón Crear y serás enviado a la página de creación.
Elige RTDB como tipo de configuración y dale una descripción.
Ahora para el yaml, copia la siguiente plantilla como base:
isolation-level: TENANT
#isolation-level: VERTICAL
databases:
mongodb:
map:
default: mongodb://localhost:27017/
sandbox: mongodb://localhost:27017/
production: mongodb://localhost:27018/
atlas: mongodb+srv://onesait:onesait@cluster0.wgdjl.gcp.mongodb.net/?retryWrites=true&w=majority
#mongodb:
#default: localhost:27017
#onesaitplatform: localhost:27017
#data_portal: localhost:27018
El nivel de aislamiento (isolation-level) puede ser TENANT o VERTICAL. Si el modo TENANT está habilitado, entonces la asignación del servidor MongoDB se realizará a nivel de tenant. Por otro lado, si el modo VERTICAL está habilitado, entonces los servidores se mapearán por vertical.
En la sección de mapa del nivel de mongodb, se configurará la asignación de servidor a tenant/vertical. Los servidores deben estar en el formato URI mongodb.
Una vez hecho esto, guarda la configuración y no olvides reiniciar los siguientes servicios para que se realicen los cambios: controlpanel, routher, dashboardengine.