|
|
@@ -0,0 +1,75 @@
|
|
|
+---
|
|
|
+marp: true
|
|
|
+theme: uncover
|
|
|
+paginate: false
|
|
|
+size: 16:9
|
|
|
+backgroundColor: #0f172a
|
|
|
+color: #e5e7eb
|
|
|
+style: |
|
|
|
+ section {
|
|
|
+ font-size: 2em;
|
|
|
+ }
|
|
|
+---
|
|
|
+
|
|
|
+# Spring Data
|
|
|
+
|
|
|
+### Capa de persistencia relacional
|
|
|
+
|
|
|
+<br/>
|
|
|
+<br/>
|
|
|
+
|
|
|
+##### Daniel García Costa
|
|
|
+###### 2026
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## ¿Que vamos a ver?
|
|
|
+
|
|
|
+- **Contexto y arquitectura del sistema**
|
|
|
+- **Modelo relacional vs modelo de dominio**
|
|
|
+- **Consultas en Spring Data**
|
|
|
+ - Métodos de abstracción
|
|
|
+ - JPQL
|
|
|
+ - SQL nativo
|
|
|
+- **Proyecciones, agregados y rankings**
|
|
|
+- **Paginación y filtrado con `Pageable`**
|
|
|
+- **Optimizaciones**
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## Contexto
|
|
|
+
|
|
|
+Simulación de un juego MMO (multijugador masivo en línea) multimundo.
|
|
|
+
|
|
|
+- **Servidor Master (coordinador)**
|
|
|
+ - Recibe eventos de los Shard, consulta estados, jugadores, rankings, etc.
|
|
|
+- **Servidor Shard (mundo)**
|
|
|
+ - Aloja jugadores
|
|
|
+ - Contiene la dinámica del juego
|
|
|
+ - Reenvía los eventos al Master
|
|
|
+
|
|
|
+---
|
|
|
+## Arquitectura
|
|
|
+
|
|
|
+- **Servidor Master**
|
|
|
+ - Monolítico (un único servicio)
|
|
|
+ - División lógica en controladores -> servicios -> repositorios
|
|
|
+ - Solo recibe y agrega información
|
|
|
+ - GUI de consulta
|
|
|
+- **Servidor Shard**
|
|
|
+ - Dos servicios (Persistence + Core)
|
|
|
+ - Gestiona los eventos de los jugadores
|
|
|
+ - GUI para simular jugadores
|
|
|
+ - Reenvío de eventos a Master
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## ¿Por qué esta arquitectura?
|
|
|
+
|
|
|
+- Separación clara de responsabilidades
|
|
|
+- Escalado horizontal de shards
|
|
|
+- Aislamiento del dominio de juego
|
|
|
+- Centralización de analítica
|
|
|
+- Escenario realista para estudiar consultas
|
|
|
+
|
|
|
+---
|