Skip to content

Plataforma técnica · Arquitectura

Mother Database

Arquitectura Mother PostgreSQL

Mother es la capa de persistencia del ecosistema: una instancia de PostgreSQL 16 que aloja las bases compartidas del sistema y una base aislada por cada tenant. La visión integral de cómo encaja con Orchestrator, Sevastopol y Nostromo vive en Arquitectura del Sistema.

Una sola instancia de PostgreSQL alberga tres tipos de bases:

BaseRol
nostromo_commonParámetros compartidos: monedas, UF/UTM, AFPs, ISAPREs, tramos de impuesto, topes imponibles.
nostromo_commandControl central: autenticación, sesiones, RBAC, registro de tenants y configuración por tenant.
tenant_<empresa>Una base por empresa, clonada desde accounting_template. Aislamiento físico de datos contables.
graph TB
    subgraph Mother["Mother — PostgreSQL 16"]
        NC["nostromo_common<br/>(parámetros)"]
        CMD["nostromo_command<br/>(auth + tenants)"]
        T1["tenant_empresa_1"]
        T2["tenant_empresa_2"]
        TN["tenant_empresa_n"]
    end

    NC -.->|parámetros| T1
    NC -.->|parámetros| T2
    NC -.->|parámetros| TN
    CMD -.->|auth + config| T1
    CMD -.->|auth + config| T2
    CMD -.->|auth + config| TN

Una sola base, schema parametros. Cargada por los loaders Python de Nostromo.

TablaContenido
monedasTipos de cambio (USD, EUR, UF, UTM) desde Banco Central
afpsAdministradoras de fondos de pensiones con tasas vigentes
isapresInstituciones de salud y planes
tramos_impuestoTramos del impuesto único de segunda categoría
topes_imponiblesTopes para cotizaciones previsionales
gratificacionParámetros de gratificación legal

Funciones auxiliares: cálculo de UF a fecha, conversión de monedas, interpolación de tasas. Vista consolidada de parámetros vigentes por período.

  • SCRAM-SHA-256 para autenticación de usuarios y sesiones.
  • Schemas + databases para el aislamiento multi-tenant (no Row-Level Security).
  • CTEs y window functions en queries de reportes financieros.
  • JSONB para configuraciones dinámicas por tenant.
  • wal_level = replica ya configurado: la replicación se habilita sin reiniciar.