remote permite acessar servidores remotos dinamicamente, ou seja, sem criar uma tabela Distributed. A função de tabela remoteSecure é igual à remote, mas por meio de uma conexão segura.
Ambas as funções podem ser usadas em consultas SELECT e INSERT.
Sintaxe
Parâmetros
| Argumento | Descrição |
|---|---|
addresses_expr | Um endereço de servidor remoto ou uma expressão que gera vários endereços de servidores remotos. Formato: host ou host:port.O host pode ser especificado como um nome de servidor ou como um endereço IPv4 ou IPv6. Um endereço IPv6 deve ser especificado entre [].A port é a porta TCP no servidor remoto. Se a porta for omitida, será usado tcp_port do arquivo de configuração do servidor para a função de tabela remote (por padrão, 9000) e tcp_port_secure para a função de tabela remoteSecure (por padrão, 9440).Para endereços IPv6, a porta é obrigatória. Se apenas o parâmetro addresses_expr for especificado, db e table usarão system.one por padrão.Tipo: String. |
db | Nome do banco de dados. Tipo: String. |
table | Nome da tabela. Tipo: String. |
user | Nome de usuário. Se não for especificado, default será usado. Tipo: String. |
password | Senha do usuário. Se não for especificado, será usada uma senha vazia. Tipo: String. |
sharding_key | Chave de sharding para dar suporte à distribuição de dados entre nós. Por exemplo: insert into remote('127.0.0.1:9000,127.0.0.2', db, table, 'default', rand()). Tipo: UInt32. |
Valor retornado
Uso
remote e remoteSecure restabelecem a conexão a cada solicitação, recomenda-se usar uma tabela Distributed em vez delas. Além disso, se os hostnames estiverem definidos, os nomes serão resolvidos, e os erros não serão contabilizados ao trabalhar com várias réplicas. Ao processar um grande número de consultas, sempre crie a tabela Distributed com antecedência e não use a função de tabela remote.
A função de tabela remote pode ser útil nos seguintes casos:
- Migração pontual de dados de um sistema para outro
- Acesso a um servidor específico para comparação de dados, depuração e testes, ou seja, conexões ad hoc.
- Consultas entre vários clusters do ClickHouse para fins de pesquisa.
- Solicitações distribuídas pouco frequentes feitas manualmente.
- Solicitações distribuídas em que o conjunto de servidores é redefinido a cada vez.
Endereços
Exemplos
Selecionando dados de um servidor remoto:
Inserindo dados em uma tabela em um servidor remoto:
Migração de tabelas de um sistema para outro:
imdb, e a tabela é actors.
No sistema ClickHouse de origem (o sistema que hospeda os dados atualmente)
-
Verifique o banco de dados de origem e o nome da tabela (
imdb.actors) - Obtenha a instrução CREATE TABLE na origem:
No sistema de destino do ClickHouse
-
Crie o banco de dados de destino:
-
Usando a instrução CREATE TABLE da origem, crie a tabela no destino:
De volta à implantação de origem
Globbing
{ } são usados para gerar um conjunto de shards e para especificar réplicas. Se houver vários pares de { }, o produto cartesiano dos conjuntos correspondentes será gerado.
Os seguintes tipos de padrão são suportados.
{a,b,c}- Representa qualquer uma das strings alternativasa,bouc. O padrão é substituído porano endereço do primeiro shard, porbno endereço do segundo shard e assim por diante. Por exemplo,example0{1,2}-1gera os endereçosexample01-1eexample02-1.{N..M}- Um intervalo de números. Esse padrão gera endereços de shard com índices crescentes deNatéM(inclusive). Por exemplo,example0{1..2}-1geraexample01-1eexample02-1.{0n..0m}- Um intervalo de números com zeros à esquerda. Esse padrão preserva os zeros à esquerda nos índices. Por exemplo,example{01..03}-1geraexample01-1,example02-1eexample03-1.{a|b}- Qualquer número de variantes separadas por|. O padrão especifica réplicas. Por exemplo,example01-{1|2}gera as réplicasexample01-1eexample01-2.
remote, as réplicas são iteradas na ordem atualmente definida na configuração load_balancing.
O número de endereços gerados é limitado pela configuração table_function_remote_max_addresses.