Во-первых, что такое Clickhouse?
ClickHouse: система управления столбцовыми базами данных (СУБД) для онлайн-аналитики (OLAP).
Давайте сначала проясним некоторые основные понятия
- OLTP: это традиционная реляционная база данных, которая в основном выполняет операции добавления, удаления, изменения и поиска, уделяя особое внимание согласованности транзакций, таких как банковские системы и системы электронной коммерции.
- OLAP: это база данных складского типа, в основном для чтения данных, выполнения сложного анализа данных, сосредоточения внимания на технической поддержке принятия решений и предоставления интуитивно понятных и простых результатов.
Затем мы используем схему, чтобы понятьColumnar База данныхибаза данных строкразница
В традиционных системах баз данных на основе строк (MySQL, Postgres и MS SQL Server) данные хранятся в следующем порядке:В системе столбчатой базы данных (ClickHouse) данные хранятся в следующем порядке:
Сравнение между ними с точки зрения методов хранения:
Выше приведено основное введение в ClickHouse, можно найти большеОфициальное руководство
2. Бизнес-проблемы
Бизнес-сторона в настоящее время хранится в Mysql, большой таблице с объемом данных 50 миллионов и двумя вспомогательными таблицами.Стоимость запроса одной таблицы соединения составляет 3 минуты +, а эффективность выполнения чрезвычайно низка. После оптимизации индекса, горизонтального разбиения таблиц и оптимизации логики результаты были низкими, поэтому я решил использовать ClickHouse для решения этой проблемы.
Наконец, благодаря оптимизацииВремя запроса сокращается до 1 с, а эффективность запросов увеличивается в 200 раз!
Я надеюсь, что с помощью этой статьи вы сможете быстро освоить это оружие и избежать обходных путей на практике.
3. Практика ClickHouse
1. Установка Clickhouse под Mac
Я устанавливал через докер,Посмотреть учебник. Вы также можете скачать CK для компиляции и установки, что довольно проблематично.
2. Миграция данных: с Mysql на ClickHouse
ClickHouse поддерживает большинство синтаксисов Mysql, а стоимость миграции невелика.пять миграцийплан:
- создать табличный движок mysql, данные схемы сопоставления все еще находятся в Mysql
- вставить в выбор из, сначала построить таблицу, а затем импортировать
- создать таблицу как выбрать из, создать таблицу и импортировать одновременно
- автономный импорт csv
- streamsets
Выберите третий вариант переноса данных:
CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = Mergetree AS SELECT * FROM mysql('host:port', 'db', 'database', 'user', 'password')
3. Сравнение тестов производительности
тип | Объем данных | размер стола | скорость запроса |
---|---|---|---|
Mysql | 50000000 | 10G | 205s |
ClickHouse | 50000000 | 600MB | в течение 1 с |
4. Схема синхронизации данных
Временные таблицы Источник изображения:CпутешествиеСоздайте новую временную промежуточную таблицу, синхронизируйте весь объем данных Mysql с временной таблицей в ClickHouse, а затем замените таблицу в оригинальном ClickHouse, что подходит для сценариев с умеренным объемом данных, частыми инкрементами и переменными
synch
Рекомендуемое программное обеспечение для синхронизации с открытым исходным кодом:synchПринцип состоит в том, чтобы получить оператор sql через журнал binlog Mysql, а затем использовать задачу через очередь сообщений.
5. Почему ClickHouse быстрый?
- Нужно только прочитать столбец данных, чтобы быть рассчитанным, а не вся строка строки данных, прочитала снижение стоимости затрат на IO
- Тот же тип того же столбца, с десятикратным улучшением сжатия, что еще больше снижает количество операций ввода-вывода.
- Clickhouse создает персонализированные алгоритмы поиска в соответствии с различными сценариями хранения
В-четвертых, яма столкнулась
1. Различия между типами данных ClickHouse и mysql
Запросите с оператором Mysql и найдите ошибку: решение: LEFT JOIN B b ON toUInt32(h.id) = toUInt32(ec.post_id), передать его, унифицировать ассоциацию беззнакового типа
2. Удаление или обновление выполняется асинхронно, гарантируется только окончательная согласованность
Запрос руководства CK показал, что даже Mergetree, который поддерживает наилучшую согласованность данных, гарантирует только конечную согласованность:Если требования к согласованности данных высоки, для решения проблемы рекомендуется выполнить полную синхронизацию.
V. Резюме
Благодаря практике ClickHouse узкое место запросов Mysql было полностью решено. 90% запросов на уровне данных менее 2 миллиардов строк могут получить результаты в течение 1 с. По мере увеличения объема данных ClickHouse также поддерживает кластеры. интересно, можете активно попробовать :)
Использованная литература:
Официальное руководство ClickHouseCK
ClickHouse в приложении Ctrip HotelКай Юэи
Как выбрать движок ClickHouseRoin123