Cómo Google Docs gestiona las ediciones simultáneas
Google Docs permite que muchas personas editen un mismo documento al mismo tiempo.
¿Qué sucede cuando dos personas editan exactamente la misma línea en el mismo segundo?
Un sistema estándar funciona leyendo, modificando y guardando datos. Si dos personas guardan a la vez, la segunda persona sobrescribe a la primera. La primera persona pierde su trabajo.
Google Docs evita esto mediante la Transformación Operacional (OT).
No envía el documento completo cada vez que escribes. Envía operaciones pequeñas.
Por ejemplo:
- El Usuario A inserta "Hermoso" en la posición 6.
- El Usuario B inserta "Increíble" en la posición 6.
Si el servidor aplicara estas operaciones sin cambios, una de las ediciones desaparecería.
En su lugar, el servidor transforma las operaciones.
El servidor detecta que el Usuario A actualizó el documento primero. El documento crece. Cuando el servidor procesa al Usuario B, cambia la posición de 6 a 16.
El texto final queda así: Hola Hermoso Increíble Mundo.
Ambas ediciones sobreviven.
El sistema se basa en estos pilares técnicos:
- WebSockets para una conexión constante.
- Seguimiento de versiones para saber qué edición proviene de qué versión.
- Flujos de eventos en tiempo real para transmitir los cambios.
Google Docs no bloquea el documento. El bloqueo impediría que todos los demás trabajen mientras una persona escribe.
En su lugar, utiliza una fusión inteligente.
El sistema también transforma la posición de tu cursor. Si alguien añade texto delante de ti, tu cursor se desplaza hacia adelante para que no pierdas tu lugar.
Mientras que Google Docs utiliza OT, muchas herramientas nuevas como Figma utilizan Tipos de Datos Replicados sin Conflictos (CRDT). Los CRDT permiten a los usuarios fusionar cambios sin un servidor central.
Si estás estudiando diseño de sistemas, recuerda estos puntos:
- Usa WebSockets para una baja latencia.
- Usa OT o CRDT para la resolución de conflictos.
- Usa números de versión para rastrear los cambios.
- Sincroniza los cursores para mejorar la experiencia del usuario.
Google Docs no evita los conflictos. Los resuelve transformando las ediciones para que todos vean el mismo resultado.
