clickhouse-local est une CLI intégrant une version embarquée de ClickHouse. Elle permet de bénéficier de la puissance de ClickHouse sans avoir à installer de serveur. Dans ce guide, nous allons voir comment utiliser une base de données clickhouse-local avec chDB.
Préparation
Commençons par créer un environnement virtuel :
python -m venv .venv
source .venv/bin/activateEt maintenant, nous allons installer chDB. Assurez-vous d'utiliser la version 2.0.2 ou une version ultérieure :
pip install "chdb>=2.0.2"Nous allons maintenant installer ipython :
pip install ipythonNous allons utiliser ipython pour exécuter les commandes de la suite du guide, que vous pouvez lancer avec :
ipythonInstallation de clickhouse-local
Le téléchargement et l’installation de clickhouse-local sont identiques à ceux de ClickHouse. Pour ce faire, exécutez la commande suivante :
curl https://clickhouse.com/ | shPour lancer clickhouse-local en enregistrant les données dans un répertoire, il faut fournir --path :
./clickhouse -m --path demo.chdbIngestion de données dans clickhouse-local
La base de données par défaut stocke les données uniquement en mémoire ; nous devons donc créer une base de données nommée afin de garantir que toutes les données ingérées soient conservées sur disque.
CREATE DATABASE foo;Créons une table et insérons quelques valeurs aléatoires :
CREATE TABLE foo.randomNumbers
ORDER BY number AS
SELECT rand() AS number
FROM numbers(10_000_000);Écrivons une requête pour voir quelles données sont disponibles :
SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers┌─quants────────────────────────────────┐
│ [69,2147776478,3221525118,4252096960] │
└───────────────────────────────────────┘Une fois cela fait, assurez-vous de quitter le CLI avec exit;, car un seul processus peut détenir un verrou sur ce répertoire.
Si nous ne le faisons pas, nous obtiendrons l’erreur suivante lorsque nous essaierons de nous connecter à la base de données depuis chDB :
ChdbError: Code: 76. DB::Exception: Cannot lock file demo.chdb/status. Another server instance in same directory is already running. (CANNOT_OPEN_FILE)Connexion à une base de données clickhouse-local
Retournez dans le shell ipython et importez le module session depuis chDB :
from chdb import session as chsInitialisez une session reliée à demo.chdb :
sess = chs.Session("demo.chdb")Nous pouvons ensuite exécuter la même requête qui renvoie les quantiles des nombres :
sess.query("""
SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers
""", "Vertical")
Row 1:
──────
quants: [0,9976599,2147776478,4209286886]Nous pouvons également insérer des données dans cette base de données à partir de chDB :
sess.query("""
INSERT INTO foo.randomNumbers
SELECT rand() AS number FROM numbers(10_000_000)
""")
Row 1:
──────
quants: [0,9976599,2147776478,4209286886]Nous pouvons ensuite réexécuter la requête de quantiles depuis chDB ou clickhouse-local.