Strumieniowa baza danych
Z Wikipedii
Strumieniowa baza danych to 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).
Większość strumieniowych baz danych w chwili obecnej (początek 2005r.) znajduje się w fazach prototypowych i nie powstały dotychczas rozwiązania komercyjne.
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).
Spis treści |
[edytuj] Geneza strumieniowych baz danych
[edytuj] Problemy modelu relacyjnego
Konwencjonalne, relacyjne bazy danych są projektowane przy założeniu aktywnej postawy użytkownika. Użytkownik wprowadza informacje i tylko na jego żądanie elementy są wprowadzane do zbioru danych. Tego typu podejście zaowocowało powstaniem rozwiązań opartych na koncepcji pasywnej bazy danych (HADP) (ang. Human Active Database Passive). W świecie jednak istnieją zjawiska, których próba opisania przy pomocy tej koncepcji prezentacji danych kończy się w praktyce fiaskiem. Katastrofa zazwyczaj następuje w momencie wdrożenia lub pierwszego uruchomienia. Jest to spowodowane nieuwzględnieniem przez projektanta systemu ciągłego i nieograniczonego w czasie, a czasem lawinowego napływu danych.
[edytuj] Podejście DAHP
Dlatego 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).
[edytuj] Różnice pomiędzy systemem relacyjnym i strumieniowym
Moż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.
- implementacja ciągłych zapytań w systemie zarządzania danymi (nie w aplikacji)
- moduł rejestracji danych umieszczony w systemie zarządzania danymi (wbudowany)
- język zapytań oparty o zmodyfikowaną/rozszerzoną/alternatywną algebrę opisującą operacje na strumieniach danych
[edytuj] Charakterystyka modelu
W 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:
- Elementy strumienia danych napływają na bieżąco (online).
- System nie ma wpływu na dane, jakie do niego napływają – ani na kolejność ani na zawartość.
- Strumienie danych teoretycznie nie są ograniczone czasem – w rozwiązaniu nie można założyć, że strumień danych będzie zawierał określoną maksymalną ilość elementów.
- Każdy element pobrany ze strumienia danych po przetworzeniu jest niszczony lub archiwizowany. Dostęp do niego jest utrudniony, bowiem strumień nie jest przechowywany w pamięci operacyjnej, a łatwy dostęp do danych możliwy jest jedynie w przypadku ostatnio zarejestrowanych danych.
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.
[edytuj] 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.
[edytuj] 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:
Select Istream(*) From S [Rows 100] Where S.A > 10
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.
[edytuj] Przetwarzanie strumieni danych
Model obliczeń na strumieniach danych zakłada istnienie danych o następującym charakterze:
- dane nadchodzą w postaci sekwencji elementów zwanej strumieniem,
- każdy z elementów jest przeglądany i przetwarzany tylko raz wraz z napływem danych.
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.
[edytuj] Linki zewnętrzne
- (en) StreamBase Systems, Inc.
- (en) Strona domowa Stream Team
- (en) Projekt COUGAR
- (en) Projekt Niagara
- (en) Projekt STREAM
- (en) Projekt Telegraph
- (en) Projekt OpenCQ
- (en) Projekt Hancock
- (en) Projekt MEDUSA
- (en) Projekt AURORA
[edytuj] Literatura
- Arasu A, Widom J. ACM Sigmod Record Vol 33, Nr 3, 2004, str. 6-11
- Babcock B., Babu S., Datar M., Motwani R., Widom J.: Models and Issues in Data Stream Systems. Proc. of the 2002 ACM Symp. on Principles of Database Systems, June 2002, str. 1-16
- Golab L., Ozsu M.T. Issues in data stream management, ACM Sigmod Record Vol 32, Nr 2, 2003, str. 5-14