VITESS: LA SOLUCIÓN PARA ESCALAR MYSQL DE FORMA HORIZONTAL Y TRANSPARENTE
Vitess es un sistema de clustering de bases de datos de código abierto diseñado específicamente para el escalado horizontal de MySQL. No es una base de datos en sí misma, sino una capa de software, middleware, que se sitúa entre la aplicación y múltiples servidores MySQL. Su gran ventaja es que permite repartir los datos mediante sharding, particionado horizontal, de forma casi transparente para la aplicación. El desarrollador sigue trabajando como si estuviera conectado a una única base de datos MySQL convencional.Vitess combina las características de SQL con la escalabilidad típica de los sistemas NoSQL, manteniendo la compatibilidad con el protocolo MySQL.
¿Cómo funciona?
Vitess se interpone entre la aplicación y los servidores MySQL. La aplicación se conecta a un componente llamado "VTGate" usando cualquier driver o cliente compatible con MySQL. "VTGate se encarga de:- Recibir las consultas
- Determinar en qué la partición se encuentran los datos.
- Reescribir las consultas si es necesario.
- Enviarlas a los servidores MySQL correspondientes.
- Devolver el resultado unificado a la aplicación.
Componentes principales
| Componente | Función principal |
|---|---|
| VTGate | Proxy inteligente que enruta las consultas |
| VTTablet | Agente que se ejecuta junto a cada MySQL |
| Topology Service | Almacén de metadatos del clúster (etcd, ZooKeeper…) |
| MySQL / Percona | Motor de almacenamiento real |
Características principales y ventajas
- Sharding transparente: la aplicación no necesita saber cómo están repartidos los datos.
- Compatibilidad con MySQL: se pueden usar los mismos drivers, ORMs y herramientas habituales.
- Pool de conexiones: permite manejar un número mucho mayor de conexiones concurrentes que MySQL nativo.
- Reescritura y protección de consultas: evita que consultas peligrosas degraden el rendimiento.
- Alta disponibilidad: detección automática de fallos y promoción de réplicas.
- Resharding en caliente: se pueden dividir o fusionar shards con un tiempo de interrupción mínimo, segundos.
- Gestión de esquemas online: cambios de estructura de tablas de forma controlada y sin paradas largas.
- Funciona tanto en servidores dedicados como en entornos cloud y Kubernetes.
¿Quién utiliza Vitess?
Vitess se usa en producción en empresas de gran escala, entre ellas:- Slack
- Square, actualmente Block
- GitHub
- Etsy
- JD.com
- YouTube, al principio