Что дает бизнесу база данных ClickHouse и почему мы ее используем
ClickHouse — универсальный инструмент, он подходит для работы с большими данными компаний из любой сферы. Его используют и небольшие интернет-сервисы, и корпорации.
С помощью ClickHouse мы экономим ресурсы клиентов на обслуживание системы
ClickHouse подходит для бизнеса с большим объемом данных
ClickHouse — один из видов баз данных. Лучше всего подходит для проектов, где нужно что-то пересчитывать и обрабатывать. Основой для анализа может быть почти что угодно, например данные клиентов, сотрудников, конкурентов.
У ClickHouse широкая область применения — подходит для любых структурированных данных
Помогает бизнесу быстрее запускать решения для сокращения издержек
Главная польза от ClickHouse в том, что он умеет быстро обрабатывать огромные массивы данных и создавать сложные аналитические запросы.
ClickHouse подходит и корпорациям, и небольшим интернет-сервисам
Для каких задач не подходит ClickHouse
ClickHouse — отличное решение, но не для всех задач и компаний. У этой базы данных тоже есть ограничения. Не советуем использовать:
❌ Для хранения неструктурированных данных, например видео, картинок, музыки, фильмов, роликов.
❌ Для обновляемых данных. Например, не подойдет банкам для отслеживания операций клиентов. ClickHouse не поддерживает транзакции — последовательность операций, которые должны выполниться все вместе или среди которых не должна выполниться ни одна.
Сколько ресурсов уходит на запуск и работы с базой данных
Ресурсы, которые понадобятся: сервера и программисты. Для работы с большими данными нужна инфраструктура: кластер серверов, специалисты для развертывания, поддержки и работы с базой данных в контексте проекта.
Компания может создать свой кластер или взять его в аренду. Настроить кластер достаточно легко: доступны варианты с шардированием, репликацией и одновременное их применение.
Стоимость аренды кластера в облаке можно рассчитать на калькуляторе ClickHouse
Первые результаты — как только запустится база. Специального временного лага нет — она сразу готова принимать и анализировать данные.
Почему Orbitsoft использует ClickHouse
Набор функций, который позволяет справляться с большим объемом данных — проще, быстрее и удобнее, чем аналогичные базы данных.
ClickHouse — проект с открытым кодом, его можно адаптировать под любые нужды
Высокая производительность. По многим тестам она опережает конкурентов, например Apache Spark, Amazon Redshift, Druid, Greenplum и Vertica.
Сравнение скорости обработки запросов — ClickHouse в несколько раз быстрее. Скриншот с сайта ClickHouse. tech
Приемлемый бюджет для заказчика: само решение бесплатное, к тому же низкая операционная стоимость и стоимость масштабирования.
У ClickHouse сильное сообщество программистов в России: чтобы получить ответ на вопрос, программист пишет его в чат Телеграма — и все. Это open-source-проект — любой человек может просмотреть исходный код и доработать его под свои нужды.
В каких проектах и решениях OrbitSoft использует ClickHouse
Интернет-реклама: аналитика и управление рекламой.
Медицина: система проведения опросов врачей.
Сервисы с развлекательным контентом: анализ логов пользователей для настройки системы персональных рекомендаций.
POSiFLORA: учет и контроль в цветочном бизнесе. Этот сервис полностью разработал OrbitSoft.
Поделитесь опытом: какую базу данных используете в своем проекте?
Источник: vc.ru
ClickHouse
ClickHouse – колоночная реляционная СУБД с открытым исходным кодом от компании Яндекс для быстрой обработки аналитических SQL-запросов на структурированных больших данных (Big Data) в режиме реального времени.
История разработки и развития
Основными ключевыми вехами в истории ClickHouse считаются следующие:
- 2009 год – компания Яндекс разработала первый прототип своей аналитической СУБД для собственных нужд, в рамках проекта веб-аналитики «Яндекс.Метрика» с целью построения отчетов в режиме реального времени по неагрегированным логам пользовательских действий [1];
- 2013 год – использование СУБД для анализа метаданных о событиях эксперимента на одном из детектеров Большого андронного коллайдера в CERN [1];
- 2014 год – Яндекс полностью перезапустил свой сервис веб-аналитики Метрика 2.0 на базе ClickHouse, благодаря чему пользователи могут строить произвольные отчеты [2];
- 2016 год – переход ClickHouse из проприетарного решения в open source – Яндекс опубликовал исходный код СУБД под лицензией Apache 2.0 [2];
- 2019 год – ClickHouse включен в состав реестра отечественного программного обеспечения, что позволяет использовать эту СУБД в проектах цифровизации государственных и частных компаний РФ с учетом требований к импортозамещению [3];
- 2019 год – компания «Аренадата Софтвер», разработчик первого отечественного дистрибутива Apache Hadoop и других корпоративных решений для хранения и обработки Big Data, выпустил на базе ClickHouse собственную аналитическую СУБД Arenadata QuickMarts. Продукт адаптирован для нужд сектора enterprise и включает возможности гибкой авторизации пользователей с разграничением доступа, поддержку формата ORC и интеграцию с безопасным протоколом Kerberos для экосистемы Hadoop [4]. Подробнее о том, чем Arenadata QuickMarts отличается от ClickHouse, мы рассказываем здесь.
Архитектура и принципы работы ClickHouse
Ключевым преимуществом Кликхаус считается высокая скорость выполнения SQL-запросов на чтение (OLAP-сценарий), которая обеспечивается благодаря следующим архитектурным особенностям [1]:
- столбцовое хранение данных, что позволяет считывать данные только из нужных колонок и эффективно сжимать однотипную информацию;
- физическая сортировка данных по первичному ключу позволяет быстро получать конкретные значения или диапазонов;
- векторные вычисления по кусочкам столбцов снижают издержки на диспетчеризацию и позволяют более эффективно использовать CPU;
- распараллеливание операций как в пределах одного сервера на несколько процессорных ядер, так и в рамках распределенных вычислений на кластере за счет механизма шардирования;
- поддержка приближенных вычислений на части выборки, что снижает число обращений к жесткому диску и еще больше повышает скорость обработки данных.
Стоит отметить, что в отличие от других популярных столбцовых СУБД для Big Data, например, SAP HANA и Google PowerDrill, которые работают только в оперативной памяти, ClickHouse работает с жесткими дисками. Это снижает стоимость эксплуатации системы, поскольку жесткие диски дешевле RAM.
При работе в кластере данные реплицируются асинхронно в фоновом режиме с поддержкой полной идентичности на разных репликах. Apache ZooKeeper используется для координации процесса репликации, но не участвует в обработке данных и выполнения запросов. При сбое в большинстве случаев восстановление данных происходит автоматически. По желанию можно включить кворумную запись данных.
Кластер Кликхаус масштабируется линейно путем добавления новых узлов. ClickHouse поддерживает диалект SQL c расширениями, такими как массивы и вложенные структуры данных, вероятностные структуры, возможность подключить внешнее key-value хранилище. Еще СУБД содержит множество возможностей интеграции с другими Big Data системами, такими как Apache Kafka и HDFS, а также MySQL и прочие внешние источники данных через ODBC или JDBC [1].
При том, что Кликхаус является реляционной СУБД, он не поддерживает транзакции, а также точечные операции UPDATE и DELETE. Кроме того, в данной системе отсутствуют оконные функции и полноценный оптимизатор запросов [2]. Подробнее о достоинствах и недостатках ClickHouse мы рассказываем в отдельных статьях.
Где используется Кликхаус: компании и Big Data проекты
Благодаря высокой скорости генерации аналитических отчетов по большим данным в режиме реального времени, ClickHouse наиболее востребован в следующих областях:
- веб-аналитика и контекстная реклама;
- real time мониторинг бизнес-метрик, например, анализ потребительского поведения на сайте;
- интерактивное взаимодействие с пользователями, к примеру, онлайн-игры;
- контроль технических показателей, в т.ч. интернет вещей (Internet of Things);
- реализация корпоративных хранилищ данных, например, как это сделано в Ситимобил.
При том, что ClickHouse изначально был разработан в Яндексе, он применяется не только в сервисах этого ИТ-гиганта. Сегодня множество отечественных и зарубежных компаний используют эту Big Data СУБД для быстрой аналитики больших данных. Из наиболее известных внедрений стоит упомянуть иностранные Cloudflare и Bloomberg, отечественную соцсеть ВКонтакте, Тинькофф банк, сервис онлайн-объявлений Avito, новостную сеть СМИ2, онлайн-кинотеатр ivi.ru, интернет-порталы Mail.ru и Rambler [1].
Источники
- https://ru.bmstu.wiki/ClickHouse
- https://ru.wikipedia.org/wiki/ClickHouse
- http://www.tadviser.ru/index.php/Продукт:ClickHouse
- https://arenadata.tech/products/adqm/
Источник: www.bigdataschool.ru
ClickHouse: как обрабатывать big data в 800 раз быстрее
Российский сервис «Яндекс.Метрика» используется для веб-аналитики. Он обрабатывает большое количество информации, чтобы предприниматели оценивали посещаемость сайтов, изучали поведение пользователей. Чтобы эти процессы не занимали много времени, разработчики Яндекс создали собственную СУБД: информация в ней представлена в виде столбцов, а не строк. Мы в KozhinDev использовали ClickHouse для проектов, и в этой статье рассказываем о ее преимуществах и особенностях.
Чем ClickHouse отличается от других популярных СУБД
Классифицировать СУБД можно по нескольким признакам, например, по модели организации данных: реляционные SQL и нереляционные NoSQL. Первые организуют данные в виде двумерных таблиц с большим количеством строк, вторые представляют их в виде графов, пар «ключ-значение», колонок в таблицах.
Из нереляционных СУБД часто используются Redis и MongoDB. Они менее универсальны, подходят не для любых типов данных. Например, Redis стоит выбрать, если необходим скоростной доступ к данным — загрузка из кэша. А MongoDB подойдет для приложения, которое работает с документами.
Реляционные базы более распространены. Яркие представители — MySQL, PostgreSQL, Oracle и другие. Информация в них вносится в строки таблиц, колонки которых соответствуют типам данных. Между строками можно настроить связи, а для работы с базой данных использовать SQL-синтаксис.
Ведущий Python-разработчик в команду репутационной системы Авито , Москва, можно удалённо , От 300 000 ₽
ClickHouse тоже относится к реляционным СУБД, но данные в ней вносятся не в строки, а в колонки двумерной таблицы: такой способ хранения повышает производительность веб-сервисов. Ее профиль — обработка большого объема аналитических запросов. Разработка ClickHouse началась в 2009 году с внутренней системы управления данными Яндекса — OLAP.
С 2016 года СУБД доступна как открытое программное обеспечение по лицензии Apache 2.0. Технологию нельзя назвать абсолютно уникальной: у нее достаточно аналогов, систем управления большими данными. Например, Paracell, Vertica, Sybase IQ, InfiniDB.
В 2017 году Яндекс.Метрика использовала ClickHouse, и для этого было задействовано:
- 3 петабайта данных;
- 412 серверов;
- 6 дата-центров.
За 4 года работы даунтайм системы составил всего несколько часов.
Почему ClickHouse работает так быстро
ClickHouse, как и другие реляционные системы, использует синтаксис SQL, его диалект. Он похож на классический SQL, но имеет дополнительные возможности — например, для работы с массивами данных или внешними базами «ключ-значение». Тем не менее, если разработчик уже имел дело с SQL-системами, разобраться с CLickHouse ему будет нетрудно.
Чтобы понять, почему ClickHouse показывает намного большую производительность, чем строковые СУБД, сравним принцип их работы. Если нужно читать по big data, то в строковой системе, например, PostgreSQL, строки всегда читаются полностью. Только проходя через колонку, можно определить ее имя и необходимость для текущей задачи. Пропустить колонки, которые не нужны для анализа, невозможно.
В столбцовой СУБД проходить все строки не обязательно: она использует только те колонки, которые участвуют в запросе. Каждая колонка столбцовой системы хранится в отдельном файле, а в строковой вся таблица распределяется по 2 — 3 файлам. Поэтому обратиться к конкретному столбцу ClickHouse может намного быстрее.
На сайте производителя системы есть сравнение скорости обработки запросов. Для получения 100 миллионов записей ClickHouse требуется всего одна секунда, а строковой СУБД MySQL — 823,64.
Также благодаря хранению каждой колонки данных в отдельном файле базу проще сжимать. В обычных строковых СУБД файлы содержат в себе разные типы данных, и сжать их оптимально не выйдет. При этом чем меньше размер базы данных, тем быстрее происходит поиск, запрос требует меньше операций ввода-вывода.
В ClickHouse доступно семплирование: например, если нужно проверить запрос, можно запустить его на части данных, без обработки всего массива. Это позволяет получить приблизительную аналитическую картину за более короткий срок.
Особенности работы с ClickHouse
Разработчики Яндекса не включили в систему возможности транзакций и блокировок. Если для продукта важны эти функции, например — для биллинга, лучше выбрать другую СУБД. Но для статистических данных как в Яндекс.Метрике не важен порядок, в котором приходят данные. Поэтому изначально при создании ClickHouse упор делался на производительность: в процессе разработки ставились бенчмарки, каждое нововведение проходило тесты на скорость обработки информации. Это нужно, чтобы весь функционал СУБД работал одинаково быстро, не появлялось «узких мест».
Python-библиотеки, которые пригодятся каждому разработчику на Python
Отсюда вытекает принцип «когда-нибудь»: СУБД не гарантирует, что данные придут в заданном порядке, что при репликации данные сразу же появятся в новом месте. Информация поступает в базу асинхронно, и предсказать, когда это случится, невозможно — «когда-нибудь» дойдет.
ClickHouse масштабируется линейно: то есть, при репликации данных производительность всегда растет. Для других СУБД это может быть не так: у некоторых скорость работы может не измениться или и вовсе упасть.
СУБД от Яндекса вдобавок к интерфейсам CLI и TCP имеет HTTP-протокол для отправки и получения данных. Также у системы есть веб-версия, написанная на JavaScript, которая обращается к базе данных с помощью этого протокола.
Забавный факт: так как ClickHouse создали российские разработчики, она поймет вас, даже если вы забыли переключить раскладку. Так, вместо «exit» можно написать «учше», и выйти из системы.
При этом в ClickHouse нет привычного Primary Key — в качестве него обычно используется показатель, по которому происходит сортировка. Например, это может быть дата события или User ID. Для этого используется команда OrderBy.
Также отсутствуют команды UPDATE и DELETE, которые есть в других СУБД. Несмотря на это, удалять и обновлять данные в ClickHouse можно.
В ClickHouse существуют движки таблиц, определяющие:
- место хранения данных, их запись и чтение;
- поддерживаемые запросы;
- способы доступа к данным;
- использование индексов;
- многопоточное выведение запроса;
- параметры репликации данных.
Распространенный движок — MergeTree, объединение в фоновом режиме. Его разновидности:
- ReplacingMergeTree — удаление дубликатов. С помощью этого движка можно удалить данные, предварительно создав дубликат с другой подписью, противоположным знаком. Например, если в таблице есть строки со значениями 1 и —1, ReplacingMergeTree найдет их и «схлопнет». Но некоторое время в базе будет находиться лишняя строка. Чтобы получить верный результат в этом случае, нужно учесть подписи при суммировании.
- SummingMergeTree — суммирование всех числовых столбцов по ключу.
- AggregatingMergeTree — нахождение среднего.
- CollapsingMergeTree — удаление.
- VersionedCollapsingMergeTree — более «умная» версия CollapsingMergeTree, в которой можно задать параметры, например, Timestump.
- GraphiteMergeTree — подготовка данных для Graphite, интерфейса для отображения данных.
Также для ClickHouse есть отдельные движки по логам, движки для интеграций, например, с Kafka или другими СУБД — MySQL, PostgreSQL, MongoDB.
Когда стоит выбрать ClickHouse
По словам разработчиков, ClickHouse создан для работы с непрекращающимся потоком данных в режиме реального времени. В этом его преимущество перед другими базами и причина, почему он не нужен в каждом проекте. Выбирать эту СУБД стоит, если в проекте:
- нужна работа с объемной базой: большое количество строк, петабайты данных;
- заложено много анализа данных: запросы, чтение, суммирование и другие действия;
- данные не нужно удалять, или удалений мало;
- много типов данных — колонок: в обычной строковой базе таблица с большим их количеством становится тяжеловесной;
- для вас не страшны небольшие периодические потери данных из-за асинхронности работы ClickHouse и принципа «когда-нибудь».
Мы использовали ClickHouse при разработке приложения для грузовых перевозок. Данные поступают в базу от GPS-трекеров, считываются раз в несколько секунд. То есть на сервер приходит огромное количество сообщений, которые нужно быстро обрабатывать.
Расчеты в приложении происходят по различным формулам, в итоге мы получаем оценку качества работы водителей, состояния транспортных средств. Также на основе данных, которые находятся в базе, рассчитываются штрафы для работников. Они позволяют сформировать рейтинг вождения. Анализ результатов позволяет находить слабые места, корректировать их через водителей и стремиться к бережному отношению к технике. Так машины прослужат дольше, меньше средств уйдет на ремонт и замену.
Сложности использования ClickHouse
Как и другие СУБД, ClickHouse имеет и преимущества, и недостатки, подходит не для всех проектов. Вот некоторые сложности, с которыми может столкнуться разработчик при использовании СУБД от Яндекс:
- Отсутствие транзакций. ClickHouse создавался для обработки статистических данных, поэтому «заточен» в основном под считывание информации из таблиц. Произвести последовательный ряд операций — транзакционный сценарий в этой СУБД невозможно.
- Сложность «точечной» работы. ClickHouse оперирует большими массивами данных, поэтому найти одну конкретную строку, обновить ее или удалить невозможно или нецелесообразно.
- Высокие требования к оперативной памяти сервера. Чтобы операции с базой данной производились действительно быстро, не появлялись проблемы, нужен большой объем RAM. Для некоторых запросов промежуточные данные должны помещаться в оперативную память полностью. Производители советуют выделять для ClickHouse не менее 4 гигабайтов RAM.
- Возможность атак при передаче данных по HTTP-протоколу. Злоумышленники могут похитить данные, сделать SQL-инъекцию, получить доступ к управлению базой данных. Эти риски необходимо учитывать при использовании ClickHouse, делать больший акцент на безопасность хранения и передачи информации.
Полезные практики в работе с ClickHouse
Не вставляйте по одной строке
Время вставки одной строки и 10 000 строк в ClickHouse одинаково. Поэтому если вы собираетесь добавить в него 10 000 строк по одной, то выполнение займет в 10 000 раз больше времени, чем вставка большого массива за один раз.
Не читайте по одной строке
В обычной СУБД можно найти конкретную строку по Primary Key, но ClickHouse не рассчитана на такой прицельный поиск, он займет много времени. Используйте систему, когда нужно работать с большим количеством строк, выводить статистику.
Выбирайте только нужные столбцы
Если вы каждый раз будете проводить анализ по всем колонкам, то производительность ClickHouse станет ближе к обычным реляционным СУБД. При формировании запроса выбирайте только те параметры, которые действительно нужны в данный момент.
Агрегируйте данные на стороне ClickHouse
Производители рекомендуют проводить все вычисления на стороне ClickHouse, а не на бэкенде. В этом случае вы передаете меньше данных по сети и увеличиваете скорость обработки.
Подбирайте правильные типы данных
Чем более точно вы подберете типы данных для колонок, тем легче будет сжать базу. Она будет занимать меньше места на диске и поиск будет выполняться быстрее.
Подведем итог
ClickHouse — СУБД, которая подходит для аналитики, статистических исследований, обработки большого количества данных и запросов в реальном времени. Если проект подразумевает работу с петабайтами информации, множеством сообщений, приходящих постоянно, то ClickHouse будет хорошим выбором благодаря:
- колоночной структуре и возможностям для оптимального сжатия;
- высокой производительности;
- линейной масштабируемости.
Поиск и обработка информации в этой СУБД от Яндекс производятся в сотни раз быстрее, чем, например, в PostgreSQL. Но если сервису не требуются такие скорости, то можно обратиться к привычным строковым СУБД — MySQL, PostgreSQL и другим. Выбор в итоге зависит от потребностей проекта.
Источник: tproger.ru
ClickHouse — что это такое?
ClickHouse — это распределенная аналитическая столбцовая (column-oriented) СУБД созданная внутри компании Яндекс в 2012 году. Основная задача ClickHouse это выполнять аналитические запросы в режиме реального времени на структурированных больших данных.
Благодаря развитой функциональности и наличию детальной документации привели к тому, что ClickHouse постепенно распространился по многим отделам Яндекса и ClickHouse стал использоваться в Директе, Маркете, Почте, AdFox, Вебмастере, в мониторингах и в бизнес-аналитике. ClickHouse позволял либо решать задачи, для которых раньше не было подходящих инструментов, либо решать задачи на порядки эффективнее, чем другие системы. В 2016 году Яндекс принимает решение сделать СУБД ClickHouse open-source проектом, т.е. доступным всем желающим по лицензии Apache 2.0.
Область применения:
- аналитика веб-приложений;
- аналитика метрик в режиме реального времени;
- мониторинг и анализ логов;
- мониторинг и анализ данных в режиме реального времени;
Особенности ClickHouse
- ClickHouse позволяет выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени.
- Система способна масштабироваться до десятков триллионов записей и петабайтов данных.
- Линейная масштабируемость. Система позволяет увеличивать кластер добавлением серверов.
- Отказоустойчивость. Система представляет собой кластер шардов, где каждый шард — это группа реплик. Используется асинхронная multimaster репликация: после записи на любую доступную реплику, данные распространяются на все остальные реплики. Для координации работы реплик используется ZooKeeper (ZooKeeper не участвует в процессе обработки и выполнения запроса).
- Поддержка SQL. ClickHouse поддерживает диалект SQL c расширениями: массивы и вложенные структуры данных, вероятностные структуры, функция по работе с URI, возможность подключить внешнее key-value хранилище и т. д.
- Сжатие данных.
Принципы работы
Ключевым преимуществом ClickHouse считается высокая скорость выполнения SQL-запросов на чтение (OLAP-сценарий), которая обеспечивается благодаря следующим архитектурным решениям:
- столбцовое хранение данных, что позволяет считывать данные только из нужных колонок и эффективно сжимать однотипную информацию; физическая сортировка данных по первичному ключу позволяет быстро получать конкретные значения или диапазонов;
- векторные вычисления по кусочкам столбцов снижают издержки на диспетчеризацию и позволяют более эффективно использовать CPU;
- распараллеливание операций как в пределах одного сервера на несколько процессорных ядер, так и в рамках распределенных вычислений на кластере за счет механизма шардирования;
- поддержка приближенных вычислений на части выборки, что снижает число обращений к жесткому диску и еще больше повышает скорость обработки данных.
Стоит отметить, что в отличие от других популярных столбцовых СУБД для Big Data, которые работают только в оперативной памяти, ClickHouse работает с жесткими дисками (HDD, SSD). Это снижает стоимость эксплуатации системы, поскольку жесткие диски дешевле RAM. При работе в кластере данные реплицируются асинхронно в фоновом режиме с поддержкой полной идентичности на разных репликах.
Apache ZooKeeper используется для координации процесса репликации, но не участвует в обработке данных и выполнения запросов. При сбое в большинстве случаев восстановление данных происходит автоматически. По желанию можно включить кворумную запись данных. Кластер ClickHouse масштабируется линейно путем добавления новых узлов. Так же ClickHouse поддерживает диалект SQL c расширениями, такими как массивы и вложенные структуры данных, вероятностные структуры, возможность подключить внешнее key-value хранилище.
Недостатки
- Отсутствие полноценных транзакций.
- Возможность изменять или удалять ранее записанные данные с низкими задержками и высокой частотой запросов не предоставляется. Есть массовое удаление и изменение данных для очистки более не нужного или соответствия GDPR.
- Разреженный индекс делает ClickHouse плохо пригодным для точечных чтений одиночных строк по своим ключам.
Вывод
ClickHouse — сверхскоростная СУБД. Она отлично подходит для исследовательских работ и запросов, где нужна линейная масштабируемость.
Источник: blog-programmista.ru