Классика баз данных - статьи

       

Бесшовная интеграция обработки, выполняемой СУБД, с обработкой, производимой приложением


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

В отличие от этого, приложение Feed Alarm является примером встроенной системы. Такие системы пишутся одним человеком или одной группой, которые заслуживают доверия в том, что они «делают все правильно». Приложение включает следующие части: (1) СУБД, поддерживающую, например, блоки агрегации и фильтрации; (2) логику управления, в соответствии с которой сообщения направляются на следующий этап обработки; (3) логику приложения. В StreamBase эти виды функциональных возможностей могут свободно перемежаться. Логика приложения поддерживается в блоках, созданных пользователями; в нашем примере приложения обработки финансовых каналов это блок Count 100 (рис. 6). Программный код этого блока, показанный на рис. 6, состоит из четырех строк на языке C++, в которых поддерживается счетчик от 0 до 100, и при необходимости выдаются соответствующие сообщения. Логика управления поддерживается за счет помещения в блок фильтрации нескольких предикатов и соответствующего наличия нескольких выходных дуг. По существу, кроме фильтрации потоков, блок фильтрации выполняет логику «it-then-else».


Рис. 6. Логика Count 100

В сущности, приложение Feed Alarm представляет собой смесь обработки в стиле СУБД, условных выражений и функций, написанных на обычном языке программирования. Эта комбинация выполняется системой StreamBase в едином адресном пространстве без каких-либо переключений контекстов процессов. Такая бесшовная интеграция логики СУБД со средствами традиционного программирования была предложена много лет назад в Rigel [23] и Pascal-R [25], но никогда не реализовывалась в коммерческих реляционных системах.

Содержание  Назад  Вперед