SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Алексей Зателепин
Что нужно знать об
архитектуре ClickHouse,
чтобы его эффективно
использовать
Алексей Зателепин
› 2010—2016
› 2017—…
Знакомство
Есть поток событий
› Действия пользователей на сайте
› Показы рекламы
› Финансовые транзакции
› DNS–запросы
› …
Хотим сохранять эти события и делать из них какие-то выводы
Задачи, для которых подходит ClickHouse
› Интерактивные запросы по данным, обновляемым в
реальном времени
Идеология ClickHouse
› Интерактивные запросы по данным, обновляемым в
реальном времени
› Диалект SQL + расширения
Идеология ClickHouse
› Интерактивные запросы по данным, обновляемым в
реальном времени
› Диалект SQL + расширения
› Стараемся заранее ничего не агрегировать
Идеология ClickHouse
› Интерактивные запросы по данным, обновляемым в
реальном времени
› Диалект SQL + расширения
› Стараемся заранее ничего не агрегировать
› Нужны очищенные структурированные данные
Идеология ClickHouse
Считаем для счётчика топ-10 рефереров за неделю.
SELECT Referer, count(*) AS count
FROM hits
WHERE CounterID = 1234 AND Date >= today() - 7
GROUP BY Referer
ORDER BY count DESC
LIMIT 10
Типичный запрос в системе веб-аналитики
Быстро читаем
› Только нужные столбцы: CounterID, Date, Referer
› Локальность чтения (нужен индекс!)
› Сжатие
Как выполнить запрос быстро?
Быстро читаем
› Только нужные столбцы: CounterID, Date, Referer
› Локальность чтения (нужен индекс!)
› Сжатие
Быстро считаем
› Обработка блоками
› Специализация и низкоуровневые оптимизации
Как выполнить запрос быстро?
Выбираем так же, как в классических БД
Большинство запросов будут содержать условия на
CounterID и Date
(CounterID, Date) подойдёт
Проверяем, мысленно упорядочив таблицу по выражению
Особенности
› Таблица действительно будет упорядочена по индексу
› Не обеспечивает уникальности
Нужен индекс!
Как работает индекс
1234
…
2017-06-01
2017-05-11
…
1234
1234
1234
…
2017-05-23
…
2013-02-161235
2013-03-12
primary.idx
CounterID
(одна запись каждые 8192 строки)
Date Referer
N
N+8192
N+16384
(CounterID, Date)
.mrk .mrk .mrk.bin .bin .bin
События поступают (почти) упорядоченными по времени
А нам нужно по первичному ключу!
MergeTree: поддерживаем небольшое количество
упорядоченных кусков
Идея та же, что и в LSM-дереве
Как обеспечить упорядоченность
Как обеспечить упорядоченность
Первичный ключ
Кусок
на диске
Нужно
вставить
Номер вставки
M N N+1
Как обеспечить упорядоченность
Первичный ключ
Кусок
на диске
Кусок
на диске
Номер вставки
M N N+1
Как обеспечить упорядоченность
Номер вставки
Первичный ключ
Кусок
[M, N]
Кусок
[N+1]
Сливаем в фоне
M N N+1
Как обеспечить упорядоченность
Кусок
[M, N+1]
Номер вставки
Первичный ключ
M N+1
› Данные перестали помещаться на один сервер…
› Хочется ещё ускориться, добавив железа…
› Несколько одновременных запросов мешают друг другу…
Когда одного сервера не хватает
› Данные перестали помещаться на один сервер…
› Хочется ещё ускориться, добавив железа…
› Несколько одновременных запросов мешают друг другу…
ClickHouse: Шардирование + Distributed таблицы!
Когда одного сервера не хватает
Чтение из Distributed таблицы
Шард 1 Шард 2 Шард 3
SELECT FROM distributed_table
GROUP BY column
SELECT FROM local_table
GROUP BY column
Чтение из Distributed таблицы
Шард 1 Шард 2 Шард 3
Полный результат
Частично агрегированный
результат
CSV 227 Gb, ~1.3 млрд строк
SELECT passenger_count, avg(total_amount)

FROM trips GROUP BY passenger_count
NYC taxi benchmark
Шардов 1 3 140
Время, с. 1,224 0,438 0,043
Ускорение x2.8 x28.5
Запись в Distributed таблицу
Шард 1 Шард 2 Шард 3
INSERT INTO distributed_table
Запись в Distributed таблицу
Шард 1 Шард 2 Шард 3
Асинхронно в шард номер
sharding_key % 3
INSERT INTO local_table
› Хочется защититься от аппаратного сбоя…
› Данные должны быть доступны на чтение и на запись…
Когда нельзя ломаться
› Хочется защититься от аппаратного сбоя…
› Данные должны быть доступны на чтение и на запись…
ClickHouse: движок ReplicatedMergeTree!
› асинхронная мастер–мастер репликация
› Работает на уровне таблиц
Когда нельзя ломаться
Как работает репликация
Реплика 1
Реплика 2
Реплика 3
merge
Очередь
репликации
(ZooKeeper)
Номер вставки
fetch
fetch
INSERT
merge
Что будет в случае сетевого сбоя (partition)?
Репликация с точки зрения CAP–теоремы
Что будет в случае сетевого сбоя (partition)?
› Consistency нет!
❋


Как и у любой системы с асинхронной репликацией
Репликация с точки зрения CAP–теоремы
Что будет в случае сетевого сбоя (partition)?
› Consistency нет!
❋


Как и у любой системы с асинхронной репликацией
❋
Но можно включить
Репликация с точки зрения CAP–теоремы
Что будет в случае сетевого сбоя (partition)?
› Consistency нет!
❋


Как и у любой системы с асинхронной репликацией
❋
Но можно включить
› Availability (почти) есть!
❋


Можно отключать один ДЦ, если

ZK в 3-х датацентрах, а реплики минимум в 2-x.
Репликация с точки зрения CAP–теоремы
Что будет в случае сетевого сбоя (partition)?
› Consistency нет!
❋


Как и у любой системы с асинхронной репликацией
❋
Но можно включить
› Availability (почти) есть!
❋


Можно отключать один ДЦ, если

ZK в 3-х датацентрах, а реплики минимум в 2-x.
❋
Нельзя писать в сервер, отрезанный от кворума ZK
Репликация с точки зрения CAP–теоремы
Всё вместе
Шард 1
Реплика 1
Шард 2
Реплика 1
Шард 3
Реплика 1
Шард 1
Реплика 2
Шард 2
Реплика 2
Шард 3
Реплика 2
SELECT FROM distributed_table
SELECT FROM replicated_table
› Column–oriented
› Сверхбыстрые интерактивные запросы
› Диалект SQL + расширения
› Плохо подходит для OLTP, Key–Value, хранения блобов
› Линейная масштабируемость
› Отказоустойчивость
› Open source!
Ещё раз, коротко
Начните использовать ClickHouse сегодня!
Вопросы? Можно сюда:
› clickhouse-feedback@yandex-team.ru
› Telegram: https://t.me/clickhouse_ru
› GitHub: https://github.com/yandex/ClickHouse/
› Google group: https://groups.google.com/group/clickhouse
Спасибо

Contenu connexe

Tendances

Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Ontico
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцMikhail Tabunov
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchИлья Середа
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Аналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениАналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениCodeFest
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Ontico
 
Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»DataArt
 
Как устроено API в AppMetrica
Как устроено API в AppMetricaКак устроено API в AppMetrica
Как устроено API в AppMetricaAppTractor
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Мобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий АлександровМобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий АлександровYandex
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
Диагностика postgresql для системного администратора
Диагностика postgresql для системного администратораДиагностика postgresql для системного администратора
Диагностика postgresql для системного администратораNikolay Sivko
 
Оценка производительности hadoop кластера.
Оценка производительности hadoop кластера.Оценка производительности hadoop кластера.
Оценка производительности hadoop кластера.Vyacheslav Murashkin
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Badoo Development
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСOntico
 
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 20132ГИС Технологии
 
Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015rusbase
 

Tendances (18)

Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Аналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениАналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времени
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
 
Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»
 
Как устроено API в AppMetrica
Как устроено API в AppMetricaКак устроено API в AppMetrica
Как устроено API в AppMetrica
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Мобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий АлександровМобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий Александров
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Диагностика postgresql для системного администратора
Диагностика postgresql для системного администратораДиагностика postgresql для системного администратора
Диагностика postgresql для системного администратора
 
Оценка производительности hadoop кластера.
Оценка производительности hadoop кластера.Оценка производительности hadoop кластера.
Оценка производительности hadoop кластера.
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
 
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 2013
 
Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015
 

Similaire à Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)

Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"Fwdays
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)Ontico
 
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...yaevents
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...Ontico
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Pavel Egorov
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Ontico
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL DatabaseAndrey Akulov
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''DneprCiklumEvents
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''DneprCiklumEvents
 
Владимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERPВладимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERPOctopus Events
 
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезныSergey Xek
 
Выступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance ConferenceВыступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance ConferenceEYevseyeva
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезныSergey Xek
 

Similaire à Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс) (14)

Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
 
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL Database
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''
 
Владимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERPВладимир Лучанинов. Сделай сам анализатор SERP
Владимир Лучанинов. Сделай сам анализатор SERP
 
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Выступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance ConferenceВыступление Сергея Аверина, Badoo, на High Performance Conference
Выступление Сергея Аверина, Badoo, на High Performance Conference
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)

  • 1. Алексей Зателепин Что нужно знать об архитектуре ClickHouse, чтобы его эффективно использовать
  • 3. Есть поток событий › Действия пользователей на сайте › Показы рекламы › Финансовые транзакции › DNS–запросы › … Хотим сохранять эти события и делать из них какие-то выводы Задачи, для которых подходит ClickHouse
  • 4. › Интерактивные запросы по данным, обновляемым в реальном времени Идеология ClickHouse
  • 5. › Интерактивные запросы по данным, обновляемым в реальном времени › Диалект SQL + расширения Идеология ClickHouse
  • 6. › Интерактивные запросы по данным, обновляемым в реальном времени › Диалект SQL + расширения › Стараемся заранее ничего не агрегировать Идеология ClickHouse
  • 7. › Интерактивные запросы по данным, обновляемым в реальном времени › Диалект SQL + расширения › Стараемся заранее ничего не агрегировать › Нужны очищенные структурированные данные Идеология ClickHouse
  • 8. Считаем для счётчика топ-10 рефереров за неделю. SELECT Referer, count(*) AS count FROM hits WHERE CounterID = 1234 AND Date >= today() - 7 GROUP BY Referer ORDER BY count DESC LIMIT 10 Типичный запрос в системе веб-аналитики
  • 9. Быстро читаем › Только нужные столбцы: CounterID, Date, Referer › Локальность чтения (нужен индекс!) › Сжатие Как выполнить запрос быстро?
  • 10. Быстро читаем › Только нужные столбцы: CounterID, Date, Referer › Локальность чтения (нужен индекс!) › Сжатие Быстро считаем › Обработка блоками › Специализация и низкоуровневые оптимизации Как выполнить запрос быстро?
  • 11. Выбираем так же, как в классических БД Большинство запросов будут содержать условия на CounterID и Date (CounterID, Date) подойдёт Проверяем, мысленно упорядочив таблицу по выражению Особенности › Таблица действительно будет упорядочена по индексу › Не обеспечивает уникальности Нужен индекс!
  • 12. Как работает индекс 1234 … 2017-06-01 2017-05-11 … 1234 1234 1234 … 2017-05-23 … 2013-02-161235 2013-03-12 primary.idx CounterID (одна запись каждые 8192 строки) Date Referer N N+8192 N+16384 (CounterID, Date) .mrk .mrk .mrk.bin .bin .bin
  • 13. События поступают (почти) упорядоченными по времени А нам нужно по первичному ключу! MergeTree: поддерживаем небольшое количество упорядоченных кусков Идея та же, что и в LSM-дереве Как обеспечить упорядоченность
  • 14. Как обеспечить упорядоченность Первичный ключ Кусок на диске Нужно вставить Номер вставки M N N+1
  • 15. Как обеспечить упорядоченность Первичный ключ Кусок на диске Кусок на диске Номер вставки M N N+1
  • 16. Как обеспечить упорядоченность Номер вставки Первичный ключ Кусок [M, N] Кусок [N+1] Сливаем в фоне M N N+1
  • 17. Как обеспечить упорядоченность Кусок [M, N+1] Номер вставки Первичный ключ M N+1
  • 18. › Данные перестали помещаться на один сервер… › Хочется ещё ускориться, добавив железа… › Несколько одновременных запросов мешают друг другу… Когда одного сервера не хватает
  • 19. › Данные перестали помещаться на один сервер… › Хочется ещё ускориться, добавив железа… › Несколько одновременных запросов мешают друг другу… ClickHouse: Шардирование + Distributed таблицы! Когда одного сервера не хватает
  • 20. Чтение из Distributed таблицы Шард 1 Шард 2 Шард 3 SELECT FROM distributed_table GROUP BY column SELECT FROM local_table GROUP BY column
  • 21. Чтение из Distributed таблицы Шард 1 Шард 2 Шард 3 Полный результат Частично агрегированный результат
  • 22. CSV 227 Gb, ~1.3 млрд строк SELECT passenger_count, avg(total_amount)
 FROM trips GROUP BY passenger_count NYC taxi benchmark Шардов 1 3 140 Время, с. 1,224 0,438 0,043 Ускорение x2.8 x28.5
  • 23. Запись в Distributed таблицу Шард 1 Шард 2 Шард 3 INSERT INTO distributed_table
  • 24. Запись в Distributed таблицу Шард 1 Шард 2 Шард 3 Асинхронно в шард номер sharding_key % 3 INSERT INTO local_table
  • 25. › Хочется защититься от аппаратного сбоя… › Данные должны быть доступны на чтение и на запись… Когда нельзя ломаться
  • 26. › Хочется защититься от аппаратного сбоя… › Данные должны быть доступны на чтение и на запись… ClickHouse: движок ReplicatedMergeTree! › асинхронная мастер–мастер репликация › Работает на уровне таблиц Когда нельзя ломаться
  • 27. Как работает репликация Реплика 1 Реплика 2 Реплика 3 merge Очередь репликации (ZooKeeper) Номер вставки fetch fetch INSERT merge
  • 28. Что будет в случае сетевого сбоя (partition)? Репликация с точки зрения CAP–теоремы
  • 29. Что будет в случае сетевого сбоя (partition)? › Consistency нет! ❋ 
 Как и у любой системы с асинхронной репликацией Репликация с точки зрения CAP–теоремы
  • 30. Что будет в случае сетевого сбоя (partition)? › Consistency нет! ❋ 
 Как и у любой системы с асинхронной репликацией ❋ Но можно включить Репликация с точки зрения CAP–теоремы
  • 31. Что будет в случае сетевого сбоя (partition)? › Consistency нет! ❋ 
 Как и у любой системы с асинхронной репликацией ❋ Но можно включить › Availability (почти) есть! ❋ 
 Можно отключать один ДЦ, если
 ZK в 3-х датацентрах, а реплики минимум в 2-x. Репликация с точки зрения CAP–теоремы
  • 32. Что будет в случае сетевого сбоя (partition)? › Consistency нет! ❋ 
 Как и у любой системы с асинхронной репликацией ❋ Но можно включить › Availability (почти) есть! ❋ 
 Можно отключать один ДЦ, если
 ZK в 3-х датацентрах, а реплики минимум в 2-x. ❋ Нельзя писать в сервер, отрезанный от кворума ZK Репликация с точки зрения CAP–теоремы
  • 33. Всё вместе Шард 1 Реплика 1 Шард 2 Реплика 1 Шард 3 Реплика 1 Шард 1 Реплика 2 Шард 2 Реплика 2 Шард 3 Реплика 2 SELECT FROM distributed_table SELECT FROM replicated_table
  • 34. › Column–oriented › Сверхбыстрые интерактивные запросы › Диалект SQL + расширения › Плохо подходит для OLTP, Key–Value, хранения блобов › Линейная масштабируемость › Отказоустойчивость › Open source! Ещё раз, коротко
  • 35. Начните использовать ClickHouse сегодня! Вопросы? Можно сюда: › clickhouse-feedback@yandex-team.ru › Telegram: https://t.me/clickhouse_ru › GitHub: https://github.com/yandex/ClickHouse/ › Google group: https://groups.google.com/group/clickhouse Спасибо