Coleções nomeadas criadas por DDL podem ser habilitadas em alguns serviços do ClickHouse Cloud. Entre em contato com o Suporte para confirmar a disponibilidade. Coleções nomeadas definidas em arquivos de configuração não estão disponíveis porque os usuários não podem modificar arquivos de configuração do servidor no ClickHouse Cloud.
[NOT] OVERRIDABLE, atributos XML
e/ou a opção de configuração allow_named_collection_override_by_default.
Armazenar coleções nomeadas no banco de dados do sistema
Exemplo de DDL
key_1sempre pode ser sobrescrita.key_2nunca pode ser sobrescrita.urlpode ou não ser sobrescrita, dependendo do valor deallow_named_collection_override_by_default.
Permissões para criar coleções nomeadas com DDL
Para gerenciar coleções nomeadas com DDL, um usuário deve ter o privilégionamed_collection_control. Esse privilégio pode ser atribuído adicionando um arquivo a /etc/clickhouse-server/users.d/. O exemplo concede ao usuário default os privilégios access_management e named_collection_control:
/etc/clickhouse-server/users.d/user_default.xml
named_collection_control permite que o usuário crie, altere e remova coleções nomeadas, mas não que leia os valores já armazenados nelas. Esse é um privilégio separado, SHOW NAMED COLLECTIONS SECRETS, habilitado pela configuração show_named_collections_secrets. Um usuário só pode conceder os privilégios que ele mesmo possui, portanto, enquanto show_named_collections_secrets estiver desabilitado, o usuário não terá o conjunto completo de privilégios e GRANT ALL ON *.* TO another_user WITH GRANT OPTION será rejeitado com (Missing permissions: SHOW NAMED COLLECTIONS SECRETS ON *).
Armazenamento de coleções nomeadas
As coleções nomeadas podem ser armazenadas no disco local ou no ZooKeeper/Keeper. Por padrão, o armazenamento local é usado. Elas também podem ser armazenadas com criptografia usando os mesmos algoritmos usados na criptografia de disco, em queaes_128_ctr é usado por padrão.
Para configurar o armazenamento de coleções nomeadas, você precisa especificar um type. Ele pode ser local ou keeper/zookeeper. Para armazenamento criptografado,
você pode usar local_encrypted ou keeper_encrypted/zookeeper_encrypted.
Para usar ZooKeeper/Keeper, também é necessário configurar um path (caminho no ZooKeeper/Keeper onde as coleções nomeadas serão armazenadas) na
seção named_collections_storage do arquivo de configuração. O exemplo a seguir usa criptografia e ZooKeeper/Keeper:
update_timeout_ms é, por padrão, 5000.
Você pode verificar o tipo de armazenamento ativo por meio de system.server_settings e getServerSetting:
SYSTEM RELOAD CONFIG não altera o backend ativo.
Armazenar coleções nomeadas em arquivos de configuração
Exemplo de XML
/etc/clickhouse-server/config.d/named_collections.xml
key_1sempre pode ser sobrescrito.key_2nunca pode ser sobrescrito.urlpode ou não ser sobrescrito, dependendo do valor deallow_named_collection_override_by_default.
Modificando coleções nomeadas
Coleções nomeadas criadas com instruções DDL podem ser alteradas ou removidas com DDL. Coleções nomeadas criadas com arquivos XML podem ser gerenciadas editando ou excluindo o arquivo XML correspondente.Alterar uma coleção nomeada DDL
Altere ou adicione as chaveskey1 e key3 da coleção nomeada collection2
(isso não alterará o valor da flag overridable para essas chaves):
key1 e permita que ela seja sempre sobrescrita:
key2 de collection2:
key1 e exclua a chave key3 da coleção collection2:
overridable, é necessário
remover a chave e adicioná-la novamente.
Exclua a coleção nomeada collection2:
Coleções nomeadas para acessar o S3
Para ver a descrição dos parâmetros, consulte a função de tabela S3.Exemplo de DDL
Exemplo em XML
Exemplos de coleção nomeada para a função s3() e a tabela S3
Ambos os exemplos a seguir usam a mesma coleção nomeadas3_mydata:
função s3()
Tabela S3
Coleções nomeadas para acessar um banco de dados MySQL
Consulte a descrição dos parâmetros em mysql.Exemplo de DDL
Exemplo de XML
Exemplos de coleção nomeada para a função mysql(), tabela MySQL, banco de dados MySQL e Dicionário
Os quatro exemplos a seguir usam a mesma coleção nomeadamymysql:
função mysql()
A coleção nomeada não define o parâmetro
table, então ele é informado na chamada da função como table = 'test'.Tabela MySQL
A DDL substitui a configuração connection_pool_size da coleção nomeada.
Banco de dados MySQL
Dicionário do MySQL
Coleções nomeadas para acessar o banco de dados PostgreSQL
Para ver a descrição dos parâmetros, consulte postgresql. Além disso, há os seguintes aliases:usernameparauserdbparadatabase.
postgresql_connection_pool_size e as outras configurações postgresql_*) também podem ser armazenadas na coleção ou passadas como sobrescritas key = value. Elas se aplicam ao motor de tabela PostgreSQL, à função de tabela postgresql e ao motor de banco de dados PostgreSQL; uma cláusula SETTINGS explícita em uma tabela tem precedência sobre os valores da coleção.
O parâmetro addresses_expr é usado em uma coleção no lugar de host:port. Esse parâmetro é opcional, porque há outros parâmetros opcionais: host, hostname, port. O pseudocódigo a seguir explica a prioridade:
Exemplo de uso de coleções nomeadas com a função postgresql
Exemplo de uso de coleções nomeadas com banco de dados com mecanismo PostgreSQL
O PostgreSQL copia os dados da coleção nomeada quando a tabela é criada. Alterações na coleção não afetam as tabelas existentes.
Exemplo de uso de coleções nomeadas com um banco de dados com engine PostgreSQL
Exemplo de uso de coleção nomeada com um Dicionário de fonte POSTGRESQL
Coleções nomeadas para acessar um banco de dados remoto do ClickHouse
Consulte a descrição dos parâmetros em remote. Exemplo de configuração:secure não é necessário na conexão por causa de remoteSecure, mas pode ser usado para dicionários.
Exemplo de uso de coleções nomeadas com as funções remote/remoteSecure
Exemplo de uso de coleções nomeadas com um dicionário com origem no ClickHouse
Coleções nomeadas para acessar o Kafka
Veja a descrição dos parâmetros em Kafka.Exemplo de DDL
Exemplo em XML
Autenticação OAUTHBEARER/OIDC
As opções deOAUTHBEARER são configurações estendidas do librdkafka e, portanto, devem ficar aninhadas em <kafka> dentro de cada coleção nomeada. As chaves kafka_* de nível superior configuram o motor de tabela Kafka. O ClickHouse converte os sublinhados dos nomes dos elementos XML aninhados em pontos antes de repassá-los ao librdkafka.
O exemplo a seguir configura credenciais de cliente OAuth para um espaço de nomes do Azure Event Hubs:
/etc/clickhouse-server/config.d/named_collections.xml
ENGINE = Kafka(eventhub_one) usa uma coleção nomeada, o ClickHouse não mescla a configuração global <kafka> do servidor. Crie uma coleção nomeada por namespace do Event Hubs sempre que o endereço do broker ou o escopo OAuth for diferente, e inclua nessa coleção nomeada todas as propriedades OIDC obrigatórias.
Os atributos from_env deste exemplo se aplicam a coleções nomeadas definidas em XML e leem seus valores do ambiente do processo do servidor ClickHouse. Consulte substituição por variáveis de ambiente para mais detalhes sobre implantação e valores padrão, e criptografar e ocultar a configuração para proteger segredos em arquivos de configuração pré-processados.
Exemplo de uso de coleções nomeadas com uma tabela do Kafka
Ambos os exemplos a seguir usam a mesma coleção nomeadamy_kafka_cluster:
Coleções nomeadas para backups
Para a descrição dos parâmetros, consulte Backup e restauração.Exemplo de DDL
Exemplo de XML
Coleções nomeadas para acessar Tabela e Dicionário do MongoDB
Para obter a descrição dos parâmetros, consulte mongodb.Exemplo de DDL
Exemplo em XML
tabela do MongoDB
O DDL substitui a configuração de opções da coleção nomeada.
Dicionário MongoDB
A coleção nomeada define
my_collection como nome da coleção. Na chamada da função, esse valor é substituído por collection = 'my_dict' para selecionar outra coleção.