Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd 1 2011 Języki i środowiska programowania systemów rozproszonych Wykładowca:

Slides:



Advertisements
Podobne prezentacje
Optymalizacja zapytań
Advertisements

Podział i zastosowanie
Standardowa biblioteka języka C++
Obiektowe języki zapytań
© K.Subieta. Obiektowe języki zapytań 08, Folia 1 kwiecień 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
Rafał Hryniów Tomasz Pieciukiewicz
Bazy danych i inżynieria oprogramowania
Bazy danych i inżynieria oprogramowania
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Wprowadzenie do C++ Zajęcia 2.
© K.Subieta. Konstrukcja systemów obiektowych i rozproszonych 3, Folia 1 październik 2004 Konstrukcja systemów obiektowych i rozproszonych Wykładowca:
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Relacyjny model danych
© K.Subieta. Obiektowe języki zapytań 05, Folia 1 marzec 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
© K.Subieta. Obiektowe języki zapytań 09, Folia 1 maj 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 1 marzec 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła.
© K.Subieta. Obiektowe języki zapytań 07, Folia 1 kwiecień 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
Marcin Pamuła Mateusz Stefek
Domknięcie przechodnie (również) w bazach danych
Generyczne Repozytorium Dokumentów w XML
Podejście stosowe do obiektowych języków programowania baz danych
© K.Subieta. Podejście stosowe 05, Folia 1 Podejście stosowe do obiektowych języków programowania baz danych Wykład 05 Abstrakcyjne modele składu obiektów.
PySBQL Język zapytań dla obiektowych baz danych. Aplikacje bazodanowe Główny nurt budowania aplikacji opiera się na połączeniu: SQL JDBC Java Jak wyświetlić
Język SQL – zapytania zagnieżdżone (podzapytania)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
Zapytania SQL: wydajność i optymalizacja
Wykład 8 Wojciech Pieprzyca
BD-LAB6 Wojciech Pieprzyca
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Analiza, projekt i częściowa implementacja systemu obsługi kina
Język SQL – podstawy zapytań
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Bazy Danych Wykład 1 S. Kozielski.
Teoria relacyjnych baz danych
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Podejście stosowe do obiektowych języków programowania baz danych
Automatyczne dereferencje w języku SBQL
Źródła: podręcznikopracował: A. Jędryczkowski.
Delphi i Acad cd.. l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz);
Języki i środowiska programowania systemów rozproszonych, Wykład 06, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 02, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 04, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 11, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
SQL - Structured Query Language
Konstrukcja systemów obiektowych i rozproszonych, Wykład 06, Slajd Konstrukcja systemów obiektowych i rozproszonych Wykładowca: Tomasz Kowalski.
Języki i środowiska programowania systemów rozproszonych, Wykład 09, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 07, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 12, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 05, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Programowanie obiektowe 2013/2014
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Łódź 2008 Banki danych WYKŁAD 2 dr Łukasz Murowaniecki T-109.
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Model obiektowy bazy danych
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Plan prezentacji PJWSTK Motywacje powstania Cele projektu Podstawowe założenia Niezgodność impedancji Integracja składniowa Architektura rozwiązania.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Widoki (views) - Perspektywy:
Strukturalny język zapytań SQL - historia
Obiektowe języki zapytań
Obiektowe języki zapytań
Zapis prezentacji:

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca: Tomasz Kowalski Wykłady przygotowane na podstawie materiałów prof. Kazimierza Subiety Wykład 1 c.d. Wprowadzenie do SBA i SBQL

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Generalne założenia podejścia stosowego 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. stack-based approach, SBA

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Podejście stosowe jako efektywna teoria Podejście stosowe jest konkurencją dla teorii znanych z modelu relacyjnego, takie jak algebra relacyjna, rachunek relacyjny i logika matematyczna. Podejście stosowe jest samo-wystarczalne – w zakresie dowolnego tematu dotyczącego obiektowych baz danych, włączając optymalizację zapytań nie potrzebuje posiłkować się jakimikolwiek innymi teoriami, np. obiektowymi algebrami. Podejście stosowe eksponuje braki i wady obecnych teorii w zakresie baz danych, pokazując ich ograniczenia i nieadekwatność do problemu.

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Co daje efektywna teoria? Brak spójnej, całościowej i uniwersalnej teorii języków zapytań podczas tworzenia standardów ODMG i SQL-99 jest podstawową przyczyną ich wad. W efekcie chaotycznych decyzji nie opierających się o jakąkolwiek spójną teorię, standardy te są intelektualnymi i technicznymi bublami nie nadającymi się do dydaktyki i do efektywnej całościowej implementacji. 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ż 5- krotnie powtórzony w PJWSTK.

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd SBQL Podczas wykładu zostaną wyjaśnione założenia i semantyka języka zapytań SBQL (Stack Based Query Language) opartego 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 nie- algebraiczne, 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 programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd 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 programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd SBQL vs SQL proste przykłady (1/2) Pobierz wszystkie informacje o pracownikach SQL: select * from Emp SBQL: Emp Pobierz nazwiska wszystkich pracowników SQL: select name from Emp SBQL: Emp.name

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd SBQL vs SQL proste przykłady (2/2) Pobierz wszystkie informacje o pracownikach o nazwisku Doe SQL: select * from Emp where name = Doe SBQL: Emp where name = Doe Pobierz nazwiska i zarobki pracowników o nazwisku Doe SQL: select name, sal from Emp where name = Doe SBQL: (Emp where name = Doe).(name, sal)

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd 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] SBQL: (Emp as e1 where count(Emp where name=e1.name)=1).name SQL: select e1.name from Emp e1 where (select count(*) from Emp where name = e1.name)=1;

Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd SBQL vs grupowanie w SQL przykład (1/2) Zwróć średnią liczbę pracowników w działach. SQL: select avg(aux.c) from (select count(*) as c from Emp group by dept_id) as aux; SBQL: avg(Dept.count(Emp where id_dept = dept_id)) SBQL: 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 programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd 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. SQL: 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 SBQL: ((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 programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd SBQL4J - SBQL i Java Znajdź produkty, które są na magazynie i kosztują więcej niż 3 za sztukę. List products = getProductList(); List 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 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 programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd 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).