Saltar al contenido principal

Raft DB

Database-Centric Architecture — Plataforma de Hosting DB & Servicios para Desarrolladores.

¿Qué es Raft DB?

Raft DB es un sistema de información robusto y seguro que actúa como un proveedor de servicios de bases de datos gratuitas (y herramientas de prueba) para estudiantes y desarrolladores.

La particularidad del proyecto radica en su arquitectura: toda la lógica de negocio reside y se ejecuta dentro de la base de datos, delegando al backend un rol exclusivamente de mediador, despachador y asegurador de la comunicación.

Filosofía de la arquitectura

Este proyecto rompe el paradigma tradicional donde el backend procesa las reglas de negocio. Aquí se adopta un enfoque Database-Centric:

:::danger Regla de oro El backend es "tonto" y la base de datos es "inteligente". Ninguna regla de validación compleja, cálculo, asignación de permisos o flujo de negocio se escribe en el código del servidor de aplicaciones. El backend solo recibe la petición, la traslada a la base de datos, y retorna la respuesta estructurada. :::

Para entender cómo se reparten las responsabilidades entre la base de datos y el backend, y cómo se implementa el patrón repositorio con inversión de dependencias, ver Arquitectura del sistema.

Mapa de la documentación

Requerimientos técnicos

  • Patrón Repositorio con Inversión de Dependencias (DIP): el backend define interfaces/contratos de persistencia; las implementaciones concretas solo invocan Stored Procedures o Views. Controladores y servicios dependen únicamente de la abstracción.
  • Base de datos: Microsoft SQL Server.
  • Backend: framework a elección del equipo (se recomienda un stack fuertemente tipado como .NET Web API, o soluciones ágiles como Laravel / NestJS).

Políticas de seguridad y viabilidad del servicio

Al tratarse de un servicio gratuito de aprovisionamiento de bases de datos, es mandatorio mitigar exploits, abusos de recursos y ataques maliciosos:

Control de seguridadNivel de aplicaciónDescripción
Rate LimitingBackend / GatewayLimita peticiones HTTP por minuto por IP/usuario para evitar DoS en la API de creación de bases de datos.
Límite de almacenamientoSQL Server / BackendCada base de datos aprovisionada tiene un peso máximo estricto (ej. 20 MB), validado antes de permitir nuevas escrituras.
Conexiones concurrentesSQL Server (User Policy)Restricción estricta de usuarios concurrentes por base de datos para evitar agotar el pool de conexiones del servidor principal.
Prevención de inyecciones SQLBackend & DBProhibición absoluta de concatenación de cadenas; uso obligatorio de parámetros en los Stored Procedures.
Ciclo de vida (TTL)SQL Server / JobsLas bases de datos sin actividad durante un periodo determinado se pausan o eliminan automáticamente mediante tareas programadas.