Développement de la section Utilisation

This commit is contained in:
Mathieu Gauthier-Pilote 2022-10-20 15:42:26 -04:00
parent b90350247e
commit 60c220c14b

View file

@ -79,10 +79,140 @@ La documentation sur la [configuration](https://clickhouse.com/docs/en/operation
# Utilisation
ClickHouse parle le language SQL. Un [tutoriel](https://clickhouse.com/docs/en/tutorial) permet d'apprendre les bases (créer un nouveau tableau, y insérer un grand ensemble de données et tester quelques requêtes).
ClickHouse parle le language SQL. Un [tutoriel](https://clickhouse.com/docs/en/tutorial) permet d'apprendre les bases (créer une nouvelle table, y insérer un grand ensemble de données et tester quelques requêtes).
Plusieurs [interfaces](https://clickhouse.com/docs/en/interfaces) sont disponibles, notamment en ligne de commande (`clickhouse-client`) et via HTTP (`http://localhost:8123/play`)
Pour se connecter en ligne de commande directement sur le serveur (localhost, port 9000) avec l'utilisateur par défaut :
~~~
$ clickhouse-client --password
~~~
Après avoir saisi le mot de passe on atterrit dans l'invite de ClickHouse où on peut obtenir une liste des commandes disponibles en tappant :
~~~
:) help
~~~
Pour voir quelles bases de données sont présentes sur le serveur :
~~~
:) SHOW DATABASES
~~~
Créer une base de données `helloworld` :
~~~
:) CREATE DATABASE IF NOT EXISTS helloworld
~~~
Créer une table dans la base de données `helloworld` :
~~~
:) CREATE TABLE helloworld.ma_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree()
PRIMARY KEY (user_id, timestamp)
~~~
Insérer des données dans la table `helloworld.ma_table` de manière interactive :
~~~
:) INSERT INTO helloworld.ma_table (user_id, message, timestamp, metric) VALUES
(101, 'Coucou, ClickHouse!', now(), -1.0 ),
(102, 'Insérez beaucoup d\'entrées en lot', yesterday(), 1.41421 ),
(102, 'Triez vos données grâce à vos requêtes favorites', today(), 2.718 ),
(101, 'Les granules sont les plus petits segments de données lues', now() + 5, 3.14159 )
~~~
Sélectionner toutes les entrées insérées dans la table :
~~~
:) SELECT * FROM helloworld.ma_table
~~~
Sélectionner toutes les entrées de la table, cette fois en triant par date et en formattant la sortie différemment :
~~~
:) SELECT * FROM helloworld.ma_table ORDER BY timestamp FORMAT JSON
~~~
La documentation officielle contient [une page présentant les différents formats disponibles](https://clickhouse.com/docs/en/interfaces/formats/).
Créer la table `trips` dans la base de données `helloworld` pour mieux illustrer la force de ClickHouse :
~~~
:) CREATE TABLE helloworld.trips (
trip_id UInt32,
pickup_datetime DateTime,
dropoff_datetime DateTime,
pickup_longitude Nullable(Float64),
pickup_latitude Nullable(Float64),
dropoff_longitude Nullable(Float64),
dropoff_latitude Nullable(Float64),
passenger_count UInt8,
trip_distance Float32,
fare_amount Float32,
extra Float32,
tip_amount Float32,
tolls_amount Float32,
total_amount Float32,
payment_type Enum('CSH' = 1, 'CRE' = 2, 'NOC' = 3, 'DIS' = 4),
pickup_ntaname LowCardinality(String),
dropoff_ntaname LowCardinality(String)
)
ENGINE = MergeTree
PRIMARY KEY (pickup_datetime, dropoff_datetime)
~~~
Insérer des données dans la table à partir de trois gros fichiers CVS distants proposés en exemple par ClickHouse. Ils contiennent des trajets de taxi de la Ville de New York de 2009 à nos jours :
~~~
:) INSERT INTO helloworld.trips
SELECT
trip_id,
pickup_datetime,
dropoff_datetime,
pickup_longitude,
pickup_latitude,
dropoff_longitude,
dropoff_latitude,
passenger_count,
trip_distance,
fare_amount,
extra,
tip_amount,
tolls_amount,
total_amount,
payment_type,
pickup_ntaname,
dropoff_ntaname
FROM url(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_{0..2}.gz',
'TabSeparatedWithNames'
)
~~~
Confirmer l'insertion de plus de 3 millions d'entrées :
~~~
SELECT count()
FROM helloworld.trips
~~~
Laisser tomber la base de données `helloworld` avant de sortir de ClickHouse :
~~~
:) DROP DATABASE helloworld
:) exit
~~~
# Sauvegarde et restauration
Des exemples de [sauvegarde et de restoraution](https://clickhouse.com/docs/en/operations/backup) sont proposés dans la documentation officielle.