Datanomix articles RUS

Оптимизация Qlik-приложения

Оптимизация Qlik-приложения

О КЛИЕНТЕ

Бюро национальной статистики Агентства по стратегическому планированию и реформам республики Казахстан — государственное учреждение, в чьи задачи входит проведение общегосударственных статистических наблюдений и предоставление официальной статистической информации гражданам, государству и международному сообществу.

ЗАДАЧИ

  • Оптимизация скорости загрузки приложения
  • Оптимизация скорости работы приложения
  • Оптимизация скорости обновления данных

Бюро национальной статистики (БНС) обратилось к нам с задачей оптимизации одного из своих ключевых приложений: аналитического решения на платформе Qlik Sense «Перепись населения».

Приложение разработано силами внутренней команды БНС и используется для анализа данных, полученных в результате переписи населения Казахстана. Доступ к данным может получить любой желающий: интерактивные дашборды опубликованы на сайте https://stat.gov.kz/ в открытом виде.

Система позволяет анализировать данные о более чем 19 миллионах человек по 90+ критериям, таким как пол, возраст, образование, семейное положение, источники дохода и многое другое, вплоть до материала наружных стен, из которого построено жилье конкретного домохозяйства.
Пользователи жаловались на медленную загрузку приложения и неудовлетворительную скорость работы: использование любого фильтра надолго «подвешивало» систему. Что уж говорить о сложных многомерных запросах.

Кроме того, проблемой являлась скорость обновлений. Они производятся довольно редко — всего один раз в месяц, но зато каждое надолго останавливало работу аналитиков.

РЕШЕНИЕ

Для оптимизации приложения БНС Datanomix.pro предоставила заказчику выделенного архитектора. Работа заняла 1 неделю, и в итоге нам удалось оптимизировать скорость загрузки всех объектов приложения в среднем на 31%. Вот как мы это сделали:

Шаг 1 – замеры «до»

В первую очередь мы проанализировали текущую ситуацию, сделали все необходимые замеры. Такие как вес приложения, необходимая оперативная память, количество таблиц, полей, страниц и объектов, а также время загрузки объектов – как всех вместе, так и каждого по отдельности (что позволило обнаружить самые ресурсоемкие и медленно загружаемые).

Исходные замеры

Шаг 2 – изменение модели данных

Исходная модель данных была достаточно сложной и, соответственно, ресурсоемкой. Приложение состояло из 51 таблицы и для получения нужных данных зачастую система последовательно обращалась к трем-четырем из них.

Мы решили пересобрать модель по схеме «универсальная звезда» – простой и удобной структурой, которая уменьшает количество соединений, что приводит к более простому и быстрому агрегированию данных и составлению отчетов.

Исходная модель данных

Однако это не помогло. Если исходное приложение занимало 1.8Gb дискового пространства, то после сведения всех данных в единую таблицу оно стало «весить» более 10Gb и перегружало имеющиеся у клиента мощности.

В итоге мы серьезно переработали структуру данных, внеся значительные изменения. Сократили количество столбцов в ряде таблиц, убрали не использовавшиеся поля и в итоге вместо 51 таблицы сделали 8 укрупненных. Таким образом, нам удалось упростить связи между данными, не утяжеляя приложение.

Модель данных после оптимизации

Комментирует Виталий Тренкеншу, генеральный директор Datanomix.pro: «Чтобы в лучшую сторону изменить модель данных, нужно хорошо разобраться в бизнес-логике клиентского приложения, найти неоптимальные способы вычислений и предложить клиенту альтернативы. Для этого архитектор должен иметь не только глубокие технические навыки, но и искреннее желание разобраться в задачах клиента, вникнуть в предметную область, сделать так, как лучше для заказчика, а не проще для разработки. К счастью, в нашей компании работают именно такие люди. Поэтому мы и добиваемся отличных результатов на каждом проекте».



Шаг 4 – оптимизация сортировок

БНС использует большое количество справочников, каждый со своей сортировкой. Правила сортировки были заданы в отдельных таблицах: списки выводятся не по алфавиту, а по размеру региона, популярности языка и тому подобным признакам, ориентированным на удобство работы пользователей.
Вместо таблиц мы использовали функцию dual(), которая позволяет назначить числовые значения строкам и производить сортировку уже по этим значениям.

Это более элегантное решение, которое сокращает количество вычислений.

Шаг 3 – прогрев кэша

Чтобы сократить время, которое пользователь тратит на ожидание первоначальной загрузки приложения и первой загрузки каждого листа, мы реализовали процесс прогрева кэша — программное открытие приложения, которое позволяет заранее загрузить дашборды в оперативную память, прежде чем пользователи попытаются открыть их.

Специальное приложение, разработанное специалистами Datanomix.pro, запускается после каждого обновления приложения и имитирует работу пользователя, «пробегаясь» по каждому листу и загружая в операционную память результаты расчетов и визуализацию.

Это ускоряет время загрузки и удовлетворенность пользователей, ведь им не приходится ждать, когда приложение с нуля выполнит все расчеты и отобразит результаты.

Шаг 4 – удаление неиспользуемых элементов

Для очистки приложения от неиспользуемых мастер-мер и мастер-измерений мы использовали Gitoqlok — наш собственный инструмент, используемый разработчиками всего мира для совместной разработки и контроля версий Qlik Sense.

У Gitoqlok есть удобная подсветка, которая помогает быстро обнаружить неиспользуемые мастер-меры и визуализации.
Шаг 5 – оптимизация визуализации

Qlik Sense предоставляет богатейшие возможности по визуализации данных. Однако, чем больше «красоты», тем больше нужно ресурсов. Мы предложили ряд изменений, касающихся типов визуализации и количества интерактивных возможностей. Это дало великолепный результат на первых же дашбордах, которые мы оптимизировали.

Из-за горящих сроков и других более приоритетных задач работу над визуализацией временно отложили, но заказчик внес их в планы по дальнейшей оптимизации
РЕЗУЛЬТАТЫ

Сложность этого проекта заключалась в одновременной работе двух команд: БНС и Datanomix.pro. Приложение активно дорабатывалось, а оптимизировать то, что меняется на твоих глазах, довольно сложно. Эту проблему мы решили с помощью того же Gitoqlok – плагина для совместной работы и контроля версионности. Как только мы разобрались с правилами совместной работы, дела пошли очень быстро.
Меньше чем за неделю нам удалось сократить время загрузки всех объектов приложения на 31%, уменьшить требования к дисковому пространству на 20% и к оперативной памяти на 31%,
упростить модель данных и обеспечить ее более легкое масштабирование в дальнейшем. Пользователи отметили ускорение работы приложения, а администраторы стали тратить значительно меньше времени на обновление системы.

«Перепись населения – масштабный проект, значение которого сложно переоценить. Полученные данные ложатся в основу ключевых государственных решений и, в конечном счете, влияют на жизнь каждого жителя Казахстана. Именно поэтому так важно, чтобы точная и исчерпывающая статистика предоставлялась быстро и удобно, в каком бы разрезе пользователь ее ни запросил.

Мы благодарим команду Datanomix.pro, которая помогла нам серьезно оптимизировать работу приложения. Процедура обновления стала проходить в несколько раз быстрее, серьезно ускорилась загрузка. И, что было для нас очень важно, — мы получили массу позитивных откликов со стороны пользователей: теперь, по их словам, система "просто летает"», — делится впечатлениями руководитель отдела БНС

Сводные данные по достигнутым результатам можно увидеть в таблице:
ПЛАНЫ

Так как доработка приложения все еще идет, и это не единственное решение на Qlik Sense, разрабатываемое заказчиком, мы продолжаем оказывать поддержку БНС. В частности, эксперты Datamonix.pro взяли на себя функцию мониторинга серверов: теперь мы можем проанализировать, какие листы приложения наиболее востребованы, сколько пользователей заходят в систему, как распределяется нагрузка. Это помогает грамотно расставлять приоритеты и заниматься теми участками, которые в первую очередь требуют внимания разработчиков.

Кроме того, представители БНС попросили нас провести обучение способам оптимизации Qlik-приложений, а также навыкам продвинутой разработки в целом – чтобы создаваемые ими решения сразу же имели оптимальную структуру. Такое обучение мы регулярно проводим в нашей онлайн-школе Datanomix Academy, и будем рады видеть в ней специалистов БНС.