Uno de los elementos más importantes de la arquitectura de bases de datos distribuidas es la replicación. De hecho, define la arquitectura de la base de datos. Determina si los datos son coherentes / están disponibles o no.
Maestro / Esclavo
Las escrituras se ejecutan en los nodos maestros y se replican en los nodos esclavos. Si se requiere coherencia, las lecturas se ejecutan en los nodos maestros. Si no lo es, las lecturas se ejecutan en los nodos maestros y/o esclavos.

¿Cuál es el problema?
Supongamos que a) hay un nodo por servidor físico y b) las escrituras se replican en dos esclavos.
El problema es... dos tercios de los nodos son pasivos, dos tercios de los nodos no responden a las solicitudes de escritura, pueden no responder a las solicitudes de lectura. El problema es... que hay tres veces más nodos de los necesarios para cumplir los requisitos de rendimiento / latencia.
Masterless
Las escrituras se ejecutan en múltiples nodos. Si se requiere coherencia, las lecturas se ejecutan en varios nodos.

¿Cuál es el problema?
Supongamos que a) hay un nodo por servidor físico y b) las escrituras se replican en dos nodos.
El problema es... las lecturas / escrituras consistentes se ejecutan en múltiples nodos. Requiere múltiples peticiones, una del cliente al servidor y dos del servidor a otros dos servidores. El nodo que recibe la solicitud de escritura debe enviar solicitudes de escritura a los otros dos nodos, lo que se traduce en una mayor latencia y un menor rendimiento.
Propietario principal
Es lo mejor de ambos: las lecturas/escrituras se ejecutan en el propietario primario y se replican, y las lecturas/escrituras se ejecutan en cada nodo. Como en un diseño maestro/esclavo, la consistencia se mantiene ejecutando lecturas/escrituras en el nodo primario. Como en un diseño sin maestro, cada nodo es un nodo primario.

Una de ellas es un mal diseño. Uno de estos es un buen diseño. Uno de estos es un gran diseño.
¿Qué le parece?
Debatir sobre Noticias Hacker
Debatir sobre Reddit