Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Использование базы данных clickhouse-local

clickhouse-local — это CLI с встроенной версией ClickHouse. Он дает пользователям возможности ClickHouse без необходимости устанавливать сервер. В этом руководстве мы рассмотрим, как использовать базу данных clickhouse-local из chDB.

Настройка

Сначала создадим виртуальное окружение:

python -m venv .venv
source .venv/bin/activate

А теперь установим chDB. Убедитесь, что у вас версия 2.0.2 или выше:

pip install "chdb>=2.0.2"

А теперь установим IPython:

pip install ipython

Мы будем использовать ipython для выполнения команд далее по тексту руководства; запустить его можно командой:

ipython

Установка clickhouse-local

Скачивание и установка clickhouse-local выполняются так же, как скачивание и установка ClickHouse. Для этого выполните следующую команду:

curl https://clickhouse.com/ | sh

Чтобы запустить clickhouse-local так, чтобы данные сохранялись в каталоге, нужно передать --path:

./clickhouse -m --path demo.chdb

Ингестия данных в clickhouse-local

База данных по умолчанию хранит данные только в памяти, поэтому нужно создать отдельную именованную базу данных, чтобы все загружаемые нами данные сохранялись на диске.

CREATE DATABASE foo;

Давайте создадим таблицу и вставим в неё несколько случайных чисел:

CREATE TABLE foo.randomNumbers
ORDER BY number AS
SELECT rand() AS number
FROM numbers(10_000_000);

Давайте напишем запрос и посмотрим, какие данные у нас есть:

SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers
┌─quants────────────────────────────────┐
│ [69,2147776478,3221525118,4252096960] │
└───────────────────────────────────────┘

После этого обязательно выйдите из CLI с помощью exit;, поскольку блокировку этого каталога может удерживать только один процесс. Иначе при попытке подключиться к базе данных из chDB мы получим следующую ошибку:

ChdbError: Code: 76. DB::Exception: Cannot lock file demo.chdb/status. Another server instance in same directory is already running. (CANNOT_OPEN_FILE)

Подключение к базе данных clickhouse-local

Вернитесь в оболочку ipython и импортируйте из chDB модуль session:

from chdb import session as chs

Инициализируйте сеанс для demo.chdb:

sess = chs.Session("demo.chdb")

Затем можно выполнить тот же запрос, который возвращает квантили чисел:

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]

Мы также можем вставлять данные в эту базу данных с помощью chDB:

sess.query("""
INSERT INTO foo.randomNumbers
SELECT rand() AS number FROM numbers(10_000_000)
""")

Row 1:
──────
quants: [0,9976599,2147776478,4209286886]

Затем можно снова выполнить запрос на вычисление квантилей в chDB или clickhouse-local.

Navigation