Два месяца назад мы выпустили крупную новую функцию для Lokad: наш первый инструмент разведки данных в реальном времени. Эта функция имеет кодовое имя срезы панели инструментов, и для ее реализации нам потребовалась полная переработка низкоуровневого обработчика данных, который обеспечивает работу Envision. С помощью срезов панели инструментов каждая панель инструментов становится словарем представлений панели инструментов, которые можно исследовать в режиме реального времени с помощью строки поиска.

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

Панель инструментов Envision с срезами

В настоящее время Lokad поддерживает до 200 000 срезов (также известных как представления панели инструментов) для одной панели инструментов; и эти срезы могут отображаться в режиме реального времени с помощью селектора, который обладает функцией поиска в режиме реального времени для облегчения исследования данных. В отличие от инструментов бизнес-аналитики, эти срезы могут содержать сложные вычисления, а не только срезы и нарезки по OLAP-кубу.

Поисковое поле для срезов в панели инструментов Envision

Когда речь идет о обработке данных и отчетности, обычно выделяют два подхода: онлайн-обработка и пакетная обработка. Онлайн-обработка получает поток данных, и обычно ожидается, что все, что отображается системой, всегда будет актуальным: система не отстает от реальности более чем на несколько минут, иногда даже несколько секунд. OLAP-кубы и большинство инструментов, называемых инструментами бизнес-аналитики, относятся к этой категории. Хотя реальное время 1 аналитики является очень желательным не только с бизнес-точки зрения (свежие данные лучше, чем устаревшие), но и с точки зрения конечного пользователя (производительность - это функция), они также имеют строгие ограничения. Просто говоря, очень сложно предоставить умные аналитические возможности в режиме реального времени. В результате все онлайн-аналитические системы имеют серьезные ограничения в отношении типа аналитики, которую можно выполнять в системе.

С другой стороны, пакетная обработка обычно выполняется по расписанию (например, ежедневные запуски), в то время как вся историческая информация (или значительная ее часть) вводится в систему. Свежесть результатов ограничена частотой выполнения расписания: ежедневная пакетная обработка всегда дает результаты, отражающие ситуацию вчера, а не сегодняшнюю ситуацию. Поскольку все данные доступны с самого начала, пакетная обработка идеально подходит для выполнения различных оптимизаций вычислений, которые могут значительно повысить общую производительность вычислений. В результате с помощью пакетной обработки можно выполнять целые классы сложных вычислений, которые остаются недоступными при рассмотрении онлайн-обработки. Кроме того, с точки зрения ИТ, пакетная обработка обычно намного проще в реализации и эксплуатации 2. Основным недостатком пакетной обработки является задержка, вызванная пакетной природой процесса.

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

Таким образом, Envision разработан с учетом пакетной обработки. У нас есть несколько трюков, чтобы сделать Envision очень быстрым, даже при работе с терабайтами данных; но на этом масштабе мы говорим о получении результатов в течение нескольких минут, а не менее чем за секунду. Фактически, из-за высокой степени распределенности модели вычислений Envision, для Lokad вызывает трудности завершение выполнения любого скрипта Envision менее чем за 5 секунд, даже если вовлечено всего несколько мегабайт данных. Чем более распределенной является система, тем больше внутренней инерции для синхронизации всех ее частей. Большая масштабируемость является врагом низкой задержки.

Несколько лет назад мы представили понятие форм ввода в Envision: функцию, которая позволяет добавить настраиваемую форму на панель инструментов, которая становится входом, доступным из скрипта Envision. Например, с помощью этой функции было легко разработать панель инструментов, предназначенную в качестве инспектора продукта, отображающего всю соответствующую информацию, относящуюся к указанным продуктам. К сожалению, для того чтобы панель инструментов соответствовала вновь введенному значению формы, скрипт Envision должен был быть повторно выполнен, что приводило к задержке в несколько секунд для получения обновленных результатов; длительность, которая была неприемлемо долгой для исследования данных.

Срезы панели инструментов (ознакомьтесь с нашей технической документацией) представляют собой нашу попытку получить лучшее из двух миров: онлайн и пакетную обработку. Фокус в том, что Lokad теперь может пакетно вычислять огромное количество срезов (каждый срез может отражать продукт, местоположение, сценарий или их комбинацию) и позволять вам переключаться с одного среза на другой в режиме реального времени, что возможно, потому что все было предварительно вычислено. Естественно, предварительное вычисление большого количества срезов требует больше вычислительных ресурсов, но не так много, как могло бы показаться. Обычно для Lokad выгоднее вычислить 10 000 срезов сразу, чем выполнить 100 независимых запусков, каждый из которых посвящен одному срезу.

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


  1. В распределенной системе нет такого понятия, как “реальное время”. Скорость света сама по себе накладывает жесткие ограничения на степень синхронизации системы, распространяющейся на несколько континентов. Таким образом, этот терминология является несколько злоупотребительной. Однако, если общая задержка составляет менее секунды, то обычно можно считать приложение для обработки данных “реальным временем”. ↩︎

  2. Типичная реализация пакетного процесса состоит в перемещении плоских файлов, что является базовой функцией, поддерживаемой практически каждой системой в настоящее время. Затем, с точки зрения операций, если один компонент пакетного процесса переживает временное простой, обычно простая политика повторной попытки решает проблему. В отличие от этого, онлайн-системы обычно плохо себя ведут, когда один компонент выходит из строя. ↩︎

  3. На сегодняшнюю дату, один час вычислений на современном процессоре обычно стоит менее 0,02 доллара при использовании оплаты по мере использования на доминирующих платформах облачных вычислений. Таким образом, если выгода, полученная от одного лучшего решения в цепочке поставок, стоит гораздо больше, чем 0,02 доллара, имеет смысл вложить этот один час вычислений. ↩︎