🎓 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.
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
├── 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
| 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 |
| 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 → "Redis → 6379"
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?
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.
| 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 | Sí | ❌ No |
| PUT | Reemplazar completamente un recurso (envía todos los datos) | Sí | ✅ Sí |
| DELETE | Eliminar un recurso | No | ✅ Sí |
| PATCH | Modificar parcialmente un recurso (solo los datos que cambian) | Sí | ❌ No |
💡 Idempotente: hacer la misma petición múltiples veces produce el mismo resultado que hacerla una sola vez.
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.
| 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é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 |
| CRUD | Método HTTP |
|---|---|
| Create (Crear) | POST |
| Read (Leer) | GET |
| Update (Actualizar) | PUT (completo) / PATCH (parcial) |
| Delete (Eliminar) | DELETE |
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:
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) |
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
| 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.
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
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?
sp_run_scriptsp_execute_external_scriptsp_ml_executeexec_python_script17. ¿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:
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.
| 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) |