Для хранения различных типов данных широко используются базы данных. Базы данных бывают разных типов: реляционные, объектные, объектно-ориентированные, сетевые, функциональные. Однако существует еще один тип баз данных — колоночные. В колоночных базах данных данные хранятся и обрабатываются не по строкам, а по столбцам. Благодаря этой особенности данные быстро обрабатываются и масштабируются. Высокопроизводительная обработка запросов в ClickHouse делает ее идеальным выбором для работы с большими объемами и оперативной аналитикой данных.
Одной из самых известных и популярных колоночных баз данных является ClickHouse — бесплатная СУБД с открытым исходным кодом, первоначально разработанная компанией Яндекс. Впоследствии разработка перешла под контроль другой компании — ClickHouse, Inc. Благодаря высокой скорости обработки данных, ClickHouse хорошо зарекомендовала себя при работе с большими и аналитическими данными. Ознакомиться с архитектурой ClickHouse более подробно можно в документации.
В данной статье мы произведем установку СУБД ClickHouse на операционную систему Ubuntu 22.04, а также рассмотрим несколько практических примеров использования.
Предварительные требования
Для установки ClickHouse на операционную систему Ubuntu 22.04 нам понадобится:
-
Сервер или виртуальная машина с предустановленной ОС Ubuntu 22.04.
Регистрация в Timeweb Cloud
Чтобы арендовать облачный или выделенный сервер в Timeweb Cloud, необходимо пройти регистрацию.
Переходим по ссылке для регистрации нового пользователя. Мы выберем регистрацию на физическое лицо и заполним следующие данные:
-
ФИО,
-
адрес электронной почты,
-
номер телефона.
После регистрации на указанный адрес почты придет сообщение с ссылкой для активации аккаунта и входа в панель — перейдите по ней.
Создание облачного сервера
После того, как учетная запись была создана и активирована, можно арендовать облачный сервер.
1) Переходим на страницу авторизации и входим в аккаунт при помощи логина или адреса электронной почты и пароля или при помощи ВКонтакте, GitHub, Google.
2) После успешной авторизации отобразится панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».
3) Выбираем операционную систему, которая будет установлена на сервер. В нашем случае нам необходима Ubuntu версии 22.04.
4) Выбираем регион, в котором будет находиться наш сервер. Выбирать рекомендуется тот регион, который ближе всего находится к вам физически. У каждого доступного региона справа вверху отображается ping, т.е. время, необходимое для передачи данных с вашего компьютера на сервер. Чем меньше указанное время, тем быстрее будет осуществляться передача данных.
5) Далее выбираем необходимую конфигурацию для сервера.
Так как в данной статье упор делается только на установке и на демонстрации возможностей СУБД, то выберем минимально поддерживаемую конфигурацию ClickHouse — 2 ГБ оперативной памяти, двухъядерный процессор и 40 ГБ места на жестком диске. В реальности вам необходимо выбирать именно ту конфигурацию, которая будет удовлетворять вашим потребностям при работе с ClickHouse.
Стоит отметить что для оптимальной работы с ClickHouse желательно выбирать минимум 4 ГБ оперативной памяти для выполнения нетривиальных запросов, а также выбирать оптимальное количество ядер процессора (чем больше ядер, тем лучше, но необходим минимум двухядерный процессор) и минимум 2 ГБ свободного места на жестком диске. Если не соблюдать системные требования, то запустить ClickHouse не получится, и в лог-файлах будут отображаться ошибки типа Linux threads max count is too low, Available memory at server startup is too low, Maximum number of threads is lower than 30000. Выбираем соответствующий тариф.
6) Далее необходимо решить, будет ли сервер доступен из внешний сети или же только из приватной (частной) сети.
7) По желанию можно оформить дополнительные услуги, включая резервные копии и защиту от DDoS–атак (последняя доступна в Санкт–Петербурге и Москве).
8) Также заранее можно загрузить SSH–ключ, чтобы не входить на север при помощи пароля.
9) Можно задать необходимое имя для сервера которое будет отображаться в панели управления, а также выбрать проект.
10) Для создания сервера необходимо нажать на кнопку «Заказать».
Если на вашем аккаунте недостаточно средств, то будет выведено предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP–адрес, логин и пароль для подключения.
Предварительная настройка сервера
Все команды, которые будут перечислены далее в статье, необходимо выполнять от имени root-пользователя или от имени обычного пользователя с правами sudo.
Перед тем как приступать к установке ClickHouse, необходимо выполнить следующие требования:
1) При работе с ClickHouse в Production-окружениях необходимо выключить swap, если он используется. Сделать это можно двумя способами:
1.1) Отключить SWAP до последующей перезагрузки сервера при помощи команды:
1.2) Отключить SWAP перманентно (на постоянной основе). Для этого необходимо открыть на редактирование файл /etc/fstab при помощи любого текстового редактора и добавить перед строкой, содержащей слово swap, символ решетки #, чтобы получилось как на скриншоте ниже:
Сохраните изменения и выйдите из файла.
2) Заранее установить пакет tzdata, если он отсутствует в системе. Для его установки необходимо выполнить команду:
Облачные серверы
по всему миру с почасовой оплатой.
Установка ClickHouse на Ubuntu 22.04
Для установки ClickHouse на Ubuntu 22.04 необходимо выполнить следующие шаги.
1) Устанавливаем необходимые пакеты:
2) Импортируем GPG-ключ от официального репозитория Ubuntu с целью возможности безопасной загрузки проверенных пакетов ClickHouse:
3) Создаем файл с официальным репозиторием ClickHouse:
4) Обновляем списки пакетов и устанавливаем серверный и клиентский пакеты clickhouse:
5) В процессе установки система предложит задать пароль для стандартного (дефолтного) пользователя:
После ввода пароля установщик сообщит, что пароль будет сохранен в файле /etc/clickhouse-server/users.d/default-password.xml:
6) После того как установка будет завершена, необходимо запустить ClickHouse при помощи команды:
7) Для проверки статуса ClickHouse необходимо использовать команду:
Если в выводе команды отображается active (running), то Clickhouse успешно запущен и работает.
На этом установка ClickHouse завершена.
Практические примеры использования ClickHouse
Рассмотрим использование ClickHouse на практике. Для начала необходимо подключиться к СУБД при помощи официальной клиентской программы, которая была установлена вместе с сервером:
Необходимо ввести пароль для дефолтного пользователя, который был задан на этапе установки ClickHouse. Если пароль был введен правильно, то появится приглашение к вводу и отобразится строка с текущим статусом подключения:
Создание базы данных
Стоит отметить, что в качестве языка запросов в ClickHouse используется язык SQL, который применяется в других СУБД, таких как MySQL и PostgreSQL. Для начала создадим новую базу данных с именем info. Для создания базы данных используется оператор CREATE DATABASE:
Точку с запятой в конце команды можно не указывать. После каждого успешного выполненного запроса, в консоли будет выводится уникальный номер выполненного запроса (Query id) а также сообщение Ok.
Убедимся, что ранее созданная база данных info присутствует в списке доступных баз данных. Для этого выведем список всех доступных баз данных при помощи команды SHOW DATABASES:
По умолчанию в ClickHouse присутствуют 4 системные базы данных: INFORMATION_SCHEMA, default, information_schema, system. Также на скриншоте выше мы можем обнаружить нашу созданную базу данных с именем info.
Создание таблицы
Создадим таблицу в базе данных info. Для этого сначала выберем данную базу данных в качестве последующих запросов по умолчанию, используя оператор USE (так система поймет, что все последующие операции будут применятся только к выбранной базе данных):
Создадим таблицу с именем orders, которая будет состоять из 4 столбцов: order_id, customer_name, customer_phone_number, customer_email:
Разберем пример по созданию таблицы более подробно.
CREATE TABLE— оператор для создания таблиц;order_id UInt64 NOT NULL— столбец с именемorder_id. Тип данных столбца —UInt64, который означает что для хранения данных используются 64–битные целые числа.NOT NULLозначает, что столбец не поддерживает пустые значения;customer_name String NOT NULL— столбец с именемcustomer_name. Тип данных столбца —String, который означает, что для хранения данных используется строка произвольной длины. При этом длина строки не ограничена.NOT NULLозначает что столбец не поддерживает пустые значения;customer_phone_number UInt32— столбец с именемcustomer_phone_number. Тип данных столбца —UInt32, который означает, что для хранения данных используются 32–битные целые числа;customer_email String— столбец с именемcustomer_email. Тип данных столбца —String. Длина строки не ограничена;ENGINE = MergeTree()— указывается движок для хранения данных. В данном случае в качестве движка используетсяMergeTree. Он используется при работе с большим количеством данных, которые должны быть добавлены в таблицу, при этом их необходимо быстро записать.PRIMARY KEY order_id— столбец с именемorder_idвыступает в роли первичного ключа, при помощи которого можно однозначно идентифицировать каждую запись.ORDER BY order_id— означает, что данные будут упорядочены по столбцуorder_id.
Добавление данных в таблицу
Теперь добавим в ранее созданную таблицу orders данные о покупателе. Для добавления данных используется оператор INSERT INTO:
Добавление нового столбца в таблицу
Таблицы можно модифицировать, например, чтобы добавить новый столбец. Добавим в ранее созданную таблицу orders новый столбец с именем customer_address и зададим ему тип данных String (строковый формат данных), используя оператор ALTER TABLE:
Выполнение запросов на выборку
Так же, как и в языке SQL, чтобы выбрать необходимые данные, используется оператор SELECT. Выполним несколько запросов на выборку данных. Для начала выполним обычный запрос на выборку, в котором выберем все данные из столбцов order_id и customer_name:
Теперь выполним запрос на выборку с использованием условий. Для этого используется оператор WHERE. Выберем все данные из столбцов order_id и customer_name, у которых в столбце customer_name используется значение Alex:
Обновление данных в таблице
Для того чтобы обновить данные в таблице, необходимо использовать операторы ALTER TABLE и UPDATE. Изменим имя покупателя с Alex на John в столбце customer_name таблицы orders при помощи следующего запроса:
Удаление данных из таблицы
Для удаления данных из таблицы используются операторы ALTER TABLE и DELETE. Удалим имя покупателя из столбца customer_name таблицы orders:
Работа с несколькими таблицами. Оператор JOIN
Как и в языке SQL, ClickHouse поддерживает оператор JOIN для выборки данных из двух и более таблиц. Рассмотрим использование JOIN на конкретном примере. Создадим новую базу данных с именем users:
Выберем данную базу данных для дальнейшего использования:
Создадим две новые таблицы:
Добавим данные в каждую таблицу:
Выполним INNER JOIN (внешнее соединение)? т.е. запрос на объединение двух таблиц, используя столбец.
Удаление объектов базы данных
Для удаления объектов используется оператор DROP, после которого указывается тип удаляемого объекта. Например, для удаления таблицы используется оператор DROP TABLE. Удалим ранее созданную таблицу orders:
Для того чтобы удалить базу данных, необходимо воспользоваться оператором DROP DATABASE:
Разверните ClickHouse на облачном сервере
477 ₽/мес
657 ₽/мес
Заключение
ClickHouse представляет собой колоночную аналитическую СУБД, в которой данные хранятся в виде столбцов, в то время как в традиционных реляционных СУБД данные хранятся в виде строк. Благодаря данному преимуществу ClickHouse быстро обрабатывает большой массив данных.
