Unifikovan architektura databze Katsiaryna Chernik Unifikovan architektura databze
Unifikovaná architektura databáze Katsiaryna Chernik
Unifikovaná architektura databáze • Caché díky své architektuře uložení dat je schopna pracovat s daty jak z pohledu objektového tak relačního. • Nedochází ke ztrátě výkonu při přístupu k datům
Unifikovaná architektura databáze Unified Data Architecture Class Not Resynchronization Table u One definition u Two definitions u No need for synchronization u Constant need for synchronization
Unifikovaná architektura databáze • Objekty jsou organizovány do tříd • Definice tříd jsou uloženy spolu s ostatními daty v Caché Class Dictionary (slovník tříd). • Definice tříd kompilace Dvě sady kódů navzájem synchronizované objektový přístup relační přístup
Objekt / Relace Objekt Balík Třída Instance objektu Vlastnost Relace Vnořený objekt Metoda Relace Schéma Tabulka Řádek v tabulce Sloupec Cizí klíč Sloupce Procedura Index
Vlastnost / Sloupec Class User. Osoba Extends %Persistent [ Class. Type = persistent, Procedure. Block ] { Property Jmeno As %String; } Tabulka Osoba ID Jmeno 1 Jiří Novák 2 Jan Černý Object. Script Routines Set osoba=##class(User. Osoba). %New() Set osoba. Jmeno="Jiří Novák " set sc=osoba. %Save() quit SQL INSERT INTO SQLUser. Osoba (Jmeno) VALUES „Jan Černý“
Fyzické úložiště dat Data se ukládají do vícerozměrného řídkého pole. Pro zobrazení vícerozměrných datových struktur se používá stromový pohled.
Přístup k datum v Caché Relational View For Standards SQL ODBC Object View Direct View For Interoperation Multi-Dimensional Database For Speed
Přístup k datum v Caché Read !, ”Person Id >”, id ; using Object Syntax Set p=##class(User. Osoba). %Open. Id(id) Write !, p. Jmeno ; using SQL &sql(Select Jmeno into : jmeno from SQLUser. Osoba where Id=: id) Write !, name ; using Direct Global Access Write !, $List(^User. Osoba. D(id), 2)
Pole / Tabulka Vlastnost typu pole, které nabývá libovolného počtu hodnot, je transformována na samostatnou tabulku. Class User. Osoba Extends %Persistent [ Class. Type = persistent, Procedure. Block ] { Property Jmeno As %String; Property Pratele As %String [ Collection = array ]; } Pole Pratele: Honza Jan Valach Jitka Nova
Pole / Tabulka Routines Set osoba=##class(User. Osoba). %Open. Id(1) do osoba. Pratele. Set. At("Jan Valach", "Honza") do osoba. Pratele. Set. At("Jitka Nova", "Jitka") set sc=osoba. %Save() quit Tabulka Osoba_Pratele Osoba ID Pratele Element_key 1 1||Honza Jan Valach Honza 1 1||Jitka Nová Jitka
Fyzické úložiště dat Vlevo od znaménka “=” jsou vidět jednotlivé “dimenze”, vpravo pak data příslušná instanci objektu v dané dimenzi. Pole přátel je uloženo o úroveň níže než detaily osoby.
Vnořené třídy Data obsažená ve vnořených třídách jsou vždy uložena spolu s daty persistentní třídy, jež na vnořenou třídu odkazuje. Class User. Adresa Extends %Serial. Object [ Class. Type = serial, Procedure. Block ] { Property Sidlo As %String; Property Ulice As %String; } Typ seriál znamená, že třída může byt vnořena do persistentní třídy.
Vnořené třídy Class User. Osoba Extends %Persistent [ Class. Type = persistent, Procedure. Block ] { … Property Adresa As User. Adresa; }
Vnořené třídy Routines Set osoba 1=##class(User. Osoba). %Open. Id(1) Set osoba 1. Adresa. Sidlo="Praha 1" Set osoba 1. Adresa. Ulice="Dlouha 12" Set sc=osoba 1. %Save() Set osoba 2=##class(User. Osoba). %Open. Id(2) Set osoba 2. Adresa. Sidlo="Praha 1" Set osoba 2. Adresa. Ulice="Karlova 10" set sc=osoba 2. %Save() quit Tabulka Osoba ID 1 2 Jmeno Jiří Novák Jan Černý Adresa_Sidlo Praha 1 Adresa_Ulice Dlouha 12 Karlova 10
Dědičnost a SQL Class User. Zamestnanec Extends User. Osoba [ Class. Type = persistent, Procedure. Block ] { Property Plat As %Integer(MAXVAL = 1000000, MINVAL = 0); } ID Jmeno Adresa_Sidlo 3 David Gino Praha 1 Tabulka Zamestnanec Adresa_Ulice Plat Ke Karlovu 8 9000
Dědičnost a SQL Tabulka Osoba ID Jmeno Adresa_Sidlo Adresa_Ulice 1 Jiří Novák Praha 1 Dlouhá 12 2 Jan Černý Praha 1 Karlova 10 3 David Gino Praha 1 Ke Karlovu 8
Závěr Jedna definice dat – Objekt – SQL – Přímý přístup
- Slides: 18