В поставку СУБД Cache, кроме самого сервера базы данных, входит технология для «real-time» бизнес-аналитики DeepSee. Её использование – это наиболее быстрый способ добавить OLAP функциональность к вашему приложению на Cache.
Другим элементом установки является подсистема аудита с web-интерфейсом, возможностью расширения собственными типами событий и API для использования в прикладном коде.
Под катом – небольшой пример совместного использования этих подсистем, позволяющий ответить на вопросы — кто, что, когда делал в информационной системе?
Предназначена для регистрации происходящих в системе событий. В системном портале управления Cache есть готовый web-интерфейс — поиск, фильтрация, экспорт, очистка и т.д. Использовать аудит в прикладном коде можно с помощью API — классы Security.Events — для регистрации типов событий, %SYS.Audit — самих событий, %SYSTEM.Security:Audit() – удобный метод для регистрации события. По умолчанию подсистема аудита неактивна, запускается через: Портал управления — Администрирование системы — Безопасность — Аудит.
Ниже, пример страницы с несколькими кнопками, нажатия на которых регистрируются в базе аудита.
DeepSee включает в себя разнообразные средства для построения хранилищ данных, анализа и визуализации данных, пользовательский портал, отчеты, печать, экспорт и т.д. Использует подсистемы безопасности и аудита Cache. Есть различные способы организовать интеграцию DeepSee практически с любым приложением – от терминала до web.
Одной из особенностей DeepSee является возможность аналитики на оперативных данных. Достигается за счет фоновой синхронизации куба с данными вашего приложения. Для этого в классе данных определяют параметры DSTIME и DSINTERVAL. При компиляции класса Cache генерирует дополнительный код регистрации изменений. При запуске синхронизации обновляется только незначительная часть данных куба, при этом синхронизация может выполняться непосредственно сразу после изменений в OLTP классах, что позволяет говорить о “real-time” бизнес-анализе.
Для использования фонового обновления куба в нашем примере, необходимо добавить параметры DSTIME и DSINTERVAL в системный класс %SYS.Audit и скомпилировать его.
После предварительной настройки области ( необходимо включить отображения глобала ^CacheAuditD ) и соответствующей настройки веб-приложения для работы с DeepSee, приступаем к определению куба.
Укажем исходный класс с данными. Свойства класса станут основой для определения измерений куба. В классе %SYS.Audit свойства Username, Event, UTCTimeStamp хранят информацию для ответа на поставленные в начале статьи вопросы. На основании свойства Username определим измерение Кто, свойства Event – измерение Что, свойства UTCTimeStamp – измерение Когда. В качестве меры по умолчанию используется количество записей.
После компиляции и первоначального заполнения куба, в DeepSee Analyzer настраивают различные срезы данных (сводные таблицы). Они, в свою очередь, становятся источником данных для визуальных компонентов — виджетов. Виджеты объединяют в индикаторные панели (dashboard) и предоставляют к ним доступ для пользователей. Пользовательский портал позволяет без программирования организовать работу пользователей с индикаторными панелями.
На основании анализа журнала аудита можно легко увидеть, что один пользователь более склонен к удалению данных в системе, чем другой. На реальной системе, с большим количеством событий и пользователей, эту информацию трудно было бы выявить простым просмотром журнала аудита. Включив в куб дополнительные данные, можно получить много другой «интересной» информации о работе пользователей в системе. Главное уметь задавать правильные вопросы.
Полезные ссылки:
еще о DeepSee
исходники примера
отображение портала DeepSee на мобильных устройствах
Другим элементом установки является подсистема аудита с web-интерфейсом, возможностью расширения собственными типами событий и API для использования в прикладном коде.
Под катом – небольшой пример совместного использования этих подсистем, позволяющий ответить на вопросы — кто, что, когда делал в информационной системе?
Подсистема аудита
Предназначена для регистрации происходящих в системе событий. В системном портале управления Cache есть готовый web-интерфейс — поиск, фильтрация, экспорт, очистка и т.д. Использовать аудит в прикладном коде можно с помощью API — классы Security.Events — для регистрации типов событий, %SYS.Audit — самих событий, %SYSTEM.Security:Audit() – удобный метод для регистрации события. По умолчанию подсистема аудита неактивна, запускается через: Портал управления — Администрирование системы — Безопасность — Аудит.
Ниже, пример страницы с несколькими кнопками, нажатия на которых регистрируются в базе аудита.
Пример использования аудита в прикладном коде
/// Пример использования подсистемы аудита в прикладном коде
Class habra.audit Extends %CSP.Page {
/// Регистрация прикладных ( пользовательских ) типов событий
ClassMethod EventTypesRegister() As %Status {
#; Типы событий регистрируются через класс из системной области %SYS
set ns = $namespace, $namespace = "%SYS"
#; set status = ##class(Security.Events).Create( Source, Type, Name, Description )
set statusC = ##class(Security.Events).Create( «habra», «audit», «create», «Create event example» )
set statusR = ##class(Security.Events).Create( «habra», «audit», «read», «Read event example» )
set statusU = ##class(Security.Events).Create( «habra», «audit», «update», «Update event example» )
set statusD = ##class(Security.Events).Create( «habra», «audit», «delete», «Delete event example» )
set $namespace = ns
set status = ( statusC && statusR && statusU && statusD )
Quit status
}
/// Простая страница с несколькими кнопками
ClassMethod OnPage() As %Status {
&html<<!DOCTYPE html><html><head></head><body>
<h3>Hello, #($username)#!</h3><hr>
<form method='post'>
<button name='create'>Create</button>
<button name='read' >Read </button>
<button name='update'>Update</button>
<button name='delete'>Delete</button>
</form>
</body></html>>
Quit 1
}
/// Разбираем параметры формы
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ] {
#; форма отправит на сервер единственный параметр — имя кнопки
#; http://[server]/[app]/[class]?name=
set name = $order( %request.Data("") ) ; узнаем какая кнопка вызвала отправку
#; сохраняем в журнал аудита ( Source, Type, Name, EventData, Description )
set status = ##class(%SYSTEM.Security).Audit( «habra», «audit», name, «нажал кнопку», «1984» )
Quit 1
}
}
Class habra.audit Extends %CSP.Page {
/// Регистрация прикладных ( пользовательских ) типов событий
ClassMethod EventTypesRegister() As %Status {
#; Типы событий регистрируются через класс из системной области %SYS
set ns = $namespace, $namespace = "%SYS"
#; set status = ##class(Security.Events).Create( Source, Type, Name, Description )
set statusC = ##class(Security.Events).Create( «habra», «audit», «create», «Create event example» )
set statusR = ##class(Security.Events).Create( «habra», «audit», «read», «Read event example» )
set statusU = ##class(Security.Events).Create( «habra», «audit», «update», «Update event example» )
set statusD = ##class(Security.Events).Create( «habra», «audit», «delete», «Delete event example» )
set $namespace = ns
set status = ( statusC && statusR && statusU && statusD )
Quit status
}
/// Простая страница с несколькими кнопками
ClassMethod OnPage() As %Status {
&html<<!DOCTYPE html><html><head></head><body>
<h3>Hello, #($username)#!</h3><hr>
<form method='post'>
<button name='create'>Create</button>
<button name='read' >Read </button>
<button name='update'>Update</button>
<button name='delete'>Delete</button>
</form>
</body></html>>
Quit 1
}
/// Разбираем параметры формы
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ] {
#; форма отправит на сервер единственный параметр — имя кнопки
#; http://[server]/[app]/[class]?name=
set name = $order( %request.Data("") ) ; узнаем какая кнопка вызвала отправку
#; сохраняем в журнал аудита ( Source, Type, Name, EventData, Description )
set status = ##class(%SYSTEM.Security).Audit( «habra», «audit», name, «нажал кнопку», «1984» )
Quit 1
}
}
Технология бизнес-аналитики DeepSee
DeepSee включает в себя разнообразные средства для построения хранилищ данных, анализа и визуализации данных, пользовательский портал, отчеты, печать, экспорт и т.д. Использует подсистемы безопасности и аудита Cache. Есть различные способы организовать интеграцию DeepSee практически с любым приложением – от терминала до web.
Одной из особенностей DeepSee является возможность аналитики на оперативных данных. Достигается за счет фоновой синхронизации куба с данными вашего приложения. Для этого в классе данных определяют параметры DSTIME и DSINTERVAL. При компиляции класса Cache генерирует дополнительный код регистрации изменений. При запуске синхронизации обновляется только незначительная часть данных куба, при этом синхронизация может выполняться непосредственно сразу после изменений в OLTP классах, что позволяет говорить о “real-time” бизнес-анализе.
Для использования фонового обновления куба в нашем примере, необходимо добавить параметры DSTIME и DSINTERVAL в системный класс %SYS.Audit и скомпилировать его.
Изменения в %SYS.Audit
Всё вместе
После предварительной настройки области ( необходимо включить отображения глобала ^CacheAuditD ) и соответствующей настройки веб-приложения для работы с DeepSee, приступаем к определению куба.
Укажем исходный класс с данными. Свойства класса станут основой для определения измерений куба. В классе %SYS.Audit свойства Username, Event, UTCTimeStamp хранят информацию для ответа на поставленные в начале статьи вопросы. На основании свойства Username определим измерение Кто, свойства Event – измерение Что, свойства UTCTimeStamp – измерение Когда. В качестве меры по умолчанию используется количество записей.
После компиляции и первоначального заполнения куба, в DeepSee Analyzer настраивают различные срезы данных (сводные таблицы). Они, в свою очередь, становятся источником данных для визуальных компонентов — виджетов. Виджеты объединяют в индикаторные панели (dashboard) и предоставляют к ним доступ для пользователей. Пользовательский портал позволяет без программирования организовать работу пользователей с индикаторными панелями.
На основании анализа журнала аудита можно легко увидеть, что один пользователь более склонен к удалению данных в системе, чем другой. На реальной системе, с большим количеством событий и пользователей, эту информацию трудно было бы выявить простым просмотром журнала аудита. Включив в куб дополнительные данные, можно получить много другой «интересной» информации о работе пользователей в системе. Главное уметь задавать правильные вопросы.
Полезные ссылки:
еще о DeepSee
исходники примера
отображение портала DeepSee на мобильных устройствах
morisson
Все получается. Один нюанс: класс %SYS.Audit как источник данных для куба нужно вводить вручную (как и показано на видео) — в окне выбора не показывается, как и все системные классы.