remote permite acceder a servidores remotos directamente, es decir, sin necesidad de crear una tabla Distributed. La función de tabla remoteSecure es lo mismo que remote, pero a través de una conexión segura.
Ambas funciones pueden usarse en consultas SELECT e INSERT.
Sintaxis
Parámetros
| Argumento | Descripción |
|---|---|
addresses_expr | Una dirección de servidor remoto o una expresión que genere varias direcciones de servidores remotos. Formato: host o host:port.host se puede especificar como nombre de servidor o como dirección IPv4 o IPv6. Las direcciones IPv6 deben especificarse entre [].port es el puerto TCP del servidor remoto. Si se omite, se usa tcp_port del archivo de configuración del servidor para la table function remote (9000 de forma predeterminada) y tcp_port_secure para la table function remoteSecure (9440 de forma predeterminada).En las direcciones IPv6, el puerto es obligatorio. Si solo se especifica el parámetro addresses_expr, db y table usarán system.one de forma predeterminada.Tipo: String. |
db | Nombre de la base de datos. Tipo: String. |
table | Nombre de la tabla. Tipo: String. |
user | Nombre de usuario. Si no se especifica, se usa default. Tipo: String. |
password | Contraseña del usuario. Si no se especifica, se usa una contraseña vacía. Tipo: String. |
sharding_key | Clave de segmentación para distribuir datos entre nodos. Por ejemplo: insert into remote('127.0.0.1:9000,127.0.0.2', db, table, 'default', rand()). Tipo: UInt32. |
Valor devuelto
Uso
remote y remoteSecure restablecen la conexión en cada solicitud, se recomienda usar en su lugar una tabla Distributed. Además, si se configuran nombres de host, los nombres se resuelven y los errores no se contabilizan al trabajar con varias réplicas. Si va a procesar una gran cantidad de consultas, cree siempre la tabla Distributed con antelación y no use la función de tabla remote.
La función de tabla remote puede resultar útil en los siguientes casos:
- Migración puntual de datos de un sistema a otro
- Acceso a un servidor específico para comparar datos, depurar y realizar pruebas; es decir, conexiones ad hoc.
- Consultas entre varios clústeres de ClickHouse con fines de investigación.
- Solicitudes distribuidas poco frecuentes realizadas manualmente.
- Solicitudes distribuidas en las que el conjunto de servidores se redefine cada vez.
Direcciones
Ejemplos
Selección de datos de un servidor remoto:
Inserción de datos en una tabla de un servidor remoto:
Migración de tablas de un sistema a otro:
imdb y la tabla es actors.
En el sistema ClickHouse de origen (el sistema que actualmente hospeda los datos)
-
Verifique la base de datos de origen y el nombre de la tabla (
imdb.actors) - Obtenga la sentencia CREATE TABLE del origen:
En el sistema ClickHouse de destino
-
Cree la base de datos de destino:
-
Usando la sentencia CREATE TABLE del origen, cree la tabla de destino:
De vuelta en la implementación de origen
Globbing
{ } se usan para generar un conjunto de segmentos y para especificar réplicas. Si hay varios pares de { }, se genera el producto cartesiano de los conjuntos correspondientes.
Se admiten los siguientes tipos de patrones.
{a,b,c}- Representa cualquiera de las cadenas alternativasa,boc. El patrón se sustituye poraen la dirección del primer segmento, porben la dirección del segundo segmento, y así sucesivamente. Por ejemplo,example0{1,2}-1genera las direccionesexample01-1yexample02-1.{N..M}- Un rango de números. Este patrón genera direcciones de segmentos con índices crecientes desdeNhastaM(incluido). Por ejemplo,example0{1..2}-1generaexample01-1yexample02-1.{0n..0m}- Un rango de números con ceros a la izquierda. Este patrón conserva los ceros a la izquierda en los índices. Por ejemplo,example{01..03}-1generaexample01-1,example02-1yexample03-1.{a|b}- Cualquier número de variantes separadas por un|. El patrón especifica réplicas. Por ejemplo,example01-{1|2}genera las réplicasexample01-1yexample01-2.
remote, las réplicas se recorren en el orden establecido actualmente en la configuración load_balancing.
La cantidad de direcciones generadas está limitada por la configuración table_function_remote_max_addresses.