Microsoft StreamInsight Извлечение знаний из потоков реляционных данных в реальном времени. Никита Шамгунов Микрософт Microsoft Платформа 2010 http://msplatforma.ru Что такое CEP? Complex Event Processing (CEP) это непрерывная и инкрементальная обработка потоков событий из множественных источников в соответствии декларативным запросом с близкой к нулю задержкой СУБД CEP Парадигма запросов Запросы выполнятся по требованию Запросы обрабатываются непрерывно Задержка Секунды, часы, дни Милисекунды или меньше Пропускная способность Сотни записей/сек Десятки тысяч записей/сек или больше запрос ответ Событие входной поток Microsoft Платформа 2010 выходной поток http://msplatforma.ru Новая!! Только что из печки! CEP Microsoft Платформа 2010 http://msplatforma.ru Сценарии Задержка Месяцы CEP сценарии Дни Реляционные СУБД Часы Аналитика Минуты Анализ реляционных данных Секунды 100 мс Мониторинг Web Аналитика Производство Трейдинг < 1 мс 0 10 100 1000 10000 100000 ~10^6 Скорость поступления данных (Событий/сек) Microsoft Платформа 2010 http://msplatforma.ru Примеры CEP Сценарив Производство: • Сенсоры на заводе • Аппаратные контроллеры • 10,000 соб./сек Веб аналитка: • Анализ потока кликов • Анализ онлайн поведения • 100,000 соб./сек Финансы: • Трейдинговые системы • Паттерн • Очень низкие задержки • 100,000 соб./сек Электросистемы: • Потребление • Аварии • Умная электрофикация • 100,000 соб./сек Хранение и архивация Графическое отображение трендов Управление производством Определение аномалий Мгновенная сегментация потребителей Алгоритмический трейдинг Превентивное техобслуживание Данные о системе Потоки данных Потоки данных Потребление входных данных. Подписка на источники данных Обработка событий Lookup Microsoft Платформа 2010 • Top запросы • Корреляция событий из разных источ. • Паттерны http://msplatforma.ru Наблюдай, управляй, извлекай знания Тренды индустрии • Цена приобретения данных стремится к 0 • Цена хранения данных мала и уменьшается • Цена обработки данных существенна • Цена загрузки данных также велика Почему CEP? Наблюдай за метриками Записывай сырые данные (история) Управляй бизнесом на основании метрик Извлекай знания из исторических данных. Создавай новые метрики Microsoft Платформа 2010 • Обработка данных на лету • Не нужно загружать/сохр анять в памями • Предоставляет систему выполнения запросов для наблюдения, управления, извлечения знаний http://msplatforma.ru Развертывание CEP Веб серверы Источники данных Сенсоры CEP Мобильные устройства CEP Агрегирование и коррелиция CEP CEP CEP Потоки CEP Системы развертываются на разных уровнях системы • На границе – рядом с источниками данных • На mid-tier – консолидация разных источников • В дана центра – анализ исторических данных, корреляция больших объемов CEP CEP CEP CEP Сложная аналитика и извлечения знаний CEP CEP Microsoft Платформа 2010 Простая обработка и фильрация Агрегация и корреляция Сложный анализ исторических данных http://msplatforma.ru Обзор CEP платформы Микрософт Разработка CEP приложений IDE Источники событий Event targets Работа CEP приложения Устройства, сенсосы Event CEP Engine Стоячие запросы Event Event Event Event Event Event Event Пейджеры и устройства мониторинга ` Панели упр, SharePoint Event СУБД и другие хранилища C_ID Финансовые потоки Output Adapters Input Adapters Веб сервера .NET C# LINQ C_NAME C_ZIP Трейлинговые консоли Внешние данные Хранение исторических данных Microsoft Платформа 2010 http://msplatforma.ru События События отражают различные временные характеристики Мгновеные (point in time) Фиксированные интервалы (Interval events with fixed duration) Интервалы с изначально неизвестной продолжительностью (Interval events with initially unknown duration) Значение полей События содержат данные, ассоциированные с ними, аналогично строкам в таблице a t1 Microsoft Платформа 2010 b t2 d c t3 Time t4 e t5 http://msplatforma.ru Типы данных для событий События в CEP платформе использует типы .NET События могут содержать несколько полей Поля – скалярные типы данных .NET Движок CEP обеспечивает поля для временных характеристик Input adapters заполняют эти поля Timestamps Long /Metadata pumpID … … Strin g Type … String Location … Doubl e flow … Microsoft Платформа 2010 Double pressure … http://msplatforma.ru Потоки событий Поток – это возможно бесконечная последовательность событий Возможно вставлять новые события Изменять темпоральные характеристики событий Примеры: сенсорные данные, записи из журналов (логов) Характеристики потоков: Паттерны поступления событий Равномерно. Например файлы или таблицы Нерегулярно, случайным образом, или шквалами. Например: сканнеры штрих-кодов, интернет клики, погодные данные События могут быть неупорядоченными Порядок поступления событий не обязан совпадать с их темпоральными характеристиками CEP система берет на себя сложную часть задачи правильной реализации темпоральной семантики Microsoft Платформа 2010 http://msplatforma.ru Адапторы для потоков событий При создании адаптеров необходимо задать Типы производимых или потребляемых событий Методы, обеспечивающие реализацию потока Свойства, которые «понимает» CEP система Особенности адаптеров Проблема Особенность Свойства событий Темплейты для адаптеров в записимости от типа: темплейты для мгновенных событий Описание нагрузки Скалярные типы .NET на полей событий Типизированные vs обобщенные Темплейты для адаптеров определенного типа событий и обобщенные адаптеры Поддержка оптимизации Поддержка приема предикатов и проекций Microsoft Платформа 2010 http://msplatforma.ru Ядро CEP движка Движок CEP Стоячие запросы Event Event Event Event Event Event Event Event Управление выполнением запросов Submit, start, stop Получение статистик Вывод: движок CEP берет на себя сложность выполненя запросов с временной семантикой Microsoft Платформа 2010 http://msplatforma.ru Выходные адаптеры Операторы потребляют и производят потоки Запросы стыкуются Результаты запросов вычисляются инкрементально Входные адаптеры Исполняет “стоячие запросы” Event Типичные CEP запросы Для типичных CEP запросы необходимы след. свойства Сложные типы данных для событий В процессе вычисления можно добавлять/изменять поля Группировка по одному или нескольким полям Агрегация за определенный период времени, например по окну Один запрос обрабатывает сразу нельколько групп событий Отслеживание корреляции между несколькими потоками Отслеживание отсутствия событий Дополнение событий информацией из внешних источников Наша цель состоит в том, чтобы сделать написание и управление такими запросами чрезвычайно простым. Microsoft Платформа 2010 http://msplatforma.ru Возможности Микрософт CEP Операторы управления потоками Арифметические операции (PROJECT) Корреляция нескольких потоков (JOIN) Проверка наличия активности в источнике данных (EXISTS) Фильтрация событий (FILTER) Разбиение потока по признаку (GROUP & APPLY) Нахождение событий с наибольшим значением опреленных показателей (TOP-K) Темпоральные операции: hopping window, sliding window Агрерация (SUM, COUNT, …) Расширяемость – возможность добавлять свои операторы Запросы пишутся для типизированных потоков событий Они могут выполняться для любых потоков этого типа Поддерживает потоки, ссылки на статические данные, проигрывание исторических данных Microsoft Платформа 2010 http://msplatforma.ru Расширяемость Встроенные операторы не покрывают всей функциональности Необходима интеграция с существующими библиотеками Есть необходимость в специфичных для предметной области операторах Расширения для CEP: Фунции, агрегаты и операторы определяемые пользоватем, написанные на .NET Запросы на LINQ легко стыкуются и интрегрируются с пользовательским кодом на .NET Для реализации операторов определяемых пользователем предостваляется framework Microsoft Платформа 2010 http://msplatforma.ru Примеры запросов LINQ Пример на LINQ – JOIN, PROJECT, FILTER: from e1 in MyStream1 join e2 in MyStream2 e1.ID equals e2.ID where e1.f2 = “foo” select new { e1.f1, e2.f4 }; Join Filter Project Пример на LINQ – GROUP и WINDOW: from e3 in MyStream3 group e3 by e3.i into SubStreams from s4 in SubStreams from e4 in s4.HoppingWindow(TheeSec, OneSec) select new { avg = e.Avg(s4 => s4.f4) }; Microsoft Платформа 2010 Grouping Window http://msplatforma.ru Демонстрация Запросы для внешних устройств Никита Шамгунов Senior Software Developer Microsoft Corp. Microsoft Платформа 2010 http://msplatforma.ru Разработка для CEP платформы Цели Легкость и быстрота разработки Полный набор инструментов Поддержка разных стратегий развертования Встроенного в приложение На сервере приложений Расширяемость Среда разработки CEP На основе .NET Microsoft Visual Studio – среда разработки Приложения пишутся на C# Запросы на LINQ LINQ: var queryFilter = from c in TestEventStream where c.Field1 > 1 select c; Microsoft Платформа 2010 http://msplatforma.ru Связывание запросов Аналитика Источники данных QT1 AT3 Event Стоячие запросы Event Event Event Q1 Q1’ Event Q1’’ Event Выходные адаптеры AT2 Движок CEP Входные адаперты AT1 Связывание запроса и источников входных данных создает экземпляр запроса Позволяет создать несколько экземпляров запроса Один запрос может быть связан с разными наборами источников данных Microsoft Платформа 2010 http://msplatforma.ru Демонстрация Запросы над IObservable Nikita Shamgunov Senior Software Developer Microsoft Corp Microsoft Платформа 2010 http://msplatforma.ru ИТОГИ: CEP платформа Microsoft Разработка на .NET, C#, LINQ and Visual Studio 2008 CEP Разработка приложений CEP платформа Микрософт предназначена для приложений обработки событий Источники данных Гибкий SDK для создания адаптеров, соединяющихся с разными источниками и потребителями данных C_ID C_NAME C_ZIP Выходные адаптеры Входные адаперты Приложения для работы с CEP Engine Event потоками событий Standing Queries фундаментально отличаются от Event Event традиционных приложений, Event Event работающих с БД: запросы Event выполнятся непрерывно, Event потребляют и производят Event Event потоки и вычисляются инкрементально Потребители ` CEP платформа берет на себя работу с темпоральными характеристиками потоков событий Static reference data Microsoft Платформа 2010 http://msplatforma.ru Ссылки www.microsoft.com/teched www.microsoft.com/learning Sessions On-Demand & Community Microsoft Certification & Training Resources http://microsoft.com/technet http://microsoft.com/msdn Resources for IT Professionals Resources for Developers www.microsoft.com/learning Microsoft Certification and Training Resources Microsoft Платформа 2010 http://msplatforma.ru Вопросы Никита Шамгунов Senior Software Engineer SQL Server Engine nikitas@microsoft.com http://blogs.msdn.com/streaminsight/ Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада Microsoft Платформа 2010 http://msplatforma.ru SQL Server Community The Professional Association for SQL Server (PASS) is an independent, not-for-profit association, dedicated to supporting, Resources educating, and promoting the Microsoft SQL Server community. • Connect: Local Chapters, Special Interest Groups, Online Community • Share: PASSPort Social Networking, Community Connection Event • Learn: PASS Summit Annual Conference, Technical Articles, Webcasts • More about the PASS organization www.sqlpass.org/ Become a FREE PASS Member: www.sqlpass.org/RegisterforSQLPASS.aspx Learn more about the PASS organization www.sqlpass.org/ Additional Community Resources SQL Server Community Center www.microsoft.com/sqlserver/2008/en/us/communitycenter.aspx TechNet Community for IT Professionals http://technet.microsoft.com/en-us/sqlserver/bb671048.aspx Developer Center http://msdn.microsoft.com/en-us/sqlserver/bb671064.aspx SQL Server 2008 Learning Portal http://www.microsoft.com/learning/sql/2008/default.mspx Microsoft Платформа 2010 http://msplatforma.ru © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. Microsoft Платформа 2010 http://msplatforma.ru