Permite acessar todos os shards (configurados na seção remote_servers) de um cluster sem criar uma tabela Distributed. Apenas uma réplica de cada shard é consultada.
Função clusterAllReplicas — igual a cluster, mas consulta todas as réplicas. Cada réplica em um cluster é usada como um shard/conexão independente.
Sintaxe
cluster(['cluster_name', db.table, sharding_key][, SETTINGS name = value, ...])
cluster(['cluster_name', db, table, sharding_key][, SETTINGS name = value, ...])
clusterAllReplicas(['cluster_name', db.table, sharding_key][, SETTINGS name = value, ...])
clusterAllReplicas(['cluster_name', db, table, sharding_key][, SETTINGS name = value, ...])Argumentos
| Argumentos | Tipo |
|---|---|
cluster_name |
Nome de um cluster usado para montar um conjunto de endereços e parâmetros de conexão para servidores remotos e locais; defina default se não for especificado. |
db.table ou db, table |
Nome de um banco de dados e de uma tabela. |
sharding_key |
Uma chave de sharding. Opcional. Deve ser especificada se o cluster tiver mais de um shard. |
SETTINGS name = value, ... |
Configurações da tabela Distributed criada pela função, por exemplo, skip_unavailable_shards. Opcional. Uma configuração especificada na consulta tem prioridade sobre ela. |
Valor retornado
O conjunto de dados proveniente dos clusters.
Usando macros
cluster_name pode conter macros — substituições entre {}. O valor da substituição é obtido na seção macros do arquivo de configuração do servidor.
Exemplo:
SELECT * FROM cluster('{cluster}', default.example_table);Uso e recomendações
Usar as funções de tabela cluster e clusterAllReplicas é menos eficiente do que criar uma tabela Distributed, porque, nesse caso, a conexão com o servidor é restabelecida a cada requisição. Ao processar um grande número de consultas, sempre crie a tabela Distributed com antecedência e não use as funções de tabela cluster e clusterAllReplicas.
As funções de tabela cluster e clusterAllReplicas podem ser úteis nos seguintes casos:
- Acessar um cluster específico para comparação de dados, depuração e testes.
- Executar consultas em vários clusters e réplicas do ClickHouse para fins de pesquisa.
- Requisições distribuídas pouco frequentes feitas manualmente.
As configurações de conexão, como host, port, user, password, compression e secure, são obtidas da seção de configuração <remote_servers>. Veja mais detalhes em Distributed engine.