priekšmetiskā vide · web view2021. 2. 22. · kā priekšmetiskā vide ir izvēlēta mācību...
TRANSCRIPT
Multibāzes sistēmas izstrāde
Izstrādāja: Anete Sausiņa
Linda Stanga
Saturs
1 Priekšmetiskā vide....................................................................................................................3
2 Datu avotu konceptuālie modeļi...............................................................................................4
3 Multibāzu sistēmas realizēšanas koncepts...............................................................................9
4 Globālās shēmas izveide........................................................................................................10
4.1 Datu avotu savienošana ar ODI......................................................................................10
4.2 Interfeisa izveide.............................................................................................................12
4.3 Pakotnes izveide..............................................................................................................14
5 Lietojuma un grafiskā interfeisa izveide................................................................................16
6 Secinājumi..............................................................................................................................19
1 Priekšmetiskā vide
Kā priekšmetiskā vide ir izvēlēta mācību kursu administrēšana. Ir izveidoti 3
informācijas avoti: MS Excel, MS Access datubāze un Oracle datu bāze. Excel datu bāzē
glabājas dati par projektiem, uzņēmumiem, kas iesaistīti projektos un mārketinga
piedāvājumiem. Access datu bāzē glabājas dati par pasniedzējiem, to CV un mācību kursiem,
kurus tie pasniedz. Oracle datu bāzē glabājas dati par projektiem, mācību kursiem un kursu
apmeklētājiem.
2
2 Datu avotu konceptuālie modeļi
Attēlos 2.1 – 2.3 ir redzami izveidoto datu avotu konceptuālie modeļi. Attēlā 2.4. ir redzama izveidotā globālā shēma.
Attēls 2.1Datu avots nr.1 (MS Access)
3
Attēls 2.2Datu avots nr.2 (Oracle)
4
Attēls 2.3Datu avots nr. 3 (MS Excel)
5
Attēls 2.4 Globālā shēma
6
Veidojot globālo shēmu, tika ņemti vērā tādi nosacījumi kā, piemēram, “Apliecība” un
“Sertifikāts” ir sinonīmi, tāpēc globālajā shēmā ir viena tabula “Sertifikāts” un tiks apvienoti abu
tabulu atribūti. Sertifikāts tiks piesaistīts kursa apmeklētājiem. “Projekts” un “Mācību kurss” ir
holonīmi, jo mācību kurss ir projekta sastāvdaļa. Mācību kurss ir divos informācijas avotos (IA2,
IA3) – bet globālajā shēmā būs viena tabula ”Mācību kurss”.
Access
Globālāshēma
Oracle
Excel
7
Oracle
8
3 Multibāzu sistēmas realizēšanas koncepts
Attēlā 3.1. ir parādīts, kā tiks izveidots lietojums, kurš atgriezīs datus no dažādām datu
bāzēm. Izmantojot interfeisus, Oracle, Excel un Access datu bāzes tiks savienotas ar rīku Oracle
Data Integrator, ar kura palīdzību dati no šiem avotiem tiks ielādēti mērķa tabulās. Mērķa tabulas
ir tabulas, kas ataino globālo shēmu (Attēls 2.4). Globālās shēmas tabulas tiks izveidotas Oracle
datu bāzē. NetBeans vidē Java valodā tiks izveidots lietojums, kurš izgūs datus no Oracle datu
bāzes globālās shēmas tabulām.
Attēls 3.5Daudzbāzu sistēmas realizācijas shēma
9
4 Globālās shēmas izveide
Darba izpildei tika izvēlēts rīks Oracle Data integrator (ODI) 11g. ODI ir ETL rīks, kas
nodrošina datu izvilkšanu, transformēšanu un ielādi. Datu izvilkšana nozīmē datu iegūšanu no
esošām sistēmām. Transformēšanas posms paredz, piemēram, šādas datu transformācijas:
atsevišķu kolonnu izvēle ielādēšanai,
kodētu lielumu pārdēvēšana (piemēram, ja datu avotā ar 1 apzīmē vīrieša dzimumu,
bet datu noliktavā – ar V),
jaunu aprēķinātu lielumu ieviešana,
viena datuma lauka sadalīšana atsevišķā dienā, mēnesī un gadā,
datu, kas nāk no vairākiem avotiem, apvienošana (piemēram, merge),
datu apkopošana (piemēram, vairāku datu rindu apkopošana, lai iegūtu informāciju
par kopējiem pārdošanas datiem katram veikalam, reģionam u.tml.),
vienas kolonnas sadalīšana vairākās.
Kad transformēti atbilstoši datu noliktavas struktūrai, tos ir iespējas ielādēt. Ielāde datu
noliktavā sastāv no tabulu aizpildīšanas noliktavas shēmā.
Pirms darba uzsākšanas ar ODI Oracle 12c datubāzē tikai izveidotas mērķa tabulas –
tabulas, kurās tiks ielādēti dati no avotiem. Pēc tabulu izveides tika veidoti interfeisi - interfeisi, kas
nodrošinās datu ielādi no avota tabulām uz mērķa tabulām.
4.1 Datu avotu savienošana ar ODI
Lai savienotu MS Excel, MS Access datu bāzi ar ODI ir jāizveido ODBC datu avots,
norādot konkrēto Excel vai Access failu. ODI rīkā topoloģiju izvēlnē jāievieto jauns datu serveris.
Tam jādefinē nosaukums (Attēls 4.6) un jānorāda draiveri (Attēls 4.7). ODI savienošanās ar Oracle
DB notiek ar JDBC interfeisu. Pēc fizisko modeļu izveides jāizveido loģiskie modeļi, katram
loģiskajam modelim norādot attiecīgo fizisko modeli. Pēc datu avotu savienošanas ar ODI tie ir
pieejami cilnes “Designer” sadaļā “Models” (Attēls 4.8). Tālāk tos varēs izmantot interfeisu
veidošanā, lai ielādētu datus globālajā shēmā.
10
Attēls 4.6Dataserver nosaukuma definēšana
Attēls 4.7 Draiveru norādīšana
Attēls 4.8 Datu avoti sadaļā "Models"
11
4.2 Interfeisa izveide
Lai izveidotu interfeisu, vispirms jāievada tā nosaukums (Attēls 4.9).
Attēls 4.9 Interfeisa izveide: Apraksts
Pēc tam jānorāda mērķa datu tabula. Mērķa datu tabula ir elements, kas tiks ielādēts ar
interfeisu. Mērķa tabulu var norādīt cilnē “Mapping” (Attēls 4.10). “Target datastore” logā jānorāda
mērķa tabula (ar draganddrop iespēju jāienes no hierarhiskā koka) – šajā gadījumā
“T_Apgutie_kursi”. Blakus logā jānorāda avotu tabulas – piemērā “Macibu_kurss”, “Kursa
apmekletajs”, “Apgutie_kursi”. Ja avota tabulās un mērķa tabulā ir vienādi kolonnu nosaukumi,
tiem automātiski tiek veikta “mapping” funkcija. Ja kolonnu nosaukumi nav vienādi, tad ar
draganddrop no avota tabulas jāienes lauka nosaukums mērķa tabulas “mapping” ailē.
12
Attēls 4.10 Interfeisa izveide: Mapping
Cilnē “Flow” var redzēt datu plūsmu (Attēls 4.11). Šajā gadījumā datu avots ir Oracle datu
bāze un arī mērķa tabula glabāsies Oracle datu bāzē.
Attēls 4.11 Interfeisa izveide: Flow (1)
Attēlā 4.7. redzams datu plūsmas attēlojums, ja avots ir Excel un mērķa tabula atrodas Oracle
datubāzē.
13
Attēls 4.12 Interfeisa izveide: Flow (2)
Iepriekš aprakstītajā veidā tiek izveidoti interfeisi datu ielādei visās mērķa tabulās.
4.3 Pakotnes izveide
Pakotnes izveides mērķis ir norādīt secību, kādā tiek veikta datu ielāde, izmantojot
izveidotos interfeisus (Attēls 4.13). Katram datu ielādes solim ir divas stadijas: veiksmīgi izpildīts
vai kļūme. Veiksmīgi vai neveiksmīgi izpildītam solim var sekot nākamais solis vai pakotnes
izpildes beigas.Pakotnei ir viens sākuma punkts, piemērā tas ir interfeisa T_sertifikats izpilde.
Attēls 4.13Pakotne
Izveidoto pakotni var izpildīt,tai norādot komandu “Run”. Izpildes rezultāts ir redzams sadaļā
“AllExecutions”.
14
Attēls 4.14Pakotnes izpildes rezultāti
Pēc pakotnes izpildes dati no avotiem ir ielādēti mērķa tabulās.
15
5 Lietojuma un grafiskā interfeisa izveide
Netbeans 8.0.2 vidē Java valodā tiek izveidots lietojums (Attēls 5.15), ar kura palīdzību
varēs izgūt datus no datu bāzes, kas apvieno iepriekš definētos Excel, Access un Oracle avotus.
Lietojuma izveides kods ir apskatāms pielikumā Nr.1.
Lai uzsāktu darbu lietojuma laukā “Username” jāievada lietotājvārds un laukā
“Password” parole – ar ko tiek nodrošināts pieslēgums datu bāzei. Ja ievadītie dati ir pareizi, tad
pēc pogas “Connect” nospiešanas rezultāta laukā parādās paziņojums par veiksmīgu pieslēgšanos,
ja dati ir nepareizi – parādās paziņojums par kļūdu. Poga “Disconnect” nodrošina savienojuma
pārtraukšanu. “Enterquery” teksta ievades laukā lietotājs var ievadīt Select vaicājumu un pēc pogas
“Select” nospiešanas laukā “Result” parādās rezultāts. Lietotājs var ievadīt arī Delete vaicājumu un
pēc pogas “Delete” nospiešanas tiek veikta dzēšana - par veiksmīgu izdzēšanu parādās paziņojums.
Ja Delete vai Select vaicājumi nav ievadīti korekti, tad parādās kļūdas paziņojums. Nospiežot pogu
“Clearquery”, tiek nodzēsts viss teksts vaicājuma ievades laukā; nospiežot pogu “Clearresult”,
tiek nodzēsts viss teksts rezultāta izvades laukā;
Attēls 5.15 Lietojums
16
Vaicājuma izpildes piemērs – Atgriezt mācību kursa nosaukumu, apmeklētāja ID un
uzvārdu (Attēls 5.2).
Attēls 5.2. Izpildes piemērs
17
Vaicājuma izpildes piemērs – tiek atlasīti uzņēmumi un uzņēmumu nozares, kuru
darbinieki ir apmeklējuši kādus kursus (Attēls 5.3).
Attēls 5.3. Izpildes piemērs
18
6 Secinājumi
Darbā tika izskatīta multidatubāzes sistēmas izveidošana, izmantojot Java programmēšanas
valodu un Oracle Data Integrator vidi. Darbības mehānisma pamatprincipu realizācijā tika
izmantota globālās shēmas integrācija.
Multibāzu sistēma ietver sekojošas sastāvdaļas: 1) 3 dažādus datu avotus, 2) ETL rīku
Oracle Data Integrator, 3) mērķa tabulas, kurās tiks ielādēti vajadzīgie dati 4) kur lietojums atrod
informāciju par tām tabulām, kuras ir tiek atgrieztas atkarībā no definētā vaicājuma.
Secinājumi pildot darbu
1. Lai izmantotu globālās shēmas integrācijas pieeju liela nozīme ir semantikai. Jāmeklē
sinonīmi, kas ļauj apvienot tabulas vienā, apvienojot arī šo tabulu atribūtus. Jāņem vērā arī
tas, ka dažādos informācijas avotos vienādi nosauktas tabulas ne vienmēr ir sinonīmi. Pildot
darbu tika secināts, ka sākumā, izdomājot priekšmetisko vidi, bija nepieciešams izmantot
vairāk sinonīmus, holonīmus un hipernīmus, kā arī padomāt par plašākām datu
transformācijas iespējām, lai, veidojot globālo shēmu, varētu pielietot dažādas integrācijas
opcijas, piemēram vienas kolonnas sadalīšana vairākās.
2. Par globālās shēmas integrācijas pieeju tīmeklī ir pieejama daudz teorētiska informācija, bet
maz praktisku piemēru, kā to realizēt ar konkrētiem rīkiem.
3. Globālās shēmas izveide ODI vidē ir laikietilpīgs process, jo ir jāsavienojas ar avotiem,
jāizveido mērķa tabulas, katrai mērķa tabulai jāveido savs interfeiss, jāveido pakotnes –
situācijā, ja ir daudz informācijas avotu un daudz tabulu, tad visu iepriekš minēto darbību
izveide ir apgrūtinoša, kaut gan ieguldītās pūles atsver aspekts, ka pēc tam,pieslēdzoties no
globālā lietojuma, var izgūt nepieciešamos datus no jebkura avota.
4. Lai lietojums izgūtu aktuālos datus, jāatceras par datu pārlādi.
5. NetBeans IDE nodrošina ērtu un saprotamu lietojuma grafiskā interfeisa izveidi pat
nepieredzējušam lietotājam.
6. NetBeans piedāvātie kļūdu risinājumi ļoti palīdzēja lietojuma izveidē.
7. Tā kā NetBeans ir populārs rīks, tad tīmeklī bija atrodamas dažādas pamācības un piemēri.
19
Pielikums Nr.1 Lietojuma izpildes kods
packageconnect;import java.awt.*;import java.awt.event.*;import java.sql.*;
publicclassConnectextendsFrame {TextField tf1,tf2;Connectioncon;TextArea t1,t2;Label l1,l2;Panel p1,p2,p3,p4;Button b1,b2,b3,b6,b7,b8;publicConnect(){setLayout(newFlowLayout()); p1 = newPanel(); p2 = newPanel(); p3 = newPanel(); p4 = newPanel(); p1.setLayout(newGridLayout(3,3,20,20)); p2.setLayout(newBorderLayout()); p3.setLayout(newGridLayout(2,3,15,15)); tf1 = newTextField("",20); tf2 = newTextField("",20); tf2.setEchoChar('*'); t1 = newTextArea("Enter query",8,60); t2 = newTextArea("Result",18,80); l1 = newLabel("username"); l2 = newLabel("Password"); b1 = newButton("connect"); b2 = newButton("Disconnect"); b3 = newButton("Select"); b6 = newButton("Delete"); b7 = newButton("Clearquery"); b8 = newButton("Clearresult"); p1.add(l1); p1.add(tf1); p1.add(l2); p1.add(tf2); p1.add(b1); p1.add(b2); p2.add("Center",t1); p3.add(b3); p3.add(b6); p3.add(b7); p3.add(b8); p2.add("South",p3); p4.add(t2);add(p1);add(p2);
20
add(p4);
addWindowListener(newWindowAdapter() { @OverridepublicvoidwindowClosing(WindowEvent e)
{System.exit(0); }
}); b1.addActionListener(newConnectDB()); b2.addActionListener(newDisconnectDB()); b3.addActionListener(newSelect()); b6.addActionListener(newDelete()); b7.addActionListener(newClearQuery()); b8.addActionListener(newClearResult()); }
classConnectDBimplementsActionListener{ @OverridepublicvoidactionPerformed(ActionEvent e) {try {Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl",tf1.getText(),tf2.getText());
t2.setText("Connectionsuccess\n"); }catch(ClassNotFoundException e2) { t2.setText("Classnotfound"); }catch(Exception e1) { t2.setText("errorinconnection"); } } }
classDisconnectDBimplementsActionListener{ @OverridepublicvoidactionPerformed(ActionEvent e) {try {con.close(); t2.append("Connectionclosed"); }catch(Exception e1)
21
{ t2.setText("errorindisconnection"); } } }
classSelectimplementsActionListener{ @OverridepublicvoidactionPerformed(ActionEvent e) {try {Statementstmt;
ResultSetrs;
Stringquery;booleanmore;stmt = con.createStatement();intcount =0;query = t1.getText();rs = stmt.executeQuery(query);
ResultSetMetaDatarsmd = rs.getMetaData();
more = rs.next();if(!more) {
t2.append("No results");return; }
{intnumberOfColumns = rsmd.getColumnCount();
for(int i = 1; i <= numberOfColumns; i++) t2.append(rsmd.getColumnName(i)+"\t\t\t");
t2.append("\n"); }
while(more)
{intnumberOfColumns = rsmd.getColumnCount();for(int a=1; a <= numberOfColumns; a++) t2.append(rs.getNString(a)+"\t\t"); t2.append("\n");
count++;more=rs.next();
} t2.append("\n"+count+" rowsselected"+"\n");rs.close();stmt.close();
22
}catch(Exception e1) { t2.setText("errorinselection"); } }
}classDeleteimplementsActionListener{ @OverridepublicvoidactionPerformed(ActionEvent e) {try {Statementstmt;Stringquery;introws;stmt = con.createStatement();query = t1.getText();rows = stmt.executeUpdate(query);if(rows == -1) { t2.append("Tabledropped"); }
else { t2.append("\n"+rows+ " rowdeleted"); }con.commit();stmt.close(); }catch(Exception e1) {
} } }
classClearQueryimplementsActionListener{ @OverridepublicvoidactionPerformed(ActionEvent e) { t1.setText(""); } }
classClearResultimplementsActionListener { @OverridepublicvoidactionPerformed(ActionEvent e) { t2.setText(""); }
23
}publicstaticvoidmain(String[] args){Connect c = newConnect();c.setVisible(true);c.setSize(600,700);
}
}
24