Um dos elementos mais importantes da arquitetura de banco de dados distribuído é a replicação. De fato, ela define a arquitetura do banco de dados. Ela determina se os dados são consistentes/disponíveis ou não.
Mestre / Escravo
As gravações são executadas nos nós mestres, replicadas para os nós escravos. Se a consistência for necessária, as leituras são executadas nos nós mestres. Caso contrário, as leituras são executadas nos nós mestres e/ou nos nós escravos.

Qual é o problema?
Vamos supor que a) haja um nó por servidor físico e b) as gravações sejam replicadas para dois escravos.
O problema é que dois terços dos nós são passivos, dois terços dos nós não respondem a solicitações de gravação e podem não responder a solicitações de leitura. O problema é que... há três vezes o número de nós necessários para atender aos requisitos de throughput/latência.
Sem mestre
As gravações são executadas em vários nós. Se a consistência for necessária, as leituras serão executadas em vários nós.

Qual é o problema?
Vamos supor que a) haja um nó por servidor físico e b) as gravações sejam replicadas em dois nós.
O problema é que... leituras/gravações consistentes são executadas em vários nós. Isso requer várias solicitações, uma do cliente para o servidor e duas do servidor para outros dois servidores. O nó que recebe a solicitação de gravação deve enviar solicitações de gravação para os outros dois nós, resultando em maior latência e menor taxa de transferência.
Proprietário principal
É o melhor de ambos: as leituras/gravações são executadas no proprietário principal e replicadas, e as leituras/gravações são executadas em todos os nós. Como em um projeto mestre/escravo, a consistência é mantida pela execução de leituras/gravações no nó primário. Como em um projeto sem mestre, cada nó é um nó primário.

Um deles é um design ruim. Um desses é um bom design. Um desses é um ótimo design.
O que você acha?
Discutir sobre Notícias Hacker
Discutir sobre Reddit