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
- Arquitectura del sistema — roles de cada componente, patrón repositorio con DIP y stack tecnológico.
- Servidor y puertos — qué servicios se exponen, en qué puertos y por qué.
- Guía de instalación local — cómo levantar el proyecto completo en un entorno de desarrollo.
- Stored Procedures — catálogo y convenciones de los SP, Views y Functions que contienen la lógica de negocio.
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 seguridad | Nivel de aplicación | Descripción |
|---|---|---|
| Rate Limiting | Backend / Gateway | Limita peticiones HTTP por minuto por IP/usuario para evitar DoS en la API de creación de bases de datos. |
| Límite de almacenamiento | SQL Server / Backend | Cada base de datos aprovisionada tiene un peso máximo estricto (ej. 20 MB), validado antes de permitir nuevas escrituras. |
| Conexiones concurrentes | SQL 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 SQL | Backend & DB | Prohibición absoluta de concatenación de cadenas; uso obligatorio de parámetros en los Stored Procedures. |
| Ciclo de vida (TTL) | SQL Server / Jobs | Las bases de datos sin actividad durante un periodo determinado se pausan o eliminan automáticamente mediante tareas programadas. |