Plan wykładu. Wstęp. Charakterystyka DSMS. Przetwarzanie zapytań w DSMS. Otwarte problemy badawcze



Podobne dokumenty
Strumieniowe bazy danych

Strumieniowe bazy danych. Piotr i Paweł

Strumieniowe bazy danych

Systemy GIS Tworzenie zapytań w bazach danych

Wykład XII. optymalizacja w relacyjnych bazach danych

Wykład I. Wprowadzenie do baz danych

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Alicja Marszałek Różne rodzaje baz danych

Aproksymacja funkcji a regresja symboliczna

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Optymalizacja poleceń SQL Wprowadzenie

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Definicja pliku kratowego

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Post-relacyjne bazy danych

Optymalizacja poleceń SQL

Oracle11g: Wprowadzenie do SQL

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Szyfrowanie danych w SZBD

Przykładowe B+ drzewo

Przestrzenne bazy danych Podstawy języka SQL

5. Model komunikujących się procesów, komunikaty

Zastosowanie strumieniowych baz danych

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Zaawansowane Systemy Baz Danych

METODY INŻYNIERII WIEDZY ASOCJACYJNA REPREZENTACJA POWIĄZANYCH TABEL I WNIOSKOWANIE IGOR CZAJKOWSKI

Transformacja wiedzy w budowie i eksploatacji maszyn

1.7. Eksploracja danych: pogłębianie, przeszukiwanie i wyławianie

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Pojęcie bazy danych. Funkcje i możliwości.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Relacyjne bazy danych. Podstawy SQL

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu

Systemy baz danych. mgr inż. Sylwia Glińska

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Microsoft SQL Server Podstawy T-SQL

Teoretyczne podstawy informatyki

Baza danych. Modele danych

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Spis treści. Przedmowa

Jeśli X jest przestrzenią o nieskończonej liczbie elementów:

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Relacyjne bazy danych. Podstawy SQL

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Hurtownie danych i business intelligence - wykład II. Zagadnienia do omówienia. Miejsce i rola HD w firmie

Obiektowe bazy danych

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Laboratorium Przetwarzania Sygnałów

Modelowanie i Programowanie Obiektowe

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Multi-wyszukiwarki. Mediacyjne Systemy Zapytań wprowadzenie. Architektury i technologie integracji danych Systemy Mediacyjne

Bloki anonimowe w PL/SQL

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Bazy danych Wykład zerowy. P. F. Góra

Wyzwalacze (triggery) Przykład

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Przydatne sztuczki - sql. Na przykładzie postgres a.

Hurtownie danych. Przetwarzanie zapytań. ZAPYTANIA NA ZAPLECZU

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Procedury i funkcje składowane

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Cele. Definiowanie wyzwalaczy

Analiza ilościowa w przetwarzaniu równoległym

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

PIA PANEL INŻYNIERA AUTOMATYKA

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

ORACLE. System Zarządzania Bazą Danych Oracle. Oracle Advanced SQL

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Optymalizacja poleceń SQL Statystyki

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Algorytmy i Struktury Danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Kompresja danych DKDA (7)

Technologia informacyjna (IT - Information Technology) dziedzina wiedzy obejmująca:

Bazy danych 2. Wykład 1

Bazy danych i usługi sieciowe

Optymalizacja. Plan wykonania polecenia SQL (1) Plan wykonania polecenia SQL (2) Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Transkrypt:

Strumieniowe bazy danych

Plan wykładu Wstęp Zastosowanie dla strumieniowych baz danych Charakterystyka DSMS Model strumieniowych baz danych Przetwarzanie zapytań w DSMS Algorytmy przetwarzania zapytań Otwarte problemy badawcze

Klasyczne bazy danych Pasywne repozytoria dużych zbiorów trwałych danych, które są ą wypełniane i przetwarzane przez personalnych użytkowników (human active model). Ważny jest bieżący stan danych. Dostęp do danych historycznych h może ż być ć utrudniony lub niemożliwy.

Klasyczne bazy danych Elementy aktywne: triggery i alerty są drugorzędne i pomocnicze. Brak skalowalności dla dużej liczby triggerów. Dostęp do danych jest synchronizowany dzięki czemu odpowiedzi na zapytania są dokładne. Brak wymagań, co do czasu rzeczywistego.

Nowe dziedziny zastosowań Zarządzanie ą ruchem i wydajnością ą sieci telekomunikacyjnych i komputerowych, serwerów WWW Zarządzanie procesami przemysłowymi przetwarzanie danych z sieci czujników Aplikacje analizy finansowej monitorujące strumień danych giełdowych, sieci bankomatów Aplikacje monitorujące duże zbiory obiektów (śledzenie pojazdów) Aplikacje militarne monitorowanie organizmów żołnierzy (ciśnienie krwi, tętno, pozycja)

Strumieniowe bazy danych Aktywne repozytoria dużych zbiorów danych, które są w wypełniane automatycznie przez czujniki. Aplikacje monitorujące przetwarzają ciągłe strumienie danych wejściowych i alarmują użytkowników w przypadku występowania nietypowych sekwencji danych (human passive model). Ważna jest historia danych zmiany w źródłach hdanych.

Strumieniowe bazy danych Aktywna baza danych, architektura gwarantująca skalowalność triggerów. Dane wejściowe mogą być gubione, w związku z tym zapytania mogą być wykonywane przy niekompletnej informacji wejściowej i generować jedynie przybliżone wyniki. Istotne wymagania, co do czasu rzeczywistego.

DBMS, a DSMS trwałe relacje ulotne, nieograniczone strumienie danych zapytania punktowe zapytania ciągłe nieograniczona pamięć ograniczona pamięć dyskowa operacyjna dostęp swobodny dostęp sekwencyjny plan zapytań definiowany na nieprzewidywalny y rozkład znanym rozkładzie danych danych stosowalność algorytmów konieczność stosowania wielo-przebiegowych algorytmów jednoprzebiegowych

Data Streams Management System zarejestrowane ciągłe zapytania strumienie wejściowe Aplikacja DSMS strumienie wyników wyniki dane wejściowe trwała DB Bufory PAO

Model obliczeniowy strumieni danych Strumienie danych Streszczenia w PAO Przetwarzanie Aproksymowane strumieni wyniki Strumień danych jest potencjalnie nieograniczoną, intensywną sekwencją danych Przetwarzanie strumieni i danych wiąże ż się z: Co najwyżej jednokrotnym dostępem do każdego z elementów Ograniczonym obszarem składowania streszczeń (tym (y bardziej wszystkich elementów strumieni) Przetwarzaniem w czasie rzeczywistym czas przetwarzania pojedynczego rekordu musi być ć bardzo krótki Możliwością utraty danych wejściowych

Algorytmy przetwarzania strumieni danych W ogólności, ś algorytmy wyznaczają jedynie przybliżone odpowiedzi d i Trudność wyznaczenia dokładnych wyników jest konsekwencją ograniczonego g rozmiaru PAO i intensywności strumienia wejściowego Wyniki aproksymowane - granice deterministyczne Algorytmy wyznaczają przybliżone wyniki, ale wielkość błędów jest znana i ograniczona Wyniki aproksymowane - granice probabilistyczne Algorytmy wyznaczają przybliżone wyniki z wysokim prawdopodobieństwem Jednoprzebiegowe algorytmy przetwarzania strumieni i stosowalne dla intensywnych terabajtowych strumieni danych

Przykładowe aplikacje Bezpieczeństwo sieci (np., ipolicy, NetForensics/Cisco, Niksun) Strumień ń pakietów sieciowych, i informacje o sesjach użytkowników Zapytania: filtrowanie i URL, wykrywanie włamań, ł ń ataków typu DOS, wirusów Aplikacje finansowe (np., Traderbot) Strumień danych giełdowych, cen surowców, walut Zapytania: wyszukiwanie arbitażu, szukanie podejrzanych transakcji, itp.

Przykładowe aplikacje zarządzanie sieciami Szacowanie wielkości ruchu w sieci Ile bajtów było wysłanych między dwoma adresami IP? Jaka część ę adresów IP jest aktywna? Ranking adresów IP pod kątem aktywności Analiza ruchu Jaki jest średni czas trwania sesji dla danego adresu IP? Jaka jest mediana liczby bajtów w sesjach dla danego IP? Wykrywanie oszustw Lista sesji, dla których transmisja była większa niż 1000B Identyfikacja wszystkich sesji, których czas trwania był dwukrotnie częstszy niż typowy Bezpieczeństwo ń działania ł i sieci i List adresów IP o gwałtownym wzroście ruchu Identyfikacja adresów IP uczestniczących w ponad 1000 równoległych sesji

Przykładowe aplikacje zarządzanie sieciami Dane o sesjach (zebrane za pomocą Cisco NetFlow) Source Destination Duration Bytes Protocol 10.1.0.2 16.2.3.7 12 20K http 18.6.7.1 12.4.0.3 16 24K http 13.9.4.3 11.6.8.2 15 20K http 15.2.2.9 17.1.2.1 19 40K http 12.4.3.8 14.8.7.4 26 58K http 10.5.1.3 13.0.0.1 27 100K ftp 11.1.0.6 10.3.4.5 32 300K ftp 19.7.1.2 16.5.5.8 18 80K ftp AT&T zbiera 100 GBs danych każdego dnia

Przykładowe aplikacje monitorowanie giełdy Strumień ń cen i sprzedaży ż na giełdach w czasie Analiza techniczna dla inwestorów giełdowych Wsparcie dla decyzji o kupnie/sprzedaży Sygnalizacja wzrostu notowań giełdowych o co najmniej 5% Sygnalizacja Sygnalizacja monotonicznego wzrostu cen giełdowych dłuższego niż 1 godzina

Model danych strumieniowych Strumień Seria krotek uporządkowanych za pomocą znaczników czasowych Para (s,τ), s jest krotką, k a τ znacznikiem czasowym Relacja zmienny w czasie wielozbiór krotek Strumień S: <nazwa, wartość, τ> <AAAA, 12, 7:05> <BBBB, 21, 7:06> <CCCC, 17, 7:10> <AAAA, 11, 7:12> Relacja R R(7:00) R(8:00) <nazwa, wartość> <XXXX,25> <YYYY,13> <XXXX,19> <ZZZZ,15>

Znaczniki czasowe Explicite są częścią struktury elementów strumienia danych Implicite są dodawane ane przez DSMS w momencie odbioru poszczególnych elementów strumienia Czas ważności znaczniki reprezentują czas wystąpienia/ważności danej w świecie rzeczywistym Czas transakcyjny znacznik rejestruje czas pojawienia się informacji w systemie

Realizowane projekty DSMS Prototypy uniwersalnych DSMS STREAM (Stanford) Aurora (Brown, Brandeis, MIT) TelegraphCQ (Berkeley) Systemy wyspecjalizowane Tradebot (www.tradebot.com) finansowy serwis internetowy Tribeca (Bellcore) monitorowanie sieci Cougar (Cornell) sieci czujników Hancock(AT&T) sieci telekomunikacyjne Uniwersalne systemy komercyjne StreamBase (StreamBase Systems)

Język zapytań w DSMS deklaratywny (CQL) - oparty na rachunku relacji (STREAM), obiektowy - systemy monitorowania sieci czujników (Cougar), proceduralny - plan realizacji zapytania tworzony jest bezpośrednio przez użytkownika (Aurora/Borealis).

Języki bazujące na SQL Rozszerzaniem funkcjonalności języka SQL na strumieniowe bazy danych. Potrzeba nowej implementacji operatorów relacyjnych Operatory semantycznie blokujące zapytania ciągłe Operatory implementacyjnie i blokujące Operatory transformujące strumienie i relacje w strumieniowo-relacyjnych relacyjnych bazach danych Ruchome okna zapytań

Operacje blokujące Dana operacja jest blokująca, jeżeli uzyskanie pierwszej krotki wyniku wymaga odczy- tania całego ł zbioru wejściowego: avg, sort, min, max, mediana Ograniczenia w stosowaniu operacji blokują- cych na strumieniach danych nieskończony strumień wejściowy nigdy nie zwrócą wyniku.

Operacje blokujące Dane: operacja o i zbiory krotek A, B. Operacja o jest nieblokująca jeżeli: A B o(a) o(b) Operacje nieblokujące: selekcja, połączenie, eliminacja duplikatów. select * from S where S.wartość>10 Blokująca implementacja operacji Operacja połączenia jest operacją nieblokującą. Algorytm nested-loop jest blokującą implementacją operacji join.

Operacje blokujące Potencjalne rozwiązania: Ruchome okna danych, wyniki są generowane dla ograniczonych on ch podzbiorów danych (5 minut, 100 danych) rozszerzenie strumienia danych o dodatkowe informacje o tym, co może się pojawić w pozostałej części strumienia znaki interpunkcyjne (ang. punctuation) własności strumienia danych, na przykład wiedza o monotoniczności danych

Ruchome okna (sliding windows) Idea ruchomych okien polega na przetwarzaniu tylko ograniczonego ciągłego podzbioru danych ze strumienia, które mieszczą się w zdefiniowanym oknie Zalety Ruchomego okna: metoda aproksymacji przetwarzanie ograniczonego zbioru danych, dobrze zdefiniowane, łatwe do zrozumienia, determinizm działania, analiza najnowszych danych.

Ruchome okna w języku CQL Język bazujący na SQL rozszerzony, między innymi, o dwa dodatkowe operatory: [Rows n] okno o stałym rozmiarze obejmujące ostatnich n elementów strumienia [Range m jednostek czasu] okno o stałym rozmiarze obejmujące elementy strumienia, których znaczniki czasowe mieszczą się w przedziale czasowym [now m jedn. czasu, now] Szczególne przypadki: - m = now, m = - range unbounded

Ruchome okna w języku CQL select avg(s.wartość) from S [Rows 5] Transformacja strumienia w relację zawierającą 5 krotek o największych ę znacznikach czasu select * from R [Rows 1000],S [Range 5 min] where R.A = S.A and R.B > 10 Transformacja strumienia w relację zawierającą krotki, których znaczniki czasowe mieszczą się w przedziale [now 5min,now] now]

Ruchome okna select avg(s.wartość) from S [Rows 5] <AAAA, 12, 7:05> <BBBB, 21, 7:06> <CCCC, 17, 7:10> <AAAA, 11, 7:12> <DDDD, 7, 7:15> <EEEE, 13, 7:16> <FFFF, 19, 7:17>

Język kcql prototyp t Stanford Rozszerzenie języka SQL o: Nowy typ danych - Streams Semantyka ciągłych zapytań Definiowanie okien na strumieniach danych Próbkowanie strumieni danych Trzy operatory relation-to-streamto Istream, Dstream Rstream Select sum(z.wartość) from zamówienia z, wystawianie w [Range 1 Day] where z.id = w.id_zam and w.pracownik = 'Tarzan' and o.klient = 'Kowalski i Synowie'

Język kcql prototyp t Stanford Próbkowanie strumieni danych Select w.pracownik, max(z.wartość) from zamówienia z, wystawianie w [partition by pracownik rows 5] 10% sample where z.id = w.id_zam group by w.pracownik Tranformacja relacji w strumień Select Istream(w.pracownik, max(z.wartość)) from zamówienia z, wystawianie w [partition by pracownik rows 5] 10% sample where z.id = w.id_zam group by w.pracownik

Język CQL Specyfikacja okna Strumienie Relacje Operatory: Istream, Dstream, Rstream Relacyjny język zapytań ISTREAM: strumień wstawianych krotek DSTREAM: strumień usuwanych krotek RSTREAM: strumień wszystkich krotek

Charakterystyka przetwarzania strumieni danych Istotne ograniczenia czasowe przetwarzanie w czasie rzeczywistym intensywnych strumieni danych wymaga zazwyczaj stosowania aproksymacji wyników zapytań i wyklucza stosowanie wolnych pamięci ę zewnętrznychę Istotne ograniczenia zasobowe przetwarzanie danych odbywa się ę w całości w pamięci ę operacyjnej j Konieczność stosowania algorytmów jednoprzebiegowych dostęp do danej jedynie w momencie jej pojawienia się

Wydajność przetwarzania strumieni wydajność czasowa operacja uaktualnienia struktury ( update(krotka) ) operacja wyznaczająca ostateczny wynik zapytania ( computeanswer() ) wydajność zasobowa rozmiar PAO możliwość dynamicznego dopasowania do określonego rozmiaru pamięci

Metodyprzetwarzania t danych Przetwarzanie grupowe Próbkowanie Streszczenia (synopses) Wavelet Szkicowanie Histogramy Mikro-grupy

Przetwarzanie grupowe Przetwarzanie grupowe - własności Szybka operacja update wstaw daną do bufora, wolna computeanswer() przelicz wszystkie dane w buforze Dane przed przetworzeniem są buforowane Dane nie są przetwarzane na bieżąco Przetwarzanie danych w grupach (paczkach) Wynik dane z przed chwili

Próbkowanie Próbkowanie - własności stosunkowo szybka operacja computeanswer(), wolna update() wyznaczanie próbki Dane przychodzą szybciej niż może zostać wykonane uaktualnienie struktury Stały obszar na przechowywanie reprezentatywnego podzbioru danych wejściowych Pojawienie się nowej danej na wejściu wiąże się z określonym prawdopodobieństwem jej wstawienia za losowo wybraną składowana daną Zapytanie wykonywane na próbce strumienia danych Odpowiedź przybliżona

Próbkowanie Dany strumień danych o długości N elementów i obszar w PAO do składowania próbki o rozmiarze n. Wyznaczanie kolejnego elementu do wstawienia do próbki na podstawie prawdopodobieństwa n/n Wyjściowy algorytm jest niestosowalny dla strumieni danych ze względu gę na brak ograniczenia ich rozmiaru. Potrzebne modyfikacje: Niezależność od rozmiaru strumienia Możliwość analizy danych przed zakończeniem ń strumienia Możliwość pomijania w analizie elementów strumienia wejściowego Możliwość wykonywania y zapytań w krótkim (okna) i długim horyzoncie czasowym

Próbkowanie losowe Wybór losowej próbki o rozmiarze n ze strumienia o nieznanej długości. ś Rozwiązania bazujące na algorytmie zbiornikowym: Wstaw pierwsze n elementów strumienia do zbiornika. Przetwarzaj sekwencyjnie kolejne elementy strumienia. Każdy z przetwarzanych elementów może być wstawiony do zbiornika z prawdopodobieństwem n/(t+1), gdzie t jest liczbą porządkową przypisywaną kolejnym elementom strumienia. Wstawiane elementy zastępują losowo wybrane elementy przechowywane w zbiorniku. W dowolnym momencie prawdopodobieństwo znalezienia się wszystkich elementów w zbiorniku jest stałe i wynosi n/t. W dowolnym momencie ze zbiornika może być pobrana losowa próbka danych o rozmiarze n.

Próbkowanie losowe algorytm R Algorytm R (Alan Waterman, Knuth) działa następująco: Kiedy przetwarzany jest (t+1) element strumienia wejściowego, gdzie t>n, utrzymywanych w zbiorniku n elementów, jest losową próbą pierwszych t elementów strumienia. Element (t+1) może być ć wstawiony do zbiornika z prawdopodobieństwem n/(t+1). Wstawiany element zastępuje losowo wybrany element ze zbiornika. for j := 0 to n - 1 do ReadNextElement(C[j]); t := n; // numer kolejnego elementu strumieni while not eof do // przetwarzaj kolejne elementy strumienia begin t := t + 1; m := Trunc (t x Random( )); // m zmienna losowa z zakresu 0 m t-1 if m < n then // zastąp element ze zbiornika ReadNextRecord(C[m]); else SkipElement(l); end;

Próbkowanie losowe - modyfikacje Złożoność obliczeniowa algorytmu R jest równa O(N). Zwiększenie ę wydajności algorytmu przez analizowanie jedynie podzbioru elementów ze strumienia N (Jeffrey Vitter). Złożoność czasowa algorytmu: O(n(1+log(N/n))) for j := 0 to n - 1 do ReadNextElement(C[j]); t := n; // numer kolejnego elementu strumieni while not eof do // przetwarzaj kolejne elementy strumienia i begin Generate an independent random variate ϑ(n, t); SkipElements(ϑ); // pomiń następnych ϑ elementów if not eof then begin m := Trunc (n x Random( )); // m zmienna losowa z zakresu 0 m n-1 ReadNextRecord(C[m]); t := t + ϑ + 1; end; end;

Streszczenia Streszczenia (synopses) - Skrótowa reprezentacja danych historycznych Wymagane własności: Szeroki zakres zastosowania Jednoprzebiegowe algorytmy utrzymania i wyznaczania wyników Duża wydajność czasowa (obciążenie procesora) i pamięciowa (zajętość pamięci) Poprawność dla różnych rozkładów danych Czułość na zmieniający się w czasie rozkład danych

Falki (ang. Wavelets) Pojęcie falki pochodzi z sejsmologii Falki opisują rozkład fal w impulsie W informatyce falki znalazły zastosowanie w metodach W informatyce falki znalazły zastosowanie w metodach kompresji, grafice komputerowej i bazach danych

Falki Funkcja macierzysta falki Haara ψ(t) jest zdefiniowana następująco: Funkcja skalująca φ(t) jest zdefiniowana i następująco: Dowolna funkcja może być ć aproksymowana przez liniową kombinację stałych funkcji:

Jednowymiarowe falki Haara Falki Haara umożliwiają wielopoziomową aproksymację Falki Haara umożliwiają wielopoziomową aproksymację kompletnego sygnału wejściowego (strumienia danych)

Jednowymiarowe falki Haara Falki: matematyczne narzędzie do hierarchicznej dekompozycji funkcji i sygnałów (rozkładu wartości strumieni danych) Falka Haara: Najprostsza falka łatwa do zrozumienia i implementacji Rekurencyjne wyznaczanie średnich i różnic między sąsiednimi parami wartości na kolejnych poziomach ogólności Rozdzielczość Średnie Utracona informacja 3 [2, 2, 0, 2, 3, 5, 4, 4] - 2 [2, 1, 4, 4] [0, -1, -1, 0] 1 [1.5, 4] [0.5, 0] 0 [2.75] [-1.25] Dekompozycja falką Haara: [2.75, -1.25, 0.5, 0, 1, -1, -1, 0]

Dekompozycja drzewo błędów Wynik dekompozycji umożliwia odtworzenie sygnału wyjściowego. Źródłowe wartości danych mogą być obliczone jako suma wartości wzdłuż prowadzącej do nich ścieżki. 275 2,75 1 0,5-1,25 + - + - + - -1-1 + - + - + - + - 2, 2, 0, 2, 3, 5, 4, 4 0 0

Przetwarzanie drzewa błędów Rekonstrukcja źródłowych wartości danych d(i) d(i) = Σ (+/-1) * współczynnik Obliczanie sum częściowych d(l:h) d(l:h) = liniowa kombinacja współczynników na ścieżkach od l do h Złożoność O(logN) d(1:4) = 4 * 2.75 + 4 * (-1.25) = 6 1 0,5 275 2,75-1,25 + - + - + - -1-1 + - + - + - + - 2, 2, 0, 2, 3, 5, 4, 4 d(6) = 2.75 (-1.25) + 0 (-1) = 5 0 0

Streszczenia za pomocą falek Możliwości kompresji drzew dekompozycji do zadanego rozmiaru drzewa Dla danego drzewa dekompozycji i zadanego obszaru pamięci B przeznaczonego dla streszczenia (B << D ); wyznacz wartość progową dla współczynników x, taką ą by: istniało dokładnie B współczynników o wartościach mniejszych od x. 0,5 2,75 D = 8 B = 4 x = 1-1,25 + - + - + - 1-1 -1 + - + - + - + - 2, 2, 1, 1, 4, 4, 4, 4 0 0

Szkicowanie Techniki szkicowania (sketching techniques) Szkicowanie polega na budowaniu podsumowania strumienia danych przy użyciu małej ilości pamięci. Jest stosowane do szacowania odpowiedzi na pewne zapytania a a (najczęściej zapytania a a o odległości między danymi) do zbioru danych.

Histogramy Histogramy są popularnym w systemach baz danych narzędziem ę służącym ą do szacowania rozkładów danych select * from pracownicy where płaca < 100 000 5000 100 000 Oszacuj selektywność zapytania, przy założeniu, że: min(płaca) = 1200 zł max(płaca) = 250 000 zł brak informacji o rozkładzie danych Dla rozkładu równomiernego σ = (100 000 1200)/(250 000 1200) = 0,4 40% pracowników zarabia poniżej 100 000 zł

Histogramy Celem jest utrzymywanie y informacji o rozkładzie w efekywny y sposób. Typy histogramów: EquiWidth - podział dziedziny na przedziały o stałej długości: <v 0 v 0 +d) n 0, <v 0 +d v 0 +2d) n 1,... EquiDepth - podział zbioru danych na n podzbiorów o stałej wielkości: (580 1200) 1, (1201 1350) 2,..., (4510 128000) n End-Biased - najczęściej występujące wartości: 2500 123, 2800 87, 2100 45, inne 459 V-Optymalne minimalizujące wariancję częstości wartości przechowywanych w poszczególnych przedziałach

Histogramy dynamiczne Histogramy stosowane z bazach danych w procesie optymalizacji zapytań są statyczne. Ich utrzymanie polega na okresowej przebudowie od podstaw. W strumieniowych bazach danych niezbędne jest ciągłe, przyrostowe utrzymywanie histogramów. Jednoprzebiegowe metody utrzymania histogramów opierają się na próbkowaniu strumienia wejściowego. Dla histogramu Equi-Depth na podstawie próbki szacowane są wartości graniczne przedziałów. Na podstawie nierówności Hoeffdinga można wykazać, że danych kwantyl próbki mieści się w przedziale: (q - ε, q+ε) z prawdopodobieństwem 1 - σ, jeżeli rozmiar próbki jest większy niż O(log(σ)/ε 2.

Micro-Clusters Co to są mikro-grupy Mikro-grupa jest zbiorem elementarnych punktów danych, które znajdują się na tyle blisko siebie, że są traktowane jako pojedyncze punkty w dalszej analizie makro-grup. Perspektywa mikro-grup Perspektywa makro-grup

Micro-Clusters Jak pamiętane są mikro-grupy Mikro-grupa jest reprezentowana przez uporządkowaną piątkę: x x t t CFT ( C ) = ( CF 2, CF 1, CF 2, CF 1, n ) Dla każdego wymiaru, suma kwadratów wartości danych jest utrzymywana w CF2 x. Stąd CF2 x zawiera d wartości. Dla każdego wymiaru, suma wartości danych jest utrzymywana w CF1 x. Stąd CF1 x zawiera d wartości. Suma kwadratów znaczników czasowych jest utrzymywana w CF2 t. Suma znaczników czasowych jest utrzymywana w CF2 t.

BaseStream Uniwersalny komercyjny DSMS

BaseStream CREATE STREAM TicksWithTime AS SELECT *, now() AS LocalTime FROM TicksIn; CREATE STREAM TicksPerSecond AS SELECT openval() AS StartOfTimeSlice, count() AS NumberTicks,FeedName FROM TicksWithTime [SIZE 1 ON LocalTime PARTITION BY FeedName] GROUP BY FeedName;

BaseStream Następujący przykład pokazuje buforowanie strumienia danych w.net: using StreamBase.SB; using StreamBase.SB.Client; // connect to the StreamBase Server. string uri = "sb://localhost:10000"; int buf_size = 100; int flush_interval = 1000; StreamBaseClient t client = new StreamBaseClient(uri); t( i) client.enablebuffering(buf_size,flush_interval);