69
Rīgas Tehniskā Universitāte Datorzinātnes un informācijas tehnoloģijas fakultāte INFORMĀCIJAS TEHNOLOĢIJAS INSTITŪTS Lielu datu bāzu tehnoloģija TEMPORĀLĀS DATUBĀZES IZVEIDOŠANA UN TEMPORĀLO VAICĀJUMU REALIZĒŠANALaboratorijas darbs Nr.2 Izstrādāja: Liāna Natenadze DMIO2 051RDB234

RĪGAS TEHNISKĀ UNIVERSITĀTE - Datu bāzes tehnoloģijas  · Web view13.2.Informix TimeSeries Datablade48. 13.3.Immortal DB (prototips no Microsoft)48. 13.4.Oracle Flashback Tehnoloģija49

Embed Size (px)

Citation preview

Rīgas Tehniskā Universitāte

Datorzinātnes un informācijas tehnoloģijas fakultāte

INFORMĀCIJAS TEHNOLOĢIJAS INSTITŪTS

Lielu datu bāzu tehnoloģija

„TEMPORĀLĀS DATUBĀZES IZVEIDOŠANAUN

TEMPORĀLO VAICĀJUMU REALIZĒŠANA”

Laboratorijas darbs Nr.2

Izstrādāja:

Pārbaudīja: prof. J.Eiduks

2008./2009.m.g.

Liāna NatenadzeDMIO2

051RDB234

ANOTĀCIJA

Nepieciešamība glabāt vēsturi par objekta stāvokļu izmaiņam nosaka temporālo datu

bāžu pielietošanu. Tāda nepieciešamība mūsdien bieži rodas sistēmās ar augstas dinamikas

objektiem.

Temporālas datu bāzes nodrošinā ne tikai elastīgu darbu ar operatīvas sistēmas

hronologiskajiem datiem, bet arī tiem ir liela nozīmē analitiskājās sistēmās, jo uzkrātiem

vēsturiskiem datiem ir liela vērtība planojot un prognozējot uzņēmuma darbību, tendenciju

atklāšanā un lēmumu pieņēmšanā.

Darbā ir aprakstīti temporālās bāzes projektēšana un realizēšana ar Oracle 10g

Enterprise Edition palīdzību, tā pat arī papildus utilītu izmantošana (SQL*Plus un TOAD

FOR ORACLE 9.5 PORTABLE).

Darbs izstrādāts Windows Vista Home Premium vidē.

Darba saturā ir 13 nodaļas, secinājumi, saturs un literatūras avoti. Kopumā darbs ir

izklāstīts 51 lappusēs.

2

SATURS

UZDEVUMA NOSTADNE.......................................................................................................5

1. DATU BĀZES PROJEKTĒŠANA........................................................................................6

2. TEMPORĀLO VAICĀJUMU DEFINĒŠANA.....................................................................8

2.1. Vaicājums........................................................................................................................8

2.2. Vaicājums........................................................................................................................8

2.3. Vaicājums........................................................................................................................8

2.4. Vaicājums........................................................................................................................9

3. LAIKA SĒRIJU DEFINĒŠANA.........................................................................................10

3.1. 1. laika sērija ABONESANA........................................................................................10

3.2. 2. laika sērija IEMAKSAS............................................................................................10

3.3. 3. laika sērija RADIJUMI.............................................................................................11

4. LAIKA SĒRIJU GRAFISKĀ ANALOĢIJA.......................................................................13

5. METOŽU DEFINĒŠANA...................................................................................................15

6. ALLENA OPERATORU METOŽU DEFINĒŠANA.........................................................16

7. TEMPORĀLAS ALGEBRAS PAMATDARBĪBU DEFINĒŠANA..................................19

8. GLABAŠANAS STRUKTŪRAS DEFINĒŠANA..............................................................22

9. IZGŪŠANAS STRUKTŪRU DEFINEŠANA....................................................................24

9.1. Transformācijas.............................................................................................................24

9.2. Objektu skati.................................................................................................................25

10. DATU BĀŽU STRUKTŪRU UN METOŽU REALIZĒŠANA..................................27

10.1. Tabulu, objektu un metožu realizēšana.....................................................................27

10.1.1. 1. laika sērijas realizēšana...............................................................................27

10.1.2. 2. laika sērijas realizēšana...............................................................................28

10.1.3. 3. laika sērijas realizēšana...............................................................................30

10.2. Datu ievade...............................................................................................................31

10.2.1. Datu ievade 1. laika sērijā................................................................................31

10.2.2. Dati ievade 2. laika sērijai................................................................................33

10.2.3. Dati ievade 3. laika sērijai................................................................................33

10.3. Pārbaude....................................................................................................................34

10.4. Skatu realizēšana.......................................................................................................35

10.5. Pārbaude....................................................................................................................36

11. TEMPORĀLO VAICĀJUMU IZPILDĪŠANA............................................................38

3

11.1. 1. Vaicājums.............................................................................................................38

11.2. 2. Vaicājums.............................................................................................................39

11.3. 3. Vaicājums.............................................................................................................41

11.4. 4. Vaicājums.............................................................................................................41

12. PAPILDUS VAICĀJUMI............................................................................................43

12.1. KLONA tabula un vaicājums....................................................................................43

12.2. ROUND funkcija un vaicājums................................................................................44

12.3. UNFOLD funkcija un vaicājums..............................................................................45

12.3.1. Palīgfunkciju realizācija...................................................................................45

12.3.2. Funkciju FOLD un UNFOLD realizēšana.......................................................46

13. IESKAITS TEMPORĀLĀS DBVS.............................................................................48

13.1. TimeDB.....................................................................................................................48

13.2. Informix TimeSeries Datablade................................................................................48

13.3. Immortal DB (prototips no Microsoft).....................................................................48

13.4. Oracle Flashback Tehnoloģija..................................................................................49

13.5. Oracle Workspace Manager Risinājums...................................................................49

SECINĀJUMI...........................................................................................................................50

INFORMĀCIJAS AVOTI........................................................................................................51

4

UZDEVUMA NOSTADNE

1. Temporālo vaicajumu definēšana dabiskajā valodā (4 vaicājumi)

2. Laika sēriju definēšana (3 laika sērijas)

3. Uzdevuma grafiskā analoģija

4. Sīkāko metožu loģikas definēšana (3)

5. Allena operatoru realizējošo metožu definēšana (3)

6. Glabašanas struktūras definēšana

7. Izgūšanas struktūru definēšana (3 objektu skati)

8. Datu bāžu struktūru un metožu realizēšana

9. Temporālo vaicajumu izpildīšana (SQL+metodes+klona tabulas)

10. Izdarīt secinājumus par izpildīto darbu

5

1. DATU BĀZES PROJEKTĒŠANA

Šajā darbā, kā priekšmetisko vidi es izvelējos dabas gāzes abonentu uskaites sistēmu.

Protams, ka īsta adekvāta uskaites sistēma ir daudz sarežģitāka, satur vairāk tabulas, saites,

funkcijas un visu ko, kas apraksta processu un operāciju daudzveidību. Tapēc es vienkāršoju

to sistēmu tā lai galvēnais mērķis (temporālas datu bāzes pielietošanas iespējas) būtu realizēts.

Pieņēmsism kā uzskaites sistēmai ir jāglabā dati par klientiem, klientu skaitītāju

radījumiem un par apmaksas veikšanu.

Ir zināms kā katram abonentam pēc kāda noteiktā perioda veic pārrēķinu un piešķir

jaunu atbilstošu abonenta maksu. Šās izmaiņas tiek fiksētas tabulā ABONESANA.

Tabulas ABONESANA saturs:

K_NUM – klienta reģistrācijas numurs;

K_VARDS – klienta vards;

K_UZVARDS – klienta uzvārds;

LAIKA_POSMS

ABONENT_MAKSA - abonēšanas maksa;

NO – piešķirtās abonēšanas maksas posma sākums;

LIDZ - piešķirtās abonēšanas maksas posma beigās.

Iz zināma kādā summa bija jāiemaksa klientam par noteiktu laika periodu, un ir zināms

arī kas reāli bija iemaksāts.

Tabulas IEMAKSAS saturs:

I_ID – iemaksas id;

IK_NUM – klienta numurs;

LIG_NUM – līguma numurs;

IEMAKSAI – bija jāiemaksa;

IEMAKSATS – ir iemaksāts;

LAIKA_POSMS

NO – aprēķinu perioda sākums;

LIDZ – aprēķinu perioda beigās.

Ir zināms kā, dabas gāzes sadales centram ir jāveic skaitītaju kontroli, ar mērķi veikt

tehnisko pārbaudi, un pārbaudīt radījumus, talākājam pārrēķinam. Obligāto kontroli veic

apmērām reizi gadā.

Tabulas RADIJUMI saturs:

R_ID – radījumu id;

RK_NUM – klienta numurs;

6

SK_NUM – skaititāja regīstrācijas numurs;

EKS_TERM

NO - ekspluatācijas tērmiņa sākums;

LIDZ - ekspluatācijas tērmiņa beigās;

SKAIT_RAD

SK_RAD– skaitītāja radījumi;

NO – radījumu piefiksētais laika perioda sākums;

LIDZ - radījumu piefiksētais laika perioda beigās;

Līdz ar to izprojēktētai datu bāzei ir jāiskatās sekojoši:

Ka tiks nodrošināta laika glabāšana tikts izkatīts 7 nodaļā (Glabāšanas struktūras

definēšana), bet pagaidām var redzēt kā tabulas ABONESANA primāra atslēga K_NUM

sasaistās (1:1) ar tabulas IEMAKSAS klienta numuru IK_NUM un tabulas RADIJUMI

klienta numura RK_NUM, jo dati par vienu un to pašu klientu glabājās dažās tabulas.

7

2. TEMPORĀLO VAICĀJUMU DEFINĒŠANA

Temporālie vaicājumi ir ļoti noderīgi informācijas vākšanai, salīdzināšanai un

analizēšanai par dažādiem laika posmiem. Darba gaitā plānots izveidot 4 vaicājumus.

2.1. Vaicājums.

Pirmājā vaicājumā jāizvadā informācija par dabas gāzes abonentiem, jeb klientiem kādā

noteiktā dienā, jeb noteiktā laika punktā. Vaicājuma grafiskā analoģija ir sekojoša:

2.2. Vaicājums.

Otrājā vaicājumā jāizvadā informācija par to, kādi bija skaitītāju radijumi abonentiem,

pirms kāda noteikta laika momenta. Šo vaicājumu reālīzēšu ar Allena operatoriem – Pirms un

Satiek (operatori tiks realizēti metožu veidā):

2.3. Vaicājums.

Trēšajā vaicājumā jāizvadā informācija par to, vai ir skaitītāju radijumu dati ir

piefiksēti no paša skaitītāja uzstadīšanas laika. Šeit tiks izmantots laika predikātu – Vienāds

Sākums:

8

2.4. Vaicājums

Ceturtajā vaicājumā meklēsim informāciju par to, kādas abonentu maksas tiek piešķirtas

kāda konkrēta laikā. Citiem vārdiem sakot kādas abonentu maksas izmaiņas tiek veiktas

noteiktajā laika periodā Šeit tiks izmantots predikāts Ietilpst (Allena operators):

9

3. LAIKA SĒRIJU DEFINĒŠANA

Kā bija iepriekš nodefinēts dotajā temporālajā datubāzē tiks glabāti dati par klientiem,

klientu skaitītāju radījumiem un par apmaksas veikšanu. . Lai realizētu datu bāzi, mēģināsim

nodefinēt 4 laika sērijas. Datumi tiek ievietoti formātā YYYY.MM.DD.

3.1. 1. laika sērija ABONESANA

Šeit glabāsies dati par dabas gāzes abonentiem un to kāda abonenta maksa tiem tika

piešķirta pēc kārtēja pārrēķina, kā arī laika posmu, kad abonentu maksa tika ievesta un līdz

kuram tā ir spēka. Zemāk aplūkojams piemērs laika sērijai:

A_IDKlienta

numursVārds Uzvārds

Abonenta

maksaLaika posms

1 001 Davis Freimanis

1.21 [2004.04.25, 2005.06.01)

2.15 [2005.06.01, 2007.01.01)

1.95 [2007.01.01, now)

2 002 Ilze Piliņa1.00 [2006.01.01, 2007.07.07)

1.25 [2007.07.07, now)

3 003 Dace Pliekšane

0.82 [2002.07.23, 2003.12.12)

0.99 [2003.12.12, 2004.06.17)

1.15 [2004.06.17, 2006.04.01)

1.45 [2006.04.01, 2007.05.12)

1.68 [2007.05.12, now)

3.2. 2. laika sērija IEMAKSAS

Šeit glabāsies dati par klientu līgumu numuriem, un kopīgo maksas summu pēc

noteikta laika periodā, kā arī cik reāli abonents bija iemaksājis. Laika sērijas ilustrāciju var

redzet zemāk:

I_IDKlienta

numurs

Līguma

numurs

Iemaksai

lsIemaksāts Ls Laika posms

1 001 1292 170 170 [2007.04.01, 2008.04.12)

2 002 2381 46 35 [2006.07.13, 2008.06.22)

3 003 2287 200 140 [2005.02.01, 2008.03.30)

10

3.3. 3. laika sērija RADIJUMI

Šeit glabāsies dati par abonenta skaitītaju stāvoklu (radījumu) izmaiņam atbilstoši laika

intervālu izmaiņam un skaitītāja visparējo tehnisko stāvokli (ekspluatācijas tērmiņi). Piemērs laika

sērijam ir zemāk:

R_IDKlienta

numurs

Skaitītāja

numurs

Ekspluatācijas

laiksRadījumi

1 001 9923-43[2004.01.01,

2009.10.01)

210[2004.01.01,

2005.04.01)

524[2005.04.01,

2006.05.01)

781[2006.05.01,

2007.04.15)

890[2007.04.15,

2008.04.12)

2 002 9923-45[2006.06.15,

2010.02.01)

110[2006.06.15.,

2007.07.13)

280[2007.07.13,

2008.06.22)

3 003 9924-01[2002.02.01,

2009.02.01)

95[2002.02.01.,

2003.02.01)

280[2003.02.01,

2004.03.01)

454[2004.03.01,

2005.03.14)

750[2005.04.02,

2006.05.02)

914[2006.05.02,

2007.04.25)

1138[2007.04.25,

2008.03.30)

Lai labāk iztēloties laika sēriju temporālo būtību var grafiski realizet laika sēriju

11

projekciju uz laika intevāla ass.

12

4. LAIKA SĒRIJU GRAFISKĀ ANALOĢIJA

Lai labāk ilustrētu laika sēriju intervālus, un lidz ar to skaidrāk un gaišāk saprast ar kāda

tipa datiem būs jāstrādā veidojot vaicājumus, tika realizēta laika sēriju grafiskā analoģija.

Laika asis attēlo laika intervālu no 2002 līdz 2008 gadā, ņemot verā mēnešu secību un

skaitu. Diemžēl attēlot šo laika intervālu ar vienas dienas precizītāti nav iespējams. Bet tas arī

nav galvēnais mērķis, jo grafiskās analoģijas mērķis ir aptuvēni ilustrēt ievadīto datu esamību

un vietu laika intervalā.

Ilustrācija 1. laika sērijai:

Kā redzams, tad katra klienta piešķirta abonent maksa ir spēkā pat šobrīd, tāpēc tas

nav noslēgts. Tā pat arī katra abonentu maksas piešķiršana ir attēlota savā krāsā.

Ilustrācija 2.laika sērijai:

Izveidotais attēls pilnībā atbilst sastādītajai laika sērijai. Šī laika sērija ir

visvienkāršāka un saprtotāmāka. Redzams kā katram abonentam tiek apreķiņata maksājumu

13

summa, par noteiktu (visiem dažādu) laika periodu.

Ilustrācija 3.laika sērijai:

Šajā laika sērijā ar lieliem dažāda krāsa taisnstūriem attēlots katra skaitītaja

ekspluātacijas tērmiņš. Šī laika posmā ietvaros notiek arī skaitītāju radījumu nolasīšana, kas

ir attēlota ar mazākiem taisnstūriem. Tā kā ekspluātacijas tērmiņš vēl nav beidzies tad arī dati

nav noslēgti.

Tātad, kad ir definētas laika sērijas, vaicājumi un veikta laika sēriju grafiskās analoģijas

uzskicēšana, var mēģināt sākt definēt metodes, ar kurām strādāsim darba realizācijas daļā.

14

5. METOŽU DEFINĒŠANA

Objektu tipiem var izveidot metodes, kuras izmantojot, ir iespējams salīdzināt atsevišķus

objekta tipa eksemplārus un veikt tamlīdzīgas darbības. Pamatā metodes ir vai nu funkcijas,

vai metodes, kuras definētas objekta tipa iekšienē. Metodes iespējams izveidot dažādās

programmēšanas vidēs, piemēram: PL/SQL, JAVA, Python u.tml.

Darbā tiks izmatots PL/SQL (Procedural Language / Structured Query Language).

Metožu galvenes tiek nodefinētas objekta tipa veidošanas:CREATE OR REPLACE TYPE obj AS OBJECT( ... MEMBER FUNCTION check(param1, param2) RETURN BOOLEAN, ...);Šajā piemērā tiek izveidota metode CHECK, kas pēc uzbūves ir funkcija ar diviem

parametriem un atgriež BOOLEAN vērtību (TRUE vai FALSE) savas darbības beigās.

Metodes var būt arī procedūras, tad vienīgi FINCTION vietā izteiksmē jāieraksta

PROCEDURE, un jāatceras, ka procedūrām nelieto atslēgvārdu RETURN. Var būt vairāku

veidu metodes, proti bez MEMBER vēl var būt STATIC un CONSTRUCTOR. Savā darbā

visas metodes veidošu kā MEMBER tipa.

Kad ir nodefinēta metodes galvene, ir nepieciešams arī nodefinēt pašu metodi. To var izdarīt,

nodefinējot procedūras (funkcijas) struktūru objekta tipa ķermenī:CREATE OR REPLACE TYPE BODY obj AS ... MEMBER FUNCTION check(param1, param2) RETURN BOOLEAN IS BEGIN ... END; ...END;

MEMBER metodi var kombinēt ar sekojošiem atslēgvārdiem MAP un ORDER (pie

metodes definēšanas tie jāraksta priekšā MEMBER). Tas ir domāts tam, lai pēc tam būtu

iespējams salīdzināt objektu eksemplārus. Jāatceras, ka viena objekta robežās var definēt tikai

vienu MAP\ORDER MEMBER metodi, un ORDER MEMBER metodi var definēt tikai

superklasei, nevis pēcteču klasēm.

15

6. ALLENA OPERATORU METOŽU DEFINĒŠANA

Datu bāžu temporāls atbalsts balstās uz trīs laika (temporālām) dimensijām:

lietotāja definēts laiks (jeb lietotāja definēta laika sistēma);

validācijas jeb reālais laiks ( valid-time);

transakciju laiks (transaction-time).

Temporā vaicājumu datu tipu veidošanas mērķis ir izveidot tādus temporālos datu tipus ar

plašu semantiku, kas vienlaicīgi būtu gan intuitīvi, gan izmantotu pazīstamas laika

koncepcijas, kas samazinātu ietekmi uz valodu kopumā. Temporālās datubāzēs eksistē šādi

datu tipi:

DateTime (laiks)

Interval (Intervāls)

Period (Periods)

Loģisks pamatojums šiem datu tipiem ir tāds, ka tie atļauj izteikt temporālas idejas, un

katram datu tipam ir unikāla nozīme, kas nodalīta no pārējo datu tipu semantikas.

Datu tips DateTime ir nepieciešams, kad tiek raksturots izolēts laika moments. Datu

tips Period ir noderīgs runājot par noteiktiem laika periodiem. Un datu tips Interval ir

nepieciešams runājot par laika ilgumu (laika intervāliem). Šī temporālu datu tipu kopa

atspoguļo labāko kompromisu starp diviem savā starpā konfliktējošiem mērķiem: lietojamību

un minimālismu.

Laika segments var būt iedalīts ierobežota skaita mazākos diskrētos laika segmentos,

kurus sauc par granulām. Laika sadalīšana jeb dalīšana tiek saukta par mērogošanu (scaling).

Laika mērogošana ir dinamiska un tiek piemērota katra vaicājuma vajadzībām.

4.1. att. Laika vektora dalīšanas granulās

Piemēram, laika skala var būt sadalīta dienas garuma granulās vai arī to pašu laika

skalu var sadalīt mēnešu vai gadu garuma granulās, 4.1. att.

Mērogošanu jeb laika ass dalījumu konkrētās granulās izmanto veidojot datubāzes temporālus

vaicājumus. Datubāzes temporālos vaicājumos laika vērtības var tikt skatītas, sakārtotas vai

salīdzinātas ar kādas granulas noteiktu precizitāti: dienu vai mēnesi u.c.

16

No sākuma apskatīsim, kad tas tie ir Allena operatori. Patiesībā Allena operatori ir

funkcijas kuras nosaka vai izpildas kādi nosācījumi vai ne, šie nosācījumi ir paradīti zēmāk:

4.1.2.1 att. Alena intervalu salidzinašanas operatori [2]

Līdz ar to tika pieņemts lēmums, katram objektam, pievienot visas Allena operatoru

reālizējošas metodes, jo vēl īsti nav skaidrs kas tiešam tiks izmantots noteiktājā gadījumā.

Zemāk tiek definēts kods, kas būs atbilstoši vienāds visiem objektiem:CREATE OR REPLACE TYPE BODY IEMAKSA ASMEMBER FUNCTION PIRMS(I_LIDZ IN DATE, II_NO IN DATE)RETURN NUMBER ISBEGIN

IF (I_LIDZ < II_NO) THENRETURN 1;ELSERETURN 0;END IF;

END;MEMBER FUNCTION SATIEK(I_LIDZ IN DATE, II_NO IN DATE) RETURN NUMBER ISBEGIN

IF (I_LIDZ = II_NO) THENRETURN 1;ELSERETURN 0;END IF;

END;MEMBER FUNCTION S_VIENADS(I_NO IN DATE, II_NO IN DATE) RETURN NUMBER IS

BEGINIF (I_NO = II_NO) THENRETURN 1;

17

ELSE RETURN 0;END IF;

END;MEMBER FUNCTION B_VIENADS(I_LIDZ IN DATE, II_LIDZ IN DATE) RETURN NUMBER ISBEGIN

IF (I_LIDZ = II_LIDZ) THENRETURN 1;ELSERETURN 0;END IF;

END;MEMBER FUNCTION PARKLAJ(I_NO IN DATE, I_LIDZ IN DATE, II_NO IN DATE, II_LIDZ IN DATE)RETURN NUMBER ISBEGIN

IF (I_NO < II_NO) AND (I_LIDZ < II_LIDZ) AND (I_LIDZ > II_NO) THENRETURN 1;ELSE RETURN 0;END IF;

END;MEMBER FUNCTION VIENADS(I_NO IN DATE, I_LIDZ IN DATE, II_NO IN DATE, II_LIDZ IN DATE) RETURN NUMBER ISBEGIN

IF (I_NO = II_NO) AND (I_LIDZ = II_LIDZ) THENRETURN 1;ELSE RETURN 0;END IF;

END;MEMBER FUNCTION IETILPST (I_NO IN DATE, I_LIDZ IN DATE, II_NO IN DATE, II_LIDZ IN DATE) RETURN NUMBER ISBEGIN

IF (I_NO > II_NO) AND (I_LIDZ < II_LIDZ) THENRETURN 1;ELSERETURN 0;END IF;

END;END;

18

7. TEMPORĀLAS ALGEBRAS PAMATDARBĪBU DEFINĒŠANA

Tagad apskatīsim temporālas algebras pamatdarbības.

Projekcija: specifisku tabulas kolonu atlase.

Atlase: specifisku tabulas rindu atlase.

Reizinājums: tabulu rakstu savienojums.

Apvienojums: laika intervālu apvienojums.

Starpība: tabulu rakstu starpība.

Atklāt (Unfold): intervāla sadalīšana punktos atbilstoši noteiktai precizitātei

(granularitātei).

Iesaiņot (Fold): Pretēja darbība UnFold, kas vairākus laika punktus apvieno

vienā intervālā, atbilstoši granularitātei.

1. Temporālās algebras operācija Projekcija (p)

Projekcija ir unāra operācija, kura izvēlas relācijas R kolonu apakškopu. Piemēram:

pUZV,LAIKS(Darbinieki)

Operācijas rezultāts ir relācija R´(X), kura iegūta atlasot attiecīgos atribūtus no

relācijas R un izslēdzot dublējošos rakstus.

Temporāla projekcija ne vienmēr dod temporālu relāciju.

2. Temporālās algebras operācija Atlase (s)

Temporāla atlase veic rakstu izdalīšanu pēc norādītā laika nosacījumiem. Tas dod

iespēju lietot laika predikātus un līdz ar to precizēt izgūstamos datus.

3. Temporālās algebras operācija Reizinājums (´)

Reizinājums savieno visus tabulu rakstus un ar atlases palīdzību var izvēlēties

vajadzīgos.

Temporālajā algebrā eksistē speciāls reizinājums (konkurējošais reizinājums). Tā

darbības princips ir sekojošs: izvēlas tikai tos rakstus, kuriem laika intervāli pārklājas

un rezultātu veido šo intervālu pārklājumi.

4. Temporālās algebras darbība Apvienojums (È)

Apvienojums veido rakstus ar apvienotiem laika intervāliem.

X

Y

X È Y

5. Temporālās algebras darbība Starpība (-)

19

Starpība dod visus pirmā operanda rakstus, kuru laika intervāli nesakrīt ar otrā

operanda rakstu laika intervāliem.

X

Y

X - Y

6. Temporālās algebras operācija Unfold

Ar Unfold (atklāt) operāciju var sadalīt laika intervālu:

a) laika punktos, atbilstoši dotajai granularitātei;

b) mazākos intervālos, atbilstoši nosacījumiem.

a)

Intervāls

Laika granula (punkts)

b)

Ja ir relāciju shēma R(A, T), kurā r = {(a, [t1, tn)} un doto intervālu ir nepieciešams

sadalīt, tad Unfold operācija var būt definēta sekojoši:

Unfold(R) = R´(A, T) un r´ = {(a, [t1, t2)), ..., (a, [tn-1, tn))} vai r´ = {(a, t1), ..., (a,

tn)}, ja atribūta T vērtības ir laika punkti.

Operācija Unfold virtuāli izveido tā saucamo laika sēriju, kura sastāv no visiem

esošiem laika punktiem konkrētajā relācijā.

Reālizējot praktiski funkciju UNFOLD nodefinēju funkciju realizējošo kodu, kuru var

redzēt zemāk:CREATE OR REPLACE FUNCTION UNFOLD(PERIOD IN LAIKA_PERIODS,LAIKA_GRANULU_TIPS IN VARCHAR,GRANULU_IZM IN NUMBER)RETURN LAIKA_PERIODA_TAB AS

DATE_TABLE LAIKA_PERIODA_TAB:=LAIKA_PERIODA_TAB();NEXT_DATE DATE:=PERIOD.NO;TEMP_DATE DATE:=PERIOD.NO;

BEGINWHILE PERIOD.LIDZ > NEXT_DATE LOOPDATE_TABLE.EXTEND;

TEMP_DATE:=NEXT_DATE;CASE LAIKA_GRANULU_TIPSWHEN 'SECOND' THEN NEXT_DATE:=ADD_SECONDS(NEXT_DATE,

GRANULU_IZM);WHEN 'MINUTE' THEN NEXT_DATE:=ADD_MINUTES(NEXT_DATE,

GRANULU_IZM);

20

WHEN 'HOUR' THEN NEXT_DATE:=ADD_HOURS(NEXT_DATE, GRANULU_IZM);

WHEN 'DAY' THEN NEXT_DATE:=ADD_DAYS(NEXT_DATE, GRANULU_IZM);WHEN 'WEEK' THEN NEXT_DATE:=ADD_WEEKS(NEXT_DATE,

GRANULU_IZM);WHEN 'MONTH' THEN NEXT_DATE:=ADD_MONTHS(NEXT_DATE,

GRANULU_IZM);WHEN 'YEAR' THEN NEXT_DATE:=ADD_YEARS(NEXT_DATE,

GRANULU_IZM);END CASE;IF PERIOD.LIDZ >= NEXT_DATE

THEN DATE_TABLE(DATE_TABLE.COUNT):=LAIKA_PERIODS(TEMP_DATE,PERIOD.LIDZ);

END IF;END LOOP;RETURN DATE_TABLE;

END UNFOLD;

7. Temporālās algebras operācija Fold

Fold (iesaiņot) operācija laika punktu kopu transformē laika intervālā, atbilstoši

izvēlētai laika granularitātei.

Laika punktu kopa

Laika granula (punkts)

Intervāls

Starp operācijām Fold un Unfold pastāv sakarība: Fold(Unfold(R)) = R

Ar operāciju Fold, izmantojot jaunus nosacījumus, var izveidot jaunus vajadzīgus

intervālus.

Reālizējot praktiski funkciju FOLD nodefinēju funkciju realizējošo kodu, kuru var

redzēt zemāk:CREATE OR REPLACE FUNCTION FOLD(DATE_TABLE LAIKA_PERIODA_TAB)RETURN LAIKA_PERIODS ISPERIOD LAIKA_PERIODS:=NEW LAIKA_PERIODS(DATE_TABLE(1).NO,

DATE_TABLE(1).LIDZ);BEGIN FOR I IN 1 .. DATE_TABLE.COUNT LOOP IF (PERIOD.LIDZ=DATE_TABLE(I).NO) THEN PERIOD.LIDZ:=DATE_TABLE(I).LIDZ; ELSE IF (PERIOD.NO=DATE_TABLE(I).LIDZ) THEN PERIOD.NO:=DATE_TABLE(I).NO;

END IF; END IF; END LOOP; RETURN PERIOD;

21

END FOLD;

22

8. GLABAŠANAS STRUKTŪRAS DEFINĒŠANA

Iepriekš tiks nodefinēti temporālas datu bāzes tabulas un tika aprakstītas laika sērijas.

Kopumā laika sēriju realīzēšanai ir jānodefinē 2 specifickie objekti, kas neieskaitot laika

periodus iekļauj arī citus datus (ABONENT_MAKSA un SK_RAD ). Kā arī 1 laika periodā

objekts, kas satur tikai laika datus un ir izmantots tabulā IEMAKSAS, kā LAIKA_POSMS un

tabulā RADIJUMI, kā EKS_TERM. Lai nodrošinātu datu glabašanu tabulas ABONESANA 1

laika sērijai, kurā glabājas dati par abonenta personisko informāciju, abonenta maksu un laika

periodu tiek realizēta ielikta tabula (kolekcija) no objekta ABONENTS Šai tabulai ir sekojoša

struktūra:

Otrās laika sērijas realizācijai, par veiktājam iemaksam un to aprēķinu termiņiem,

glabāsies iekš objektu kolonnas, struktūru var aplūkot zemāk:

23

attēls 1. 2. Laika sērijas glabāšanas struktūra

Trešā un ceturtā laika sērija tiks glabāta vienā tabulā, proti, EKS_TERM ekspluācijas

tērmiņš kā objektu kolona un skaitītāju radījumu dati kā iekļautā objektu tabula, tabulas

uzbūvi iespējams aplūkot zemāk:

Pēc objektu un tabulu realizēšanas iegūsim sekojošu datu bāzes ER diagrammu:

Šī ER diagramma tiek attēlota ar TOAD palīdzību, jau pēc datu bāzes reālizēšanas.

24

9. IZGŪŠANAS STRUKTŪRU DEFINEŠANA

Tā kā temporālie dati tiek glabāti kā objekti, tad pie informācijas izgūšanas

visizdevīgāk izmantot objektu skatus, kas pēc savas struktūras līdzīgi objektu tabulā, proti

tiem ir objektu rindas, ar izteiksmes WITH OBJECT IDENTIFIER (Lauks1, Lauks2)

iespējams definēt identifikators, ko izvēlas pats lietotājs, kāds tas būs, vēl arī objektu skatos

var izmantot metodes, piemēram, MEMBER u.tml.

9.1. Transformācijas

Transformācijas struktūru pielietojums nepieciešams dažādos gadījumos, piemēram,

pie objektu datu izvades, lietotājam rezultāti nereti liekas, ka izvadītie rezultāti ir

nepārskatāmi un vizuāli neizskatīgi, vai arī ja no objekta nepieciešams izgūt tikai vienu

atribūtu vai arī pēdīgi, ja nepieciešams kādu specifisku objekta atribūtu izmantot

salīdzināšanai ar citiem lielumiem. Piemēram, pie datiem ar objektu kolonu izgūšanas var

pielietot sekojošu transformācijas metodi:

Tabula

ID

.... ...

Darbojoties ar tabulu, kurā iekļauta kolekcija, nākas izmantot iebūvēto funkciju table(), kas

pārveido iekļautās objektu tabulas ierakstus parastas tabulas veidā, kā rezultātā ir iespējama

elementāra piekļuve jebkuram attiecīgajam objektu atribūtiem:

Tabula

ID

.... ...

Lai piekļūtu Y vērtībai iekš iekļautās tabula vienkārši augstāk esošajā izteiksmē pierakstam

klāt: . Y

Vēl ir arī citas iebūvētās transformācijas metodes, bet augstāk aprakstītās tieši arī tiks

izmantotas uzdevuma praktiskajā daļā.

Atribūts XObjektu kolona

XY

XY....

Objektu kolekcija

25

9.2. Objektu skati

Objektu skats ļauj apvienot vienā objektā datus no atsevišķām tabulām, tādejādi

vaicājums, kas izgūst datus no šī objekta skata, ir ātrāks, daudz reižu vieglāks un saprotamāks

nekā datu izgūšana no vairākām tabulām ar vienkārša vaicājuma palīdzību.

Pirmais objektu skats glabās datus par dabas gāzes abonentu personisko informaciju,

kā arī abonent maksas piešķīršanas datumus un vertībam No šī skata varēs ērti izmantot

informāciju statistikas nolūkiem. Šis skats būs sarežģīts ar to, ka tajā tiks izgūti lauki gan no

tabulas, gan arī no iekļautās tabulas ar iepriekš aprakstītas funkcijas TABLE() palīdzību.

Zemāk ir dots paredzamais skata realizēšanas piemērs:

Otrā objekta skata realizācija būs diezgan vienkārša. Šajā skatā tiks izgūta informācija

no objektu kolonna, proti, laika perioda pēc kura tiek aprēķināta kopējais maksājums sākuma

datums un beigas datums. Kā identifikatora lauki kalpos tieši datumu lauki NO un LĪDZ. Šis

vaicājums sniedz informāciju tikai par 2.laika sēriju. Zemāk ir dots paredzamais skata

realizēšanas piemērs:

26

Trešais skats glabās datus par skaitītāju radījumiem, un to piefiksēšanas datimiem. Arī

šeit kā identifikatora lauki kalpos datumu lauki NO un LĪDZ. Šis vaicājums sniedz

informāciju par 3.laika sēriju. Zemāk ir dots paredzamais skata realizēšanas piemērs:

Datu bāzes projektēšana un definēšana ir pilnīgi pabeigta. Ir skaidri zināms kas ir

jārealizē un kā to izdarīt.

27

10. DATU BĀŽU STRUKTŪRU UN METOŽU REALIZĒŠANA

10.1. Tabulu, objektu un metožu realizēšana

10.1.1. 1. laika sērijas realizēšana

Sākumā izveidosim objektu tipu ABONENTS. No veidojamā objekta tipa būs

iespējams izveidot objektus, kuros varēs glabāt datus par abonentu abonēšanas maksu, kā arī

tas piešķiršanas sākuma un beigu datumiem:

Kā redzams no augstāk esošā attēla, tad Allena operatori ir realizēti ar objekta

metodēm MEMBER function kā tika ieprojēktēts iepriekš.

Tagad aprakstīsim arī tikko nodefinētā tipa ķermeni, kurā nodefinēsim pašas metodes, pēc

iepriekš reālizēta kodā:

Veidojamā tabulas struktūra būs tabula ar iekļautu kolekciju. Ievietojamās kolekcijas

28

izveide redzama zemāk:

Tagad izveidosim tabulu ar iekļauto kolekciju. Tabulā būs ievietoti atlikušie datu

lauki, kurā glabāsies klienta identifikators, vārds, uzvārds un arī objektu kolekcijas veidā –

abonenta maksa un piešķiršanas laika posms:

Pirmās laika sērijas izveide ir pabeigta. Datu ievade un objektu skatu izveide būs

iespējams aplūkot nākošajās nodaļās.

10.1.2. 2. laika sērijas realizēšana

Sākumā izveidosim objektu tipu LAIKA_PERIODS, kurā nodefinēsim laika posmu

(no - līdz). Tieši šīs objekts tiks izmantots tabulas RADIJUMI laukumā EKS_TERM un

tabulas IEMAKSAS laukumā LAIKA_POSMS:

29

Tagad atkal izveidosim tipa ķermeni, kurā nodefinēsim tādas pašas metodes:

Tagad no izveidota tipa jāizveido tabulu ():

Ievietosim izveidotu objektu ka objektu kolonnu tabulā IEMAKSAS. Ir jāpiemin, kā

balstoties uz iepriekš nodefinētas datu bāzes struktūras, tabulas IEMAKSAS IK_NUM

laukam ir atsauce uz tabulas ABONESANA K_NUM (klienta numuru) :

30

Tagad var pāriet pie 3.laika sērijas izveidošanas.

10.1.3. 3. laika sērijas realizēšana

3. laika sērija glabāsies tabulā RADIJUMI. Pirmkārt atkāl tiek izveidots objektu tips

Tapāt kā iepriekš definēsim objekta ķermeni:

31

Tagad atkal izveidojam ievietojamo kolekciju no objektu tipa RADIJUMS, kurā

glabāsies dati par skaitītāju radijumiem un fiksētiem datumiem (skat. 7.2.3.3.att.).

Un beigās izveidosim arī pašu datu tabulu, kurā būs ievietota objektu kolona un arī

kolekcija. Ka bija minēts iepriekš laukumam EKS_TERM izmantosim objektu kolonnu ar

tipu LAIKA_PERIODS. Ka arī nodrošināta saite ar tabulas ABONESANA primāro atslēgu:

10.2.Datu ievade

Datu ievadei tabulās var izmantot INSERT komandu vai nu SQL*Loader’u. Tā kā

iepriekšējā darbā secināju, ka pie maza rindu skaita SQL*Loader pieleitošana nav ne tikai

neracionāla, bet arī mazāk efektīva (laika ekonomijas planā), tad šajā darbā, kad rindu skaits ir

ļoti mazs, ir efektīvāk izmantot INSERT komandu.

10.2.1.Datu ievade 1. laika sērijā

Datu ievadei tabulās ar iekļautu objektu tabulu ir savas īpatnības. Šeit r jānorāda

objektu kolekcijas tips (ABONENT_DATI) un tā iekšienē jānorāda katra raksta vērtības un to

tipu(ABONENTS). Tā kā tabulā glabāsies dati, par laika intervāliem, kas vēl joprojām ir

procesā, varam izmantot fukciju SYSDATE, kas automātiski ievietos to reālo datumu, kas ir

32

noteikts sistēmai, citiem vārdiem sakot, šodienās datumu:

Viens ieraksts tiek veiksmīgi pievienots.

Pēdēja ieraksta ievade:

33

10.2.2.Dati ievade 2. laika sērijai

Informācijas ievade tabulā ar objektu kolonnu ir jānorāda objekta tipa nosaukums

(LAIKA_PERIODS), un arī iebūvētās funkcijas TO_DATE izmantošana pie datumu ievades,

kas pārveido teksta rindu datumā pēc norādītā formāta:

10.2.3.Dati ievade 3. laika sērijai

Pēdējā tabulā satur gan objektu kolonnu, gan iekļauto tabulu, līdz ar datu ievadīšana

šāja tabulā ir līdzīga 2 iepriekšējam kopumā:

Pirmais ierakts tiek pievientos tabulai.

34

Pēdējais ieraksts tiek ievietots tabulā:

10.3. Pārbaude

Pirmā tabula ko pārbaudīsim būs tabula ABONESANA. Šeit mēs pārbaudīsim uzreiz arī

vizuālo izskatu laika sērijai, pieprasot datus arī no objekta:

35

Tagad pārbaudīsim ari tabulu IEMAKSAS, tādā pašā veidā:

Un tagad varam pārbaudīt arī pēdējas tabulas saturu:

Tagad, kad dati ir ievadīti un pārbaudīti, var sākt veikt dažādas operācijas ar datu bāzi:

veidot skatus, vaicājumus, pārbaudīt funkciju darbību.

10.4.Skatu realizēšana

Realizējam jau iepriekš definētos skatus, jo centīsimies arī no tiem realizēt lielāko daļu

no vaicājumiem. Kā jau bija definēts agrāk, tad izveidojamais objektu skats glabā datus par

klientu skaitītāju radijumiem un to piefiksēšanas datumiem:

36

Nākošais skats saturēs informāciju par klienta pieškirtām abonent maksam,datumiem,

un kā identifikatora lauki kalpos datumu lauki NO un LIDZ:

Pēdējais no iepriekš definētajiem skatiem ir skats, kurš satur tieši datus par iemaksu

apreķinātiem laika periodiem:

Pirms turpināt talākus uzdevumus ir jāpārbauda skatu izveidošanas pareizību.

10.5.Pārbaude

Lai pārbaudītu skatu saturu, izmantosim visvienkāršākus vaicājumus. Skata OS_RADIJUMI2

saturs:

37

Skata OS_ABONESANA2 saturs:

Dati ir korekti ,līdz ar to var turpināt darbu un reālizēt temporālus vaicājumus.

38

11. TEMPORĀLO VAICĀJUMU IZPILDĪŠANA

11.1. 1. Vaicājums

Pirmājā vaicājuma realizējoša vaicājuma var redzēt, šeit ir iegūti dati par to, kāda

abonentu maksa tika piešķirta katram no abonentiem 2007.09.22 laika periodā:

Lai iegūtu papildināto informāciju un pārbaudītu iegūtus rezultātus reālizēsin to pašu

vaicajumu, bet tieši tabulai ABONESANA:

Kā redzams, tiek iegūti tie paši dati, par katru abonentu un pie tam tiek izvadīta

papildinoša informacija (klienta numurs un klienta, jeb abonementa uzvards). Šo rezultātu var

pārbaudīt ne tikai veicot vaicājumu tabulai, bet tīri vizuāli pēc iepriekš reālizētas laika serijas

grafiskas analoģijas:

39

11.2. 2. Vaicājums

Realizēsim otro definēto vaicājumu, kura rezultātā jāiegūst dati par abonentu skaitītāju

radījumiem iepriekšēja laika periodā (pirms 2007.04.15):

Kā varam redzēt, tad pieprasot informāciju, vaicājumam tiek izmantots iepriekš

izveidotais objektu skatu, kā arī Allena operatori(PIRMS un SATIEK), kas realizēti kā

metodes.

Tāpāt papildinošas informācijas iegūšanai varam realīzēt to pašu vaicajumu tieši

tabulai:

40

Tagad ir arī redzams kuram klientam šie radījumi tika piefiksēti. Kā var redzēt

rezultātā neparadījas 2 klients. Jo šā klienta pirmais skaitītāju radījums ir piereģistrēts

2006.06.15 – 2007.07.03, un tas neiekļaujas tajā laika periodā, ko esmu nodefinējusi

vaicajumam.

Šāds rezultāts arī bija paredzams, izpētot uzdevuma grafisko analoģiju.

Apskatot grafisko rezultātu, var rasties šaubas par 003 klienta radījuma 914 piederību

šajā laika intervālā. Diemžēl tas notiek tadēļ, ka grafiskas analoģijas maštabs nav tik mazs, lai

reali attēlotu dienu starpību. Tomēr rezultāts ir pareizs jo 003 klienta radījuma piefiksešanas

datums ir 2006.05.02 – 2007.04.25, bet uzdotais laika intervals 2007.04.15.

41

11.3. 3. Vaicājums

Trēša vaicājuma realizācijā ir jāiegūst dati par tiem skaitītājiem, kuru radījums tika

piefiksēts uzreiz pēc to uzstadīšanas laika:

Vaicājuma realizācijai izmantots laika predikāts VIENĀDS SĀKUMS. No rezultātiem

var redzēt, ja eksplautācijas tērmiņa laiks un pirmā piefiksēta radījuma datumi sakrīt.

Arī pēc grafiskas analoģijas var redzēt kā visu skaitītāju radījumi tiek piefiksēti uzreiz

pēc uzstadīšanas:

11.4. 4. Vaicājums

Šī vaicājuma mērķis bija noteikt, kādas stāvokļu izmaiņas notika konkrētājā laika

periodā. Vaicājuma realizācijai tika izmantots laika predikāts IETILPST.

42

Ir redzams, kā tikai vienam klientam tika nomainīta abonentu maksa šajā laika

periodā. Ka vienmēr var iegūt papildinošu informāciju no tabulas:

Tagad ir arī zināms tieši kādam klientam tika nomainīta abonentu maksas plans. Pēc

grafiskas analoģijas redzēsim to pašu rezultātu:

43

12. PAPILDUS VAICĀJUMI

12.1.KLONA tabula un vaicājums

Temporālās datu bazes pastāv iespēja realizet vēl daudz specifiskas funkcijas un

operācjas. Kā piemēru izveidošu klona tabulu, kurā glabāsies dati par abonentiem, kuriem ir

abonent maksa bija piefiksēta lielāka nekā 1.20 ls kā arī šī abonent maksas spēkā esamības

posmi:

Izvadītos datus ir iespējams pārbaudīt arī ar uzdevuma grafiskās analoģijas palīdzību:

Kā var redzēt, tad arī pēc grafiskās analoģijas var spriest, ka ir bijuši tieši 6 gadījumi

abilstoši definētam nosacījumam.

Modificējot šo vaicajumu, mēģināsim noskaidrot kuri klienti ar sekojošu abonent

maksu pārklājas. Vaicājumam tiks izmantota klona tabula ar ALLENA operatoru:

44

12.2.ROUND funkcija un vaicājums

Vēl vienas iebūvetas funkcijas realizācias piemērs. Ar vaicājumu vēlējos noskaidrot,

CIK ILGI katram no klientiem bija spēkā noteikts abonent maksas plans. Lai noskaidrotu to,

cik tiek izmantota parasta atņemšanas operācija iekš iebūvētās funkcijas ROUND:

45

12.3.UNFOLD funkcija un vaicājums

Lai realizētu UNFOLD funkciju vispirms jānrealizē vairākas palīgfunkcijas.

12.3.1.Palīgfunkciju realizācija

Funkcijas ir ļoti lidzīgas,piemeram jebkuram laika intervālam var pieskaitīt cik vien

iespējams sekundes, visu funkciju ieejas parametri un izejas dati neatšķīras, par pamatu bija

ņemta jau izstradāta Oracle funkcija add_month:

Piemērs funkcijas add_minutes realizēšanai:

Piemērs funkcijas add_years realizešanai:

Pēc šāda principa tika realizētas visas palīgfunkcijas.

46

12.3.2.Funkciju FOLD un UNFOLD realizēšana

Pēc iepriekš sagatavota koda (Temporālas algebras definējumi nodaļā) realizēsim

funkciju UNFOLD:

Tā kā manās tabulās glabājas diezgan specificki dati, un to laika intervāli ir parāk lieli,

lai pielietot funkciju UNFOLD ar operāciju add_days, es ievadīšu jaunus datus, ar īsako laika

intervālu, kas kalpos par piemēru funkcijas UNFOLD un palīgfunkcijas add_days realīzācijas:

Funkcija ir nodefinēta, un atbilstošs piemērs arī ir ievadīts var apskatīt funkcijas

darbību:

47

Ka var redzēt viss ekspluatācijas tērmiņš tika iedalīts dienas intervālos. Līdzīgā veidā

var dalīt visus laika intervālus gan mēnešos, gan gados, gan dažreiz sekindēs ja vajadzēs.

48

13. IESKAITS TEMPORĀLĀS DBVS

Diemžel neeksistē pilnvērtīgas komerciālas temporalas DBVS realizācijas, bet vairāki

izstradātāji piedāvā visādus papilpidinājumus un paplašinājumus, kuri nodrošina iespēju

strādāt ar temporālām datu bāzem. Zēmāk ir izskatīti īsi šādu izdtradājumu raksturojumi:

13.1. TimeDB

1997. gadā Andreas Steiners strādājot pie savas doktora dissertācijas izstrādāja

temporālas DBVS TimeDB prototipu. Protipā tika nodrošināta gan reāla, gan tranzakciju laika

iespēja, bet tas bija piesaistīts konkrētai relāciju DBVS, ta ka tajā tika izmantots Oracle

kompanijas izsaukumu līmeņa interfeiss. Vēlāk tika izlaista TimeDB 2.0 versija, kas bija

realizēta Java valodā. Darbam ar relāciju DBVS tika izmantots JDBC interfeiss, tādā veidā

izdevās izvairīties no piesasistes konkrētam DBVS ražotājam. Tagad TimeDB 2.0 Beta4

versiju var brīvi ieladēt no kompānijas TimeConsult mājāslapas.

13.2.Informix TimeSeries Datablade

Kompānijas Informix modulis TimeSeries ir domāts procesu dinamikas apstrādei un

analīzei, balstosties uz temporāliem rindu datiem. Tas satur jauno tipu definējumus –

temporālais kalendars un temporāla rinda, ka arī nodrošinā vairāk nekā 40 funkciju datu

apstrādei, kas satur laika iezīmes. Šīs modulis dod lielas iespējas atsevišķa procesa analīzes

operācijai, ka arī datu glabāšanai. Ja rinda ir regulāra, tad piekļuve ir konstanta priekš jebkura

laika momenta. Šeit ir noteikta veida piekļuves optimizācija, tāpēc nedrīkst nosaukt

TimeSeries Datablade par pilnvertīgu temporālo risinājumu reālajam laikam.

13.3.Immortal DB (prototips no Microsoft)

Projekta Immortal DB mērķis, kas tika izstradāts Microsoft pētnieciskā apakšnodaļā,

bija tranzakciju laika nodrošināšana, kas iebūvēta SQL servērī, nevis balstīta uz jebkāda

proxy-līmeņa. Tika veikts meģinājums nodemonstrēt, ka DBVS , izņemot uzņēmumu

atbalstu, var būt realizēts pilnvērtīgs tranzakcijas laika atbalsts, pie tam ar labu ražotspēju.

Realizējot atbalstu tika paplašināts stāvokļu uzņēmumu standartais mehānisms, kas

ļauj iegūt datu bāzes datu uzņēmumu noteiktājā pagajūšajā laika momentā.Viena no

prblēmam, ko risināja izstradātāji, bija modifikāciju un atjaunojumu nodrošināšana pie

minimālam izmaksa, tādeļ tika ievests failu lapu sadalīšanas atbalsts, gadījumos kad tie ir

pārpildīti, kā pēc atslēgas, ta arī temporāla atribūta. Paralēlas piekļūves un atjaunošanas

49

vadības mehānismi tika pilnīgi integrēti ar atbilstošajam MS SQL Server funkcijam.

13.4.Oracle Flashback Tehnoloģija

Programmā Oracle9i parādījas Flashback Query mehānisms- jaudīgs, vienkaršs un

pilnīgi drošs veids sistēmas atjaunošanai no lietotāja kļūdām.

Šīs mehānisms ļauj lietotājam bez jebkādas struktūras izmaiņu veikšanas datu bāzē

apskatīt datu bāzes stāvokli uz jebkādu momentu pagatnē.

Šī tehnoloģija ļauj izlabot lietotāja kļūdas. Flashback Query operācijas var tikt izpildītas bez

administratora piedalīšanas un tas dod iespēju izstrādātājiem pievienot savos pielikumos datu

atjaunošanas funkcijas.

Lai izmantotu Flashback Query ir nepieciešams automātiskas pārvaldes ieslēgšana ar

atjaunošanu (Automatic Undo Management) rollback segmentu izmantošanas vietā (Rollback

Segments).

Pie tam Flashback Query izmanto tieši atjaunošanas datus, tādēļ tas izmantošana

neaietekmē ražotspēju. Oralce9i programmā Flashback Query mehānisms dod iespēju saņemt

piekļušanu pie daža statiska datu uzņēmuma.

Oracle10g dotai tehnoloģijai pievienojas vēl dāži līdzekļi: Flashback Versions Query

dod iespēju saņemt izmaiņas „filmu” statiskas bildes vietā, , Flashback Transaction Query dod

iespēju redzēt izmaiņas, kādi bija izdarīti ar uzdoto transakciju, bet atjaunošanas līdzekli

Flashback Database, Flashback Query un Flashback Drop atļauj atgriezties pie iepriekšēja

stāvokļa par konstantu laiku, kurš nav atkarīgs no datu bāzes apjoma.

Kopsavilkumā var pateikt, ka DBVS Oracle jau kļuvusi gandrīz par temporālo DBVS

(ar transākcijas laika atbalstu). Tomēr kaut kādu sarežģītu pieprasījumu radīšana ar

tehnoloģiju Flashback izmantošanu ir atkal pilnīgi atkarīga no izstrādātāja, jo nekāda

daudzejādu temporālo operāciju papildatbalsta nav paredzēts.Bez tam, pat atļautiem

temporaliem pieprasījumiem eksistē stingri ierobežojumi.

13.5. Oracle Workspace Manager Risinājums

Oracle 10g tapat arī piedāvā iesēju izmantot Oracle Workspace Manager mehānismu –

tas ir viena no DBVS iespējam pārvaldīt tekošas, prognozētas un vēsturiskas vērtības vienā un

tā patī datu bāzē.

DBVS Oracle vēl nav kļūvusi pilnīgi temporāla, neskatoties uz to kā Oracle

Workspace Manager’ā tika realizēta daļa no SQL/Temporal idejam. Tomēr attistības tendence

50

ļauj prognozēt, kā pilnvērtīgas temporālas DBVS izstrādes procesi ir veikti.

51

SECINĀJUMI

Darba gaitā tika izstrādāta testa temporāla datu bāze. Kaut šī datu bāze, principā

neabilst reālajiem šīs problēmsfēras sistēmam, tomēr uz šīs bāzes piemēra tika apskatītas

visādas iespējamas darbības, ko var veikt ar temporālājam datu bāzem, tad mērķi uzskatu par

sasniegtu. Tika izstrādata datu bāze dabas gāzes abonentu uzskaitei, kas sastāv no 3 tabulam,

katrā no kurās tiek reālizēta laika sērija.

Šī darba izstrāde bija laikam visgrūtāka, jo projektējot no sākuma ko mēs vēlāmies

iegūt rezultāta, un tikai pēc tam, kā to sasniegt un realīzēt, radīja sajukumu.

Grūtības sagadāja arī objektu skatu realizēšana, jo mana izprojektēta datu bāzes

struktūrā objekti tika izmantoti tikai temporālo datu glabašanai, līdz ar to lai izveidotu objektu

skatu ar pilnīgāko informāciju (ko piemēram satur galvēnā tabula) bija jaizveido jauns objekts

un tam protams, atkal realizēt tas pašas metodes kā jau izveidotājos objektos. Protams to

varēja izdarīt, bet to uzskatīju par neracionālo un laikaietilpīgu risinājumu. Līdz ar to gribēju

izveidot objektu skatus no iepriekš izprojektētiem un reālizetiem objektiem. Tieši tāpēc

izpildot vaicājumus no objektu skatem, papildīnāju tos ar identiskiem vaicājumiem tieši no

tabulam, uzskatamībai un rezultātu pārbaudei. Bija arī vaicajums ko varēju realizēt tikai tieši

no tabulas.

Otra problēma, ar ko sastopos funkcijas FOLD izmantošana. No sākuma to funkciju

veiksmīgi realīzēju, bet veicot vaicājumus kuros tā tiek izmantota iegūvu rezultātus, ko nemaz

ne sagaidīju. Līdz ar to uzskatu, kā ar fukcijas FOLD „mehānismu” un praktisku pielietojumu

nav tikusi skaidrībā. Bet tas ir tāpēc, kā to darīju pašās beigās, un nebija jau laika kārtīgi

apjēgt kļūdu būtību.

Darba beigās nolēmu kā būs lietderīgi vispār iegūt priekšstatu par temporālājiem

DBVS, un atklājās kā principā, neeksistē pilnvērtīgas temporālas DBVS. Protams vairāki

nepieciešami nosacījumi(piemēram tranzakcijas laika atbalsts), tiek atbalstīti vairākās DBVS,

bet pilnīgi par neatkarīgiem un pilnvērtīgiem tos nosaukt nevar. Kaut gan temporālo datu

glabāšana un apstrāde ir nepieciešama kad runa iet par analitiskājām sistēmām, jo uzkrātiem

vēsturiskiem datiem ir liela vērtība planojot un prognozējot uzņēmuma darbību, tendenciju

atklāšanā un lēmumu pieņēmšanā.

52

INFORMĀCIJAS AVOTI

1. Prof. Eiduks, Lekciju konspekts mācību priekšmetā “Progresīvas datu bāzes”, 2008./09.

m.g.

2. Heidi Gregersen, Christian S. Jensen. A Time Center Technical Report. „Temporal

Entity-Relationship Models-a Survey”.

3. Oracle SQL Reference, Oracle Corporation, 2000

4. Oracle Oracle Spatial 10i User’s Guide and Reference, 2007

5. http://orafaq.com/faqloadr.htm

6. http://www.psoug.org/reference/sqlloader.html

7. http://www.postgresql.org/docs/current/static/sql-createopclass.html

8. http://www.psoug.org/reference/cast.html

9. http://www.firststeps.ru/sql/oracle/r.php?94

10. http://www.directionsmag.com/companies/E-Spatial/

11. http://www.timeconsult.com/Software/AboutTimeDB1.0.html

12. http://www.timeconsult.com/Software/Download.html

53