Języki i środowiska przetwarzania danych rozproszonych

Podobne dokumenty
Temat : SBQL 1 obiektowy język zapytań.

Temat : SBQL 1 obiektowy język zapytań.

SBQL. język zapytań dla obiektowych baz danych. Kamil Adamczyk. Uniwersytet Warszawski 20.IV.2009

Technologie baz danych

Języki i Środowiska Programowania Baz Danych 2010/2011 PJWSTK, 2010

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Języki i środowiska przetwarzania danych rozproszonych

Fazy przetwarzania zapytania zapytanie SQL. Optymalizacja zapytań. Klasyfikacja technik optymalizacji zapytań. Proces optymalizacji zapytań.

JPS. cwiczenia 3. Stosy, proste zapytania. Michał Lentner Polsko-Japońska Wyższa Szkoła Technik Komputerowych

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

3. Podzapytania, łączenie tabel i zapytań

Teoretyczne podstawy informatyki

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

KOR. Konstrukcja systemów obiektowych i rozproszonych. PJWSTK, 2010 Emil Wcisło.

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

LITERATURA. Wprowadzenie do systemów baz danych C.J.Date; WNT Warszawa 2000

PODZAPYTANIE (SUBSELECT)

BAZY DANYCH. Anomalie. Rozkład relacji i normalizacja. Wady redundancji

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

SQL (ang. Structured Query Language)

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Spis treści. Przedmowa

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

Model relacyjny. Wykład II

Microsoft SQL Server Podstawy T-SQL

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

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

Przestrzenne bazy danych Podstawy języka SQL

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Wykład XII. optymalizacja w relacyjnych bazach danych

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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Wprowadzenie do języka SQL

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Podstawy programowania. Wprowadzenie

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

Bazy danych. Dr inż. Paweł Kasprowski

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Language INtegrated Query (LINQ)

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Materiały szkoleniowe. Podstawy języka SQL

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

Paweł Rajba

KARTA KURSU. Języki skryptowe

Grupowanie i funkcje agregacji

Model relacyjny. Wykład II

INŻYNIERIA OPROGRAMOWANIA

Język SQL podstawy zapytań

Bazy danych wykład trzeci. Konrad Zdanowski

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Podstawy programowania Pascal/Java/C# : skrypt do wykładu i laboratoriów / Jacek M. Czerniak, Łukasz Apiecionek, Grzegorz Zych.

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

Kierunek: Matematyka - inż., rok I specjalność: informatyczna

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne

Programowanie obiektowe

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

KARTA KURSU. Wstęp do programowania

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2014/15

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa i multimedia

Wprowadzenie do baz danych

PRZEWODNIK PO PRZEDMIOCIE

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Systemy GIS Tworzenie zapytań w bazach danych

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Struktura drzewa w MySQL. Michał Tyszczenko

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Tabela odniesień kierunkowych efektów kształcenia do efektów obszarowych:

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Podstawy Programowania Obiektowego

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

1 Wstęp do modelu relacyjnego

Autor: Joanna Karwowska

Wprowadzenie do programowania

Spis treści. I. Pascal

Oracle11g: Wprowadzenie do SQL

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

RBD Relacyjne Bazy Danych

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

Scala - programowanie obiektowo-funkcyjne

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

PRZEWODNIK PO PRZEDMIOCIE

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

forma studiów: studia stacjonarne Liczba godzin/tydzień: 1, 0, 2, 0, 0

Jerzy Nawrocki, Wprowadzenie do informatyki

Transkrypt:

Języki i środowiska przetwarzania danych rozproszonych Wprowadzenie do przetwarzania kolekcji w językach programowania Wykładowca: Tomasz Kowalski Wykład przygotowany na podstawie materiałów prof. Kazimierza Subiety Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 1 2016

Generalne założenia podejścia stosowego stack-based approach, SBA Podejście stosowe zakłada, że języki zapytań są szczególnym przypadkiem języków programowania. Stąd teorie języków programowania są bardziej adekwatne niż podejścia takie jak algebra relacyjna, rachunek relacyjny lub logika matematyczna. W podejściu stosowym kluczową rolę odgrywa stos środowisk (environment stack), który jest podstawowym mechanizmem praktycznie wszystkich popularnych języków programowania. Jego rolą jest określenie zakresów nazw (scoping), wiązanie nazw (binding) oraz wprowadzenie dyscypliny w zakresie alokowania dynamicznych bytów programistycznych, w szczególności lokalnych danych (obiektów) i parametrów procedur. EFEKTy: Dwóch zdolnych studentów znających podejście stosowe potrafi zaprojektować i zaimplementować w ciągu roku lepszy i mocniejszy język zapytań niż duże konsorcja specjalistów z renomowanych firm zachodnich. Ten eksperyment został już przynajmniej 5-krotnie powtórzony w PJWSTK. Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 2 2016

SBQL Języka zapytań SBQL (Stack Based Query Language) jest oparty na podejściu stosowym. SBQL jest pewną idealizacją opartą na abstrakcyjnej składni, pokazującą istotę semantyki operatorów wprowadzonych w większości języków zapytań. SBQL pełni on tę samą rolę, którą w relacyjnych językach zapytań pełni algebra relacji i rachunek relacyjny. Zasadniczą nowością wprowadzoną w SBQL są operatory niealgebraiczne, takie jak operatory selekcji, projekcji/nawigacji, złączenia, kwantyfikatory, operator tranzytywnego domknięcia i operator porządkowania. Semantyka tych operatorów nie może być wyrażona w terminach algebry podobnej do algebry relacji. Jak się okazało, ich semantykę można w prosty sposób wyrazić poprzez operacje na stosie środowiskowym, przy czym pewnym zaskoczeniem jest to, że semantyka tych wydawałoby się bardzo różnych operatorów jest oparta o ten sam prosty mechanizm. Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 3 2016

Zapytania = wyrażenia W naszym podejściu zapytania będą pełnić rolę wyrażeń znanych z języków programowania. Przyjęta przez nas zasada ortogonalnej trwałości nie różnicuje sposobów dostępu do trwałych i nietrwałych danych. Wobec tego nasze zapytania będą również stosowane do nietrwałych danych. Inaczej mówiąc przyjęliśmy, że w naszym hipotetycznym języku programowania nie będzie innych wyrażeń niż zapytania. Zapytaniami będą więc także klasyczne wyrażenia takie jak 2+2, sin(x), A[i+1], itd. To założenie jest pewną rewolucją w odniesieniu do języków zapytań. Tradycyjnie, np. w języku SQL zapytania (zagnieżdżone w język programowania) mogły odwoływać się do zmiennych języka programowania poprzez specjalną składnię. Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 4 2016

SBQL vs SQL proste przykłady (1/2) Zwróć wszystkie informacje o pracownikach select * from Emp Emp Zwróć nazwiska wszystkich pracowników select name from Emp Emp.name Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 5 2016

SBQL vs SQL proste przykłady (2/2) Zwróć wszystkie informacje o pracownikach o nazwisku Doe select * from Emp where name = Doe Emp where name = Doe Zwróć nazwiska i zarobki pracowników o nazwisku Doe select name, sal from Emp where name = Doe (Emp where name = Doe ).(name, sal) Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 6 2016

SBQL vs PYTHON przykład Zwróć unikatowe nazwiska pracowników (tzn. występujące tylko raz). PYTHON: di = {} for w in names: di[w] = di.get(w, 0) + 1 uniquewords = [k for k,v in di.items() if v == 1] (Emp as e1 where count(emp where name=e1.name)=1).e1.name select e1.name from Emp e1 where (select count(*) from Emp where name = e1.name)=1; Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 7 2016

SBQL vs grupowanie w SQL przykład (1/2) Zwróć średnią liczbę pracowników w działach. select avg(aux.c) from (select count(*) as c from Emp group by dept_id) as aux; avg(dept.count(emp where id_dept = dept_id)) avg((unique(emp.dept_id) as id_dept). count(emp where id_dept = dept_id)) SBQL (model danych objektowy): avg(dept.count(employs)) Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 8 2016

SBQL vs grupowanie w SQL przykład (2/2) Dla każdego departamentu, w którym pracuje przynajmniej 50 pracowników, pobierz nazwę działu i średnią pensje. select d.name, avg(e.sal) from Emp e, Dept d where e.dept_id = d.id_dept group by e.dept_id, d.name having count(e.*) > 50 ((Dept as d) join ((Emp where dept_id = d.id_dept) groupas e ) where count(e) > 50). (d.name, avg(e.sal)) SBQL (model danych objektowy): (Dept where count(employs) > 50). (name, avg(employs.emp.sal)) Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 9 2016

SBQL4J - SBQL i Java Znajdź produkty, które są na magazynie i kosztują więcej niż 3 za sztukę. List<Product> products = getproductlist(); List<Product> expensiveinstockproducts = #{ products where unitsinstock > 0 and unitprice > 3.00 }; Czy to prawda, że każdy departament zatrudnia pracownika zarabiającego tyle co jego szef? List<Department> dept = data.getdepts(); Boolean res = #{ all (dept as d) any ((d.employs minus d.boss) as e) (e.salary == d.boss.salary) }; Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 10 2016

Języki zapytań jako wyrażenia programistyczne To podejście zakłada nowy rodzaj języka programowania, w którym występują specyficzne wyrażenia (podobne do klasycznych wyrażeń języka oprogramowania) zwane zapytaniami. Istotą tych nowych wyrażeń jest obsługa kolekcji. W tej roli języki zapytań są wyższym szczeblem abstrakcji nad konstrukcjami organizującymi pętle (while, repeat, goto, for, loop, itp.), iteratorami, kursorami i innymi tego rodzaju udogodnieniami. Zapytania koncepcyjnie hermetyzują pętle iteracyjne w języku programowania przy pomocy operatorów takich jak selekcja (where), projekcja, złączenie, unia, kwantyfikatory, grupowanie, sortowanie, itp. Słowo koncepcyjnie jest tu istotne, gdyż chodzi o taką hermetyzację, która jest naturalna, zrozumiała i czytelna dla programisty; wspomagająca procesy modelowania pojęciowego przy tworzeniu aplikacji. W tej koncepcji języki zapytań są tworami całkowicie ortogonalnymi w stosunku do cechy trwałości danych (czyli bazy danych). Języki i środowiska przetwarzania danych rozproszonych, SBA i SBQL, Slajd 11 2016