Strumieniowa baza danych

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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 2005 r.) 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).

Geneza strumieniowych baz danych[edytuj | edytuj kod]

Problemy modelu relacyjnego[edytuj | edytuj kod]

Konwencjonalne, 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 DAHP[edytuj | edytuj kod]

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).

Różnice pomiędzy systemem relacyjnym i strumieniowym[edytuj | edytuj kod]

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

Charakterystyka modelu[edytuj | edytuj kod]

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.

Semantyka ciągłych zapytań[edytuj | edytuj kod]

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ń[edytuj | edytuj kod]

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.

Przetwarzanie strumieni danych[edytuj | edytuj kod]

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.

Linki zewnętrzne[edytuj | edytuj kod]

Literatura[edytuj | edytuj kod]

  1. Arasu A, Widom J. ACM Sigmod Record Vol 33, Nr 3, 2004, str. 6-11
  2. 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
  3. Golab L., Ozsu M.T. Issues in data stream management, ACM Sigmod Record Vol 32, Nr 2, 2003, str. 5-14