ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Предлагам ви да се запознаете със стенограмата на доклада от 2017 г. на Игор Стрихар „ClickHouse – Визуално бърз и визуален анализ на данни в Tabix“.

Уеб интерфейс за ClickHouse в проекта Tabix.
Основни возможности:

  • Работи с ClickHouse директно от браузъра, без необходимост от инсталиране на допълнителен софтуер;
  • Редактор на заявки с подчертаване на синтаксиса;
  • Изпълнение на командата;
  • Инструменти за графичен анализ на изпълнение на заявки;
  • Цветови схеми за избор.
    ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар


ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Аз съм технически директор на media2. Ние сме агрегатор на новини за обмен на новини. Ние съхраняваме много данни, които получаваме от нашите партньори и ги регистрираме в ClickHouse – около 30 000 заявки в секунда.

Това са данни като:

  • Щраквания върху новини.
  • Показване на новини в агрегатора.
  • Показване на банери в нашата мрежа.
  • И регистрираме събития от нашия собствен брояч, който е подобен на Yandex.Metrics. Това е нашата собствена микроаналитика.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Имахме много забързан живот преди ClickHouse. Страдахме много, опитвайки се да съхраняваме тези данни някъде и по някакъв начин да ги анализираме.

Живот преди ClickHouse - infiniDB

Първото нещо, което имахме, беше infiniDB. Тя живя с нас 4 години. Пуснахме го трудно.

  • Не поддържа групиране или шардинг. Тя не стартира такива умни неща по подразбиране.
  • Тя има проблеми със зареждането на данни. Само специфична конзолна програма, която можеше да зарежда само CSV файлове и беше някак си много неразбираема.
  • Базата данни е еднонишкова. Можете или да пишете, или да четете. Но това позволи да се обработва голямо количество данни.
  • А тя имаше и интересна патерица. Всяка вечер беше необходимо да рестартирате сървъра, в противен случай нямаше да работи.

Тя работи с нас до края на 2016 г., когато изцяло преминахме към ClickHouse.

Животът преди ClickHouse - Касандра

Тъй като infiniDB беше еднонишкова, решихме, че имаме нужда от някаква многонишкова база данни, в която можем да пишем много нишки едновременно.

Опитахме много интересни неща. Тогава решихме да опитаме Касандра. Всичко беше страхотно с Касандра. 10 000 заявки в секунда на залог. 2 искания някъде за четене.

Но тя имаше и свои интереси. Веднъж месечно или на всеки два месеца тя имаше несинхронизирана база данни. И трябваше да се събудя и да тичам да оправя Касандра. Рестартира сървърите един по един. И всичко стана гладко и красиво.

Животът преди ClickHouse – Друид

Тогава разбрахме, че трябва да напишем още повече данни. През 2016 г. започнахме да гледаме Druid.

Druid е отворена база, написана на Java. Много специфичен. И подхождаше на потока от кликвания, когато трябва да съхраним някакъв вид поток от събития и след това да ги обобщим или да направим аналитични отчети.

Druid имаше версия 0.9.X.

Самата база данни е много трудна за внедряване. Това е сложността на инфраструктурата. За да го разположите, беше необходимо да поставите много желязо. И всяка ютия отговаряше за своята отделна роля.

За да се заредят данни в него, беше необходимо да се приложи някакъв вид шаманизъм. Има OpenSource проект - Tranquility, който загуби данни от нас в потока. Когато заредихме данни в него, той ги загуби.

Но по някакъв начин започнахме да го прилагаме. Ние, като таралежи, които се инжектираха, но продължиха да ядат кактуса, започнахме да го въвеждаме. Подготвянето на цялата инфраструктура за него ни отне около месец. Тоест, поръчайте сървъри, настройте роли и напълно автоматизирайте внедряването. Тоест, в случай на падане на клъстер, така че вторият клъстер да се разгърне автоматично.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Но тогава се случи чудо. Бях на почивка и колегите ми изпратиха линк към хабр, който казва, че Yandex е решил да отвори ClickHouse. Казвам да опитаме.

И буквално за 2 дни внедрихме тестов клъстер ClickHouse. Започнахме да зареждаме данни в него. В сравнение с infiniDB това е елементарно; в сравнение с Druid това е елементарно. В сравнение с Касандра също е елементарен. Защото ако заредите данни от php в Cassandra, това не е елементарно.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Какво получихме? Изпълнение в скоростта. Производителност при съхранение на данни. Тоест, използва се много по-малко дисково пространство. ClickHouse е бърз, той е много бърз в сравнение с други продукти.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

По време на стартирането, когато Yandex публикува ClickHouse в OpenSource, имаше само конзолен клиент. Ние в нашата компания SMI2 решихме да опитаме да направим собствен клиент за уеб, така че да можете да отворите страница от браузър, да напишете заявка и да получите резултата, защото започнахме да пишем много заявки. Писането в конзолата е трудно. И направихме първата си версия.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

И някъде по-близо до зимата на миналата година започнаха да се появяват инструменти на трети страни за работа с ClickHouse. Това са инструменти като:

Ще прегледам някои от тези инструменти, т.е. тези, с които съм работил.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Добър инструмент, но за Druid. Когато Druid беше представен, почувствах SuperSet. аз го харесах. За друид работи много бързо.

Не е подходящ за ClickHouse. Тоест пасва, стартира, но е готов да обработва само елементарни заявки като: събитие SELECT, събитие GROUP BY. Не поддържа по-сложния синтаксис на ClickHouse.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващият инструмент е Apache Zeppelin. Това е хубаво и интересно нещо. Върши работа. Поддържа тетрадки, табла за управление, поддържа променливи. Знам, че някой от общността на ClickHouse го използва.

Но няма поддръжка за синтаксиса на ClickHouse, т.е. ще трябва да пишете заявки или в конзолата, или някъде другаде. След това проверете дали всичко работи. Просто е неудобно. Но той има добра поддръжка за таблото.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващият инструмент е Redash.IO. Redash се хоства в интернет. Тоест, за разлика от предишните инструменти, не е необходимо да се инсталира. И това е такова табло с възможност за консолидиране на данни от различни DataSources. Тоест можете да качвате от ClickHouse, от MySQL, от PostgreSQL и от други бази данни.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Само преди месец (през март 2017) се появи поддръжка в Grafana. Когато създавате отчети в Grafana, например, според състоянието на вашия хардуер или според някои показатели, сега можете да изградите същата графика или някакъв вид панел от данни от ClickHouse директно. Много е удобно и го използваме у дома. Това ви позволява да откриете аномалии. Тоест, ако нещо се случи и някакъв хардуер падне или се опъне, тогава можете да видите причината, ако тези данни са успели да влязат в ClickHouse.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Беше ми много неудобно да пиша в тези инструменти или в конзолата. И реших да финализирам първия ни интерфейс. И видях идея от EventSQL, SeperSet, Zeppelin.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Какво искаше? Исках да получа графики, подобрен редактор, да внедря поддръжка за речници с подсказки. Защото ClickHouse има страхотна функция - това са речници. Но е трудно да се работи с речници, защото трябва да запомните формата на съхранените стойности, т.е. число ли е или низ и т.н. И тъй като често използваме речници в различните им варианти, беше доста трудно да пишете заявки.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Изминаха 3 месеца от пускането на първата ни версия. Направих около 330 ангажимента към затворен клон и получих Tabix.

За разлика от предишната версия, която се казваше ClickHouse-Frontend, реших да я преименувам на просто име. И се оказа Табикс.

Какво се появи?

Рисува графики. Поддържа ClickHouse SQL синтаксис. Разказва за функциите и знае как да прави много интересни неща.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Ето как изглежда общото оформление на Tabix. Отляво има дърво. В центъра е редакторът на заявки. И по-долу е резултатът от това запитване.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

След това ще покажа как работи редакторът на заявки.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Тук автоматичното довършване работи автоматично върху таблицата и подсказва съответно автоматично довършване по полета. И съвети за функции. Ако натиснете ctrl enter, тогава заявката ще бъде изпълнена или ще падне с грешка. Най-простата заявка се изпраща до Tabix и се получава резултатът, т.е. можете бързо да работите с ClickHouse.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Речниците, както казах, са много интересно нещо, с което работим много. И което позволи да се направят много неща. Да предположим, че съхраняваме всички градове в речници. Ние съхраняваме идентификатора на града и името на града, неговата географска ширина и дължина. А в базата данни съхраняваме само идентификатора на града. Съответно компресираме данните много силно.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Това изглежда просто нещо, но в ClickHouse помага по много интересен начин. Поради факта, че ClickHouse поддържа само вложени съединения, заявката нараства надолу и е достатъчно широка. И когато се отвори скобата и излезе някакъв дълъг израз, тогава едно толкова просто нещо като сгъването на заявката улеснява работата със самата заявка. Защото, когато една заявка е широка 200-300 реда и е много голяма, тя спестява много, като сгъва заявката и след това намира някое място или по някакъв начин я локализира.

Дърво на обекти, множество заявки и раздели (Видео 13:46 https://youtu.be/w1-XsL3nbRg?t=826)

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

След това ще ви покажа за дървото, разделите. Отляво има дърво, отгоре можете да създадете няколко раздела. Разделите са като работно пространство. Можете да създадете няколко раздела и да наименувате всеки по различен начин. Това е като мини система за изграждане на отчет.

Разделите се запазват автоматично. Ако рестартирате браузъра си или затворите или отворите Tabix, всичко ще бъде запазено.

Бързият клавиш е удобен (видео 14:39 https://youtu.be/w1-XsL3nbRg?t=879)

Има бързи клавиши и има много от тях. Включих някои от тях тук като пример. Това е превключване на раздели, изпълнение на заявка или изпълнение на множество заявки.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Ще ви покажа как да работите с резултата. Изпращаме заявка. Тук рисувам sin, co и tg. Можете да маркирате резултата, т.е. да начертаете типична карта за колона. Можете да маркирате положителни или отрицателни стойности. Или просто оцветете конкретен елемент от масата. Това е удобно, когато масата е огромна и трябва да намерите някаква аномалия с очите си. Когато търсех аномалии, маркирах някои линии, някои елементи в зелено или червено.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Там има много интересни неща. Например как да копирате в Redmine Markdown. Ако трябва да копирате резултата някъде, това е много удобно. Можете просто да изберете област, да кажете „Копиране в Redmine“ и тя ще копира в Redmine Markdown или ще създаде заявка Where.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следва оптимизация на заявки. Веднъж забравих да посоча полето "дата". И моята заявка в ClickHouse беше обработена не много, много бързо, но бързо, тоест по-малко от секунда. Като видях през колко реда мина, се уплаших. Ние не пишем толкова много редове в тази таблица за един ден. Започнах да анализирам заявката и видях, че съм пропуснал дата на едно място. Тоест забравих да посоча, че не ми трябват данни за цялата таблица, а за определен период.

Tabix има раздел „Статистика“, който съхранява цялата история на изпратените заявки, т.е. там можете да видите колко реда са прочетени от тази заявка и колко време е отнело да се изпълни. Това дава възможност за оптимизация.

Можете да създадете обобщена таблица върху резултата от заявката. Изпратихте заявка до ClickHouse и получихте някои данни. И след това тези данни могат да бъдат изтеглени с мишката и да се изгради някаква обобщена таблица.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващото интересно нещо е графиката. Да кажем, че имаме следната заявка: за sin, cos от 0 до 299. И за да го начертаете, трябва да изберете раздела „Draw“ и ще получите графика с вашите sin и cos.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Можете да го разделите на различни оси, т.е. можете да начертаете две графики наведнъж една до друга. Напишете една команда и втората команда.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Можете да рисувате хистограми.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Можете да го разделите на матрица от графики.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Можете да създадете топлинна карта.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Можете да изградите термичен календар. Между другото, много удобно нещо, когато трябва да анализирате аномалии за една година, т.е. да намерите или изблици, или капки. Тази визуализация на данни ми помогна за това.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващият е Treemap.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Sankeys е интересна диаграма. Той е или Streamgrahps, или River. Но аз го наричам река. Освен това ви позволява да търсите всякакви аномалии. Много е удобно. Препоръчвам да го използвате за търсене.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващото интересно нещо е изобразяването на динамичната карта. Ако имате географска ширина, дължина, съхранени във вашата база данни и, например, среща е съхранена, ако имате, например, превоз с камиони или самолети, тогава можете да начертаете маршрути на дестинация. Също така там можете да зададете скоростта, размера на тези обекти, в които пристигат.

Но проблемът с тази карта е, че тя чертае само карта на света, няма детайли.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

По-късно добавих Google карта. Ако съхранявате географска ширина, дължина, тогава можете да нарисувате резултата на карта на Google, но без поддръжка на самолет.

Обсъдихме основните функции за работа с резултата, със заявка в Tabix.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващият е анализът на вашия ClickHouse сървър. Има отделен раздел "Метрики", където можете да видите размера на съхранените данни за всяка колона. Екранната снимка показва, че това поле „referrer“ заема нещо от порядъка на 730 Gb. Ако откажем това поле, тогава ще спестим три шарда от 700 GB, т.е. около 2 TB, които не ни трябват.

Имаме и поле "request_id", което съхраняваме в низ. Но ако започнем да го съхраняваме в числова форма, тогава това поле ще бъде колосално компресирано.

Той също така показва конфигурацията на сървъра и списъка с възли във вашия клъстер.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващият раздел е показатели. Те влизат в реално време от ClickHouse и просто ви позволяват да анализирате състоянието на сървъра и да разберете какво се случва с него. Това не е заместител на пълноценната Графана. Това е необходимо за бърз анализ.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Следващият раздел е процеси. От тях можете да разберете какво се случва на сървъра. Разберете какво става там. Имах заявка, която отнемаше 200 GB за четене всеки път. Видях го благодарение на този интерфейс. Хванах го и го коригирах. И се оказа около 30 GB, т.е. производителност на моменти.

ClickHouse е визуално бърз и визуален анализ на данни в Tabix. Игор Стрихар

Благодаря ти! И е в OpenSource

Свърших. И между другото, той е в OpenSource, безплатен е и дори не е нужно да го изтегляте. Отворете в браузър и всичко ще работи.

Въпроси

Игор, какво следва? Къде ще разработите този инструмент?

След това ще се появи таблото за управление, т.е. може би ще се появи таблото за управление. Интеграция с други бази данни. Това направих, но все още не съм го публикувал в OpenSource. Това е MySQL и вероятно PostgreSQL. Тоест ще бъде възможно да се изпращат заявки от Tabix не само към ClickHouse, но и към други инструменти.

Ясно е, че е свършена огромна работа. Оказа се доста завършена идея. В браузъра това беше направено, очевидно, за да се изключат патериците на всякакви оси и бързо да се хвърли всичко. Чух, че си PHP работа, така че най-лесният начин е да хвърлите в браузъра и ще работи навсякъде. Няма въпроси за това. Въпросът е. Там наистина е направено много. Колко души са работили по него? И колко време отне всичко? Тъй като самите инструменти обикновено нямат толкова голяма функционалност.

Един човек от нашия екип работи от лятото до есента. Това беше първата версия. Тогава направих 330 ангажимента сам. Това, което виждате, с колегата го направихме наполовина. За 3 месеца от първата версия до последната, в по-голямата си част се справих сам. Но аз не знам много добре Javascript. Това беше единственият ми и надявам се последен Javascript проект, върху който работих. Разбрах го, погледнах - о, ужас. Но много исках да завърша продукта и това се случи.

Благодаря много за доклада! Това е страхотен инструмент. СЪС Жива картина в сравнение?

Благодаря ти. Табикс затова го кръсти, защото първите букви са еднакви.

Защото се състезаваш?

Ще има много инвестиции, ще се състезаваме.

Как да предложим да продадем на вътрешните анализатори това, което този инструмент напълно ще замени *Таблица*? Какви ще бъдат аргументите?

Работи естествено с ClickHouse. Пробвах с Tableau, но там не може да се пише поддръжка за речници и подобни. Знам как хората работят с Табикс. Пишат заявка, качват в CSV и качват в BI. И те вече правят нещо. Но трудно мога да си представя как го правят, защото това е графичен инструмент. Може да качи 5 реда, максимум 000 реда, но не повече, иначе браузърът няма да оцелее.

Тоест, има някои сериозни ограничения за количеството данни, нали?

да Не мога да си представя, че искате да качите 10 000 реда в таблицата си на екрана на браузъра. За какво?

Предназначено ли е да бъде интерфейс за бърз преглед на данните? Завъртете малко, завъртете?

Да, бързо вижте как работи и просто изградете обобщена диаграма. И след това дайте някъде. Имаме собствена система за докладване, откъдето вземам това искане. Рисувам в Tabix и го изпращам на нашия отчет.

И още един въпрос. Кохортен анализ?

Ако има заявки, ще добавим.

Когато за първи път започнахте да използвате ClickHouse, колко време отне внедряването Щракнете върху Къща и довеждане до производствени състояния?

Както казах, внедрихме тестов клъстер за много кратко време. Разопаковахме го за два дни. И го тествахме още няколко седмици. И стигнахме до производство за 3 месеца, но имахме собствен ETL, т.е. инструмент за запис на данни. И той ни писа във всичко, което е възможно. Може да пише на MongoDB, Cassandra, MySQL. Беше лесно да го науча как да пише в ClickHouse. Имахме готова инфраструктура за бързо внедряване. За 3 месеца започнахме да изхвърляме първия компонент. За 6 месеца напълно изоставихме всичко останало. Остана ни една ClickHouse.

Игор, благодаря ти много за доклада. Много ми хареса функционалността за изграждане на пътеки върху карти. Планирате ли да се интегрирате с Yandex.Maps и по-специално с персонализирани Yandex.Maps?

Опитах се да интегрирам вместо карта на Google, но не намерих тъмна тема на Yandex.Maps. Пропуснах едно парче. Ще превъртя назад, за да добавя.

Слайд - карта на Google. Тук има команда "DRAW_GMAPS", която чертае карта. Има команда "DRAW_YMAPS", т.е. може да начертае Yandex.Map. Но всъщност под тази команда е Javascript, тоест данните, които получавате от ClickHouse, могат да бъдат прехвърлени в Javascript, който пишете тук. И имате изходна област, където трябва да бъде начертана. Можете да начертаете всяка диаграма, т.е. всяка диаграма, карта, можете да начертаете свой собствен компонент. Преди това имах друга библиотека за чертане на самите графики.

Тоест има ли инструмент за персонализиране на функционалността на дисплея?

Всякакви. Можете да вземете и преоцветите тези точки, като ги направите не червени, а сини, зелени.

Благодаря за доклада! Имахте слайд, показващ алтернативни инструменти за заявки Щракнете върху Къща за изграждане на табла, аналитични справки. Разбирам това в момента, в който започнахте да работите с ClickHouse, не са написани адаптери за тези инструменти. И се чудя защо си решил сам да си направиш инструмента, вместо да напишеш адаптер за някакъв готов инструмент? Мисля, че настройването на тестовия редактор е бързо. Защо избрахте да вършите толкова много работа?

Има един интересен такъв момент – факт е, че аз съм технически директор, а не data scientist. По времето, когато започнахме да прилагаме Druid, имах около 50% от задачите в пътната карта - нека изчислим това, или нека изчислим това, или анализираме това. И се оказа, че внедрихме ClickHouse. И той започна бързо да изгражда всичко, да брои, бързо затвори пътната си карта. И по това време разбрах, че ми липсват познания по Data Science, визуализация на данни. Tabix е нещо като домашното ми за изучаване на визуализация на данни. Гледах как да допълня Zeppelin. Имам лека неприязън към неговото програмиране. Гледах как да добавя Redash, но нормален редактор ми беше достатъчен. И SuperSet също е написан на език, който не харесвам много. И така реших да карам колело и ето какво се случи.

Игор, приемаш ли заявки за изтегляне?

Да.

Благодаря много за доклада! И два въпроса. Първо, не си много ласкав javascript. На чист Javascript ли пишеше или е някаква рамка?*

По-добре на чист Javascript.

И така, каква рамка?

Ъглова.

Ясно е. И вторият въпрос. Обмисляли ли сте R и *Блестящ**?*

Разглеждан. Изигран.

Можете също така просто да напишете адаптер.

Той е. Изглежда, че общността го е направила, но, както отговорих на предишния въпрос, исках да го усетя сам.

* Не, относно визуализацията, има.

Казвате, че има такова нещо и то ще ви начертае графика. Отворих книга за визуализация на данни. И си помислих: „Нека се опитаме да визуализираме тези данни. Ще го напиша сам, за да може той да възстанови данните. И започнах да разбирам по-добре технологията на подаването на данни. И ако взех готов компонент, аз лично щях да се науча да го използвам по-зле, тоест визуализация. Но така - да, харесах R, но все още не съм чел книгата "R for Dummies".

Благодаря ви!

Прост въпрос. Има ли начини за бързо разтоварване на плоча, графика?

Може да се качи в CSV, в Excel.

Не данни, а готова таблица, готова графика? Например, за да покаже на властите.

Има бутон "Качване" и има бутон "Качване на диаграма в png, в jpg".

Благодаря ви!

PS Mini tabix инструкции за инсталиране

  • Изтегляне най-новата версия
  • Разопаковайте, копирайте директория build в nginx root_path
  • Настройте nginx

Източник: www.habr.com

Добавяне на нов коментар