> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação sobre coleções nomeadas

# Coleções nomeadas

Coleções nomeadas oferecem uma forma de armazenar coleções de pares chave-valor para
serem usadas na configuração de integrações com fontes externas. Você pode usar coleções nomeadas com
dicionários, tabelas, funções de tabela e armazenamento de objetos.

<Note>
  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.
</Note>

Coleções nomeadas podem ser configuradas com DDL ou em arquivos de configuração e são aplicadas
quando o ClickHouse é iniciado. Elas simplificam a criação de objetos e o ocultamento de credenciais
de usuários sem acesso administrativo.

As chaves em uma coleção nomeada devem corresponder aos nomes dos parâmetros da
função, motor de tabela, banco de dados etc. correspondentes. Nos exemplos abaixo, há um link para
a lista de parâmetros de cada tipo.

Os parâmetros definidos em uma coleção nomeada podem ser sobrescritos em SQL, como mostrado nos exemplos
abaixo. Essa capacidade pode ser limitada usando as palavras-chave `[NOT] OVERRIDABLE`, atributos XML
e/ou a opção de configuração `allow_named_collection_override_by_default`.

<Warning>
  Se a substituição for permitida, pode ser possível que usuários sem acesso administrativo
  descubram as credenciais que você está tentando ocultar.
  Se você estiver usando coleções nomeadas com esse propósito, deverá desabilitar
  `allow_named_collection_override_by_default` (que vem habilitada por padrão).
</Warning>

<h2 id="storing-named-collections-in-the-system-database">
  Armazenar coleções nomeadas no banco de dados do sistema
</h2>

<h3 id="ddl-example">
  Exemplo de DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION name AS
key_1 = 'value' OVERRIDABLE,
key_2 = 'value2' NOT OVERRIDABLE,
url = 'https://connection.url/'
```

No exemplo acima:

* `key_1` sempre pode ser sobrescrita.
* `key_2` nunca pode ser sobrescrita.
* `url` pode ou não ser sobrescrita, dependendo do valor de `allow_named_collection_override_by_default`.

<h3 id="permissions-to-create-named-collections-with-ddl">
  Permissões para criar coleções nomeadas com DDL
</h3>

Para gerenciar coleções nomeadas com DDL, um usuário deve ter o privilégio `named_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`:

```xml title='/etc/clickhouse-server/users.d/user_default.xml' highlight={6} theme={null}
<clickhouse>
  <users>
    <default>
      <password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex replace=true>
      <access_management>1</access_management>
      <named_collection_control>1</named_collection_control>
      <!-- Uncomment to also let this user see the values stored in named collections. -->
      <!-- <show_named_collections_secrets>1</show_named_collections_secrets> -->
    </default>
  </users>
</clickhouse>
```

<Tip>
  No exemplo acima, o valor `password_sha256_hex` é a representação hexadecimal do hash SHA256 da senha. Esta configuração do usuário `default` tem o atributo `replace=true`, pois a configuração padrão já define uma `password` em texto simples, e não é possível ter, ao mesmo tempo, uma `password` em texto simples e uma `password_sha256_hex` definidas para um usuário.
</Tip>

`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`](/pt-BR/concepts/features/configuration/settings/settings-users#show_named_collections_secrets-user-setting). 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 *)`.

<h3 id="storage-for-named-collections">
  Armazenamento de coleções nomeadas
</h3>

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](/pt-BR/concepts/features/configuration/server-config/storing-data#encrypted-virtual-file-system),
em que `aes_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:

```xml theme={null}
<clickhouse>
  <named_collections_storage>
    <type>zookeeper_encrypted</type>
    <key_hex>bebec0cabebec0cabebec0cabebec0ca</key_hex>
    <algorithm>aes_128_ctr</algorithm>
    <path>/named_collections_path/</path>
    <update_timeout_ms>1000</update_timeout_ms>
  </named_collections_storage>
</clickhouse>
```

O parâmetro de configuração opcional `update_timeout_ms` é, por padrão, `5000`.

Você pode verificar o tipo de armazenamento ativo por meio de `system.server_settings` e `getServerSetting`:

```sql theme={null}
SELECT value, getServerSetting('named_collections_storage_type')
FROM system.server_settings
WHERE name = 'named_collections_storage.type';
```

Alterar o tipo de armazenamento exige reiniciar o servidor; `SYSTEM RELOAD CONFIG` não altera o backend ativo.

<h2 id="storing-named-collections-in-configuration-files">
  Armazenar coleções nomeadas em arquivos de configuração
</h2>

<h3 id="xml-example">
  Exemplo de XML
</h3>

```xml title='/etc/clickhouse-server/config.d/named_collections.xml' theme={null}
<clickhouse>
     <named_collections>
        <name>
            <key_1 overridable="true">value</key_1>
            <key_2 overridable="false">value_2</key_2>
            <url>https://connection.url/</url>
        </name>
     </named_collections>
</clickhouse>
```

No exemplo acima:

* `key_1` sempre pode ser sobrescrito.
* `key_2` nunca pode ser sobrescrito.
* `url` pode ou não ser sobrescrito, dependendo do valor de `allow_named_collection_override_by_default`.

<h2 id="modifying-named-collections">
  Modificando coleções nomeadas
</h2>

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.

<h3 id="alter-a-ddl-named-collection">
  Alterar uma coleção nomeada DDL
</h3>

Altere ou adicione as chaves `key1` e `key3` da coleção nomeada `collection2`
(isso não alterará o valor da flag `overridable` para essas chaves):

```sql theme={null}
ALTER NAMED COLLECTION collection2 SET key1=4, key3='value3'
```

Altere ou adicione a chave `key1` e permita que ela seja sempre sobrescrita:

```sql theme={null}
ALTER NAMED COLLECTION collection2 SET key1=4 OVERRIDABLE
```

Remova a chave `key2` de `collection2`:

```sql theme={null}
ALTER NAMED COLLECTION collection2 DELETE key2
```

Altere ou adicione a chave `key1` e exclua a chave `key3` da coleção `collection2`:

```sql theme={null}
ALTER NAMED COLLECTION collection2 SET key1=4, DELETE key3
```

Para forçar uma chave a usar as configurações padrão da flag `overridable`, é necessário
remover a chave e adicioná-la novamente.

```sql theme={null}
ALTER NAMED COLLECTION collection2 DELETE key1;
ALTER NAMED COLLECTION collection2 SET key1=4;
```

<h3 id="drop-the-ddl-named-collection-collection2">
  Exclua a coleção nomeada `collection2`:
</h3>

```sql theme={null}
DROP NAMED COLLECTION collection2
```

<h2 id="named-collections-for-accessing-s3">
  Coleções nomeadas para acessar o S3
</h2>

Para ver a descrição dos parâmetros, consulte a [função de tabela S3](/pt-BR/reference/functions/table-functions/s3).

<h3 id="ddl-example-1">
  Exemplo de DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION s3_mydata AS
access_key_id = 'AKIAIOSFODNN7EXAMPLE',
secret_access_key = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
format = 'CSV',
url = 'https://s3.us-east-1.amazonaws.com/yourbucket/mydata/'
```

<h3 id="xml-example-1">
  Exemplo em XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <s3_mydata>
            <access_key_id>AKIAIOSFODNN7EXAMPLE</access_key_id>
            <secret_access_key>wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</secret_access_key>
            <format>CSV</format>
            <url>https://s3.us-east-1.amazonaws.com/yourbucket/mydata/</url>
        </s3_mydata>
    </named_collections>
</clickhouse>
```

<h3 id="s3-function-and-s3-table-named-collection-examples">
  Exemplos de coleção nomeada para a função s3() e a tabela S3
</h3>

Ambos os exemplos a seguir usam a mesma coleção nomeada `s3_mydata`:

<h4 id="s3-function">
  função s3()
</h4>

```sql theme={null}
INSERT INTO FUNCTION s3(s3_mydata, filename = 'test_file.tsv.gz',
   format = 'TSV', structure = 'number UInt64', compression_method = 'gzip')
SELECT * FROM numbers(10000);
```

<Tip>
  O primeiro argumento da função `s3()` acima é o nome da coleção, `s3_mydata`. Sem coleções nomeadas, o ID da chave de acesso, a chave secreta, o formato e a URL teriam de ser informados em cada chamada à função `s3()`.
</Tip>

<h4 id="s3-table">
  Tabela S3
</h4>

```sql theme={null}
CREATE TABLE s3_engine_table (number Int64)
ENGINE=S3(s3_mydata, url='https://s3.us-east-1.amazonaws.com/yourbucket/mydata/test_file.tsv.gz', format = 'TSV')
SETTINGS input_format_with_names_use_header = 0;

SELECT * FROM s3_engine_table LIMIT 3;
┌─number─┐
│      0 │
│      1 │
│      2 │
└────────┘
```

<h2 id="named-collections-for-accessing-mysql-database">
  Coleções nomeadas para acessar um banco de dados MySQL
</h2>

Consulte a descrição dos parâmetros em [mysql](/pt-BR/reference/functions/table-functions/mysql).

<h3 id="ddl-example-2">
  Exemplo de DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION mymysql AS
user = 'myuser',
password = 'mypass',
host = '127.0.0.1',
port = 3306,
database = 'test',
connection_pool_size = 8,
replace_query = 1
```

<h3 id="xml-example-2">
  Exemplo de XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <mymysql>
            <user>myuser</user>
            <password>mypass</password>
            <host>127.0.0.1</host>
            <port>3306</port>
            <database>test</database>
            <connection_pool_size>8</connection_pool_size>
            <replace_query>1</replace_query>
        </mymysql>
    </named_collections>
</clickhouse>
```

<h3 id="mysql-function-mysql-table-mysql-database-and-dictionary-named-collection-examples">
  Exemplos de coleção nomeada para a função mysql(), tabela MySQL, banco de dados MySQL e Dicionário
</h3>

Os quatro exemplos a seguir usam a mesma coleção nomeada `mymysql`:

<h4 id="mysql-function">
  função mysql()
</h4>

```sql theme={null}
SELECT count() FROM mysql(mymysql, table = 'test');

┌─count()─┐
│       3 │
└─────────┘
```

<Note>
  A coleção nomeada não define o parâmetro `table`, então ele é informado na chamada da função como `table = 'test'`.
</Note>

<h4 id="mysql-table">
  Tabela MySQL
</h4>

```sql theme={null}
CREATE TABLE mytable(A Int64) ENGINE = MySQL(mymysql, table = 'test', connection_pool_size=3, replace_query=0);
SELECT count() FROM mytable;

┌─count()─┐
│       3 │
└─────────┘
```

<Note>
  A DDL substitui a configuração connection\_pool\_size da coleção nomeada.
</Note>

<h4 id="mysql-database">
  Banco de dados MySQL
</h4>

```sql theme={null}
CREATE DATABASE mydatabase ENGINE = MySQL(mymysql);

SHOW TABLES FROM mydatabase;

┌─name───┐
│ source │
│ test   │
└────────┘
```

<h4 id="mysql-dictionary">
  Dicionário do MySQL
</h4>

```sql theme={null}
CREATE DICTIONARY dict (A Int64, B String)
PRIMARY KEY A
SOURCE(MYSQL(NAME mymysql TABLE 'source'))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED());

SELECT dictGet('dict', 'B', 2);

┌─dictGet('dict', 'B', 2)─┐
│ two                     │
└─────────────────────────┘
```

<h2 id="named-collections-for-accessing-postgresql-database">
  Coleções nomeadas para acessar o banco de dados PostgreSQL
</h2>

Para ver a descrição dos parâmetros, consulte [postgresql](/pt-BR/reference/functions/table-functions/postgresql). Além disso, há os seguintes aliases:

* `username` para `user`
* `db` para `database`.

As configurações do pool de conexões do [motor de tabela PostgreSQL](/pt-BR/reference/engines/table-engines/integrations/postgresql) (`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:

```sql theme={null}
CASE
    WHEN collection['addresses_expr'] != '' THEN collection['addresses_expr']
    WHEN collection['host'] != ''           THEN collection['host'] || ':' || if(collection['port'] != '', collection['port'], '5432')
    WHEN collection['hostname'] != ''       THEN collection['hostname'] || ':' || if(collection['port'] != '', collection['port'], '5432')
END
```

Exemplo de criação:

```sql theme={null}
CREATE NAMED COLLECTION mypg AS
user = 'pguser',
password = 'jw8s0F4',
host = '127.0.0.1',
port = 5432,
database = 'test',
schema = 'test_schema'
```

Exemplo de configuração:

```xml theme={null}
<clickhouse>
    <named_collections>
        <mypg>
            <user>pguser</user>
            <password>jw8s0F4</password>
            <host>127.0.0.1</host>
            <port>5432</port>
            <database>test</database>
            <schema>test_schema</schema>
        </mypg>
    </named_collections>
</clickhouse>
```

<h3 id="example-of-using-named-collections-with-the-postgresql-function">
  Exemplo de uso de coleções nomeadas com a função postgresql
</h3>

```sql theme={null}
SELECT * FROM postgresql(mypg, table = 'test');

┌─a─┬─b───┐
│ 2 │ two │
│ 1 │ one │
└───┴─────┘
SELECT * FROM postgresql(mypg, table = 'test', schema = 'public');

┌─a─┐
│ 1 │
│ 2 │
│ 3 │
└───┘
```

<h3 id="example-of-using-named-collections-with-database-with-engine-postgresql">
  Exemplo de uso de coleções nomeadas com banco de dados com mecanismo PostgreSQL
</h3>

```sql theme={null}
CREATE TABLE mypgtable (a Int64) ENGINE = PostgreSQL(mypg, table = 'test', schema = 'public');

SELECT * FROM mypgtable;

┌─a─┐
│ 1 │
│ 2 │
│ 3 │
└───┘
```

<Note>
  O PostgreSQL copia os dados da coleção nomeada quando a tabela é criada. Alterações na coleção não afetam as tabelas existentes.
</Note>

<h3 id="example-of-using-named-collections-with-database-with-engine-postgresql-1">
  Exemplo de uso de coleções nomeadas com um banco de dados com engine PostgreSQL
</h3>

```sql theme={null}
CREATE DATABASE mydatabase ENGINE = PostgreSQL(mypg);

SHOW TABLES FROM mydatabase

┌─name─┐
│ test │
└──────┘
```

<h3 id="example-of-using-named-collections-with-a-dictionary-with-source-postgresql">
  Exemplo de uso de coleção nomeada com um Dicionário de fonte POSTGRESQL
</h3>

```sql theme={null}
CREATE DICTIONARY dict (a Int64, b String)
PRIMARY KEY a
SOURCE(POSTGRESQL(NAME mypg TABLE test))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED());

SELECT dictGet('dict', 'b', 2);

┌─dictGet('dict', 'b', 2)─┐
│ two                     │
└─────────────────────────┘
```

<h2 id="named-collections-for-accessing-a-remote-clickhouse-database">
  Coleções nomeadas para acessar um banco de dados remoto do ClickHouse
</h2>

Consulte a descrição dos parâmetros em [remote](/pt-BR/reference/functions/table-functions/remote#parameters).

Exemplo de configuração:

```sql theme={null}
CREATE NAMED COLLECTION remote1 AS
host = 'remote_host',
port = 9000,
database = 'system',
user = 'foo',
password = 'secret',
secure = 1
```

```xml theme={null}
<clickhouse>
    <named_collections>
        <remote1>
            <host>remote_host</host>
            <port>9000</port>
            <database>system</database>
            <user>foo</user>
            <password>secret</password>
            <secure>1</secure>
        </remote1>
    </named_collections>
</clickhouse>
```

`secure` não é necessário na conexão por causa de `remoteSecure`, mas pode ser usado para dicionários.

<h3 id="example-of-using-named-collections-with-the-remoteremotesecure-functions">
  Exemplo de uso de coleções nomeadas com as funções `remote`/`remoteSecure`
</h3>

```sql theme={null}
SELECT * FROM remote(remote1, table = one);
┌─dummy─┐
│     0 │
└───────┘

SELECT * FROM remote(remote1, database = merge(system, '^one'));
┌─dummy─┐
│     0 │
└───────┘

INSERT INTO FUNCTION remote(remote1, database = default, table = test) VALUES (1,'a');

SELECT * FROM remote(remote1, database = default, table = test);
┌─a─┬─b─┐
│ 1 │ a │
└───┴───┘
```

<h3 id="example-of-using-named-collections-with-a-dictionary-with-source-clickhouse">
  Exemplo de uso de coleções nomeadas com um dicionário com origem no ClickHouse
</h3>

```sql theme={null}
CREATE DICTIONARY dict(a Int64, b String)
PRIMARY KEY a
SOURCE(CLICKHOUSE(NAME remote1 TABLE test DB default))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED());

SELECT dictGet('dict', 'b', 1);
┌─dictGet('dict', 'b', 1)─┐
│ a                       │
└─────────────────────────┘
```

<h2 id="named-collections-for-accessing-kafka">
  Coleções nomeadas para acessar o Kafka
</h2>

Veja a descrição dos parâmetros em [Kafka](/pt-BR/reference/engines/table-engines/integrations/kafka).

<h3 id="ddl-example-3">
  Exemplo de DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION my_kafka_cluster AS
kafka_broker_list = 'localhost:9092',
kafka_topic_list = 'kafka_topic',
kafka_group_name = 'consumer_group',
kafka_format = 'JSONEachRow',
kafka_max_block_size = '1048576';

```

<h3 id="xml-example-3">
  Exemplo em XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <my_kafka_cluster>
            <kafka_broker_list>localhost:9092</kafka_broker_list>
            <kafka_topic_list>kafka_topic</kafka_topic_list>
            <kafka_group_name>consumer_group</kafka_group_name>
            <kafka_format>JSONEachRow</kafka_format>
            <kafka_max_block_size>1048576</kafka_max_block_size>
        </my_kafka_cluster>
    </named_collections>
</clickhouse>
```

<h3 id="oauthbearer-oidc-authentication">
  Autenticação OAUTHBEARER/OIDC
</h3>

As opções de `OAUTHBEARER` 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:

```xml title='/etc/clickhouse-server/config.d/named_collections.xml' theme={null}
<clickhouse>
    <named_collections>
        <eventhub_one>
            <!-- Kafka table-engine settings -->
            <kafka_broker_list>domain.one.servicebus.windows.net:9093</kafka_broker_list>
            <kafka_topic_list>my-topic</kafka_topic_list>
            <kafka_group_name>my-group</kafka_group_name>
            <kafka_format>JSONEachRow</kafka_format>
            <kafka_security_protocol>sasl_ssl</kafka_security_protocol>
            <kafka_sasl_mechanism>OAUTHBEARER</kafka_sasl_mechanism>

            <!-- Extended librdkafka settings -->
            <kafka>
                <sasl_oauthbearer_method>oidc</sasl_oauthbearer_method>
                <sasl_oauthbearer_client_id from_env="EVENTHUB_CLIENT_ID"/>
                <sasl_oauthbearer_client_secret from_env="EVENTHUB_CLIENT_SECRET"/>
                <sasl_oauthbearer_token_endpoint_url>https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token</sasl_oauthbearer_token_endpoint_url>
                <sasl_oauthbearer_scope>https://domain.one.servicebus.windows.net/.default</sasl_oauthbearer_scope>
            </kafka>
        </eventhub_one>
    </named_collections>
</clickhouse>
```

Quando `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](/pt-BR/concepts/features/configuration/server-config/configuration-files#from_env_zk) para mais detalhes sobre implantação e valores padrão, e [criptografar e ocultar a configuração](/pt-BR/concepts/features/configuration/server-config/configuration-files#encryption) para proteger segredos em arquivos de configuração pré-processados.

<h3 id="example-of-using-named-collections-with-a-kafka-table">
  Exemplo de uso de coleções nomeadas com uma tabela do Kafka
</h3>

Ambos os exemplos a seguir usam a mesma coleção nomeada `my_kafka_cluster`:

```sql theme={null}
CREATE TABLE queue
(
    timestamp UInt64,
    level String,
    message String
)
ENGINE = Kafka(my_kafka_cluster)

CREATE TABLE queue
(
    timestamp UInt64,
    level String,
    message String
)
ENGINE = Kafka(my_kafka_cluster)
SETTINGS kafka_num_consumers = 4,
         kafka_thread_per_consumer = 1;
```

<h2 id="named-collections-for-backups">
  Coleções nomeadas para backups
</h2>

Para a descrição dos parâmetros, consulte [Backup e restauração](/pt-BR/concepts/features/backup-restore/overview).

<h3 id="ddl-example-4">
  Exemplo de DDL
</h3>

```sql theme={null}
BACKUP TABLE default.test to S3(named_collection_s3_backups, 'directory')
```

<h3 id="xml-example-4">
  Exemplo de XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <named_collection_s3_backups>
            <url>https://my-s3-bucket.s3.amazonaws.com/backup-S3/</url>
            <access_key_id>ABC123</access_key_id>
            <secret_access_key>Abc+123</secret_access_key>
        </named_collection_s3_backups>
    </named_collections>
</clickhouse>
```

<h2 id="named-collections-for-accessing-mongodb-table-and-dictionary">
  Coleções nomeadas para acessar Tabela e Dicionário do MongoDB
</h2>

Para obter a descrição dos parâmetros, consulte [mongodb](/pt-BR/reference/functions/table-functions/mongodb).

<h3 id="ddl-example-5">
  Exemplo de DDL
</h3>

```sql theme={null}
CREATE NAMED COLLECTION mymongo AS
user = '',
password = '',
host = '127.0.0.1',
port = 27017,
database = 'test',
collection = 'my_collection',
options = 'connectTimeoutMS=10000'
```

<h3 id="xml-example-5">
  Exemplo em XML
</h3>

```xml theme={null}
<clickhouse>
    <named_collections>
        <mymongo>
            <user></user>
            <password></password>
            <host>127.0.0.1</host>
            <port>27017</port>
            <database>test</database>
            <collection>my_collection</collection>
            <options>connectTimeoutMS=10000</options>
        </mymongo>
    </named_collections>
</clickhouse>
```

<h4 id="mongodb-table">
  tabela do MongoDB
</h4>

```sql theme={null}
CREATE TABLE mytable(log_type VARCHAR, host VARCHAR, command VARCHAR) ENGINE = MongoDB(mymongo, options='connectTimeoutMS=10000&compressors=zstd')
SELECT count() FROM mytable;

┌─count()─┐
│       2 │
└─────────┘
```

<Note>
  O DDL substitui a configuração de opções da coleção nomeada.
</Note>

<h4 id="mongodb-dictionary">
  Dicionário MongoDB
</h4>

```sql theme={null}
CREATE DICTIONARY dict
(
    `a` Int64,
    `b` String
)
PRIMARY KEY a
SOURCE(MONGODB(NAME mymongo COLLECTION my_dict))
LIFETIME(MIN 1 MAX 2)
LAYOUT(HASHED())

SELECT dictGet('dict', 'b', 2);

┌─dictGet('dict', 'b', 2)─┐
│ two                     │
└─────────────────────────┘
```

<Note>
  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.
</Note>
