Strumieniowa baza danychStrumieniowa baza danych – baza danych, w której dane są przedstawione w postaci zbioru strumieni danych. System zarządzania taką bazą nazywany jest strumieniowym systemem zarządzania danymi (DSMS – ang. Data Stream Management System). Strumieniowe bazy danych z reguły implementują języki ciągłych zapytań [1] opartych na SQL-u (istnieją jednak wyjątki od tej reguły – np. rozwiązania graficzne). Geneza strumieniowych baz danychProblemy modelu relacyjnegoKonwencjonalne, relacyjne bazy danych są projektowane przy założeniu aktywnej postawy użytkownika. Użytkownik wprowadza i otrzymuje na żądanie informacje ze zbioru danych. Tego typu podejście określono jako oparte na koncepcji pasywnej bazy danych (HADP) (ang. Human Active Database Passive). Niestety, istnieje szereg zjawisk, których praktyczna realizacja przy pomocy tej koncepcji prezentacji danych jest znacząco utrudniona. Próbując zastosować model uniwersalny, napotkamy problemy dopiero w trakcie wdrożenia lub pierwszego uruchomienia systemu. Jest to spowodowane uwzględnieniem przez projektanta wartości średnich bez uwzględnienia ciągłego i nieograniczonego w czasie, a czasem lawinowego napływu danych. Podejście DAHPDlatego powstała nowa koncepcja realizacji systemu zarządzania danymi. Jest to model oparty na aktywnej bazie danych (DAHP – Database Active Human Passive). Prowadzone badania dotyczą głównie rozwiązań dedykowanych. W ramach jednego z projektów prowadzone są prace nad przedstawieniem rozwiązania uniwersalnego [2]. Przedstawiono koncepcję systemu DSMS, Data Stream Management System, czyli tłumacząc: SZSBD – Systemu Zarządzania Strumieniową Bazą Danych (w opozycji do pojęcia DBMS, Database Management System zakładającego relacyjny model danych). Różnice pomiędzy systemem relacyjnym i strumieniowymMożna wskazać kilka podstawowych różnic pomiędzy systemami relacyjnymi i strumieniowymi. Poniżej zamieszczono te cechy funkcjonalne systemów, które są spotykane jedynie w systemach strumieniowych.
Charakterystyka modeluW modelu strumieni danych zakłada się, że niektóre lub wszystkie napływające do systemu dane nie są dostępne w dowolnej chwili. Możliwy czas, w jakim można je zarejestrować, jest skończony. Dane te pojawiają się w źródle danych i przyjmują postać strumienia danych. Strumienie danych różnią się od konwencjonalnych danych kilkoma szczegółami:
Istnienie takich ograniczeń nie przekreśla wykorzystania w systemie zarządzania bazą danych konwencjonalnych metod dostępu do danych. Prowadzone są próby poszerzenia standardu języka SQL o elementy umożliwiające zadawanie zapytań oparte na strumieniach danych. Semantyka ciągłych zapytańKlasyczne systemy relacyjne implementują model typu zapytanie-odpowiedź. Typowe zapytania realizowane w modelu strumieniowym mają postać zapytanie-odpowiedź, odpowiedź,... Ciągłe zapytanie jest zapytaniem, którego plan realizacji zamknięty jest w martwej pętli. Formalną semantykę ciągłych zapytań zdefiniowano w pracy opublikowanej w czasopiśmie Sigmod Record [1] przez naukowców pracujących nad projektem STREAM. Języki zapytańRozważane są trzy możliwe sposoby zapisu zapytań opartych na strumieniach danych: deklaratywne (oparte na rachunku relacji), obiektowe oraz rozwiązanie proceduralne. Rozwiązania deklaratywne bazują na poszerzonej składni języka SQL. Przykładowe zapytania przedstawia się następująco:
Podejście obiektowe zostało zastosowane w systemie monitorowania sieci czujników Cougar. Do języków proceduralnych należy zaliczyć te języki, w których plan realizacji zapytania tworzony jest bezpośrednio przez użytkownika – np. Projekt Aurora/Borealis. Przetwarzanie strumieni danychModel obliczeń na strumieniach danych zakłada istnienie danych o następującym charakterze:
Podstawowe problemy w realizacji zadania przetwarzania strumieni danych dotyczą implementacji i zdefiniowania zbioru operatorów nieblokujących realizację planu zapytania oraz algorytmów aproksymujących. W ramach prac często stosowana jest technika ruchomego okna danych w celu realizacji zadań przez operatory. Literatura
|