seegongsik
Datos

Cómo funcionan los datos distribuidos

¿Qué pasa cuando los datos no paran de acumularse? Hasta el almacén más grande se llena algún día. Entonces se suman más almacenes y se reparte la carga entre ellos, y por si uno se derrumba, se guardan copias de la misma mercancía en otro almacén para no perder nada. Con los datos pasa lo mismo. Cuando una sola computadora no da abasto, se reparten entre varias, y se guardan copias en varias máquinas por si alguna falla.

01

Una máquina deja de ser suficiente

Hasta la lección anterior vimos cómo guardar datos, encontrarlos, cambiarlos con seguridad y manejarlos de forma rápida y compacta. Pero los datos no dejan de acumularse: más usuarios, más registros y, además, fotos y videos.
Lo que cabe en una sola computadora tiene un límite. El tamaño de su disco es fijo, y también lo es la cantidad de peticiones que una máquina puede atender a la vez. Abajo, sigamos metiendo datos en una sola máquina.

capacidad de una máquina
Toca para añadir más datos
0 / 8

Sigue tocando añadir datos. Cuando se supera la capacidad de una máquina, ya no cabe nada más.

La máquina está llena. Aunque quieras meter más, no hay lugar. Una opción es cambiarla por una computadora más grande; esto se llama escalado vertical. Pero las computadoras más grandes se encarecen muy rápido, y por mucho que crezcan, al final vuelven a llenarse.
Por eso se toma otro camino: en vez de agrandar una máquina, se suman más máquinas. Esto se llama escalado horizontal. Entonces, ¿cómo se reparten los datos entre varias máquinas?

02

Repartirlos entre varias máquinas

Se dividen los datos en trozos y se esparcen entre varias máquinas. En vez de que una sola cargue con todo, cada máquina se encarga solo de una parte. A repartir los datos así se le llama distribución, y a partir los propios datos en trozos, particionado o sharding.
Hay varias formas de decidir el reparto. Se puede dividir por rangos, poniendo los datos cuyos nombres empiezan de la A a la M en la máquina 1 y de la N a la Z en la máquina 2, o se puede usar un hash, como vimos antes, para convertir cada clave en un número y repartir los datos de forma pareja según ese valor. Dividir por rangos puede amontonar datos en ciertos tramos, así que, cuando se quiere un reparto parejo, se usa mucho el hash.

piezas a repartir
A
B
C
D
E
F
máquina 1
máquina 2
máquina 3
Toca para repartir piezas entre las máquinas

Toca los trozos uno por uno para repartirlos entre varias máquinas. Cada máquina termina guardando solo una parte del total.

Los trozos quedaron repartidos en tres máquinas. La carga que llevaba una sola se alivianó, y cuando los datos crecen más, basta con sumar otra computadora y encargarle los trozos nuevos. Como se puede seguir creciendo así, caben incluso datos enormes.
Para encontrar un dato, primero hay que saber en qué máquina está. Como la regla del reparto es conocida, con solo mirar la clave se sabe a qué máquina ir. Pero surge una preocupación. ¿Qué pasa si la máquina encargada de un trozo se descompone de repente?

03

Guardar copias de los mismos datos en varias máquinas

Repartir los datos crea un punto débil. Si falla la computadora encargada de un trozo, ese trozo desaparece por completo. Y cuantas más computadoras hay, más a menudo alguna de ellas se descompone.
Por eso se guardan copias de los mismos datos en varias máquinas. Si una se detiene, otra que tiene una copia toma el relevo, y no se pierden datos. Guardar los mismos datos en varias máquinas así se llama replicación. Con copias disponibles, las peticiones de lectura también se pueden repartir entre varias máquinas.

Copia primero, luego apaga una máquina

Haz primero las copias y luego apaga una máquina. Aunque una esté apagada, otra con una copia sigue en marcha, así que los datos se conservan.

Con una máquina apagada, los datos siguieron intactos, gracias a las copias. Aquí conviene distinguir bien dos cosas: la distribución parte los datos y los reparte entre máquinas distintas, mientras que la replicación guarda los mismos datos en varias máquinas. Los sistemas reales suelen usar las dos a la vez y guardan copias de cada trozo.
La replicación también tiene un costo. Cada vez que cambian los datos, hay que poner de acuerdo todas las copias, y como las máquinas tardan en comunicarse, durante un rato las copias pueden tener valores distintos. Cuando la red se corta, llega un momento en que hay que elegir entre responder enseguida, aunque sea con un valor viejo, o esperar a que las copias coincidan.

04

Recipientes más flexibles: NoSQL

Cuando los datos son enormes y deben entrar y salir muy rápido, una tabla estricta puede volverse una carga. Todas las filas tienen que tener las mismas columnas, y mantener los joins y las transacciones a través de muchas máquinas sale caro.
Por eso se usan almacenes que aflojan esas reglas. En lugar de una tabla, cuelgan un valor de una clave, de modo que los datos entran y salen al instante. Son como la tabla hash que vimos antes, extendida a muchas máquinas, así que la clave sola también decide en qué máquina están los datos. A estos almacenes se los agrupa bajo el nombre de NoSQL.

tabla estricta
-
clave-valor flexible (NoSQL)
-
Toca una prueba para comparar los dos recipientes

Toca una prueba para comparar la tabla estricta con el recipiente flexible de clave y valor. El de forma libre, que conviene para trabajos enormes y rápidos, es el recipiente flexible.

Al tener menos reglas, el recipiente flexible es más libre y más rápido. Las filas pueden tener columnas distintas, y mientras haya una clave, un valor entra y sale al instante. A cambio, se renuncia en parte a comodidades como los joins entre tablas o las transacciones estrictas.
Por eso se elige qué ganar y a qué renunciar según el uso: una tabla estricta donde lo primero es la exactitud, como en un libro de cuentas por donde pasa dinero, y un recipiente flexible donde hay que acumular cantidades enormes de registros a toda velocidad. Es común que un mismo servicio use las dos cosas.

05

Cerrando el área de datos

Hemos recorrido un largo camino. Empezamos con las estructuras de datos que guardan valores, vimos la base de datos que reúne tablas y aprendimos a encontrar cosas rápido en una tabla grande con hashes, árboles e índices. Preguntamos con SQL y enlazamos tablas con joins, recortamos repeticiones con la normalización y cambiamos datos con seguridad con las transacciones.
También vimos cómo la caché y la compresión hacen que los datos sean más rápidos y pequeños. Y hoy llegamos a repartir los datos y guardar copias cuando una sola máquina no alcanza.

Toca en orden los grandes hilos del área de datos para cerrarla

Toca en orden los grandes hilos del área de datos para cerrarla. (las estructuras de datos como recipientes → la base de datos que reúne tablas → encontrar rápido → preguntar y enlazar → ordenar y cambiar con seguridad → rápido y pequeño → repartir y replicar)

La lección de hoy se resume así. Cuando los datos son demasiado para una máquina, se parten en trozos y se reparten entre varias (distribución), y se guardan copias de los mismos datos en varias máquinas por si alguna falla (replicación). Repartir y copiar son tareas distintas, y en la práctica se usan juntas.
Para trabajos enormes y rápidos, a veces se usan almacenes que aflojan las reglas de la tabla, conocidos como NoSQL. Lo esencial es elegir qué ganar y a qué renunciar.

Ahora el panorama del manejo de datos se ve de un vistazo. Desde un solo recipiente pequeño llegamos hasta una operación enorme que reparte y copia datos entre muchas máquinas. Este oficio de guardar la información con seguridad, encontrarla rápido y hacerla crecer será la base de la siguiente área.
La siguiente área es la inteligencia artificial, donde las máquinas encuentran reglas por sí solas allí donde se reúnen muchos datos. Su primera lección empieza por qué significa que una máquina aprenda.

En una líneaCuando los datos crecen demasiado para que una computadora pueda con ellos, se parten en trozos y se reparten entre varias máquinas. Esto se llama distribución, y partir los datos en trozos se llama particionado o sharding; un rango o un hash decide a qué máquina va cada trozo. Como cada máquina se encarga solo de una parte, sumar computadoras permite guardar datos cada vez más grandes. Para no perder datos si una máquina falla, se guardan copias de los mismos datos en varias máquinas: eso es la replicación. La distribución reparte y la replicación copia, así que son tareas distintas, y como poner de acuerdo las copias lleva tiempo, los valores pueden diferir durante un rato. Para trabajos enormes y rápidos, a los almacenes que aflojan las reglas de la tabla se los llama NoSQL, y un almacén de clave y valor es como una tabla hash extendida a muchas máquinas.
← Datos
¿Te fue útil? Apoyar seegongsik