📝 bbdd_http_ml_TAI
← Volver

📚 BASES DE DATOS, HTTP Y MACHINE LEARNING EN SQL SERVER

Clase magistral para el examen TAI

🎓 Cómo usar este documento: Lee la explicación de cada bloque temático y responde las preguntas antes de pasar al siguiente. Las soluciones comentadas están al final.


BLOQUE 1 — SGBD Y SUS PUERTOS

¿Qué es un SGBD?

Un Sistema Gestor de Bases de Datos (SGBD) es el software que permite crear, gestionar y acceder a bases de datos. Cada SGBD escucha conexiones en un puerto TCP estándar.


Tipos de SGBD

Tipos de SGBD
├── Relacional (SQL)        → MySQL, PostgreSQL, SQL Server, Oracle, DB2...
├── NoSQL — Documentos      → MongoDB, CouchDB, RavenDB, RethinkDB...
├── NoSQL — Clave-valor     → Redis, Tarantool, Aerospike, Hazelcast...
├── NoSQL — Columnas        → Cassandra, HBase...
├── NoSQL — Búsqueda        → Elasticsearch
├── NoSQL — Grafos          → Neo4j
├── Orientada a objetos     → GemStone, ObjectDB, Zope, DB4O...
├── Multi-modelo            → ArangoDB, OrientDB...
├── Almacén de datos (DW)   → Apache Hive, Snowflake...
├── Series temporales       → InfluxDB
└── NewSQL                  → VoltDB

Tabla de SGBD y sus puertos — Los más importantes

Nombre Tipo Puerto Comentario
MySQL / MariaDB Relacional 3306 Puerto estándar MySQL/MariaDB
PostgreSQL Relacional 5432 Puerto estándar PostgreSQL
Microsoft SQL Server Relacional 1433 Puerto estándar SQL Server
MongoDB NoSQL (Documentos) 27017 Puerto estándar MongoDB
Oracle Relacional 1521 Puerto del listener Oracle
Redis NoSQL (Clave-valor, en memoria) 6379 Puerto estándar Redis
Cassandra NoSQL (Columnas) 9042 Puerto estándar CQL
Elasticsearch NoSQL (Búsqueda y análisis) 9200 Puerto HTTP REST
IBM DB2 Relacional 50000 Puerto estándar DB2
Apache Hive Almacén de datos 10000 Puerto HiveServer2
Amazon Aurora Relacional 3306 Compatible con MySQL, mismo puerto
Neo4j Base de datos de grafos 7474 Interfaz web y API REST
InfluxDB Series temporales 8086 API HTTP
CouchDB NoSQL (Documentos) 5984 HTTP REST
DynamoDB NoSQL 8000 Solo en versión local (desarrollo)
Snowflake Almacén de datos en la nube No aplica Servicio cloud, sin puerto fijo

Tabla extendida — SGBD adicionales

Nombre Tipo Puerto
HBase NoSQL (Columnas) 60000 / 60010
ArangoDB Multi-modelo 8529
Couchbase NoSQL (Docs + clave-valor) 8091
RavenDB NoSQL (Documentos) 8080
Riak NoSQL (Distribuida) 8098
VoltDB Relacional (NewSQL) 21212
Tarantool NoSQL (Clave-valor) 3301
HSQLDB / HyperSQL Relacional Java embebida 9001
Aerospike NoSQL (Clave-valor) 3000
RethinkDB NoSQL (Documentos) 28015
Hazelcast NoSQL (Clave-valor) 5701
OrientDB Multi-modelo 2480
GemStone OO 50378
ObjectDB OO 6136
MaxDB Relacional 7210

💡 Mnemotecnia para los puertos más importantes:
- MySQL = 3306 → "MySQL tiene 3 partes: M-Y-SQL → 3306"
- PostgreSQL = 5432 → "Post5gres → 5432"
- SQL Server = 1433 → "1 SQL Server, 433"
- MongoDB = 27017 → "Mongo 27017"
- Oracle = 1521 → "Ora1521e"
- Redis = 6379 → "Redis6379"


🧪 TEST — BLOQUE 1: SGBD y puertos

1. ¿Cuál es el puerto estándar de MySQL y MariaDB?


2. ¿Qué SGBD usa el puerto 5432?


3. Microsoft SQL Server escucha por defecto en el puerto:


4. ¿Qué tipo de SGBD es MongoDB?


5. Amazon Aurora usa el puerto 3306 porque:


6. ¿Qué SGBD NoSQL está especializado en búsqueda y análisis, y usa el puerto 9200?


7. Oracle Database usa el puerto 1521. ¿Para qué componente es ese puerto?


8. ¿Qué SGBD NoSQL de clave-valor en memoria usa el puerto 6379?


BLOQUE 2 — MÉTODOS DE PETICIÓN HTTP

¿Qué son los métodos HTTP?

Los métodos de petición HTTP (también llamados verbos HTTP) indican la acción que el cliente desea realizar sobre un recurso del servidor. Son el mecanismo básico de comunicación en la web y las APIs REST.


Los 6 métodos principales

Método Función principal ¿Envía cuerpo? Idempotente
GET Obtener/recuperar un recurso No ✅ Sí
HEAD Como GET pero solo devuelve las cabeceras (sin cuerpo) No ✅ Sí
POST Crear un nuevo recurso / enviar datos ❌ No
PUT Reemplazar completamente un recurso (envía todos los datos) ✅ Sí
DELETE Eliminar un recurso No ✅ Sí
PATCH Modificar parcialmente un recurso (solo los datos que cambian) ❌ No

💡 Idempotente: hacer la misma petición múltiples veces produce el mismo resultado que hacerla una sola vez.


Descripción detallada de cada método

GET
└── El más usado. Solicita un recurso al servidor.
    El servidor responde con los datos solicitados.
    No modifica nada en el servidor.

HEAD
└── Como GET pero SIN cuerpo de respuesta.
    Solo devuelve los encabezados (headers).
    Útil para comprobar si un recurso existe o cuándo fue modificado.

POST
└── Envía datos al servidor para CREAR un nuevo recurso.
    Los datos van en el cuerpo de la petición.
    Cada petición puede crear un recurso nuevo (no idempotente).

PUT
└── Envía TODOS los datos de un recurso para REEMPLAZARLO completamente.
    Si el recurso no existe, lo crea.
    Se envían todos los campos aunque no hayan cambiado.

DELETE
└── Elimina el recurso indicado en la URL.

PATCH
└── Modifica PARCIALMENTE un recurso.
    Solo se envían los campos que se quieren cambiar.
    Diferencia clave con PUT: PUT reemplaza todo, PATCH solo actualiza lo necesario.

Diferencia clave: PUT vs PATCH

PUT PATCH
Acción Reemplaza completamente el recurso Modifica parcialmente el recurso
Datos enviados Todos los campos (aunque no cambien) Solo los campos que se modifican
Idempotente ✅ Sí ❌ No (generalmente)

Métodos adicionales

Método Función
CONNECT Establece un túnel (usado para HTTPS a través de proxies)
OPTIONS Describe las opciones de comunicación disponibles para el recurso
TRACE Rastrea el camino de la petición; útil para diagnóstico y detección de cambios en cabeceras

Métodos HTTP y operaciones CRUD

CRUD Método HTTP
Create (Crear) POST
Read (Leer) GET
Update (Actualizar) PUT (completo) / PATCH (parcial)
Delete (Eliminar) DELETE

🧪 TEST — BLOQUE 2: Métodos HTTP

9. ¿Cuál es la diferencia principal entre GET y HEAD?


10. ¿Qué método HTTP se usa para crear un nuevo recurso en el servidor?


11. ¿Cuál es la diferencia clave entre PUT y PATCH?


12. ¿Qué método HTTP establece un túnel de comunicación?


13. En términos de operaciones CRUD, ¿a qué operación corresponde el método DELETE?


14. El método TRACE se usa principalmente para:


BLOQUE 3 — MACHINE LEARNING SERVICES EN SQL SERVER

¿Qué es Machine Learning Services?

SQL Server Machine Learning Services es una característica de SQL Server que permite ejecutar scripts de Python y R directamente dentro de la base de datos, sin necesidad de mover los datos a otro servidor.

Característica Descripción
Objetivo Ejecutar análisis predictivo y aprendizaje automático con datos relacionales
Ventaja clave Los scripts se ejecutan donde residen los datos (no hay transferencia de datos por red)
Procedimiento almacenado sp_execute_external_script
Arquitectura Marco de extensibilidad (Extensibility Framework)

Capacidades principales

SQL Server Machine Learning Services
├── Preparar y limpiar datos
├── Ingeniería de características (feature engineering)
├── Entrenar modelos de aprendizaje automático
├── Evaluar modelos
└── Implementar/desplegar modelos

Paquetes Microsoft incluidos

Lenguaje Paquete Descripción
Python revoscalepy Paquete principal para Python escalable. Transformaciones, manipulación de datos, estadísticas, visualización y modelado. Soporta procesamiento paralelo automático.
Python microsoftml Algoritmos de ML para análisis de texto, imágenes y opiniones. (Solo SQL Server 2016–2019)
R RevoScaleR Paquete principal para R escalable. Equivalente a revoscalepy para R. Procesamiento paralelo automático.
R MicrosoftML (R) Algoritmos de ML para texto, imágenes y opiniones en R. (Solo SQL Server 2016–2019)
R olapR Consultas MDX en cubos OLAP de SQL Server Analysis Services. (Solo SQL Server 2016–2019)
R sqlrutils Mecanismo para encapsular scripts R en procedimientos almacenados T-SQL. (Solo SQL Server 2016–2019)

💡 También se pueden instalar frameworks de código abierto como PyTorch, TensorFlow y scikit-learn.


Marco de extensibilidad

El Extensibility Framework es la arquitectura que permite a SQL Server ejecutar scripts externos (Python, R) de forma segura y aislada:

Marco de extensibilidad de SQL Server ML Services
├── Extensión de Python  → Ejecuta scripts Python en proceso separado
├── Extensión de R       → Ejecuta scripts R en proceso separado
└── Plataforma de extensibilidad → Gestiona la comunicación entre SQL Server
                                    y los procesos externos

🧪 TEST — BLOQUE 3: Machine Learning Services en SQL Server

15. ¿Cuál es la principal ventaja de ejecutar scripts de ML directamente en SQL Server?


16. ¿Qué procedimiento almacenado se usa para ejecutar scripts Python o R en SQL Server?


17. ¿Cuál es el paquete principal de Microsoft para Python escalable en SQL Server Machine Learning Services?


18. El paquete olapR de R en SQL Server está diseñado para:



✅ SOLUCIONES COMENTADAS


1 → c) MySQL y MariaDB usan el puerto 3306. Es uno de los puertos de base de datos más conocidos. MariaDB es un fork comunitario de MySQL y mantiene compatibilidad total, incluyendo el puerto.

2 → b) PostgreSQL usa el puerto 5432. Es un SGBD relacional de código abierto muy avanzado. No confundir con MySQL (3306), Oracle (1521) ni MongoDB (27017).

3 → d) Microsoft SQL Server escucha por defecto en el puerto 1433. Es el puerto estándar asignado para SQL Server en entornos Windows. Oracle usa 1521; PostgreSQL usa 5432.

4 → b) MongoDB es un SGBD NoSQL orientado a documentos. Almacena datos en formato BSON (similar a JSON). No usa tablas ni SQL estándar. Redis sería clave-valor; Neo4j sería grafos; Cassandra sería columnas.

5 → b) Amazon Aurora usa el puerto 3306 porque es compatible con MySQL (y también con PostgreSQL en su versión Aurora PostgreSQL, que usaría 5432). Aurora replica el protocolo de wire de MySQL para facilitar la migración.

6 → d) Elasticsearch es el SGBD especializado en búsqueda y análisis que usa el puerto 9200 para su API HTTP REST. Redis (6379) es clave-valor; Cassandra (9042) es columnas; MongoDB (27017) es documentos.

7 → b) El puerto 1521 es el del listener de Oracle, que es el proceso que acepta y gestiona las conexiones entrantes de los clientes hacia la base de datos Oracle. Es el punto de entrada de comunicación.

8 → c) Redis (Remote Dictionary Server) es un SGBD NoSQL de clave-valor que opera principalmente en memoria, lo que lo hace extremadamente rápido. Usa el puerto 6379. Hazelcast (5701) y Tarantool (3301) son también clave-valor pero usan puertos distintos.

9 → b) HEAD hace la misma petición que GET pero el servidor solo devuelve las cabeceras (headers) sin el cuerpo de la respuesta. Es útil para verificar si un recurso existe, obtener metadatos o comprobar la fecha de última modificación sin descargar el contenido completo.

10 → c) POST es el método para crear nuevos recursos en el servidor. Envía los datos en el cuerpo de la petición. No es idempotente: hacer la misma petición POST varias veces puede crear múltiples recursos.

11 → b) La diferencia clave es que PUT reemplaza completamente el recurso (hay que enviar todos los campos aunque no hayan cambiado) mientras que PATCH modifica parcialmente (solo se envían los campos que se quieren actualizar). PUT es idempotente; PATCH generalmente no.

12 → c) El método CONNECT establece un túnel de comunicación entre el cliente y el servidor. Se usa principalmente para conexiones HTTPS a través de proxies HTTP, estableciendo un túnel TCP cifrado.

13 → d) El método DELETE corresponde a la operación Delete del CRUD. GET = Read, POST = Create, PUT/PATCH = Update, DELETE = Delete.

14 → b) TRACE rastrea el camino que sigue la petición HTTP desde el cliente hasta el servidor, permitiendo ver si algún proxy o intermediario ha modificado las cabeceras. Es útil para diagnóstico y detección de problemas de seguridad.

15 → b) La principal ventaja es que los scripts se ejecutan donde residen los datos (en el propio SQL Server), eliminando la necesidad de transferir grandes volúmenes de datos a través de la red hacia otro servidor de análisis. Esto mejora el rendimiento y la seguridad.

16 → b) El procedimiento almacenado para ejecutar scripts externos en SQL Server Machine Learning Services es sp_execute_external_script. A través de él se especifica el lenguaje (Python o R) y el script a ejecutar.

17 → c) revoscalepy es el paquete principal de Microsoft para Python escalable en SQL Server ML Services. Proporciona transformaciones de datos, estadísticas, visualización y modelado con soporte de procesamiento paralelo automático. RevoScaleR es su equivalente para R.

18 → b) El paquete olapR de R está diseñado para realizar consultas MDX en cubos OLAP de SQL Server Analysis Services. Permite a los analistas de datos usar R para consultar cubos multidimensionales directamente. Solo está disponible en SQL Server 2016–2019.


📊 TABLA FLASH FINAL — Datos clave SGBD, HTTP y ML en SQL Server

Concepto Valor / Respuesta clave
MySQL / MariaDB: puerto 3306
PostgreSQL: puerto 5432
Microsoft SQL Server: puerto 1433
MongoDB: puerto 27017
Oracle (listener): puerto 1521
Redis: puerto 6379
Cassandra (CQL): puerto 9042
Elasticsearch (HTTP REST): puerto 9200
IBM DB2: puerto 50000
Apache Hive (HiveServer2): puerto 10000
Amazon Aurora: puerto 3306 (compatible con MySQL)
Neo4j: puerto 7474
InfluxDB: puerto 8086
CouchDB: puerto 5984
Snowflake: puerto No aplica (servicio cloud)
MySQL tipo SGBD Relacional
MongoDB tipo SGBD NoSQL — Documentos
Redis tipo SGBD NoSQL — Clave-valor (en memoria)
Cassandra tipo SGBD NoSQL — Columnas
Elasticsearch tipo SGBD NoSQL — Búsqueda y análisis
Neo4j tipo SGBD Base de datos de grafos
InfluxDB tipo SGBD Series temporales
Snowflake tipo SGBD Almacén de datos en la nube
GET Obtener/recuperar recurso
HEAD Como GET pero solo cabeceras, sin cuerpo
POST Crear nuevo recurso (no idempotente)
PUT Reemplazar completamente (todos los datos)
DELETE Eliminar recurso
PATCH Modificar parcialmente (solo los campos que cambian)
CONNECT Establece un túnel
OPTIONS Describe las opciones de comunicación
TRACE Rastrea el camino de la petición
PUT vs PATCH PUT = todo el recurso; PATCH = solo lo que cambia
CRUD → HTTP Create=POST, Read=GET, Update=PUT/PATCH, Delete=DELETE
Idempotente GET, HEAD, PUT, DELETE (no: POST, PATCH)
SQL Server ML Services Ejecuta Python y R dentro de SQL Server
Ventaja ML en SQL Server Datos no se mueven por red: scripts donde están los datos
Procedimiento para scripts externos sp_execute_external_script
Paquete Python principal (MS) revoscalepy
Paquete R principal (MS) RevoScaleR
Paquete ML para texto/imágenes (Python) microsoftml
Paquete ML para texto/imágenes (R) MicrosoftML (R)
Paquete consultas OLAP (R) olapR
Paquete R en procedimientos T-SQL sqlrutils
Frameworks OS compatibles PyTorch, TensorFlow, scikit-learn
Arquitectura de ejecución Marco de extensibilidad (Extensibility Framework)