Como la mayoría de las bases de datos, ClickHouse agrupa lógicamente las tablas en bases de datos. Usa el comando CREATE DATABASE para crear una base de datos nueva en ClickHouse:
CREATE DATABASE IF NOT EXISTS helloworldDe manera similar, usa CREATE TABLE para definir una tabla nueva. Si no especificas el nombre de la base de datos, la tabla estará en la
base de datos default.
La siguiente tabla, llamada my_first_table, se crea en la base de datos helloworld:
CREATE TABLE helloworld.my_first_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree()
PRIMARY KEY (user_id, timestamp)En el ejemplo anterior, my_first_table es una tabla MergeTree con cuatro columnas:
user_id: un entero sin signo de 32 bitsmessage: un tipo de datoStringque sustituye a tipos comoVARCHAR,BLOB,CLOBy otros de otros sistemas de bases de datostimestamp: un valorDateTimeque representa un momento concreto en el tiempometric: un número de coma flotante de 32 bits
Una breve introducción a las claves primarias
Antes de continuar, es importante entender cómo funcionan las claves primarias en ClickHouse (¡la implementación de las claves primarias puede parecer inesperada!):
- las claves primarias en ClickHouse no son únicas para cada fila de una tabla
La clave primaria de una tabla de ClickHouse determina cómo se ordenan los datos al escribirse en disco. Cada 8.192 filas o 10 MB de
datos (lo que se conoce como la granularidad del índice) crea una entrada en el archivo de índice de la clave primaria. Este concepto de granularidad
crea un índice disperso que cabe fácilmente en memoria, y los gránulos representan la franja mínima de
datos de columna que se procesa durante las consultas SELECT.
La clave primaria puede definirse mediante el parámetro PRIMARY KEY. Si define una tabla sin especificar una PRIMARY KEY,
la clave pasa a ser la tupla especificada en la cláusula ORDER BY. Si especifica tanto una PRIMARY KEY como un ORDER BY, la clave primaria debe ser un prefijo del orden de clasificación.
La clave primaria también es la clave de ordenación, que es una tupla de (user_id, timestamp). Por lo tanto, los datos almacenados en cada
archivo de columna se ordenarán por user_id y luego por timestamp.