Clickhouse DB в Python
Введение
- Что такое БД clickhouse?
- Как установить сервер clickhouse локально и выполнять запросы с помощью различных клиентов.
- Как подключаться к БД clickhouse с помощью python и делать запросы к ней.
Бонус
Полезные расширения VSCode для работы с clickhouse и python.
Что такое Clickhouse?
Clickhouse – это высокопроизводительная, ориентированная на SQL СУБД для OLAP-процессов. Мечта инженера по обработке данных.
Что такое рабочий процесс OLAP?
Аббревиатура OLAP расшифровывается как online analytical processing. Рабочие процессы OLAP – это процессы, требующие ответов в реальном времени поверх больших наборов данных для аналитических целей.
Давайте разберемся:
Clickhouse работает на macOS, FreeBSD и Linux, а также может поддерживаться на Windows с помощью WSL.
Установка:
Вы можете установить сервер clickhouse на свою систему локально, используя следующую команду в терминале:
curl https://clickhouse.com/ | sh
Настройка клиентов:
Существует несколько способов настройки клиентов для выполнения запросов к БД clickhouse. Здесь мы рассмотрим три основных:
1. Сервер Clickhouse представляет собой http-клиент, позволяющий пользователям выполнять запросы с помощью удобного пользовательского интерфейса. Доступ к нему можно получить по адресу http://localhost:8123/play. Он выглядит следующим образом:
2. Мы также можем настроить собственный клиент на базе SQL, выполнив в терминале следующую команду:
./clickhouse client
3. Если вы являетесь поклонником VSCode, то для начала работы с clickhouse есть очень полезное расширение. С помощью SQLTools можно устанавливать соединения с сервером clickhouse и выполнять на нем SQL-запросы.
4. Для этих же целей можно использовать tabix, если вы являетесь поклонником докеризованных сервисов.
docker build -t tabix .
docker run -d -p 8080:80 tabix
Подключимся к Clickhouse с помощью python:
В Python существует ряд библиотек, которые можно использовать для подключения к clickhouse. Наиболее удобной из них является orm по имени infi.clickhouse-orm. Установить его можно с помощью следующей команды:
pip3 install infi.clickhouse-orm
После установки можно подключиться к серверу clickhouse и начать выполнять запросы.
from infi.clickhouse_orm import Database, Model, DateTimeField, UInt16Field, Float32Field, Memory, F
#Create table in clickhouse
class CPUStats(Model):
timestamp = DateTimeField()
cpu_id = UInt16Field()
cpu_percent = Float32Field()
engine = Memory()
db = Database('demo')
db.create_table(CPUStats)
# Calculate what percentage of the time CPU 1 was over 95% busy
queryset = CPUStats.objects_in(db)
total = queryset.filter(CPUStats.cpu_id == 1).count()
busy = queryset.filter(CPUStats.cpu_id == 1, CPUStats.cpu_percent > 95).count()
print('CPU 1 was busy {:.2f}% of the time'.format(busy * 100.0 / total))
# Calculate the average usage per CPU
for row in queryset.aggregate(CPUStats.cpu_id, average=F.avg(CPUStats.cpu_percent)):
print('CPU {row.cpu_id}: {row.average:.2f}%'.format(row=row))
Инженеры-программисты обычно предпочитают ORM при работе с базами данных, так как они предоставляют им простой способ разработки сопровождаемого кода. Вы также можете выполнять отдельные запросы к clickhouse, используя python с clickhouse-driver, но это уже тема для другого дня.
Заключение
В этой статье мы рассмотрели практические шаги, с помощью которых можно настроить и работать с clickhouse db как с использованием python, так и без него. В следующей статье мы рассмотрим различия в синтаксисе между обычным SQL и SQL на базе clickhouse. Оставайтесь с нами.