resources/views/pages/frontend/docs/uml-esquema-documental-mongo.md
Última modificación: 24 Oct, 2026

6.2 DER: Colección NoSQL MongoDB

Este diagrama modela la estructura de documento BSON de la colección auditoria en MongoDB 7.0, utilizada por Mañuti para almacenar la bitácora de actividad forense de forma no relacional y flexible.


1. Explicación y Semántica del Diagrama

El modelo documental desacopla los metadatos de auditoría de la rigidez de los esquemas SQL:

  • Identificador BSON (_id): Llave primaria de 12 bytes autogenerada por MongoDB con marca de tiempo implícita.
  • Snapshot de Identidad: Almacena el usuario_id numérico relacional pero duplica el usuario_nombre como texto plano. Si el usuario es eliminado o anonimizado en MariaDB, la autoría del evento histórico se conserva inalterada.
  • Sub-documento Dinámico payload: Objeto JSON flexible que almacena los parámetros enviados en el request (sanitizados previamente en el middleware para excluir contraseñas y binarios). Puede contener estructuras anidadas de cualquier profundidad.
  • Indexación: El campo created_at está indexado en MongoDB en orden descendente para acelerar las consultas de telemetría y las políticas de retención ISO 27701.

2. Cómo se Lee este Diagrama

  • La clase modela un documento BSON dentro de la colección auditoria.
  • Los tipos de datos corresponden a los equivalentes nativos de MongoDB (ObjectId, Int64, Int32, ISODate, Object).
  • La nota anexa describe los principios de procesamiento asíncrono y sanitización que gobiernan el almacenamiento del objeto.

3. Implementación en el Framework Mañuti

  • Modelo: App\Models\AuditLog (extiende MongoDB\Laravel\Eloquent\Model).
  • Conexión: DB_MONGO_CONNECTION=mongodb configurada en config/database.php.
  • Escritura: Ejecutada de forma asíncrona por el job App\Jobs\ProcessAuditLog en workers de Horizon.

4. Diagrama Mermaid

classDiagram
    class Collection_auditoria {
        +_id : ObjectId PK
        +usuario_id : Int64 Nullable
        +usuario_nombre : String
        +ip : String
        +user_agent : String
        +permiso : String
        +url : String
        +metodo : String
        +status : Int32
        +payload : Object JSON
        +created_at : ISODate
    }

    note for Collection_auditoria "Payload: Contiene los inputs del Request (limpio de contraseñas/tokens).<br>Estructura flexible.<br><br>Este documento se genera de forma asíncrona vía Laravel Horizon."

Enlaces Relacionados

Edita este documento en >> uml-esquema-documental-mongo.md
← Volver a la Landing Page