Pergunta
Estou gravando dados no ClickHouse Cloud e preciso garantir, ao lê-los, que estou obtendo as informações completas mais recentes.
Resposta
Conectando-se ao mesmo nó
Se você estiver usando o protocolo nativo ou uma sessão para gravar/ler dados, deverá estar conectado à mesma réplica: nesse cenário, você está lendo diretamente do nó em que está gravando e, portanto, sua leitura sempre será consistente.
Falando com um nó aleatório
Se você não puder garantir que está falando com o mesmo nó (por exemplo, acessando o nó por meio de chamadas HTTPS distribuídas por um balanceador de carga), você pode:
A)
- escrever seus dados
- conectar-se a uma nova réplica
- executar
SYSTEM SYNC REPLICA db.table_name LIGHTWEIGHT - ler os dados mais recentes
Consulte a referência dos comandos SYSTEM
OU
B) ler a qualquer momento com consistência sequencial
SELECT
...
SETTINGS select_sequential_consistency = 1Observe que, ao usar o ClickHouse Cloud e seu SharedMergeTree como mecanismo de tabela padrão, não é necessário usar insert_quorum_parallel — todas as inserções no SharedMergeTree são inserções com quórum (por definição).
O uso de SYSTEM SYNC REPLICAS ou select_sequential_consistency aumentará a carga no ClickHouse Keeper e poderá causar uma piora no desempenho, dependendo da carga do serviço.
A abordagem recomendada é fazer a escrita/leitura usando a mesma sessão ou o protocolo nativo (conexão persistente).