Примерно 5 миллисекунд проходит от запроса до ответа, если данные хранятся на жестком диске. SSD отвечает в 30 раз быстрее — за 150 микросекунд. Оперативной памяти требуется в 300,000 раз меньше времени — лишь 15 наносекунд.*



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

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

Технология in-memory заключается в том, что для трансформации в оперативную память единовременно загружаются все данные из разных источников. После этого трансформацию можно выполнить «на лету», без запросов к диску. Например, кликом выбрать измерение и сразу получить график, который будет отображать значения показателей в нужном разрезе. Благодаря тому, что все данные уже в оперативной памяти, аналитическому приложению не нужно делать запросы к жесткому диску для получения новой информации.

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

Сначала было дорого


«Память — это новый диск», — заявил исследователь из Microsoft Джим Грей (Jim Grey) в начале нулевых. В 2003 году он опубликовал статью «Экономика распределенных вычислений»**, где сопоставил стоимость разных этапов компьютерной обработки данных. Джим Грей показал, что вычисления должны быть там же, где находятся данные — чтобы лишний раз их не перемещать. Он советовал передвинуть вычисления как можно ближе к источникам данных. То есть, отфильтровать данные как можно раньше и в результате сэкономить.

В течение нескольких следующих лет на рынке появились in-memory СУБД сразу от нескольких лидеров индустрии, включая Oracle, IBM, и SAP, а также несколько open source проектов — например, Redis и MemcacheDB.

Первой задачей, которую решали in-memory СУБД, оказалась не бизнес-аналитика и даже не бизнес-приложения, а возможности для электронной коммерции, открывающиеся в связи с мгновенным извлечением информации. Например, in-memory СУБД могла бы позволить интернет-магазину в реальном времени предложить покупателям товары на основе их предпочтений, либо показывать рекламу.

Рынок решений для анализа корпоративных данных тем временем развивался по другой траектории. Большинство предприятий неразрывно связаны с системами, использующими транзакционные СУБД, которые основаны на принципах, разработанных еще в 80-х годах прошлого века. Их задача — постоянно сохранять на диск идущие потоком небольшие порции данных и сразу подтверждать их целостность (OLTP-сценарий работы). Среди систем, использующих такие СУБД — ERP-решения, автоматизированные банковские системы, биллинг, POS-терминалы.

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

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

Во-первых, жесткий диск, хранящий информацию, является медленным накопителем. Во-вторых, сама структура хранения данных в традиционной СУБД не позволит ей быстро выполнить аналитический запрос. Данные сохранялись построчно — по мере их поступления, поэтому физически рядом находятся значения, которые относятся к одной строке. А в ответ на аналитический запрос базе данных требуется отдать значения одного столбца, но из разных строк. Поэтому такие запросы выполняются медленно и создают большую нагрузку на систему хранения данных. То есть, расположение информации на диске организовано неподходящим способом.

Таким образом, традиционные СУБД, в которых изначально сохранялась вся исходная для анализа информация, плохо подходили для того, чтобы выполнять роль источника данных, к которому аналитическая система подключается напрямую. Поэтому в прошлом веке для аналитических задач стандартной практикой было использование промежуточной модели данных, в которой все значения уже рассчитаны на какой-то момент времени. Такая модель данных называлась «аналитическим кубом», или OLAP-кубом. Для создания OLAP-куба разрабатывались так-называемые ETL-процессы (extract, transform, load) — запросы к базам данных в исходных системах и правила, в соответствии с которыми нужно осуществить преобразования данных. Очевидно, если в OLAP-кубе какой-то информации нет, то в отчете она появиться не может.

Проблема этого подхода заключалась в высокой стоимости решения. Во-первых, требовалось хранилище данных, куда будут помещаться пред-рассчитанные показатели. Во-вторых, если какой-то показатель понадобился нам в другом разрезе, то чтобы его получить, все процессы трансформации данных на пути от исходной системы к OLAP-кубу приходилось создать заново, переписав аналитические запросы. После чего пересчитать весь OLAP-куб, что занимало несколько часов.

Допустим, OLAP-куб содержит информацию о продажах по разным странам. Но финансовый директор вдруг захотел увидеть продажи в разрезе городов, а потом сгруппировать их по среднему чеку. Для получения такого отчета ему приходилось обращаться в ИТ-службу, чтобы она перестроила OLAP-куб. Либо он мог форсировать события и привлечь знатока MS Excel, который создал бы такой отчет вручную. Для этого ему приходилось выгружать с помощью аналитических запросов данные из исходных систем в таблицы и проделывать с ними ряд трудоемких и недекларируемых манипуляций.

В первом случае финансовому директору приходилось ждать. Во втором он получал цифры, которым трудно доверять.

К тому же, решение оказывалось очень дорогим. Нужно было потратить деньги на создание хранилища, которое надо администрировать. Требовалось нанять специалистов по СУБД для того, чтобы они занимались ETL — перестраивали OLAP-кубы под каждую из задач. Параллельно в компании обычно появлялись специальные аналитики, которые создавали отчеты по запросу (так-называемые ad-hoc отчеты). Фактически они изобретали разные способы получить нужный отчет с помощью MS Excel и преодолевали трудности, связанные с тем, что эта программа предназначена для других задач.

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

Решение нашлось в другом месте


В 1994 году тогда еще шведская компания QlikTech из небольшого города Лунд выпустила программу QuikView, которую позже переименовали в QlikView. Приложение было разработано для оптимизации производства. Оно позволяло узнать, использование каких деталей и материалов связано между собой, а каких — нет. То есть, от программы требовалось визуализировать логические взаимосвязи между частями, материалами, агрегатами и продуктами. Для этого она загружала в оперативную память наборы данных из разных источников, сопоставляла их и мгновенно показывала связи.

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

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

Аналитическое приложение напрямую подключалось к источникам и периодически загружало все нужные для отчета данные в оперативную память. Исчезла необходимость каждый раз менять ETL-процессы для того, чтобы получить значения показателей в новых разрезах — теперь они подсчитывались в реальном времени в момент запроса. Отпала необходимость создавать и администрировать хранилище данных. Стоимость владения аналитическим решением резко снизилась.

С распространением 64-разрядных серверов, которые позволяли работать с большим объемом оперативной памяти, технология in-memory стала быстро менять бизнес-аналитику. Это хорошо иллюстрируют отчеты Magic Quadrant исследовательской компании Gartner. В 2016 квадрант лидеров покинуло сразу 6 разработчиков BI-платформ, среди которых оказались такие ветераны отрасли, как IBM, Oracle и SAP. Осталось лишь три игрока, сделавших ставку на технологию in-memory и отказавшихся от OLAP-кубов. Это Microsoft, Qlik и Tableau.


Положение игроков в Gartner’s Magic Quadrant for Analytics and Business Intelligence Platforms***

Можно сказать, что компания Qlik стала пионером и лидером трансформации рынка. К 2016 платформу для анализа данных QlikView использовали заказчики по всему миру, а годовой объем продаж превысил $600M.

От отчетов к управлению на основе данных


С распространением аналитических решений, основанных на технологии in-memory, перед огромным числом компаний открылась недоступные раньше способы использовать корпоративные данные. Появилась возможность не ограничиваться управленческими отчетами, которые стандартны для каждой из отраслей. Самые разные процессы стали «измерять» — вводить метрики и использовать их для описания процессов. Стало гораздо проще пользоваться объективной информацией, чтобы принимать более обоснованные решения. Резко выросло число работающих с данными бизнес-пользователей.

Огромное влияние на интерес к использованию данных оказали изменения потребительского поведения и маркетинга, который стал цифровым — то есть основанным на метриках. Много новых людей привлекли в Data Science ожидания от того, как мир изменит Big Data.

В результате всех этих процессов быстро произошла «демократизация» корпоративных данных. Раньше данные принадлежали ИТ-службам. Маркетинг, продажи, бизнес-аналитики и руководители обращались для получения отчетов в ИТ-службу. Теперь сотрудники работали с данными самостоятельно. Оказалось, прямой доступ сотрудников к данным способен повысить продуктивность работы и дать конкурентное преимущество.

Однако, первое поколение основанных на технологии in-memory аналитических решений давало бизнес-пользователям очень ограниченные возможности использовать данные. Они могли работать только с готовыми панелями и дэшбордами. Технология in-memory позволяла им «провалиться» вглубь любого показателя и увидеть, из чего он складывается. Но речь всегда шла о тех показателях, которые определены заранее. Исследование ограничивалось уже размещенными на дэшборде визуализациями. Такой способ использования данных получил название «направленная аналитика» и он не предполагал, что бизнес-пользователь самостоятельно займется подключением новых источников и будет сам создавать показатели и визуализации.

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

Стоит заметить, к моменту, когда технология in-memory стала менять бизнес-аналитику, уже не было серьезных технологических препятствий перед тем, чтобы дать пользователям доступ ко всем данным. Возможно, у самых консервативных заказчиков был вопрос о целесообразности такой функции. Но мир уже повернулся в сторону желания «посчитать все». Теперь менеджерам, не имеющим математического образования и навыков программирования, тоже требовался инструмент, который позволил бы говорить на языке данных.

Бизнес-аналитикам прямой доступ к данным открывал много новых возможностей. Они могли выдвигать и проверять любые гипотезы, применять методы Data Science, выявлять такие зависимости, существование которых трудно предположить заранее. Появилась возможность объединять внутренние корпоративные данные с внешними — полученными из сторонних источников.

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

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

Данные есть. Что теперь?


Технология in-memory сильно повлияла на то, как сегодня бизнес пользуется информацией. Объединять и исследовать данные стало проще, и это был сильный толчок бизнеса в сторону цифровой трансформации. Однако, глупо утверждать, будто цифровая трансформация превратилась в обыденность и теперь любая компания способна запросто ее осуществить.

С точки зрения технологий все просто до тех пор, пока объем изучаемых данных ограничивается несколькими Excel-таблицами. Если речь заходит об объединении миллиардов записей, то скорее всего задача по-прежнему окажется сложной с технической точки зрения, а ее решение потребует экспертизы в области BI и инженерных находок. Особенно если при этом еще требуется управлять качеством данных, что является обычной задачей для большинства средних и крупных компаний.

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

Однако, это уже не те трудности, которые преодолевали заказчики несколько лет назад. Уровень зрелости аналитических платформ сегодня такой, что даже если исходных данных очень много, то ждать подсчета показателей больше не нужно, а полученным цифрам можно доверять. В основе случившейся трансформации — вычисления in-memory.

Следующей технологией, которая будет менять рынок аналитических решений, наверняка станут облачные платформы. Уже сегодня инфраструктура облачных сервис-провайдеров (CSP) вместе с набором услуг на ней превращается в платформу управления данными.



Источники:

* IDC, «Market Guide for In-Memory Computing Technologies», www.academia.edu/20067779/Market_Guide_for_In-Memory_Computing_Technologies

** Jim Gray «Distributed Computing Economics», www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2003-24.doc

*** Посмотреть, как менялось с 2010 по 2019 положение разработчиков BI-платформ в отчетах Gartner Magic Quadrant можно на интерактивной визуализации: qap.bitmetric.nl/extensions/magicquadrant/index.html

Комментарии (8)


  1. tas
    04.10.2019 15:24

    Щупал как-то in-memory аналитику, реально крутая штука. Понравилась больше кубов…


  1. Meklon
    04.10.2019 21:23

    Круто, спасибо большое.


  1. AlexNomad
    04.10.2019 23:13

    Кто-нибудь знает open source или бесплатные подобные системы или библиотеки?


    1. igor_suhorukov
      04.10.2019 23:41

      1. vagon333
        07.10.2019 09:08
        +1

        Молодой проект.
        Есть примеры с применением?


        1. igor_suhorukov
          07.10.2019 09:55

          На самом деле проекту больше 5 лет(до этого назывался NFSdb), просто автор сделал резкое движение с переводом кода между pub->priv->pub репозитариями. История частично прослеживается в maven central.
          Автор, мой коллега по UBS, работает в Лондоне контрактором. Применял в HFT проекте и blockchain.com криптоэксчейнж на questdb. Gateway сохраняет блоб за 90нс.


  1. cobrainco
    05.10.2019 23:58

    Проблема с цитатой.
    "Примерно 5 миллисекунд проходит от запроса до ответа, если данные хранятся на жестком диске. SSD отвечает в 300 раз быстрее — за 150 микросекунд. "
    Насколько я вижу, 150 микросекунд это не в 300, а всего в 33 раза быстрее.
    Опечатка или в источнике неверно?


    1. qlever Автор
      06.10.2019 00:00

      Спасибо, что сообщили. Исправлено.