Paweł Mantur Implementacja schematów i statycznej kontroli typów w systemie JLoXiM projekt rozwiązania 2009-11-12
Schematy w bazach danych Relacyjne bazy danych: tabele, kolumny, typy danych, klucze itp. 2
Schematy w bazach danych Relacyjne bazy danych: tabele, kolumny, typy danych, klucze itp. XML: DTD, XMLSchema 3
Schematy w bazach danych Relacyjne bazy danych: tabele, kolumny, typy danych, klucze itp. XML: DTD, XMLSchema Obiektowe bazy danych: OMG IDL, ODMG ODL 4
Rola schematów Definiowanie zawartości bazy danych 5
Rola schematów Definiowanie zawartości bazy danych Opisywanie zawartości 6
Rola schematów Definiowanie zawartości bazy danych Opisywanie zawartości Więzy integralności 7
Rola schematów Definiowanie zawartości bazy danych Opisywanie zawartości Więzy integralności Użyteczne przy optymalizacji 8
Rola schematów Definiowanie zawartości bazy danych Opisywanie zawartości Więzy integralności Użyteczne przy optymalizacji Umożliwiają kontrolę typów 9
Komponenty System typów 10
Komponenty System typów Schemat zewnętrzny: język do definiowania schematów 11
Komponenty System typów Schemat zewnętrzny: język do definiowania schematów Reprezentacja wewnętrzna: metabaza 12
Komponenty System typów Schemat zewnętrzny: język do definiowania schematów Reprezentacja wewnętrzna: metabaza Store + schema 13
Komponenty System typów Schemat zewnętrzny: język do definiowania schematów Reprezentacja wewnętrzna: metabaza Store + schema Sygnatury 14
Komponenty System typów Schemat zewnętrzny: język do definiowania schematów Reprezentacja wewnętrzna: metabaza Store + schema Sygnatury Aparat statycznej kontroli typów 15
Komponenty System typów Schemat zewnętrzny: język do definiowania schematów Reprezentacja wewnętrzna: metabaza Store + schema Sygnatury Aparat statycznej kontroli typów Schema code writer 16
System typów Typy proste atomowe: string boolean int, decimal, real date, time, datetime binary object 17
System typów Restrykcje typów prostych create constraint PositiveInteger restricts int { minvalue: 0; defaultvalue: 1; } 18
System typów Restrykcje typów prostych create constraint PositiveInteger restricts int { minvalue: 0; defaultvalue: 1; } restrykcje tworzą nowe typy atomowe 19
System typów Restrykcje typów prostych create constraint PositiveInteger restricts int { minvalue: 0; defaultvalue: 1; } restrykcje tworzą nowe typy atomowe opcje zależą od typu bazowego, który ograniczamy 20
System typów Restrykcje typów prostych create constraint PositiveInteger restricts int { minvalue: 0; defaultvalue: 1; } restrykcje tworzą nowe typy atomowe opcje zależą od typu bazowego, który ograniczamy np. dla typu string: length, regex, maxlength... 21
System typów Klasy pola 22
System typów Klasy pola metody 23
System typów Klasy pola metody wielodziedziczenie 24
System typów Klasy pola metody wielodziedziczenie role 25
System typów Klasy pola metody wielodziedziczenie role nazwa obiektów będących instancj 26
System typów Klasy pola metody wielodziedziczenie role nazwa obiektów będących instancją lista eksportowa 27
System typów Klasy pola metody wielodziedziczenie role nazwa obiektów będących instancją lista eksportowa więzy integralności 28
System typów Liczebności [0..1] albo? - wartość opcjonalna 29
System typów Liczebności [0..1] albo? - wartość opcjonalna [1..1] - wartość wymagana (domyślne) 30
System typów Liczebności [0..1] albo? - wartość opcjonalna [1..1] - wartość wymagana (domyślne) [0..*] - kolekcja 31
System typów Liczebności [0..1] albo? - wartość opcjonalna [1..1] - wartość wymagana (domyślne) [0..*] - kolekcja [1..*] - niepusta kolekcja 32
System typów Predefiniowane typy złożone xml wymuszanie struktury XML wsparcie dla DOM, XSLT, Xquery 33
System typów Predefiniowane typy złożone xml wymuszanie struktury XML wsparcie dla DOM, XSLT, Xquery any luźna struktuta brak narzyconej struktury schemat dynamiczny 34
System typów Enumeratory create enum AtomicType { } int, string, bool, datetime, binary = 7 wewnętrznie jest to int domyślna numeracja od 0 35
System typów Constraints (więzy integralności) Wewnątrz definicji klasy constraint cardinalityconstraint "minoccurences <= maxoccurences" on maxoccurences, minoccurences; 36
System typów Constraints (więzy integralności) Wewnątrz definicji klasy constraint cardinalityconstraint "minoccurences <= maxoccurences" on maxoccurences, minoccurences; Poza definicją klasy constraint cardinalityconstraint restricts FieldType "minoccurences <= maxoccurences" on maxoccurences, minoccurences; 37
Schemat zewnętrzny Nieoficjalana nazwa JLoXiM ODL 38
Schemat zewnętrzny Nieoficjalna nazwa JLoXiM ODL Rozszerzenie istniejącej gramatyki 39
Schemat zewnętrzny Nieoficjalna nazwa JLoXiM ODL Rozszerzenie istniejącej gramatyki Tworzenie/usuwanie klas, enumeratorów, restrykcji, więzów 40
Schemat zewnętrzny Nieoficjalna nazwa JLoXiM ODL Rozszerzenie istniejącej gramatyki Tworzenie/usuwanie klas, enumeratorów, restrykcji, więzów Gtramatyka dostępna na wiki: http://jloxim.mimuw.edu.pl/redmine/wiki/jloxi m/schemagrammar 41
Metabaza Część składu obiektów, gdzie pamiętamy definicje wprowadzone za pomocą schematu zewnętrznego 42
Metabaza Część składu obiektów, gdzie pamiętamy definicje wprowadzone za pomocą schematu zewnętrznego Zdefiniowanie schematu dla składu obiektów poprzez określenie typu (zazwyczaj klasy) dla korzenia 43
Metabaza Część składu obiektów, gdzie pamiętamy definicje wprowadzone za pomocą schematu zewnętrznego Zdefiniowanie schematu dla składu obiektów poprzez określenie typu (zazwyczaj klasy) dla korzenia Możliwość automatycznego dodania przestrzeni systemowej (metabazy) do schematu zewnętrznego 44
Organizacja metabazy Odpytywanie metabazy: sys.classes where name = MojaKlasa sys.schemainfo.rootclass.name 45
Organizacja metabazy Odpytywanie metabazy: sys.classes where name = MojaKlasa sys.schemainfo.rootclass.name Schemat metabazy w postaci diagramu UML... 46
47
Organizacja metabazy Odpytywanie metabazy: sys.classes where name = MojaKlasa sys.schemainfo.rootclass.name Schemat metabazy w postaci diagramu UML Schemat metabazy zapisany w JLoXiM ODL na wiki 48
Store + schema Skład obiektów ze świadomością posiadania schematu 49
Store + schema Skład obiektów ze świadomością posiadania schematu Kontrola operacji modyfikujących dane 50
Store + schema Skład obiektów ze świadomością posiadania schematu Kontrola operacji modyfikujących dane Odczytywanie informacji o typach z metabazy 51
Sygnatury Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury 52
Sygnatury Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury Sygnatury opisują wartości przetwarzane w czasie wykonania 53
Sygnatury Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury Sygnatury opisują wartości przetwarzane w czasie wykonania Niosą informację o typie lub możliwych typach obiektów 54
Sygnatury Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury Sygnatury opisują wartości przetwarzane w czasie wykonania Niosą informację o typie lub możliwych typach obiektów Można symulować wykonanie zapytania wykonując je na metabazie 55
Sygnatury Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury Sygnatury opisują wartości przetwarzane w czasie wykonania Niosą informację o typie lub możliwych typach obiektów Można symulować wykonanie zapytania wykonując je na metabazie Zamiast na rzeczywistych wartościach operujemy na sygnaturach 56
Statyczna kontrola typów Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów 57
Statyczna kontrola typów Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów Zamiast wartości sygnatury 58
Statyczna kontrola typów Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów Zamiast wartości sygnatury Wnioskowanie o typie wyniku na podstawie tabel decyzyjnych 59
Statyczna kontrola typów Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów Zamiast wartości sygnatury Wnioskowanie o typie wyniku na podstawie tabel decyzyjnych Nie o wszystkim da się zdecydować podczas kontroli statycznej 60
Statyczna kontrola typów Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów Zamiast wartości sygnatury Wnioskowanie o typie wyniku na podstawie tabel decyzyjnych Nie o wszystkim da się zdecydować podczas kontroli statycznej Pół-mocna kontrola typów 61
Tablice decyzyjne Tablica decyzyjna dla każdego operatora 62
Tablice decyzyjne Tablica decyzyjna dla każdego operatora Wnioskowanie o typie wyniku na podstawie typu argumentów 63
Tablice decyzyjne Tablica decyzyjna dla każdego operatora Wnioskowanie o typie wyniku na podstawie typu argumentów Czasami zbiór możliwych typów (wariant) 64
Tablice decyzyjne Tablica decyzyjna dla każdego operatora Wnioskowanie o typie wyniku na podstawie typu argumentów Czasami zbiór możliwych typów (wariant) Czasami odłożenie sprawdzenia poprawności typologicznej do czasu wykonania 65
Tablice decyzyjne Tablica decyzyjna dla każdego operatora Wnioskowanie o typie wyniku na podstawie typu argumentów Czasami zbiór możliwych typów (wariant) Czasami odłożenie sprawdzenia poprawności typologicznej do czasu wykonania Łatwa zmiana zachowania aparatu kontroli, poprzez zmianę tabel decyzyjnych 66
Tablice decyzyjne Tablica decyzyjna dla każdego operatora Wnioskowanie o typie wyniku na podstawie typu argumentów Czasami zbiór możliwych typów (wariant) Czasami odłożenie sprawdzenia poprawności typologicznej do czasu wykonania Łatwa zmiana zachowania aparatu kontroli, poprzez zmianę tabel decyzyjnych Wiele decyzji to kwestia upodobań 67
Schema code writer Eksport metabazy do postaci zewnętrznej 68
Schema code writer Eksport metabazy do postaci zewnętrznej Generowanie bibliotek klienckich 69
Schema code writer Eksport metabazy do postaci zewnętrznej Generowanie bibliotek klienckich Dostarczenie API umożliwiającego pisanie plug-in'ów generujących różne formaty (XML, Java, C#, UML,...) 70
Schema code writer Eksport metabazy do postaci zewnętrznej Generowanie bibliotek klienckich Dostarczenie API umożliwiającego pisanie plug-in'ów generujących różne formaty (XML, Java, C#, UML,...) Implementacja eksportu do JLoXiM ODL 71
Dziękuję. 72