rĪgas tehniskĀ universitĀte - web viewpilna rekursīvo novērtējumu ar iegaumēšanas ......
TRANSCRIPT
RĪGAS TEHNISKĀ UNIVERSITĀTE
Datorzinātnes un informācijas tehnoloģijas fakultāte
Lietišķo datorsistēmu institūts
Deduktīvās DBS
Bernards Gulbis
Rīga, 2010
1
Uzdevuma nostādne
Jāveic čaulas priekšrocību un trūkumu izvērtējums. Jāizdara secinājumi.
2
Saturs
1. Čaula Datalog Educational System (DES).....................................................................4
1.1. Deduktīvā datubāze.................................................................................................4
1.2. Čaulas DES struktūra..............................................................................................4
1.3. Vaicājumu valodas..................................................................................................5
1.3.1. Datalog...........................................................................................................6
1.3.2. SQL.................................................................................................................7
1.3.3. Prolog.............................................................................................................8
1.4. Pieejamās komandas...............................................................................................8
2. Izmantošanas piemērs...................................................................................................10
2.1. Instalācijas apraksts..............................................................................................10
2.2. Lietošana...............................................................................................................11
2.3. Vienkārši piemēri..................................................................................................12
3. Čaulas DES izvērtējums...............................................................................................16
3.1. Priekšrocības.........................................................................................................16
3.2. Trūkumi.................................................................................................................18
Secinājumi............................................................................................................................20
Literatūra..............................................................................................................................21
3
1. Čaula Datalog Educational System (DES)
1.1. Deduktīvā datubāze
Deduktīva datubāze (Deductive Database) paplašina relāciju datubāzi, izmantojot loģisko
programmēšanu, un atbalsta plašākas datu apstrādes tehnoloģijas. Deduktīva datubāze ir
kombinācija no datubāzes, kura satur faktus, zināšanu datubāzes, kura satur līkumus, un
izveduma mehānismu, kurš spēj iegūt jaunus datus no jau esošiem faktiem izmantojot
definētus līkumus.
Deduktīvajā datu bāzē glabājas trīs veidu informācija, dati, fakti un likumi. Dati un fakti
skaidri raksturo reālās pasaules objektus. Tie ir tiešie fakti, kurus lietotājs glabā datubāzē.
Savukārt, fakti kalpo deduktīvas datu bāzes vadībai, izpildot vaicājumus, un izpildot jauno
faktu izvadi, no jau esošiem faktiem.
1.2. Čaulas DES struktūra
Datalog Educational System (DES) tika izstrādāts Madrides universitātē (Complutense
University of Madrid). Tā ir deduktīvās datubāzes čaula, kas pēc būtības paredzēta apmācības
nolūkiem studentiem.
DES ir bezmaksas, atvērtā koda, daudz platformu, pārnesama, vienkārša Prolog bāzēta
deduktīvās datubāzes sistēmas realizācija. DES 2.1 ir pašreizējā versija, kurai ir:
Datalog un SQL vaicājumu valodas;
pilna rekursīvo novērtējumu ar iegaumēšanas tehnikām;
bagāta aritmētika;
noslāņoti (stratified) noliegumi;
ODBC savienojumi ar ārējām relāciju datubāzes vadības sistēmām (RDBMS);
Datalog un SQL marķieri;
jaunas pieejas deklaratīvajai atkļūdošanai;
testa gadījumu ģenerēšana priekš SQL skatiem;
null vērtību atbalsts;
ārējo savienojumu (outer join) un agregātu predikāti.
Sistēma ir ieviesta pa virsu Prolog un to var izmantot no Prolog interpretētāja, kas
darbojas uz jebkuras OS, ko atbalsta Prolog interpretētājs. Turklāt, ir pieejamas Windows un
Linux izpildprogrammas [3].
4
Galvenais jaunums šajā čaulā ir spēja piekļūt Datalog attiecībām no SQL ziņojumiem. Lai
to panāktu, iespējams deklarēt tipus un pēc izvēles kolonnu nosaukumus priekš Datalog
attiecībām. Tipiem ir viena veida integritātes ierobežojumi, ko var ievietot datubāzē. Šī čaula
arī piedāvā citus Datalog (spēcīgus) integritātes ierobežojumus: primārā atslēga, ārējā atslēga,
funkcionālās atkarības un lietotāja definētus integritātes ierobežojumus. Atšķirībā no relāciju
datubāzu sistēmām, šādi ierobežojumi var būt ievietoti ne tikai faktu meklēšanai datubāzē, bet
arī piemeklēt atbilstošos atribūtus (skatus). Ja ierobežojumu pārbaude ir iespējota (to var
iespējot vai atspējot, izmantojot komandu), sistēma pārrauga šādus ierobežojumus, vai jauns
fakts vai jauns likums tika paziņots. Kā arī, strādājot datubāzei, integritātes ierobežojumu
paziņošana ir veiksmīga vienīgi gadījumos, ja datubāze ir konsekventa attiecībā uz atbilstošu
ierobežojumu. Abos gadījumos tiek sniegta sīka kļūdu ziņošana [3]. Citi uzlabojumi, izmaiņas
un izlabotās kļūdas ir uzskaitītas lietotāja rokasgrāmatā.
DES tika izstrādāts ar mērķi iegūt vienkāršu, interaktīvu, daudz platformu, un pieejamu
sistēmu (nav obligāti efektīvi) studentiem, lai viņi varētu iegūt fundamentālās pamatzināšanas
un pamatus deduktīvajām datubāzēm ar vaicājumu valodām Datalog un SQL. Mācību
nolūkiem SQL ir atbalstīts ar saprātīgu standarta aptveršanu. Citas deduktīvās sistēmas nav
pilnībā piemērotas šādām vajadzībām, jo nav dažu īpašību, ko DES piedāvā izglītības
nolūkos. Šī sistēma nav domāta, kā pilnvērtīga deduktīvā datubāze, tādējādi, tā nesniedz
noturīgumu, transakcijas, drošību, un citas funkcijas, kas atrodas pašreizējās datu bāzes
sistēmās [3].
Jaunākais ieguldījums šai sistēmai tika īstenots deklaratīvs atkļūdotājs Datalog
vaicājumiem, kas balstās uz programmas semantiku, nevis uz aprēķina mehānismu.
Atkļūdošanas process parasti tiek uzsākts tad, kad lietotājs konstatē neparedzētu atbildi uz
vaicājumu. Uzdodot jautājumus par paredzēto semantiku, atkļūdotājs meklē nepareizas
programmas attiecības [3]. Sīkāka informācija ir pieejama lietošanas pamācībā.
Ņemot vērā vajadzību programmas kļūdas ķeršanai, strādājot ar lielu datu apjomu, tika
iekļauts arī testa gadījumu ģenerators priekš SQL korelētajiem skatiem. Šo rīku var izmantot,
lai radītu pozitīvus, negatīvs un gan pozitīvus, gan negatīvus testa gadījumus [3]. Sīkāka
informācija ir pieejama lietošanas pamācībā.
1.3. Vaicājumu valodas
DES ir attīstījies no samērā vienkārša Datalog interpretatora līdz tā pašreizējam stāvoklim,
kas balstās uz deduktīvās datubāzes dzinēja, kuram var izpildīt gan Datalog, gan SQL valodas
5
vaicājumus. Turklāt, tiek piedāvāts arī Prolog interfeiss, lai izceltu atšķirības starp Datalog un
Prolog sistēmām. Tā kā, DES čaula ir paredzēta studentiem, tai nav pilnvērtīgu
raksturpazīmju saistībā ar Prolog, Datalog vai SQL balstītām sistēmām. Tomēr, tai ir daudzas
funkcijas, kas to padara pievilcīgu priekš apmācības līdzekļa, kopā ar jauno deklaratīvā
atkļūdotāja izstrādi un testa gadījumu ģenerētāju. Šajā sadaļā tiks aprastas trīs vaicājumu
valodas: Datalog, SQL un Prolog.
Datubāze tiek koplietota ar visām vaicājumu valodām tādā veidā, lai varētu ar vaicājumiem
un mērķiem atsaukties uz jebkuru objektu, kas definēts jebkurā valodā. Tomēr ir daži
jautājumi, kas jāņem vērā. Piemēram, ja Datalog fakts ir ielādēts datubāzē, tā definēto relāciju
var izgūt ar Datalog. Bet, ja ir vajadzība piekļūt šim relācijai no SQL, ir pieejamas divas
alternatīvas:
1) definēt to pašu relāciju SQL, izmantojot create table operatoru;
2) deklarēt tipus priekš tabulām.
Šis konkrētais jautājums rodas tāpēc, ka Datalog relācijām ir atribūti bez nosaukumiem un
pozicionālā atsauce tiek lietota piekļuvei pie šīm relācijām. Savukārt, SQL izmanto notāciju
sintaksi, norādot nosaukumus relāciju argumentiem.
1.3.1. Datalog
Viena no populārām loģiskās programmēšanas valodām, kura ir tuvu vaicājumu valodām
datu bāžu tehnoloģijās ir Datalog valoda. Nosaukumu Datalog var sadalīt uz divām daļām,
Data un Logic, darbs ar datiem izmantojot matemātisko loģiku. Datalog valodu, var uzskatīt
kā alternatīvo datubāzēs vaicājumu valodu. Datalog valodu pasniedz kā fundamentālo
vaicājumu valodu, kurš piemērots apmācībai par vaicājumu optimālo izpildīšanu, tāpēc tā
iekļauta DES. Datalog valoda ir ļoti tuva attieksmju loģikai, ar dažām sīkām izmaiņām, lai
atbalstītu ērtāko darbu ar datiem.
Datalog valodā tiek iebūvēta plašuma meklēšanas stratēģija, vaicājumu izpildei. Un
vaicājumu rezultāts ir kortežu kopa, un Datalog valoda, kā ari SQL valoda, spēj to nodrošināt,
jo Datalog valoda atgriež kortežus, kā kortežu kopu.
Datalog valodā nav jūtīguma priekš likumu kārtības. Un, kā zināms, datu bāžu valodās,
tādi kā SQL vai relāciju algebra, nav atkarīgi gan no meklēšanas predikātu kartības, gan datu
bāžu kortežu kārtības. Datalog valodā nav iebūvēti ne speciālie predikāti, ne funkcionālie
simboli, un Datalog valoda apstrādā daudz kortežu vienā laikā. Tajā pašā laikā, tādas īpašības
ierobežo Datalog valodas jaudu, kā universālas programmēšanas valodu. Tādēļ Datalog
6
valoda izskatās, kā laba abstrakcija, kura ilustrē loģiskās programmēšanas valodas
izmantošanu, kā datu bāžu valodu.
Datalog ir viena no parastajām loģiskās programmēšanas valodām. Un tā, kā Datalog
valoda atrodas ļoti tuvu relāciju modelim, no Datalog valodas izmantošanas, datu bāžu
valodas lomā ir daži labumi, kuri saistīti ar Datalog valodas īpašībām, īpaši ar rekursijas
iespējām.
Loģiska programmēšana nosaka daudz neuzskatāmu vaicājumu veidošanu, un
ierobežojumu ieviešanu, salīdzinot ar SQL. Datalog nesatur sevī tehnoloģijas, kuras ļauj
apstrādāt lielus datu apjomus, neļauj glabāt lielas datubāzes, nevar vadīt daudzu lietotāju
kopējo darbību ar datiem. Lai daļēji apietu šīs nepilnības, DES balstās uz vairākām vaicājumu
valodām.
Tā kā, Datalog izriet no Prolog, izstrādātāji ir pieņēmuši gandrīz visas Prolog sintakses
konvencijas Datalog programmu rakstīšanai. Izstrādātāji pieauj rakstīt Datalog programmas
ar noslāņošanās noliegumu (stratified negation), tas ir, normālas loģikas programmas bez
funkciju simboliem. Noslāņošanās ir uzlikta, lai nodrošinātu skaidru semantiku, kad tiek
iesaistīti noliegumi, un funkcijas simboli nav atļauti, lai garantētu vaicājumu izbeigšanos,
dabas prasība attiecībā uz (relāciju) datu bāzes lietotājs, kurš nespēj tikt galā ar saliktajiem
datiem. Vispiemērotākā prasība, lai ievērotu relāciju datubāzes lietotāju, kas nav spējīgs tikt
galā ar saliktajiem datiem.
1.3.2. SQL
Sintakse, ko atpazīst interpretators it aizgūta no SQL standarta. SQL valoda ir universāla
relāciju datu bāžu vaicājumu valoda. Vaicājumu valoda SQL atrodas ļoti tuvu relācijas
algebrai ar papildus operandiem. SQL valodas vaicājumi izpildes gaitā pārveidojas uz relāciju
algebras darbībām. Relāciju algebras darbības izpildās relāciju datubāzē.
Ar valodu SQL var gan pievienot jaunus datus, gan izmainīt jau esošos datus, gan dzēst
tos. Arī ir iespēja mainīt datu bāzes shēmu. Eksistē daži standarti, kuri apraksta valodu SQL,
un to funkcijas un iespējas. Vaicājumus vaicājumu valodā SQL var sadalīt uz trim lielām
grupām, pēc izpildāmajām funkcijām:
1) datu definēšanas vaicājumi;
2) datu pārvaldības vaicājumi;
3) datu iegūšanas vaicājumi.
7
Katru vaicājumu SQL valodā apraksta ar atslēgvārdiem. Datu definēšanas vaicājumiem ir
nozīme, lai radītu datu bāzi un izveidotu tajā tabulas. Datu pārvaldības vaicājumiem ir nozīme
pievienojot jaunus datus, izmainot jau esošos un dzēšot vecos datus. Savukārt, datu iegūšanai
ir lielāka nozīme SQL valodā. Visi vaicājumi, kuri saistīti ar datu iegūšanu sākas ar aclēgvārtu
select. Šie vaicājumi lieliski attēlo SQL valodas ļoti plašās iespējas.
1.3.3. Prolog
Prolog programmu un mērķu (goal) sintakse ir tāda pati, kā Datalog, ieskaitot visus
iebūvētos operatorus, bet agregējas. Ievērojiet, ka negācija tiek pierakstīta sekojoši not(Goal),
nevis parastajā formā \+Goal.
Pēc būtības, Prolog ir programmēšanas valoda, kas balstās uz Horna teikumiem. Prolog
valoda ir čaula, kas nodrošina sadarbību starp lietotāju un zināšanu bāzi, kas glabā aprakstītās
zināšanas. Parasti zināšanas tiek strukturētas faktu veidā. Katrs likums apraksta nelielu,
relatīvi neatkarīgu zināšanu fragmentu. Jaunu likumu pievienošana notiek relatīvi neatkarīgi
no citiem likumiem. Zināšanu bāze ir viegli modificējama.
Valodā Prolog tiek atsevišķi izšķirta deklaratīvā un procedurālā jēga. Deklaratīva jēga
nosaka to, kas būs par programmas rezultātu. Procedurāla jēga nosaka to, kā šis rezultāts bija
iegūts. Prolog programmas ir faktu deklarācija un likumi, lai veiktu deduktīvus secinājumus.
Programmas izpilde iekļauj atbildi uz jautājumiem, kas atsaucās uz faktiem vai bija izvadīti
no tiem. Lietotājs dod aksiomas un Prolog mēģina pierādīt izvirzītās teorēmas.
Prolog veic datubāzes pārmeklēšanu izmantojot dziļuma meklēšanas algoritmu, cenšoties
pierādīt šo vaicājumu un izvada atbildi uz vaicājumu. Vaicājumi sistēmā sastāv no viena vai
vairākiem mērķiem. Vārds mērķis tiek izmantots tāpēc, ka Prolog sistēma uztver vaicājumus
kā mērķus kurus nepieciešams sasniegt. Atbilde uz vaicājumu var būt vai nu pozitīva vai
negatīva, atkarībā no tā vai izvirzītais mērķis var tikt sasniegts vai nē. Pozitīvas atbildes
gadījumā uzskata ka attiecīgais mērķis var tikt sasniegts un ka tas ir sasniedzams. Pretējā
gadījumā mērķis nav sasniedzams.
1.4. Pieejamās komandas
Sistēmas konsole pieņem vairākas komandas, kas ir izolētas no datubāzes, lai izvairītos no
atslēgvārdu sadursmēm arī gadījumos, kad relācijas vārds sakrīt ar kādu no komandām. Tas ir
iespējams tāpēc, ka iesniedzot komandu nepieciešams, lai pirms tā būtu slīpsvītras "/"
simbols. Komandas var klasificēt sešās grupās:
8
1) noteikumu datubāzes komandas priekš ievietošanas, dzēšanas un programmu un
noteikumu uzskaitīšanas;
2) operētājsistēmas komandas, kas nodarbojas ar operētājsistēmas failu sistēma un
ārējām komandām;
3) papildus tabulu komandas, informācija par saglabātajiem rezultātiem;
4) log komandas, lai reģistrētu sistēmas izejas failos;
5) informatīvās komandas, lai parādītu predikātu atkarības grafu, stratifikācija,
sistēmas stāvoklis, palīdzība un citi;
6) dažādas komandas sesijas beigšanai un Prolog aktivēšanai.
Sīkāk, katras grupas komandas ir uzskaitītas un aprakstītas DES lietotāja ceļvedī.
9
2. Izmantošanas piemērs
Šajā nodaļā tiks apskatīta čaulas instalācija un lietošana, apskatot nelielu piemēru. Tāpat
tiks īsi aprakstītas vairākas čaulas iespējas.
2.1. Instalācijas apraksts
DES čaula ir brīvi pieejama augšupielādei internetā arhīva formātā
(http://www.fdi.ucm.es/profesor/fernan/des/html/download.html), kas ieļauj vairāku avotu
kodu izlaidumus priekš dažiem Prolog interpretētājiem un operētājsistēmām. Tāpat, satur
izpildes failu izlaidumus priekš MS Windows, Linux un Mac OS operētājsistēmām.
Apskatīsim MS Windows operētājsistēmai piedāvātās iespējas. Lejupielādējot piedāvātos
failus, to instalācijai nepieciešams tos atpakot no arhīva. Lai darbotos ar DES nepieciešams
izlemt ar kuru no četriem piedāvātajiem Prolog interpretētājiem tiks strādāts. Attiecībā pret
izvēlēto interpretētāju tiek norādīti uzstādījumi:
a) Ciao Prolog: -l ciaorc
b) GNU Prolog: --entry-goal ['des.pl']
c) SICStus Prolog: -l des.pl
d) SWI Prolog: -g "ensure_loaded(des)" (noņemt --win_app ja ir)
Šos uzstāījumus iespējams norādīt īsceļa ikonai, vai izveidot attiecīgu bat failu. Čaulu
iespējams palaist konsoles režīmā, loga režīmā vai grafiskajā režīmā.
Tika lejupielādēts un atarhivēts izlaidums, tad palaidu čaulu konsoles režīmā (sk.1.a.att.)
un loga režīmā (sk.1.b.att.). Loga režīmā tiek piedāvātas noderīgas funkcijas izvēlņu joslā, kas
atvieglo darbu ar konsoli, kas atkarībā no izmantojamā Prolog interpretatora var mainīties.
a) b)
1.att. DES čaulas lietojums: a – konsoles režīmā; b – loga režīmā.
DES piedāvā arī izlaidumu ar bagātu grafisko interfeisu, kas izstrādāts izmantot Java
ASIDE 0.7 grafisko vidi, kas ir konfigurēts priekš Datalog sintakses izcelšanas. Vadības
pogas un interaktīva konsole, tādējādi atvieglojot tās izmantošanu, samazinot taustiņsitienu
10
skaitu. Grafiskā čaula tiek piedāvāta jar formātā, tā palaišanai nepieciešama Java izpildes
vide jeb JRE (Java Runtime Environment). Palaišanai iespējams izveidot bat failu. Grafiskās
vides čaula attēlota 2.attēlā.
cd C:\Program Files\Java\jdk1.6.0_22\binjava -jar C:\des\des_acide.jar
2.att. DES grafiskais čaulas lietojums.
Sekojoši grafiskā čaula ir ērtākā no apskatītajiem čaulas izmantošanas veidiem, jo tas ir
uzskatāmāks un iekļauj vairākas izvēlnes, kas aizvieto komandu rakstīšanu. Tāpat, parādās
vairākas papildus iespējas.
2.2. Lietošana
Pēdējā rindā (DES-DATALOG>) ir DES sistēmas uzvedne, kas ļauj jums rakstīt komandas,
Datalog vaicājumus, laicīgos skatus un savienotos vaicājumus. Ja kļūdas rezultātā iziet no
DES čaulas, bet programma ir palaista caur Prolog interpretētāju, tad var ierakstīt „des.” (bez
pēdiņām, bet ar punktu) Prolog uzvednē, lai turpinātu darbu. Pašlaik ir pieejami trīs režīmi
11
dažādu vaicājumu interpretatoriem: Datalog, SQL un Prolog. Pirmais ir pēc noklusējuma, šos
režīmus var nomainīt, izmantojot komandas:
/datalog – priekš Datalog;
/sql – priekš SQL;
/prolog – priekš Prolog.
Visas komandas vienmēr sākas ar slīpsvītru (/). Katrā gadījumā, ja ir aktivizēts, kāds no
režīmiem, var izpildīt vaicājumus vai mērķus (goal), vienkārši iedrukājot vaicājumu vai
mērķus pēc attiecīgās komandas. Gadījumā, ja aktivizēts Datalog režīms, iespējams uzreiz
iesniegt SQL vaicājumus.
Dati tiek glabāti Datalog datubāzē, ieskaitot faktus un likumus. Visiem vaicājumiem un
mērķiem, neatkarīgi no valodas, atsaucas uz šo datubāzi. Kad ārējā relāciju datubāze tiek
pieslēgta, tās tabulas un skati ir pieejami un var būt pieprasīti vaicājumos no Datalog, Prolog
un SQL.
2.3. Vienkārši piemēri
Darbam ar DES ir svarīgi zināt būtiskākās komandas darbam ar čaulu. Grafiskā vide
pieļauj attiecīgo izvēlņu nospiešanu tā vietā, lai drukātu komandas. Galvenokārt, izmantošu
sekojošas komandas:
/listing – izvada uz ekrāna pašreiz definēto Datalog;
/status – izvada uz ekrāna patreizējos uzstādījumus;
/consult [faila_nosaukums] – ielādē Datalog programmu DES čaulā;
/help – izvada uz ekrāna visas pieejamās DES čaulas komandas.
Deduktīvās datubāzes izveidei ir nepieciešamas komandas likumu pievienošanai un
izņemšanai no datubāzes:
/assert [likuma_nosaukums] – lai pievienotu jaunu Datalog likumu datubāzē;
/retract [likuma_nosaukums] – lai izņemtu esošu Datalog likumu no datubāzes.
Komanda /assert dod iespēju definēt jaunus faktu un likumus konkrētajā deduktīvajā
datubāzē.
a. piemērs:
Pirmajam piemēram tiks izveidota programma, kas definē ģimenes koka struktūru (sk.
3.att.). Nepieciešams noskaidrot visus personas janis pēctečus. Tiek definēts pāru saraksts
<vecaks, berns>, tādā veidā, ka vecāks ir bērna vecāks (relācija vecaks). Tāpat definēju pārus
12
janis
peteris
aigars lana
zane
inga reinis gunta
dace
<sencis, pectecis>, tādā veidā, ka sencis ir pēcteča sencis (relācija sencis). Definēju pārus
<tevs, berns>, tādā veidā, ka tēvs ir bērna tēvs (relācija tevs). Definēju pārus <mate, berns>,
tādā veidā, ka māte ir bērna māte (relācija mate).
3.att. Ģimenes koks.
Sekojoši, izveidoju Datalog programmu, definējot faktus un likumus.
tevs( janis, inga).tevs( peteris, aigars).tevs( reinis, lana).tevs( aigars, dace).mate( zane, inga).mate( inga, aigars).mate( gunta, lana).mate( lana, dace).vecaks(X,Y) :- tevs(X,Y).vecaks(X,Y) :- mate(X,Y).sencis(X,Y) :- vecaks(X,Y).sencis(X,Y) :- vecaks(X,Z), sencis(Z,Y).
Tālāk, definēju vaicājumu sencis( janis, X), lai noskaidrotu visus pēctečus, kas ir janis
personai. Vaicājuma rezultāts ilustrēts 4.attēlā. Kā redzams, vaicājums korekti izvadīja visus
trīs dotos pēctečus.
13
4.att. Programmas ielāde un vaicājuma izpilde.
b. piemērs:
Šo programmu varēja izveidot arī ar SQL vaicājumu valodas palīdzību, kas arī atrisina šo
uzdevumu.
/sqlcreate table tevs(tevs string,berns string);insert into tevs values('janis','inga');insert into tevs values('peteris','aigars');insert into tevs values('reinis','lana');insert into tevs values('aigars','dace');create table mate(mate string,berns string);insert into mate values('zane','inga');insert into mate values('inga','aigars');insert into mate values('gunta','lana');insert into mate values('lana','dace');create view vecaks(vecaks,berns) as select * from tevs union select * from mate;create or replace view sencis(sencis,pectecis) as with recursive rec_sencis(sencis,pectecis) as select * from vecaks union select vecaks,pectecis from vecaks,rec_sencis where vecaks.berns=rec_sencis.sencis select * from rec_sencis;-- janis pectecis:select * from sencis where sencis='janis';
14
Tālāk definēju un ielādēju faktus ar SQL izteiksmēm. Uz izpildu vaicājumu, lai
noskaidrotu visus pēctečus, kas ir janis personai. Vaicājums ilustrēts 5.attēlā.
5.att. Programmas ielāde un vaicājuma izpilde.
Kā redzams, vaicājums korekti izvadīja visus trīs dotos pēctečus, kuri sakrīt ar iepriekšēji
iegūtajiem rezultātiem. Kā redzams, Datalog programma ir daudz īsāka un saprotamāka tāda
veida uzdevumiem, nekā SQL. Programmas uzrakstīšana arī bija vienkāršāka ar loģiskās
valodas palīdzību. Čaula DES sniedz salīdzinoši plašas iespējas, veidojot dažādas
programmas.
15
3. Čaulas DES izvērtējums
Šajā nodaļā tiks īsi izvērtētas čaulas DES priekšrocības un trūkumi, kas būtu jāņem vērā,
apskatot šo čaulu.
Sekojoši, apskatot priekšrocības un trūkumus, var secināt ka vairāk ir priekšrocību, lai gan
ir pāris nozīmīgi trūkumi. Jāatzīmē, ka iepriekšējam versijām liela daļa trūkumu tika izlaboti,
kas tagad ir pieskaitāmi pie priekšrocībām. Tātad, nākotnē DES var ievērojami attīstīties un
izlabot trūkumus nākamajās versijās.
Kopīgi, DES ir ļoti jaudīga un iespējām bagāta deduktīvās datubāzes čaula, ņemot vērā, ka
šī ir apmācības sistēma, kuru galvenokārt uztur viens cilvēks.
3.1. Priekšrocības
Sekojoši, čaulas sniedz ļoti daudz priekšrocību, lielākā daļa priekšrocību ir uzskaitīta
zemāk. Šīs priekšrocības padara DES čaulu populāru un bieži izmantojamu, galvenokārt
mācību nolūkiem.
Bezmaksas, daudz platformu, pārnesama un atvērta koda.
o To var izmantot jebkurā operētājsistēmā (Windows, Mac, Linux, u.c.), kas
darbojas uz viena no atbalstītajiem Prolog interpretatoriem.
o Turklāt, portatīvie izpildāmie faili ir nodrošināti priekš Windows un Linux
operētājsistēmām.
Interaktīva.
o Balstoties uz komandrindas interpretatoru, ir iespēja darboties ar DES,
iesniedzot vaicājumus, modificēt datubāzi un piemērojot komandas.
Grafiskais lietotāja interfeiss (GUI).
o Iespēja izmantot Java ASIDE 0.7 grafisko vidi (ekrāna attēli), kas ir
konfigurēts priekš Datalog sintakses izcelšanas (iekrāsošanas). Vadības
pogas un interaktīva konsole, tādējādi atvieglojot tās izmantošanu,
samazinot taustiņsitienu skaitu (tas attiecas uz izpildāmo failu).
Savietojamība ar teksta redaktoriem GNU Emacs.
o Ja patīk strādāt Emacs teksta redaktora vidē, iespējams uzstādīt integrāciju
(Emacs environment).
Datalog un SQL vaicājumu valodas.
16
o Dod iespēju izmantot deduktīvo datubāzu spēku, izmantojot gan Datalog,
gan (rekursīva) SQL vaicājumu valodas. Tās koplieto kopīgu relāciju
datubāzi, kas var tikt definēta ar jebkuru no šīm valodām, un tāpat arī veidot
vaicājumus.
Aktīvs jeb dzīvs projekts.
o Katrus 2 līdz 3 mēnešus tiek solīts atjaunināt izlaidumus.
Stabila sistēma.
o Izstrādātāji apgalvo, ka tiek ziņots par nelielu kļūdu skaitu.
Populāra sistēma.
o Projekta lejupielādēšanas statistika uzrāda strauju ielāžu palielināšanos
pēdējā laikā, kas ir samērā augsta.
o Meklējot informāciju internetā (Google) par Datalog, tiek piedāvāta
informācija arī par DES.
o Vairāk nekā 32 tūkstoši ierakstu, meklējot „Datalog Educational System”
pārlūkprogrammā Google.
Datubāzes modificēšana.
o Datubāzi iespējams modificēt gan ar SQL DML (Data Manipulation
Language), gan ar komandu palīdzību.
Vērtības null atbalsts.
o Tiek piedāvāta atbildīga iespēja izmantot nenoteiktību ar SQL.
Ārējie savienojumi (outer join).
o Tā kā, null vērtības ir pieļaujamas, tiek piedāvāta iespējā arī izmantot ārējos
savienojumus: labos, kreisos un pilnos ārējos savienojumus gan priekš SQL,
gan Datalog.
Agregāti.
o Iespēja apkopot datus ar count, sum, min, max, avg un times gan priekš
SQL, gan Datalog.
o Iespēja atrast gan predikātu, gan funkciju versijas priekš Datalog
agregātiem.
o Grupēt datu kopumus un filtrēt ar agregātu palīdzību.
o Ātri un uz vietas izveidot grupas ar Datalog auto grupēšanas palīdzību.
Vairāki datu kopumi (multisets).
o Iespējo vai atspējo dublikātu apstrādi gan Datalog, gan SQL.17
Relāciju datubāzes piekļuve, izmantojot ODBC.
o ODBC datu avotiem iespējams ēri piekļūt. Savieno DES ar jebkuru DBVS,
kas atbalsta šādu savienojumu (MySQL, MS Access, Oracle, u.c.).
Negācija.
o Nevajag sagaidīt daudz vairāk, kā stratificēto negāciju un null vērtības
trūkumus.
Integritātes ierobežojumi.
o Domēns, tipi, primārās atslēgas, atsauces integritāte, funkcionālās atkarības,
lietotāja definētās stiprās saites, saišu pārbaudes iespējošana vai
atspējošana.
Deklaratīvā atkļūdošana priekš Datalog programmām.
o Atkļūdo ieplānoto semantiku, nevis procedurālo semantiku.
Testa gadījumu ģenerators priekš SQL skatiem.
o Strādā ar skatiem, kas paredzēti lielām tabulām, un pārbauda to ar testu
gadījumiem, nevis ar faktiskām tabulām.
Bagāta aritmētika.
o Rakstiet aritmētiskās izteiksmes ar plašu kopumu aritmētisko funkciju,
operatoriem un konstantēm.
Tipu sistēma priekš SQL tabulām un skatiem.
o Priekšrocības tipizētu relāciju un tipu interfeisu pielietošana.
3.2. Trūkumi
Ne visi ir labi. Ņemot vērā, ka šī ir apmācības sistēma, kuru galvenokārt uztur viens
cilvēks. Sekojoši, čaulai ir trūkumi, kas ir uzskaitītas zemāk. Kā redzams, trūkumu ir
ievērojami mazāk nekā priekšrocību. Būtiskākie trūkumi ir uzskaitīti zemāk.
Netiek gaidīts, ka DES spēs pārspēt kādu veiktspējas atzīmi vai konkurēt ar citām
lielākām deduktīvo datubāzu sistēmām.
Netiek gaidīts, ka DES spētu darboties ar lieliem datu apjomiem.
Valodas Datalog trūkumi čaulā.
o Netiek pieļauta datubāzes modifikācija ar Datalog likumu palīdzību.
o Lietotāja relācijās nav pieļaujama salikto noteikumu pielietošanā par
argumentiem.
Valodas SQL trūkumi čaulā.
18
o Tabulu un kolonnu identifikatori ir reģistrjutīgi (case sensitive).
o Daži nepareizi SQL priekšraksti netiek noraidīti (tie, kas satur GROUP BY
klauzula un kolonnu projekcijas sarakstā, kas nav sastopami grupu
sarakstā).
o Aprēķināms SQL priekšraksts seko gramatikai, kas aprakstīta lietošanas
pamācībā. Taču, pašreizējā gramatika parsē papildus noteikumus, kas vēl
nevar tikt aprēķināti (piemēram, ORDER BY, ALL, ANY, u.c.).
Ir uzskaitīti arī vairākas atklātās kļūdas, kuras pagaidām nav izlabotas, bet tiek solīts tās
izlabot nākamajās versijās.
19
Secinājumi
Darba ietvaros tika izpētīta un aprakstīta čaulas struktūra, lietotās vaicājumu valodas un
pieejamajās komandas. Tika apskatīta čaulas instalācija un pielietošana, kā arī apskatīts
piemērs. Veicu čaulas priekšrocību un trūkumu izvērtējums.
DES čaula ir paredzēta apmācības nolūkiem, piedāvājot salīdzinoši vienkāršu deduktīvās
datubāzes sistēmu ar vairākām vaicājumu valodām. Čaula ir pilnveidojusies un patreizējā
versija satur lielu daudzumu funkcionalitāšu un jauninājumu. DES čaulai ir vairākas
nepilnības, bet arī ļoti daudz priekšrocību un ņemot vērā, ka šī ir apmācības sistēma, kuru
galvenokārt uztur viens cilvēks, tā ir samērā jaudīga un pilnvērtīga. Iespējams koplietot
Datalog un SQL vienas datubāzes ietvaros. Tādā veidā, tiek atrisinātas vairākas nepilnības,
piemēram, darbs ar lielākiem datu apjomiem.
Manuprāt, šī čaula ir ļoti laba izvēle, lai iepazītos un iegūtu pamatzināšanas deduktīvajās
datubāzēs un loģiskajās valodas. Tā ir bezmaksas un atvērtā koda, kas dod iespēju to pilnīgāk
apgūt. DES ir viegli lietot un instalēt, tā ir interaktīva sistēma, konfigurējama, stabila un
platformas neatkarīga. Tāpat, tiek piedāvāts ērts grafiskais lietojums.
20
Literatūra
1. Lekciju konspekts priekšmetā „Progresīvās datu bāzes (DB3)”, prof. J.Eiduks2. RTU: Datu bāzes tehnoloģiju laboratorija / Internets - http://datubaze.wordpress.com/macibu-kursi/db3/3. Datalog Educational System / Internets - http://www.fdi.ucm.es/profesor/fernan/DES/, pēdējā
modifikācija 2010.gada 10. decembrī.4. Perez F.S. Datalog Educational System V2.1 User’s Manual / Complutense University of Madrid,
Faculty of Computer Science, Spain, 30.11.2010 - 149 pages.
21