Архитектура аналитических систем на платформе 1С
Около года назад фирма 1С выпустила свой продукт для построения аналитических систем класса Business Intelligence (BI) 1С: Аналитика. Отличие этого продукта от других BI решений в первую очередь в том, что продукт глубоко интегрирован с платформой 1С: Предприятие, поэтому 1С: Аналитика решает только свою специализированную задачу построения удобного BI интерфейса для подготовки отчетов и работы с ними. Поэтому важным вопросом для понимания продукта и его внедрения становится вопрос общей архитектуры аналитической системы, построенной с помощью 1С: Аналитики. В этой статье мы хотим кратко описать классический подход к построению аналитических систем, и как решение на базе платформы 1С соответствует такому подходу. Мы не претендуем на академическое изложение предмета, поэтому заранее просим прощение за возможную свободу в терминологии или изложении материала.
Какую задачу мы решаем?
Компьютеры хранят всё больше и больше данных компаний и организаций, где они установлены. Но когда руководитель знает, что все цифры и показатели происходящего в компании сохраняются в компьютере, то следующим логичным шагом будет затребовать возможность смотреть эти цифры и показатели. Причем, так как компьютер для человека, а не наоборот, доступ к нужным данным, расчет сводных показателей и статистики, возможность составления отчетов у руководства и бизнес-аналитиков должен быть в удобном виде. Если сформулировать все обычные пожелания, то получится такой список:
Один инструмент для доступа ко всем нужным данным. Руководитель не будет запоминать десять инструкций по работе с разными компьютерными системами, где лежит вся нужная информация, а потом склеивать нужные цифры из разных систем у себя в голове.
Простой и удобный инструмент для НЕ технического пользователя. Мы, программисты, часто ожидаем от пользователей уровня знаний и владения компьютерной техникой, которого у них нет. Часто и знания Excel требовать нельзя. Надо признать, что многие руководители и сотрудники, ответственные за процессы в компаниях, не имеют каких-то специальных технических навыков, поэтому им надо предлагать максимально удобные и простые в использовании программные продукты.
Доступ к данным с любого устройства. Это в некоторой степени следует из предыдущих пунктов, но сейчас, когда основным компьютерным устройством стал смартфон, руководитель обязательно захочет иметь возможность смотреть информацию с любого имеющегося у него устройства: настольного ПК, ноутбука, планшета, телефона.
Актуальность и прозрачность данных. Руководитель при просмотре данных должен им доверять. Не должно быть ситуаций, когда некоторые цифры устарели, или отчет показывает «примерное» состояние дел, а за уточнениями надо идти к какому-то специалисту. В этой ситуации руководитель сразу будет ходить к ответственным специалистам и нагружать их работой, чем каждый раз сомневаться в цифрах, которые он видит в компьютере.
Возможность отвечать на свои вопросы. Наверное, самый не очевидный пункт, не понятно, что за собой скрывающий. Важно всегда помнить, что просмотр отчетов не является целью сам по себе. Цель — понимать ситуацию в компании и контролировать её. А контроль означает уметь реагировать тогда, когда надо и там, где надо. Если цифры в отчете показывают, что дело плохо, надо понять, где и что плохо и что надо исправлять. Поэтому отчет с одной стороны должен кратко показать все основные показатели (то, что называют KPI), чтобы можно было легко оценить ситуацию в целом, но также должна быть возможность в рамках этого отчета начинать раскрывать любой показатель вплоть до исходных цифр и транзакций из которых он состоит, чтобы если есть какие-то отклонения от нормы, было сразу видно где конкретно они находятся.
Классический подход и где кроется засада
Построением аналитических систем для руководства компаний и бизнес-аналитиков компьютерщики занимаются не первое десятилетие. Здесь так же, как и для транзакционной обработки данных в СУБД, есть классический набор подходов и технологий, но большая часть из них посвящена не интерфейсу программы, с которой общается руководитель, а подготовке, хранению и обработке данных. Приведу ниже список таких терминов/технологий. Внедряются они обычно в такой же последовательности, как и перечислены, цепочкой одна технология после другой.
Сбор, очистка и трансформация данных (ETL). Чтобы иметь общую картину по цифрам, сначала нужно все эти цифры собрать вместе из разных компьютерных систем. При сборке данных важно ничего не потерять и не получить дубликаты. В крупных компаниях также возникает проблема общих единых справочников, так как обозначение одних и тех же вещей в разных информационных системах могут быть разными, и при объединении данных легко получить винегрет из разных названий одних и тех же объектов, которые анализировать будет тяжело.
Корпоративное хранилище данных (DWH). Уж коли данные все собраны, их нужно куда-то положить и хранить для последующей обработки. В компании хранилище данных выступает некоей единой версией правды, где все данные должны полностью соответствовать актуальным данным в исходных компьютерных системах, но лежать при этом в одном месте, чтобы можно было построить сквозной аналитический отчет или еще как-то обработать информацию.
Система быстрой обработки данных для аналитических отчетов (OLAP). Чем отличаются аналитические отчеты или запросы к данным от транзакционной обработки? Транзакции — это обычно точечный запрос или изменение данных. Хороший аналитический отчет всегда выводит относительно немного данных, но эти данные требуют для своего построения и обработки очень большого исходного объема информации. Отчет по продажам по годам по месяцам может выводить на экран несколько десятков значений, но строится он при этом по сотням миллионам записей по каждой продаже в отдельности. И как бы вычислительная техника ни развивалась, в лоб задача аналитической обработки данных не решается. Сначала придумали концепцию OLAP, что строить аналитические отчеты по большим данным надо всё-таки быстро. Затем этот подход в первом варианте реализовали в виде построения витрин данных с предварительно просчитанными агрегатами. Потом уже придумали MOLAP — многомерное хранение таких агрегатов (по сути заранее просчет всех возможных агрегатов по выбранным измерениям). Ну и по мере развития техники и СУБД стали появляться технологии, позволяющие настроить реляционные СУБД для эффективной аналитической обработки данных. При этом внутри СУБД может быть полностью заточена только под аналитические задачи, но снаружи будет выглядеть как обычная реляционная СУБД. Такой подход и называется ROLAP — Relational OLAP.
Визуализация данных и работа с аналитическими отчетами (BI). Собственно, только тут возникают технологии удобного доступа и работы руководителя с данными и отчетами. Вишенка на торте. Самое красивое и важное для конечного пользователя, но бесполезное без других технологий, перечисленных выше.
Прогресс технологий и доступность аналитических решений за последние 20 лет заметно выросли, но сказать, что развернуть аналитическую систему в компании «раз плюнуть» — нельзя. И тому есть веские причины.
Разные системы от разных поставщиков. Все технологии поставляются отдельно и независимо от бизнес-приложений, из которых и нужно анализировать информацию. Практически сразу клиент получает к уже работающим информационным системам пару-другую дополнительных информационных контуров с новыми программными продуктами, которые нужно покупать, настраивать и, главное, продолжать обслуживать дальше. Много систем — высокая сложность их взаимодействия и работы. На практике часто, чтобы начать внедрять аналитическую систему, создают отдельный отдел, который будет ей заниматься, или подписывают долгосрочный контракт на внедрение системными интеграторами.
Высокие затраты в деньгах, времени и специалистах. Тут сложно сказать, что компаниям обходится дороже. Скорее всего наличие специалистов, которые будут после внедрения понимать, как вместе работают все внедренные технологии, будут поддерживать и развивать систему.
Высокие риски. Там, где высокие затраты и сложность архитектуры системы, обычно и высокие риски. Если отложить в сторону главный риск, что такую систему можно и не успеть доделать до запуска, то самым важным риском остаётся контроль над данными. Нужно, чтобы по мере путешествия данных между контурами системы они не исказились, чтобы всегда было можно легко и прозрачно доказать соответствие показателей на выходе в аналитическом отчете исходным данным, собранным и обработанным из различных офисных систем. По мере перехода данных из контура в контур также нужно обеспечивать безопасность этих данных, а значит для каждой новой системы настраивать пользователей, права доступа, защищать от несанкционированного доступа и атак. А ведь мы всё время говорим о данных по ключевым показателям компании, то есть самой чувствительной информации.
Именно поэтому с аналитическими системами постоянно происходит ситуация, когда они очень нужны руководству, но даже при выделении больших сумм денег проекты затягиваются, срываются, заканчиваются ничем. В лучшем случае в компании появляется новая технология, с которой могут разобраться только несколько человек, а остальные продолжают собирать показатели и строить отчетные графики по старинке в Excel.
Почему мы решили выпустить 1С: Аналитику
Почему мы вообще взялись за создание нового продукта для построения аналитических систем? Решение о запуске в разработку нового продукта или технологии всегда стартует от пожеланий наших пользователей, от решения конкретной задачи. И по мере повышения доступности классических BI решений, наши пользователи начали всё чаще спрашивать нас, а где BI от 1С? При этом нельзя сказать, что у клиентов 1С не было решения для анализа данных.
Сама платформа 1С: Предприятие является инструментом для быстрой разработки бизнес-приложений, на которой собственно и сделаны такие популярные продукты российского рынка ПО как »1С: Бухгалтерия»,»1С: ERP» или »1С: Зарплата и Управление Персоналом». Квалифицированный разработчик 1С легко нарисует любой отчет для представления и анализа информации. Встроенная в платформу Система Компоновки Данных (СКД) позволяет без программирования нарисовать запрос к данным и максимально точно оформить отчет на его основе. Такой готовый отчет можно сохранить внутри программы 1С, чтобы он был доступен как часть приложения. А можно отчет редактировать отдельно от программы и передавать для выполнения в любую программу 1С, где структура данных совпадает.
Учитывая, что отчеты СКД могут управляться из кода программы 1С, многие строили системы отчетности на базе СКД как интегрированный функционал бизнес-приложения 1С. В качестве примера можно привести «Монитор целевых показателей» в »1С: ERP», или «Аналитические панели» в »1С: Управление Холдингом». Что же дополнительно к этим
возможностям хотели наши клиенты?
Более простой интерфейс, удобный для руководителей без технических знаний. Для руководителя даже три клика мышью в программе вместо одного часто способно остудить желание пользоваться системой. Тем более различные дополнительные меню с функциями, которые ему непосредственно не нужны для просмотра отчетов. Им хочется иметь систему максимально специализированную под задачу аналитической отчетности, но простую: ткнул, выбрал, посмотрел, возможно изменил фильтр выбранных данных. Хочется иметь возможность самостоятельно исследовать данные. При этом, если просмотр отчета СКД особых проблем не вызывает, то покрутить на лету отчет СКД по разным разрезам, тут нужны и навыки, и некоторое понимание устройства данных в системе.
Оптимизация для мобильных устройств, работа через браузер. Основной сценарий — доступ к аналитической системе со смартфона или планшета; если на десктопах и ноутбуках есть клавиатура и мышь, то на мобильных устройствах оперировать с приложением можно лишь с помощью пальцев.
Легкость работы с данными и программами 1С. Конечно, всех пользователей 1С интересует в первую очередь возможность увидеть внутри аналитической системы данные из их программ 1С. И здесь даже не сама любовь к 1С, а просто важность задач, которые она решает. Программы 1С берут на себя учет денежных средств, управление производством, кадрами, бизнес-процессами. Поэтому и получается, что важные для анализа данные будут лежать в первую очередь в системах 1С. И если уж говорить о BI решении для работы с этими данными, то хочется, чтобы оно включалось как часть уже установленной системы, без хлопот по выгрузке и перегрузке данных куда-то еще.
Поэтому и было принято решение разработать специализированное BI решение 1С: Аналитика как часть платформы 1С: Предприятие.
Мир 1С и что мы решили делать по-другому
Как уже видно из требований клиентов, в первую очередь требовалось создать для анализа данных новый специализированный интерфейс, максимально простой для руководящего состава, но функциональный для бизнес-аналитиков. Причем в соответствии с современным подходом для BI систем (список доступных данных, возможность легко «накидывать» данные на отчет или менять разрезы, по которым они смотрятся). Важно отметить, что вопрос консолидации данных и построение отдельного хранилища здесь никто не поднимает. В первую очередь потому, что большая часть этой задачи часто уже решается средствами 1С.
1С часто является центральной частью учетной системы, и основные данные для анализа уже лежат внутри 1С и там же и обрабатывается.
В 1С изначально предусмотрено построение распределенных информационных баз (РИБ) и технологии для обмена данными между различными узлами в сети таких баз. То есть типовое решение 1С часто включает в себя не только отдельно стоящую программу, но информационную сеть систем, в которой идет обмен информацией, и она тоже может консолидироваться в центральном узле 1С.
В платформу 1С встроены технологии подключения к внешним источникам данных непосредственно через протоколы СУБД (включая подключение к данным в Excel) или через протоколы веб-доступа. То есть имеются готовые технологии для интеграции данных из внешних систем.
Поэтому получается, что возможностей платформы 1С: Предприятие и типовых решений 1С достаточно для того, чтобы задача консолидации данных на центральном уже 1С была решена. Если в рамках классического подхода для построения аналитической системы проблема сбора данных является основной, то тут в первую очередь стоит задача последней мили, вопрос интерфейса и визуализации данных для конечного пользователя аналитической системы. Все остальное вполне может взять на себя проверенный десятилетиями функционал платформы 1С.
1С: Аналитика является BI решением для такой архитектуры системы. С точки зрения внутреннего устройства этот продукт не дублирует функционал платформы, но расширяет его до полноценного аналитического решения. Как устроена и что умеет 1С: Аналитика?
Пользователи работают с 1С: Аналитикой через веб-интерфейс, с любого устройства, интерфейс адаптивно подстраивается под экраны различного форм-фактора, от телефона до настольного компьютера.
Через простые визуальные редакторы пользователь рисует отчет, который внутри системы преобразуется в язык запросов и отправляется на обработку в платформу 1С. 1С: Аналитика не хранит никакие данные системы, а является только интерфейсом для запроса и показа информации пользователю.
Для подключения к 1С: Аналитике пользователь использует учетную запись 1С, под которой он работает в обычной программе 1С. То есть пользователь продолжает работать в уже настроенном контуре безопасности программы 1С. Данные не выгружаются, все права доступа соответствуют настройкам в 1С. Нет нужды настраивать права новых пользователей в другой системе и контролировать дополнительный контур безопасности. Если у вас для пользователей в инфобазе 1С настроены RLS права доступа, то тут тоже они будут автоматически использоваться, а пользователи в 1С: Аналитике будут видеть ровно те же данные, что и увидели бы непосредственно в программе 1С.
Хотя 1С: Аналитика ставится и запускается как отдельный сервер, он интегрируется по своему функционалу в платформу 1С и для клиента выглядит как дополнительный интерфейс в программе 1С. В программе 1С можно выбрать меню, и в браузере откроется страница с интерфейсом 1С: Аналитики, где пользователь уже будет залогинен под теми же учетными данными. При этом для пользователя интерфейс 1С: Аналитики будет работать как часть опубликованной инфобазы. Например, если сама информационная база 1С опубликована по адресу:
https://analytics.demo.1c.ru/analytics/
то адрес доступа к 1С: Аналитике будет тут:
https://analytics.demo.1c.ru/analytics/ans
Но интеграция сделана и в обратную сторону. Из меню 1С: Аналитики можно открыть страницу с веб-публикацией информационной базы. А если пользователь видит на экране отчет со справочниками или документами, то он может выбрать нужные объекты и открыть их непосредственно в интерфейсе 1С. Здесь есть несколько вариантов в зависимости от того, что хочет пользователь, и что настроено при установке 1С.
Первый вариант — выбрать объект и получить на него ссылку. При этом в буфер обмена сохранится текстовая ссылка в формате 1С, то есть ссылка, которая может быть открыта непосредственно в интерфейсе приложения 1С. Ссылка содержит метку, что это ссылка в приложении 1С, указывает на тип объекта и передает его идентификатор. Выглядит такая ссылка примерно так:
e1cib/data/Справочник.Номенклатура? ref=b625001a6411168a11de1cfd395d4fb0
Если не хочется руками получать и открывать ссылку на объекты из 1С: Аналитики в приложении 1С, то можно воспользоваться командой «Открыть». Если в приложении активирована Система Взаимодействия (встроенные чаты и видеозвонки), то через неё 1С: Аналитика передаст команду непосредственно на рабочее место пользователя, и в его клиентском приложении 1С выбранный объект откроется на экране. Если Система Взаимодействия в приложении при установке не активирована, то откроется отдельная веб-страница с приложением 1С, где нужный объект будет уже открыт.
Главный по скорости
Важный момент, который у внимательного читателя сейчас должен вызвать вопросы. Я явно указал, что 1С: Аналитика отвечает только за визуальный BI интерфейс аналитической системы. Сами запросы к данным, как и их хранение, обеспечиваются силами платформы 1С. Насколько быстро будут обрабатываться аналитические запросы в стандартной учетной системе, которая при том еще и работает на стандартной OLTP СУБД? Практика показывает, что до 5–10Гб данных современная СУБД вполне хорошо обрабатывает как в режиме обработки транзакций (OLTP), так и в режиме аналитических отчетов/запросов (OLAP). Если данных становится больше, или аналитические запросы становятся сложнее, то скорость аналитики на обычных СУБД начинает существенно снижаться. Именно поэтому в классической схеме построения аналитических систем и есть выделенный OLAP сервер, который решает задачу скорости на аналитических запросах.
Но платформа 1С: Предприятие тоже готова к решению этой задачи, предлагая для неё две ключевые технологии:
Механизм копий баз данных предназначен для горизонтального масштабирования работы с данными на чтение. Для этого в дополнении к основной операционной базе данных, где лежит информация приложения 1С, создаются копии данных в других СУБД. Администратор для каждой копии БД настраивает какие таблицы и объекты данных приложения будут там лежать. Дальше платформа сама контролирует в выбранной базе данных создание копий таблиц и их наполнение. По мере получения запроса к данным платформа будет смотреть его содержимое и параметры выполнения и автоматически решать, может быть этот запрос отправлен на какую-то из настроенных копий данных, или нет. Если запрос может быть направлен в копию БД, то он уйдет туда, и это снизит нагрузку по обработке данных в центральной операционной базе данных. При этом настройка копии данных выполнятся при развертывании приложения администратором системы, само приложение для этого менять не нужно.
Дата акселератор — это отдельная СУБД класса ROLAP, в которой может храниться копия данных. ROLAP означает, что для платформы 1С эта база данных выглядит как реляционная СУБД, но сама база данных оптимизирована для быстрого выполнения именно аналитических запросов. Если посмотреть, что «под капотом» у Дата акселератора, то ускорение в десятки раз обработки аналитических данных достигается за счет следующих технологий:
Хранение и обработка данных в оперативной памяти компьютера (In-memory DB).
Использование поколоночного хранения данных и других специальных структур для ускорения обработки аналитических запросов.
Компиляция запроса по обработке данных в процессорный код для максимальной скорости его исполнения (JIT компилятор).
Отдельно отмечу, что, как и любой другой OLAP сервер, Дата акселератор требует для себя мощных аппаратных ресурсов. Он позволяет автоматически решить большинство проблем со скоростью обработки данных, но для этого ему нужно выделить сервер с большим объемом доступной памяти и хорошим, быстрым процессором.
В результате вместе механизм копий БД и Дата акселератор решают для 1С: Аналитики
следующие две ключевые задачи:
Нагрузка по обработке отчетов 1С: Аналитики не нагружает операционную базу данных и не мешает работать другим пользователям учетной системы.
Аналитические отчеты обрабатываются на ROLAP сервере Дата акселератора и в десятки раз ускоряют обработку данных, позволяя получать результаты отчетов на лету в реальном времени.
Если посмотреть на общую схему развертывания 1С: Аналитики со всеми нужными компонентами платформы, то мы увидим, что здесь есть аналоги для всех компонентов из классической схемы построения аналитических систем, но важное отличие, что все они работают внутри и являются частью платформы 1С: Предприятие.
Пример использования
И универсальные аналитические системы тоже!
Итак, 1С: Аналитика легко может сделать счастливым пользователей 1С, добавив к их уже работающей программе 1С возможности включения BI интерфейса для работы с данными внутри 1С: Аналитики. За счет того, что данные уже находятся внутри платформы 1С, можно без больших рисков быстро подключить 1С: Аналитику и получить готовую аналитическую систему. А если данные не лежат в одной программе 1С, или даже лежат не в системах 1С, а анализировать их надо? Что делать в таком случае? Возвращаться к классической схеме построения аналитических систем с её рисками и издержками?
Ответ, который мы можем тут дать: и да, и нет. Платформа 1С: Предприятие и 1С: Аналитика позволяют использовать всю гибкость классического подхода, но без его ключевых недостатков. Имея внутри платформы все необходимые технологии, можно рассматривать саму платформу 1С как готовую основу для построения аналитической системы. В этом случае основной доработкой будет построение процесса ETL для сбора данных на базе 1С. Как только все данные будут собраны внутри информационной базы 1С, к ним можно будет настроить доступ через BI интерфейс 1С: Аналитики.
Платформа имеет множество технологий для быстрой разработки бизнес-приложений, часть из них помогает подключаться к внешним источникам и собирать данные:
Внешние источники данных. Вы можете настроить подключение к другой системе или СУБД непосредственно внутри программы 1С и оперировать в коде программы, как будто это встроенная база данных вашей программы.
В качестве такого внешнего источника данных могут быть и данные из MS Excel, но данные из электронных таблиц могут также загружаться и импортироваться из файла внутри программы 1С. Все нужные форматы для загрузки 1С знает «из коробки».
Встроенный набор классов позволяет получать и обрабатывать данные в форматах XML и JSON.
С интернет системами можно строить взаимодействие по протоколам веб-сервисов или REST API.
Встроенные в 1С планы обмена позволяют легко создавать распределённые сети программ 1С, которые будут автоматически собирать и синхронизировать данные между различными узлами.
Для более сложных корпоративных систем можно задуматься об организации потоков данных между системами на базе шины корпоративных сообщений и использовать для этого продукт 1С: Шина.
Пример такой независимой аналитической системы, построенной на базе 1С, внедрение в ДИТ города Москвы. На платформе 1С была разработана ETL система сборки данных из 1800 информационных систем организаций города. Часть из них тоже работают на базе 1С, но многие — нет. Это не помешало платформе 1С стать ядром и центром консолидации данных для их аналитической обработки внутри 1С: Аналитики. Различные средства разработки предназначены для решения своих специализированных задач, и платформа 1С: Предприятие прекрасно справляется как с разработкой бизнес-приложений, так, теперь вместе с 1С: Аналитикой, и с построением аналитических систем класса BI.