Como a maioria dos bancos de dados, o ClickHouse agrupa logicamente as tabelas em bancos de dados. Use o comando CREATE DATABASE para criar um novo banco de dados no ClickHouse:
CREATE DATABASE IF NOT EXISTS helloworldDa mesma forma, use CREATE TABLE para definir uma nova tabela. Se você não especificar o nome do banco de dados, a tabela será criada no banco de dados
default.
A tabela a seguir, chamada my_first_table, é criada no banco de dados helloworld:
CREATE TABLE helloworld.my_first_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree()
PRIMARY KEY (user_id, timestamp)No exemplo acima, my_first_table é uma tabela MergeTree com quatro colunas:
user_id: um inteiro sem sinal de 32 bitsmessage: um tipo de dadoString, que substitui tipos comoVARCHAR,BLOB,CLOBe outros usados em outros sistemas de banco de dadostimestamp: um valorDateTime, que representa um instante no tempometric: um número de ponto flutuante de 32 bits
Uma breve introdução às chaves primárias
Antes de prosseguir, é importante entender como as chaves primárias funcionam no ClickHouse (a implementação das chaves primárias pode parecer inesperada!):
- as chaves primárias no ClickHouse não são únicas para cada linha de uma tabela
A chave primária de uma tabela do ClickHouse determina como os dados são ordenados quando gravados em disco. A cada 8.192 linhas ou 10 MB de
dados (o que chamamos de granularidade do índice), é criada uma entrada no arquivo de índice da chave primária. Esse conceito de granularidade
cria um índice esparso que cabe facilmente na memória, e os grânulos representam uma faixa com a menor quantidade de
dados de coluna processada durante consultas SELECT.
A chave primária pode ser definida usando o parâmetro PRIMARY KEY. Se você definir uma tabela sem especificar uma PRIMARY KEY,
a chave passa a ser a tupla especificada na cláusula ORDER BY. Se você especificar tanto uma PRIMARY KEY quanto uma ORDER BY, a chave primária deverá ser um prefixo da ordenação.
A chave primária também é a chave de ordenação, que é uma tupla de (user_id, timestamp). Portanto, os dados armazenados em cada
arquivo de coluna serão ordenados por user_id e, em seguida, por timestamp.