MySQL HeatWave es un servicio administrado en Oracle Cloud Infrastructure que combina la potencia de MySQL tradicional con un motor de análisis en memoria optimizado para cargas de trabajo OLAP. A diferencia de una instalación manual de MySQL, HeatWave gestiona automáticamente parches, alta disponibilidad y escalabilidad, y además permite acelerar consultas complejas en grandes volúmenes de datos gracias a su motor de procesamiento en paralelo. Esto lo convierte en una solución ideal para proyectos que requieren tanto transacciones (OLTP) como análisis de datos en tiempo real, sin tener que replicar información hacia un data warehouse separado. El resultado es una base de datos ágil, segura y con un rendimiento de nivel empresarial, lista para integrarse en aplicaciones modernas o entornos de análisis de datos.
Crear una base de datos en MySQL HeatWave Standalone es un proceso sencillo en OCI y puede aprovechar el Always Free Plan para pruebas y entornos de desarrollo.

Al crear la instancia, se definen el nombre de la base de datos, el usuario administrador y la contraseña de acceso, además de la red virtual (VCN) y subred donde residirá el servicio —normalmente se reutilizan las que ya existen en el tenancy.


Para el hardware, Oracle recomienda las configuraciones sugeridas por defecto, que son más que suficientes para ambientes de prueba y desarrollo. Una vez creada la instancia, las credenciales (usuario, contraseña, host y puerto) estarán disponibles para conectarse desde aplicaciones o scripts en Python, utilizando una conexión segura vía SSL.

1. Conceptos Clave: ¿Qué es MySQL HeatWave?
MySQL HeatWave es una oferta administrada de MySQL Database Service (MDS) en OCI con una capa adicional de aceleración en memoria para análisis (OLAP).
🔑 Características principales:
- MySQL 100% compatible → cualquier aplicación que funcione con MySQL puede conectarse.
- HeatWave Cluster → permite consultas analíticas a gran escala (OLAP) usando memoria distribuida y paralelismo masivo.
- Gestión administrada → no tienes que instalar MySQL, ni preocuparte de parches o alta disponibilidad, OCI lo hace por ti.
- Integración nativa con OCI → puedes conectarte desde VCN, desde tu laptop usando túneles SSH, o incluso de manera pública si habilitaste acceso público (no recomendado en producción).
En pocas palabras: es MySQL con esteroides y gestionado en la nube.
2. Seguridad y Acceso a MySQL HeatWave en OCI
Oracle Cloud Infrastructure prioriza la seguridad, por lo que MySQL HeatWave DB Systems no tienen IP pública por defecto. Esto significa que no puedes conectarte directamente desde tu laptop usando mysql -h ... ni desde Python sin antes establecer un canal seguro. Las formas de acceso más comunes son:
- Cloud Shell de OCI
- Disponible en la consola web.
- Ya está en la misma red (VCN/subnet) que tu tenancy.
- Permite ejecutar el cliente de MySQL sin instalar nada local.
- Bastion Service (Session SSH)
- Te conectas a través de un bastión (jump host administrado).
- Permite acceso temporal (ephemeral session) sin exponer IP pública.
- Instancia de Cómputo en la Misma Subred
- Creas una VM en la misma VCN y subred que tu DB System.
- Instalas el cliente de MySQL en esa VM.
- Conectas internamente sin salir de la red privada.
Sobre este particular recomendamos leer las directrices específicas de conexión en la documentación oficialk de Oracle >> Conexión y administración de MySQL HeatWave en OCI
3. Conexion con Shell y Python
Si prefieres una interfaz de línea de comandos, puedes conectarte mediante Cloud Shell o un host bastión autogestionado, donde puedes usar tu versión favorita de Linux. Si prefieres la interfaz gráfica de usuario, puedes dirigirte a la sección «Túnel Seguro». Pero primero… ¡algunos pasos preparatorios!
Antes de continuar, asegúrese de haber recopilado la información necesaria del punto final de su sistema de base de datos. Necesitará la dirección IP privada y el puerto MySQL, que puede obtener en Bases de datos -> Sistemas de base de datos, donde hará clic en el nombre de la base de datos MySQL que creó anteriormente.

Usaremos Cloud Shell, disponible directamente en nuestra consola OCI. Cloud Shell es como una pequeña máquina virtual que ejecuta un shell Bash y viene repleto de funciones. De hecho, MySQL y MySQL Shell ya están instalados, junto con diversas herramientas OCI. Tardará un minuto en iniciarse, pero una vez que lo haga, podremos realizar muchas acciones desde la CLI directamente en su navegador.

Lo primero es lo primero: deberá cambiar la configuración de red de Cloud Shell a privada. Cuando se le solicite, seleccione la VCN y la subred donde implementó la instancia MySQL y [Conectarse a esta red].

Una vez que tengas tu consola shell en la misma subred donde está la base de datos no tendrá problemas para conectarte con el cliente de MySQL:
mysqlsh -u<tu_usuario> -p -h 10.0.0... --sql
Usa el usuario que definiste al crear el sistema de Base de Datos, y la IP privada que OCI te da para la conexión.
Una vez que accedes y resuleves los diálogos de sesión, estás en la consola MySQL con conexión a la base de datos:

Crea una base de datos y seleccionala, por ejemplo «ventas»:
CREATE DATABASE ventas;
USE ventas;
Crea una tabla de ejemplo:
CREATE TABLE ventas_demo (
id INT AUTO_INCREMENT PRIMARY KEY,
region VARCHAR(50),
monto DECIMAL(10,2),
fecha DATE
);
INSERT INTO ventas_demo (region, monto, fecha) VALUES
('Norte', 100.50, '2025-09-01'),
('Sur', 200.75, '2025-09-02'),
('Este', 150.00, '2025-09-03'),
('Oeste', 300.25, '2025-09-04');

Activa HeatWave en la tabla:
ALTER TABLE ventas_demo SECONDARY_ENGINE = RAPID;

Conectaremos, ahora que tenemos una instancia en la misma subred de la base de datso, con un par de scripts de Python con los que consultaremos la base de datos que hemos creado desde Shell.
Nota: una forma alterna de realizar estos procedimientos es crear una instancia de cómputo (máquina virtual) en la misma subred de la base de datos. A doferencia de Shell de OCI en esta instancia virtual sí tendrás que instalas el cliente de MySQL:
Para instalar el cliente MySQL en Linux, abre tu terminal y usa el gestor de paquetes de tu distribución. Para Ubuntu y Debian, ejecuta:
sudo apt update
sudo apt install mysql-client
Para distribuciones basadas en RHEL (como CentOS o Fedora), primero descarga el repositorio de MySQL y luego instala el paquete del cliente con dnf o yum, usando:
sudo wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo dnf install mysql80-community-release-el9-1.noarch.rpm -y
sudo dnf install mysql-community-client -y
Después de la instalación, puedes verificar el estado del servicio o intentar conectarte con:
mysqlsh --version
mysqlsh -u<tu_usuario> -p -h 10.0.0... --sql

D esta forma tendrás acceso a la base de datos desde Shell en OCI, para realizar pruebas o prototipado de aplicaciones, y desde una maquina virtual en la red de OCI donde puedes desplegar una aplicación. Procedamos entonces a realizar esto.
Para conectarte, necesitas:
- Host, usuario, contraseña, puerto (los obtienes de la consola de OCI en tu instancia de MySQL).
- Python Connector para MySQL (oficial o
mysql-connector-python). - Crea un directorio de trabajo (conector_mysql_heatwave).
- Crear un entorno virtual para Python:
mkdir conector_mysql_heatwave
cd conector_mysql_heatwave
python -m venv venv
source venv/bin/activate
Instalación del conector:
pip install mysql-connector-python

Ejemplo de conexión en Python (archivo app.py)
import mysql.connector
# Datos de conexión (usa los tuyos de OCI)
config = {
"user": "admin",
"password": "TU_PASSWORD",
"host": "TU_IP_PRIVADA",
"port": 3306,
"database": "nombre_de_tu_bd"
}
try:
connection = mysql.connector.connect(**config)
print("✅ Conectado a MySQL HeatWave")
cursor = connection.cursor()
cursor.execute("SELECT NOW();")
print("Hora del servidor:", cursor.fetchone())
except mysql.connector.Error as err:
print("Error:", err)
finally:
if connection.is_connected():
cursor.close()
connection.close()
print("🔒 Conexión cerrada")

Modifica el script de conexión para realizar una consulta (archivo app.py)
import mysql.connector
import pandas as pd
config = {
"user": "dbadmin",
"password": "TU_PASSWORD",
"host": "TU_IP_PRIVADA",
"port": 3306,
"database": "nombre_bd"
}
conn = mysql.connector.connect(**config)
df = pd.read_sql("SELECT * FROM ventas;", conn)
print(df)
conn.close()

4. Uso de HeatWave en Consultas
Si solo quieres usar MySQL «normal», no necesitas hacer nada especial.
Pero para aprovechar HeatWave, debes:
- Crear tablas con soporte para HeatWave (
ALTER TABLE ... SECONDARY_ENGINE = RAPID) - Ejecutar consultas que OCI pueda acelerar.
Ejemplo:
-- Supongamos que tienes una tabla de ventas
ALTER TABLE ventas SECONDARY_ENGINE = RAPID;
-- Ahora consultas grandes se aceleran en memoria
SELECT region, SUM(monto)
FROM ventas
GROUP BY region
ORDER BY SUM(monto) DESC;
En Python:
import mysql.connector
connection = mysql.connector.connect(**config)
cursor = connection.cursor(dictionary=True)
# Consulta analítica
query = """
SELECT region, SUM(monto) AS total
FROM ventas
GROUP BY region
ORDER BY total DESC;
"""
cursor.execute(query)
for row in cursor.fetchall():
print(f"Region: {row['region']}, Total: {row['total']}")
4. Ejemplo de Pipeline Completo con Pandas
Si quieres traer datos a Python para análisis:
import pandas as pd
import mysql.connector
connection = mysql.connector.connect(**config)
df = pd.read_sql("SELECT * FROM ventas LIMIT 1000;", connection)
print(df.head())
Esto te permite trabajar con DataFrames, integrarlos a matplotlib, seaborn, scikit-learn, etc.
5. Buenas Prácticas
- Usa HeatWave para tablas grandes (millones de filas).
- Activa autocommit o maneja transacciones según tu necesidad.
- Usa conexión con SSL (muy importante si accedes desde fuera de OCI).
- Cierra conexiones después de cada operación intensiva.
- Carga datos en lotes si vas a insertar datos masivos.
Recomendamos la lectura de MySQL HeatWave User Guide.
6. OLTP + OLAP sin salir de MySQL
Uno de los mayores retos en arquitectura de datos es que las cargas OLTP (procesamiento de transacciones en línea) y OLAP (procesamiento analítico en línea) suelen vivir en entornos separados. OLTP es ideal para operaciones rápidas como crear pedidos, actualizar inventarios o registrar usuarios; OLAP, en cambio, se usa para análisis de grandes volúmenes de datos: reportes, dashboards y modelos de negocio. Tradicionalmente, esto obliga a replicar información de la base de datos transaccional hacia un data warehouse mediante procesos ETL, lo que introduce latencia, complejidad y costos adicionales.
HeatWave resuelve este problema al permitir que la misma base de datos MySQL procese ambas cargas de trabajo. Gracias a su motor de análisis en memoria y ejecución paralela, puedes correr consultas complejas de agregación, agrupamiento y joins sobre millones de filas sin impactar el rendimiento transaccional. Solo necesitas habilitar el motor HeatWave en las tablas críticas con un simple comando:
ALTER TABLE ventas SECONDARY_ENGINE = RAPID;
A partir de ahí, tus consultas SELECT con agregaciones o análisis multidimensional se aceleran automáticamente, sin mover datos ni modificar tu aplicación. Esto significa menos infraestructura, menos mantenimiento y resultados en tiempo casi real, todo dentro de MySQL.