Web orijentirana rješenja u turizmu

Величина: px
Почињати приказ од странице:

Download "Web orijentirana rješenja u turizmu"

Транскрипт

1 TESTIRANJE KONKURENTNIH TRANSAKCIJA Zlatko Sirotić, univ.spec.inf. d.o.o. Pula Stranica 1

2 Neki izabrani (stručni) radovi - HrOUG 2015a: Povratak u Prolog (ili Mrav i med na valjku) - HrOUG 2015b: Kada Oracle naredba nije serijabilna? - HrOUG 2014: Nasljeđivanje je dobro, naročito višestruko - Eiffel, C++, Scala, Java 8 - HrOUG 2013: Transakcije i Oracle - baza, Forms, ADF - HrOUG 2012: Ima neka loša veza (priča o in-doubt distribuiranim transakcijama) - HrOUG 2011: Kriptografija u Oracle bazi - HrOUG 2010: Biometrijski sustavi - greške i ranjivosti - HrOUG 2009: Kako spriječiti pojavu petlje u hijerarhijskoj strukturi podataka Stranica 2

3 Neki izabrani (stručni) radovi - CASE 2018a: Primjena statistike u Oracle bazi podataka - CASE 2018b: GDPR i baze podataka sigurnost Oracle DBMS-a - CASE 2017: Paralelno programiranje u Javi - CASE 2016: Java JDBC Cached Row Set - CASE 2015: Višestruko nasljeđivanje san ili Java 8? - CASE 2014: Trebaju li nam distribuirane baze u vrijeme oblaka? - CASE 2013: Što poslije Pascala? Pa Scala! - CASE 2012: Utjecaj razvoja mikroprocesora na programiranje - JavaCro 2016: Java paralelizacija 2 - JavaCro 2015: Java paralelizacija 1 - JavaCro 2014: Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija Stranica 3

4 Uvod Često baza podataka sadrži ne samo podatke, već i pakete / triggere, koji na deklarativni način osiguravaju integritet podataka. Rad tih paketa / triggera treba testirati, i to u višekorisničkom radu. Za testiranje rada npr. sto konkurentnih transakcija, nećemo koristiti 100 testera (ljudi), već odgovarajuće alate za testiranje. Možemo koristiti specijalne alate za tu namjenu, ili možemo sami napraviti testove na relativno jednostavan način. U radu će se prikazati kako testirati jedan primjer poslovnog pravila na bazi (koji smo prikazali na HROUG-u godine: "Kako spriječiti pojavu petlje u hijerarhijskoj strukturi podataka") To ćemo raditi pomoću Java Executora ili (za one koji ne znaju raditi s Javom) pomoću DBMS_SCHEDULER paketa. Stranica 4

5 Teme O SQL hijerarhijskim upitima Oracle i ANSI varijanta; Connor McDonald: Old Dog, New Tricks 1 & 2 (Oracle Magazine January/February 2018 & September/October 2018). Prezentacija sa HrOUG "Kako spriječiti pojavu petlje u hijerarhijskoj strukturi podataka" (programski kod objavljen na otn.oracle.com/oramag/code kao PL/SQL tip tjedna). Testiranje konkurentnih transakcija pomoću Java executora. Testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER paketa. Stranica 5

6 SQL hijerarhijski upit Oracle varijanta (postoji od početka, nadograđivana je) -- varijanta koja puca kod petlje SELECT empno, ename, mgr, LEVEL FROM emp START WITH mgr IS NULL CONNECT BY PRIOR empno = mgr; -- varijanta koja NE puca kod petlje SELECT empno, ename, mgr, LEVEL, CONNECT_BY_ISCYCLE iscycle FROM emp START WITH mgr IS NULL CONNECT BY NOCYCLE PRIOR empno = mgr; Stranica 6

7 SQL hijerarhijski upit ANSI varijanta ANSI standard za hijerarhijski upit koristi tzv. recursive common table expressions (recursive CTE). Oracle baza podržava recursive CTE od 11.2 od tada WITH klauzula (u SELECT naredbi) može biti rekurzivna. WITH each_level (empno, ename, mgr, rlevel) AS (SELECT empno, ename, mgr, 1 rlevel -- kao START WITH FROM emp WHERE mgr IS NULL UNION ALL -- kao CONNECT BY SELECT emp.empno, emp.ename, emp.mgr, rlevel + 1 FROM emp, each_level WHERE emp.mgr = each_level.empno ) SELECT * FROM each_level; Stranica 7

8 SQL hijerarhijski upit ANSI varijanta ANSI standard za hijerarhijski upit varijanta koja ne puca kod petlje: WITH each_level (empno, ename, mgr, rlevel) AS (SELECT empno, ename, mgr, 1 rlevel -- kao START WITH FROM emp WHERE mgr IS NULL UNION ALL -- kao CONNECT BY SELECT emp.empno, emp.ename, emp.mgr, rlevel + 1 FROM emp, each_level WHERE emp.mgr = each_level.empno ) CYCLE mgr SET iscycle TO 'y' DEFAULT 'n' SELECT * FROM each_level; -- prikazuje i stupac iscycle Stranica 8

9 Primjer sa HrOUG 2009 (početak prezentacije sa HrOUG 2009) Često želimo spriječiti pojavu (zatvorene) petlje u podacima koji imaju višestruku stablastu strukturu (gdje svaki čvor stabla može imati više čvorova-djece i najviše jedan čvorroditelj) ili jednostruku stablastu strukturu (gdje točno jedan čvor nema roditelja, a svi ostali čvorovi imaju točno jednog roditelja). Npr. u poznatoj Oracle tablici EMP želimo spriječiti da jedan djelatnik bude šef drugom djelatniku, a da istovremeno taj drugi bude (direktno ili indirektno) šef prvome. Želimo rješenje koje će raditi i u višekorisničkom radu i to rješenje koje će biti u potpunosti na strani baze, tj. rješenje koje ne traži "suradnju" klijenta (ili aplikacijskog servera) s bazom podataka. Stranica 9

10 Višeslojna arhitektura IS-a i poslovna pravila Krajem 70-tih godina pojavili su se opisi slojevite arhitekture informacijskih sustava, tzv. troslojne arhitekture (three-tier architecture); danas "tier" češće označava fizički čvor (node), dok se logički sloj obično naziva "layer ; troslojna arhitektura poprimila je veliku popularnost tek 90-tih godina, zahvaljujući promociji koju je napravila Gartner grupa. Izvorni opis navodio je 3 sloja: sloj korisničkog sučelja (User Interface), sloj aplikacijske logike (Application Logic) i podatkovni sloj (Storage); tijekom vremena se broj slojeva povećavao; npr. izvorna J2EE specifikacija navodi 4 sloja. U svakom slučaju, poslovna pravila (business rules) čine značajan dio aplikacijske logike (poslovne logike). Stranica 10

11 Definicija poslovnih pravila Definicija (i klasifikacija) iz Oracle CDM (Custom Development Method) metodike: "Poslovna pravila su ograničenja koja se primjenjuju na stanje sustava ili na promjenu stanja sustava (Constraint Rules), autorizacijska pravila (Authorization Rules), ili akcije koje se automatski pokreću nakon promjene stanja sustava (Change Event Rules)". Poslovno pravilo čije rješavanje ovdje prikazujemo spada po Oracle klasifikaciji u tip Constraint Rules, podtip Entity Rules i vrstu Other Entity Rules. Stranica 11

12 Zašto rješavati poslovna pravila u bazi, iako to nije lako Od početaka razvoja relacijskih sustava proteklo je oko 45 godina, ali područje koje je (nažalost) do sada od proizvođača RSUBP sustava relativno zanemarivano jesu poslovna pravila, drugačije rečeno - integritetna ograničenja u bazi. Proizvođači RSUBP-a su ugradili određena deklarativna pravila, npr. realizaciju primarnog ključa (PK), jedinstvenog ključa (UK), vanjskog ključa (FK) i check constraints-a (CK), ali deklarativna provjera složenijih pravila je izostala. Nepodržavanje poslovnih pravila u bazi rezultira time da je integritet podataka u bazi ovisan o aplikaciji; no, jedna aplikacija se može pridržavati poslovnih pravila, a da pritom druga aplikacija to ne radi, najčešće nenamjerno, ali može biti i zlonamjerno. Stranica 12

13 Prikaz tablice EMP sa testnim podacima Najjednostavniji opis tablice EMP: CREATE TABLE emp ( empno NUMBER (4), ); ename VARCHAR2 (20), mgr NUMBER (4), CONSTRAINT emp_uk PRIMARY KEY (empno) USING INDEX, CONSTRAINT emp_mgr_fk FOREIGN KEY (mgr) REFERENCES emp (empno) CREATE INDEX emp_mgr_fk_i ON emp (mgr); Napunit ćemo tablicu "emp" s 7 redaka; djelatnik s brojem 1 bit će "glavni šef", djelatnici s brojevima 2 i 3 bit će "šefovi" (podređeni "glavnom šefu"), djelatnici 4 i 5, odnosno 6 i 7, bit će podređeni "šefu 2", odnosno "šefu 3". Stranica 13

14 Grafički prikaz početnih podataka u tablici EMP Stranica 14

15 Mala digresija: kako je nekadašnji Homo sapiens gledao na stablo Stranica 15

16 Kako današnji Homo sapiens (podvrsta Homo informaticus) gleda na stablo Stranica 16

17 Sprečavanje petlje u jednokorisničkom radu Rješenje u jednokorisničkom radu bilo bi vrlo jednostavno kad ne bi dolazilo do mutirajućih tablica (mutating tables). Mutirajuća tablica je ona tablica koja se trenutačno modificira pomoću DML naredbi, ili ona tablica koja bi trebala biti ažurirana zbog efekta DELETE CASCADE. Oracle ne dozvoljava da se mutirajuće tablice čitaju (niti ažuriraju) u "row" okidačima, jer bismo kao rezultat čitanja mogli dobiti neku neočekivanu vrijednost. Međutim, čitanje se može raditi u "statement" okidačima; rješenje problema mutirajućih tablica jeste da se u "row" okidaču zapamti, npr. u PL/SQL memorijsku tablicu, koji su redovi ažurirani, a onda se u "after statement" okidaču čita PL/SQL tablica i radi se provjera poslovnih pravila nad redovima koji su u njoj zapamćeni. Stranica 17

18 Glavna procedura "test (ovu verziju ćemo nadograđivati, zato nema SELECT...CONNECT BY) PROCEDURE test IS... BEGIN FOR i IN 1..m_rows LOOP l_empno := m_plsql_tab (i).empno; l_mgr := m_plsql_tab (i).mgr; WHILE l_mgr IS NOT NULL LOOP SELECT mgr INTO l_mgr FROM emp WHERE empno = l_mgr; IF l_mgr = l_empno THEN RAISE_APPLICATION_ERROR (-20003, 'Petlja!'); END IF; END LOOP; -- WHILE END LOOP; -- FOR END; Stranica 18

19 Test rješenja u jednokorisničkom radu: radi dobro UPDATE emp SET mgr = 4 WHERE empno = 1; ERROR at line 1: ORA-20003: Petlja Stranica 19

20 Test rješenja u višekorisničkom radu: 1. sesija uspijeva UPDATE emp SET mgr = 3 WHERE empno = 2; Stranica 20

21 Test rješenja u višekorisničkom radu: i 2. sesija uspijeva (napomena: 1. nije dala COMMIT) UPDATE emp SET mgr = 2 WHERE empno = 3; Stranica 21

22 Test rješenja u višekorisničkom radu: ne radi dobro, nastala je petlja Nakon što obje sesije daju COMMIT, u bazi ostaje petlja: Stranica 22

23 Jedno jednostavno rješenje u višekorisničkom radu Postoji vrlo jednostavno rješenje. Na početku svaka sesija zaključa cijelu tablicu EMP, pa je otključa na kraju transakcije; na taj način druge sesije ne mogu raditi dok prva ne završi, pa ne može doći do petlje. Međutim, takvo je rješenje ponekad neprihvatljivo, jer poništava mogućnost višekorisničkog ažuriranja. Takvo rješenje može biti dobro samo ako vrlo mali broj korisnika ažurira tablicu EMP ili/i ako je vjerojatnost istovremenog rada mala. Dakle, pokušajmo naći neko drugo rješenje. Stranica 23

24 Pokušaj sprečavanja petlje pomoću autonomne transakcije Glavna ideja je da, dok provjeravamo da li je došlo do petlje, gledamo da li je tekući redak (koji provjeravamo) zaključan; ako je, pretpostavljamo da bi moglo doći do petlje. Kako provjeriti da li je redak zaključan; ako koristimo SELECT FOR UPDATE, zaključat ćemo redak sve do kraja transakcije, zato što u okidaču Oracle baze ne možemo koristiti naredbu ROLLBACK TO SAVEPOINT (ovo ograničenje nije mana Oracle baze, već prednost); međutim, nije dobro da cijeli lanac redaka (do vrha) ostane zaključan sve do kraja transakcije, jer to sprečava druge da rade s njima. Od verzije 8i Oracle baza podržava autonomne transakcije, pa možemo razmišljati da ih primijenimo; u autonomnoj transakciji možemo koristiti ROLLBACK (zapravo, takva transakcija i mora na kraju imati ROLLBACK ili COMMIT). Stranica 24

25 Nova autonomna procedura "test_lock" PROCEDURE test_lock (p_mgr emp.mgr%type) IS PRAGMA AUTONOMOUS_TRANSACTION; l_dummy NUMBER; BEGIN SELECT 1 INTO l_dummy FROM emp WHERE empno = p_mgr FOR UPDATE NOWAIT; ROLLBACK; -- ako smo uspješno zaključali, otključamo EXCEPTION WHEN OTHERS THEN IF SQLCODE = -54 THEN RAISE_APPLICATION_ERROR (-20004, 'Moguća petlja'); ELSE RAISE; END IF; END; Stranica 25

26 Autonomnu proceduru "test_lock" pozivamo iz glavne procedure "test" PROCEDURE test IS... BEGIN FOR i IN 1..m_rows LOOP... WHILE l_mgr IS NOT NULL LOOP test_lock (l_mgr); SELECT mgr INTO l_mgr FROM emp WHERE empno = l_mgr; IF l_mgr = l_empno THEN RAISE_APPLICATION_ERROR (-20003, 'Petlja!'); END IF; END LOOP; END LOOP; END; Stranica 26

27 Nažalost, autonomna transakcija je previše restriktivna Naredbe koje su prije uzrokovale grešku sad neće uspjeti, jer će baza upozoriti da bi moglo doći do petlje. Nažalost, rješenje općenito ne radi dobro, zato što su autonomnoj transakciji (baš zato što je autonomna, tj. nezavisna od "glavne" transakcije) zaključani oni redovi koje je zaključala "glavna" transakcija. Evo primjera s dvije UPDATE naredbe u istoj sesiji: UPDATE emp SET mgr = 2 WHERE empno = 6; UPDATE emp SET mgr = 6 WHERE empno = 7; ERROR at line 1: ORA-20004: Moguća petlja Iako bi bilo sasvim u redu da djelatnik 6 postane nadređen djelatniku 7, druga naredba javlja grešku zato jer autonomna procedura "test_lock" nalazi da je djelatnik 6 zaključan (njega je zaključala "glavna" transakcija, kroz prvi UPDATE). Stranica 27

28 Simulacija SAVEPOINT / ROLLBACK TO SAVEPOINT ponašanja u okidaču Oracle baze Kako smo već rekli, SAVEPOINT / ROLLBACK TO SAVEPOINT ne možemo koristiti u okidaču Oracle baze, jer se javlja greška: ORA-04092: cannot SET SAVEPOINT in a trigger Međutim, našli smo da možemo simulirati S / RTS ponašanje pomoću kvazi-udaljene procedure. Trik (objavljen na kao PL/SQL tip mjeseca) je da koristimo ovu osobinu Oracle baze: ako pozivamo udaljenu proceduru (preko database link-a) i ako se u njoj desi neobrađena greška, njeni se efekti u cijelosti poništavaju, uključujući i zaključavanje redaka. Nama ne treba udaljena procedura, ali možemo proceduru "test_lock" pozivati kao kvazi-udaljenu proceduru, koristeći "lokalni" database link (link baze na sebe samu). Stranica 28

29 Sprečavanje petlje u višekorisničkom radu pomoću simulacije SAVEPOINT / ROLLBACK TO SAVEPOINT Prvo ćemo napraviti "lokalni" database link: CREATE DATABASE LINK local_db_link CONNECT TO scott IDENTIFIED BY tiger USING 'local_alias'; -- alias na lokalnu bazu Procedura "test_lock" sad mora biti navedena u specifikaciji paketa, jer će se pozivati preko db linka: CREATE OR REPLACE PACKAGE emp_closed_loop IS... PROCEDURE test; PROCEDURE test_lock (p_mgr emp.mgr%type); END emp_closed_loop; Stranica 29

30 Promijenjena procedura "test_lock" (nije više autonomna procedura) PROCEDURE test_lock (p_mgr emp.mgr%type) IS l_dummy NUMBER; BEGIN SELECT 1 INTO l_dummy FROM emp WHERE empno = p_mgr FOR UPDATE NOWAIT; -- nije više ROLLBACK, ali efekat je isti!!! RAISE_APPLICATION_ERROR (-20999, 'Simulac.ROLLBACK'); EXCEPTION WHEN OTHERS THEN IF SQLCODE = -54 THEN RAISE_APPLICATION_ERROR (-20004, 'Moguća petlja'); ELSE RAISE; END IF; END; Stranica 30

31 Promijenjena glavna procedura "test" PROCEDURE test IS... BEGIN FOR i IN 1..m_rows LOOP... WHILE l_mgr IS NOT NULL LOOP BEGIN emp_closed_loop.test_lock@local_db_link(l_mgr); EXCEPTION WHEN OTHERS THEN IF SQLCODE = THEN NULL; -- "ROLLBACK" ELSE RAISE; END IF; END;... END LOOP; -- WHILE END LOOP; -- FOR END; Stranica 31

32 No, rješenje nije svemoguće Kao i kod (pokušaja) rješenja s autonomnom transakcijom, naredbe koje bi uzrokovale petlju neće uspjeti; dodatno, rješenje će raditi dobro i u slučaju u kojem autonomna transakcija javlja očitu "lažnu uzbunu (u okviru iste sesije). No, i ovo rješenje može javiti "lažnu uzbunu", tj. javiti da bi moglo doći do petlje (iako do toga ne bi došlo), kao u sljedećem primjeru: -- 1.sesija UPDATE emp SET mgr = 6 WHERE empno = 2; -- 2.sesija UPDATE emp SET mgr = 5 WHERE empno = 7; ERROR at line 1: ORA-20004: Moguća petlja Nažalost, "lažnu uzbunu" ne možemo spriječiti, jer sesija baze ne može točno "znati" što rade druge sesije baze. Stranica 32

33 Da li se isplati sav taj trud? Prikazano rješenje je strogo vezano za Oracle bazu; ako bi o njemu govorili kao o predlošku ili uzorku (pattern), mogli bismo reći da ono ne spada u arhitekturne predloške ili dizajnerske predloške (architectural pattern, design pattern), već u tzv. idiome (idioms), tj. rješenja koja su ovisna o određenom programskom jeziku. Vidjeli smo da sprečavanje pojave petlje (u podacima koji imaju stablastu strukturu) isključivo na strani (Oracle) baze, tj. bez pomoći programa na klijentu ili aplikacijskom serveru, nije jednostavno. Nekome bi to bio dovoljan razlog da odustane od realizacije poslovnih pravila na bazi i da, umjesto toga, realizaciju poslovnih pravila napravi na klijentu ili (još bolje) na aplikacijskom serveru. Stranica 33

34 Mi mislimo da se isplati! (kraj prezentacije sa HrOUG 2009) Naše je mišljenje da trebamo pokušati realizirati poslovna pravila na strani baze, jer na taj način osiguravamo da su podaci u bazi konzistentni, neovisno od "vanjskih" programa (na klijentu ili aplikacijskom serveru). Takvo mišljenje zastupamo onda kad aplikacija radi samo s jednim RDBMS sustavom (npr. Oracle); ukoliko aplikacija mora raditi s više različitih sustava, tada je vjerojatno bolje sloj poslovnih pravila implementirati na aplikacijskom serveru, jer je teško napisati rješenja (u bazi) koja bi bila primjenljiva na različite RDBMS sustave. Naime, suprotno od vjerovanja da različiti RDBMS sustavi rade vrlo slično, istina je da su među njima razlike jako velike; nije riječ samo o različitim dijalektima SQL jezika, već npr. o fundamentalnim razlikama kod rada s transakcijama. Stranica 34

35 Testiranje konkurentnih transakcija punjenje 1000 redaka u EMP Tablicu EMP, ćemo napuniti sa 1000 redaka: - 1 korijenski redak (šifra 0) - njegovih 9 podređenih - njihovih 90 podređenih (po 10 za svakog) - njihovih 900 podređenih (po 10 za svakog): -- 0 insert into emp (empno, ename, mgr) values (0, 'EMP 0', null); declare ename varchar2(20); begin for j in 1..9 loop ename := 'EMP ' j; insert into emp (empno, ename, mgr) values (j, ename, 0); end loop; end; / Stranica 35

36 Testiranje konkurentnih transakcija punjenje 1000 redaka u EMP declare empno number(4); ename varchar2(20); begin for i in 1..9 loop for j in 0..9 loop empno := i * 10 + j; ename := 'EMP ' empno; insert into emp (empno, ename, mgr) values (empno, ename, i); end loop; end loop; end; / Stranica 36

37 Testiranje konkurentnih transakcija punjenje 1000 redaka u EMP declare empno number(4); ename varchar2(20); begin for i in loop for j in 0..9 loop empno := i * 10 + j; ename := 'EMP ' empno; insert into emp (empno, ename, mgr) values (empno, ename, i); end loop; end loop; end; / commit; Stranica 37

38 Testiranje konkurentnih transakcija pomoću Java executora Java program (u nastavku) ima ulazne parametre: - brdretvi: broj Java dretvi (default je 10) - cekanje: vrijeme namjernog čekanja u pojedinoj dretvi (default je 1 sekunda) - briteracija: broj ponavljanja testa (default je 1). Glavna metoda main poziva metodu testiraj, u kojoj se kreira objekt (connectiontask) anonimne klase (podklasa od Runnable). U (nadjačanoj) metodi run dvaput se poziva metoda slucajni_broj, koja generira slučajne emp i mgr (brojeve između 200 i 300). Na temelju toga se radi UPDATE jednog retka i COMMIT. Kreira se fiskni broj executora sa newfixedthreadpool(brdretvi) i svakom se daje njegov zadatak sa executorservice.submit(connectiontask). Stranica 38

39 Testiranje konkurentnih transakcija pomoću Java executora import java.sql.*; import java.util.concurrent.executorservice; import java.util.concurrent.executors; import static java.util.concurrent.timeunit.minutes; public class TestEmp { static int brdretvi = 10; static int cekanje = 1; // 1 sekunda static int briteracija = 1; //... metode u nastavku }; Stranica 39

40 Testiranje konkurentnih transakcija pomoću Java executora public static void main(string[] args) { if (args.length > 0) { brdretvi = Integer.parseInt(args[0]); }; if (args.length > 1) { cekanje = Integer.parseInt(args[1]) * 1000; }; if (args.length > 2) { briteracija = Integer.parseInt(args[2]); }; for (int i = 1; i <= briteracija; i++) { testiraj(); }; }; Stranica 40

41 Testiranje konkurentnih transakcija pomoću Java executora private static void testiraj() { String url = "jdbc:oracle:thin:emp/emp@localhost:1521:orcl"; // kreira se objekt anonimne klase, koja je podklasa od Runnable Runnable connectiontask = new Runnable() { public void run() { try (Connection con = DriverManager.getConnection(url);) { //... kod na sljedećem slajdu } catch (Exception e) {System.out.println(e.toString());} } }; try { ExecutorService executorservice = Executors.newFixedThreadPool(brDretvi); for (int j = 1; j <= brdretvi; j++) { executorservice.submit(connectiontask); } executorservice.shutdown(); executorservice.awaittermination(30, MINUTES); } catch (Exception e) {System.out.println(e.toString());} }; Stranica 41

42 Testiranje konkurentnih transakcija pomoću Java executora //... kod koji nije prikazan na prethodnom slajdu con.setautocommit(false); String query; PreparedStatement stm; // ORA-01436: CONNECT BY loop in user data query = "select distinct 0 from emp connect by prior empno=mgr"; stm = con.preparestatement(query); stm.executequery(); int mgr = slucajni_broj (200, 300); int empno = slucajni_broj (200, 300); query = "update emp set mgr =? where empno =?"; stm = con.preparestatement(query); stm.setint(1, mgr); stm.setint(2, empno); stm.execute(); Thread.sleep(cekanje); con.commit(); System.out.println("Empno:" + empno + " Mgr:" + mgr); Stranica 42

43 Testiranje konkurentnih transakcija pomoću Java executora private static int slucajni_broj (int min_p, int max_p) { /* Generira slučajni cijeli broj od min (uključujući) do max (uključujući) Math.random vraća vrijednost od 0 (uključujući) do 1 (isključujući, tj. nikad ne vraća 1). Zato se množi s max_p i zbraja min_p. Vraća se u cijeli broj. */ } int broj = min_p + (int) (Math.random() * (max_p - min_p + 1)); return broj; Stranica 43

44 Testiranje konkurentnih transakcija pomoću Java executora Testiranje možemo raditi npr. ovako pokreće se 100 Java dretvi (time i 100 paralelnih transakcija), sa vremenom čekanja od 2 sekunde u transakciji, u 5 iteracija testiranja: java cp * ; TestEmp Pokazuje se da nesigurna varijanta paketa emp_closed_loop vrlo brzo dovodi do greške. Sigurna (vjerojatno) varijanta tog paketa ne dovodi do greške niti nakon puno ponavljanja. Naravno, to nije matematički dokaz da je to zaista sigurna varijanta. Kao i uvijek, testiranjem se može dokazati da program ne radi dobro, ali se ne može dokazati da program (uvijek) radi dobro. Stranica 44

45 Testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER-a PL/SQL paket (u nastavku) ima javne procedure: - pokreni: parametar je broj jobova (default je 10) - zadatak: procedura je javna zato jer se poziva iz joba, pa mora biti navedena u specifikaciji paketa (inače bi se javilo: ORA-06576: not a valid function or procedure name). U proceduri pokreni kreira se i pokreće zadani broj jobova. Kod poziva DBMS_SCHEDULER.RUN_JOB parametar use_current_session postavlja se na FALSE (default je TRUE), kako bi svaki job radio u posebnoj sesiji baze. Procedura zadatak (slično ekvivalentnom dijelu koda u Java programu) postavlja upit kojim utvrđuje da li je došlo do petlje, a onda (ako nije došlo do petlje) slučajno generira šifru za mgr i empno, radi UPDATE, čeka jednu sekundu, i daje COMMIT. Stranica 45

46 Testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER-a -- kao SYS i sl. GRANT CREATE JOB TO emp / -- kao EMP CREATE OR REPLACE PACKAGE test_emp IS PROCEDURE pokreni (br_jobova_p NUMBER DEFAULT 10); PROCEDURE zadatak; END; / CREATE OR REPLACE PACKAGE BODY test_emp IS PROCEDURE pokreni (br_jobova_p NUMBER DEFAULT 10) IS... PROCEDURE zadatak IS... END; Stranica 46

47 Testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER-a PROCEDURE pokreni (br_jobova_p NUMBER DEFAULT 10) IS BEGIN FOR j IN 1.. br_jobova_p LOOP DBMS_SCHEDULER.CREATE_JOB ( job_name => 'TEST_EMP_' j, job_type => 'STORED_PROCEDURE', job_action => 'TEST_EMP.ZADATAK', enabled => TRUE, auto_drop => TRUE -- default ); DBMS_SCHEDULER.RUN_JOB ( job_name => 'TEST_EMP_' j, use_current_session => FALSE ); END LOOP; END; Stranica 47

48 Testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER-a PROCEDURE zadatak IS mgr_l NUMBER (4); empno_l NUMBER (4); dummy_l NUMBER (1); BEGIN -- može se desiti ORA-01436: CONNECT BY loop in user data SELECT DISTINCT 0 INTO dummy_l FROM emp CONNECT BY PRIOR empno = mgr; mgr_l := TRUNC (DBMS_RANDOM.VALUE (200, 301)); empno_l := TRUNC (DBMS_RANDOM.VALUE (200, 301)); UPDATE emp SET mgr = mgr_l WHERE empno = empno_l; DBMS_LOCK.SLEEP (1); COMMIT; END; Stranica 48

49 Testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER-a -- pokretanje (npr.) 50 jobova; -- greške se ne prikazuju, jer jobovi rade u drugim sesijama! exec test_emp.pokreni (50) -- prikaz jobova koji (još) rade select job_name from user_scheduler_jobs order by 1 / -- da li se desila petlja; ako je, sljedeći upit daje - ORA-01436: CONNECT BY loop in user data select distinct 0 from emp.emp connect by prior empno = mgr; -- vraćanje početnih podataka (iz pomoćne tablice) delete emp.emp; insert into emp.emp select * from emp.emp_save; commit; Stranica 49

50 Testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER-a -- prikaz grešaka iz loga za jobove; -- prvo je pokrenuto nad lošom varijantom tijela paketa emp_closed_loop select error#, count(*) from USER_SCHEDULER_JOB_RUN_DETAILS where job_name like 'TEST_EMP_%' group by error# order by 1; ERROR# COUNT(*) greške ORA nakon (naknadnog) pokretanje nad ispravnom varijantom tijela paketa ERROR# COUNT(*) više se nije javila nova greška ORA Stranica 50

51 Zaključak Prvo smo se ukratko podsjetili na dvije varijante SQL hijerarhijskih upita Oracle varijantu (koju je Oracle baza imala od početka) i ANSI varijantu (moguća od baze 11.2). Zatim smo ponovili prezentaciju sa HrOUG Na primjeru toga prikazali smo testiranje konkurentnih transakcija pomoću Java executora. Zatim smo prikazali testiranje konkurentnih transakcija pomoću DBMS_SCHEDULER paketa. Naravno, postoje i bolji načini testiranja konkurentnih transakcija pomoću gotovih alata namijenjenih tome, od kojih su neki (možda) i besplatni. No, nije loše, barem iz edukativnih razloga, probati testiranje (i) pomoću vlastitih, jednostavnih programa. Stranica 51

52 Literatura (dio) Boyarsky, J., Selikoff, S. (2015): OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809, Sybex Kyte, T. (2009): Expert Oracle Database Architecture, Apress Oracle priručnik (2010): Oracle Database Administrator's Guide 11g Release 2 Oracle priručnik (2010): Oracle Database Advanced Application Developer's Guide 11g Release 2 Oracle priručnik (2013): Oracle Database Development Guide 12c Release 1 Oracle priručnik (2013): Oracle Database JDBC Developer s Guide 12c Release 1 Sierra K., Bates B. (2015): OCA/OCP Java SE 7 Programmer I & II Study Guide, McGraw-Hill Education Stranica 52

Kako spriječiti petlju

Kako spriječiti petlju KAKO SPRIJEČITI ITI POJAVU PETLJE U HIJERARHIJSKOJ STRUKTURI PODATAKA Zlatko Sirotić, dipl.ing. Istra informatički inženjering d.o.o. Pula Stranica 1 Tema je rjer ješavanje određenog enog tipa poslovnih

Више

Slide 1

Slide 1 SVEUČILIŠTE U MOSTARU FAKULTET STROJARSTVA I RAČUNARSTVA SUSTAVI BAZA PODATAKA Doc.dr.sc. GORAN KRALJEVIĆ SUSTAVI BAZA PODATAKA 1 Sustavi baza podataka Web: http://www.uni-mo.ba/~goran Pitanja, primjedbe,

Више

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka dr Slavica Kordid Angelina Vujanovid Marina Nenid Marija Kukid Sistem ocenjivanja Ukupno: 100 bodova Teoretski deo (predavanja)

Више

PowerPoint Presentation

PowerPoint Presentation Visoka škola strukovnih studija za informacione i komunikacione tehnologije MVC - Modeli Školska 2017/18. Dr Nenad Kojić, dipl. inž. Luka Lukić, struk. inž. Danijela Nikitin, spec.stuk.inž MVC.htaccess

Више

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji podrška za IBM DB2, Oracle, Ingres, MySQL, PostgreSQL,

Више

Slide 1

Slide 1 Kako jednostavnije preći na višu verziju Formsa Ivan Lovrić, Vedran Latin 14.10.2009. Sadržaj prezentacije Predmet migracije Razlozi za migraciju Infrastruktura potrebna za migraciju Pilot migracija Migracija

Више

Microsoft Word - MySQL_3.doc

Microsoft Word - MySQL_3.doc 7. Data Manipulation Language (DML) Jezik za rad sa podacima (Data Manipulation Language (DML)) služi za umetanje, brisanje i ažuriranje podataka u bazi. 7.1. Umetanje novih redova u tabelu INSERT sintaksa

Више

2

2 IMA NEKA LOŠA VEZA (PRIČA O IN-DOUBT DISTRIBUIRANIM TRANSAKCIJAMA) Zlatko Sirotić Istra informatički inženjering d.o.o., Pula e-mail: zlatko.sirotic@iii.hr SAŽETAK Najlakše i najbolje je raditi sa centraliziranim

Више

Microsoft Word - WP_kolokvij_2_rjesenja.doc

Microsoft Word - WP_kolokvij_2_rjesenja.doc Napomena WEB PROGRAMIRANJE I PRIMJENE DRUGI KOLOKVIJ vrijeme predviđeno za rješavanje kolokvija je 60 minuta kolokvij se sastoji od 15 pitanja, a ukupan broj bodova je 165 (uz svaki zadatak istaknut je

Више

Upitni jezik SQL

Upitni jezik SQL Šta je SQL? SQL (Structured Query Language) je jezik koji je Američki Institut za Nacionalne Standarde (ANSI - American National Standards Institute) prihvatio kao standardni jezik za relacione baze podataka.

Више

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Baze podataka Tema: Osnovna SELECT naredba Vježbu pripremili:

Више

Model podataka

Model podataka Fakultet organizacionih nauka Uvod u informacione sisteme Doc. Dr Ognjen Pantelić Modeliranje podataka definisanje strategije snimanje postojećeg stanja projektovanje aplikativno modeliranje implementacija

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

Више

Microsoft Word - 405_Prodan_kon.doc

Microsoft Word - 405_Prodan_kon.doc EDITION BASED REDEFINITION - VISOKA DOSTUPNOST KOD NADOGRADNJE APLIKACIJA EDITION BASED REDEFINITION ONLINE APPLICATION UPGRADE Alen Prodan Login d.o.o. Mihačeva draga b.b. 51000 Rijeka +385 91 156 44

Више

Introduction to Programming

Introduction to  Programming Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

Више

(Microsoft PowerPoint - 903_\216nidari\346_Java Persistence.pptx)

(Microsoft PowerPoint - 903_\216nidari\346_Java Persistence.pptx) Java Persistence API (JPA) najbolje prakse Slavko Žnidarić Beta Tau Beta slavko.znidaric@btb.hr Vaš podatkovni sloj? Vaš šef, DBA ili klijent? Vi? Uzroci loših performansi Previše upita Spori upiti Loše

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Obeležene petlje Obeležene petlje Obeležavanje petlje nekim identifikatorom omogućava da se programski tok usmeri na mesto u programu specificirano tim identifikatorom. Ako se iza naredbi break ili continue

Више

Primenjeno programiranje - Vežbe

Primenjeno programiranje - Vežbe VISOKA POSLOVNA ŠKOLA STRUKOVNIH STUDIJA NOVI SAD Primena integrisanih razvojnih alata Java i NetBeans IDE 7.0 vežba 9 i 10 Kreiranje desktop aplikacije sa konekcijom na bazu Pokrenuti NetBeans, u kartici

Више

01 SUBP

01 SUBP ER model šeme baze podataka: (Sef) (0, N) (0, N) RADNIK (0, 1) SEF (0, N) (Podredjeni) RUKOVODI RADI _NA (1, 1) (0, N) PROJEKAT Šema relacione baze podataka: RADNIK({Mbr, Prez, Ime, Sef, Plata, Datr},

Више

PDO

PDO PDO Marijan Šuflaj FER, 2018 Sadržaj PDO Osnove Izvršavanje upita Ranjivosti Dohvaćanje rezultata upita PDO - PHP Data Objects Jednostavno i konzistetno sučelje za pristup bazama podataka iz PHP-a Isti

Више

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1 Rekurzivne funkcije Binarna stabla Informacioni

Више

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s UPUTSTVO ZA BRZO UMREŽAVANJE PROGRAMA MPP2 Da bi program MPP2 radio u mrežnom okruženju po sistemu klijent-server, potrebno je da se na računarima koji su mrežno povezani instalira: serverska verzija programa

Више

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU http://www.mi.sanu.ac.rs/ tanjad (tanjad@mi.sanu.ac.rs) 21. januar 2013. Tatjana

Више

Introduction to Programming

Introduction to  Programming SQL Indeksi Uloga Indeksa o Kako baza postaje sve veća dizajn baze postaje sve važniji o Indeksi igraju značajnu ulogu u brzini rada same baze jer pomažu DBMS da brže pronađe ono što tražimo o Slični su

Више

1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om -

1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om - 1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om - Minimizujte pisanje programskog koda - Smanjite obim

Више

Baza podataka

Baza podataka Baza podataka Marijan Šuflaj FER, 2018 Sadržaj Baza podataka Upravljanje sadržajem baza CREATE TABLE ALTER TABLE DROP TABLE INSERT SELECT Spajanje tablica UPDATE DELETE Baza podataka Apstrakcija pohrane

Више

Algoritmi SŠ P1

Algoritmi SŠ P1 Županijsko natjecanje iz informatike Srednja škola 9. veljače 2018. RJEŠENJA ZADATAKA Napomena: kodovi za većinu opisanih algoritama dani su u Pythonu radi jednostavnosti i lakše čitljivosti. Zbog prirode

Више

PowerPoint Presentation

PowerPoint Presentation i n f o r m a c i j s k i i n ž e n j e r i n g Usporedba Microsoft Analysis Services i Hyperion Essbase OLAP Marko Hilak Krešimir Futivić Maja Inđić 15.10.2009 Microsoft Analysis Services i Hyperion Essbase

Више

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4 Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji

Више

4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу St

4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу St 4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу Stavke_računa која ће разрешити проблем везе типа N:N

Више

PowerPoint Presentation

PowerPoint Presentation Tehnička škola 9. maj Bačka Palanka Programiranje III razred Tok izvršavanja programa Tok izvršavanja programa Dosadašnji kod se izvršavao praktično linearno. Nije postojala nikakva uslovna ili brojačka

Више

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije Prenos parametara Metoda može vratiti isključivo

Више

Microsoft PowerPoint - 6. Query Builder.pptx

Microsoft PowerPoint - 6. Query Builder.pptx Visokaškola strukovnihstudija za informacione i komunikacione tehnologije Query builder Query builder je sastavni deo Laravel framework-a koji pruža pouzdan interfejs za rad sa bazom podataka, kreiranje

Више

03 SUBP

03 SUBP Osnovni SQL tipovi podataka Tip podataka NUMBER(p,s) Opis Broj sa maksimalno p cifara od kojih je s maksimalni broj decimala (1 < p < 38) (- 84 < s < 127) VARCHAR2(s) Promenjivi niz karaktera maksimalne

Више

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstrirana upotreba konstruktora, svojstava, metoda klase,

Више

8 2 upiti_izvjesca.indd

8 2 upiti_izvjesca.indd 1 2. Baze podataka Upiti i izvješća baze podataka Na početku cjeline o bazama podataka napravili ste plošnu bazu podataka o natjecanjima učenika. Sada ćete izraditi relacijsku bazu u Accessu o učenicima

Више

PowerPoint Presentation

PowerPoint Presentation Java konkurentno programiranje Životni ciklus niti i problemi sinhronizacije resursa Multitasking Multithreading Životni ciklus niti http://www.roseindia.net/java/thread/lifecycle-of-threads.shtml Životni

Више

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo

Више

Microsoft Word - SYLLABUS -Dinamicki

Microsoft Word - SYLLABUS -Dinamicki Univerzitet UKSHIN HOTI PRIZREN Fakultet kompjuterskih nauka Nastava na bosanskom jeziku NASTAVNI PLAN - PROGRAM SYLLABUS Akademska Nivo studija Bachelor Departament god. PREDMET Dinamički sadržaj web

Више

Slide 1

Slide 1 Funkcionalno programiranje Interoperabilnost jezika Scala i Java, 2019. Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

Више

Introduction to Programming

Introduction to  Programming SQL Podupiti o Podupit je upit unutar upita Mogućnosti podupita o Ima zadatak da razloži komplesnu logiku o Mozemo da prikažemo podatke koje nam where klauzula ne bi dozvolila, to se pre svega odnosi na

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni

Више

IEP - Projekat 2018/2019

IEP - Projekat 2018/2019 Elektrotehnički fakultet u Beogradu Katedra za računarsku tehniku i informatiku Predmet: Infrastruktura za elektronsko poslovanje SI3IEP Veb portal za tehničku podršku - projekat - Osnovni cilj projekta

Више

PowerPoint Presentation

PowerPoint Presentation УВОД Дa би рaчунaри нa мрежи могли међусобно да кoмуницирaју и рaзмeњују пoдaткe, пoтрeбнo je: дa сe увeду ПРOТOКOЛИ (утврђeна прaвилa и процедуре за комуникацију) да постоје АДРEСE кoje су jeдинствeнe

Више

Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 17-1 Controlling User Access Davanje dozvole (grant

Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 17-1 Controlling User Access Davanje dozvole (grant Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 17-1 Controlling User Access Davanje dozvole (grant) ili oduzimanje dozvole (take away) za pristup db

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne

Више

Microsoft PowerPoint - GR_MbIS_12_IDEF

Microsoft PowerPoint - GR_MbIS_12_IDEF Menadžment poslovnih informacionih sistema - 12 metode modeliranja funkcija pripremila Doc. dr Gordana Radić Integfated DEFinition Definicija: je metoda (jezik) modeliranja bazirana je na kombinaciji grafike

Више

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode] OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 5 OBJEKTI U INTERAKCIJI Miloš Kovačević Đorđe Nedeljković 1 /25 OSNOVNI KONCEPTI - Abstrakcija - Modularizacija - Objektne reference - Klasni dijagram - Objektni

Више

Primenjeno programiranje - vezbe GUI i baze podataka

Primenjeno programiranje - vezbe GUI i baze podataka Primenjeno programiranje - Vežbe Java i NetBeans IDE 6.5 Kreiranje korisničkog interfejsa Primer jednostavne aplikacije: 1. Odabrati opciju File > New Project 2. Meñu kategorijama odabrati Java i podkategoriju

Више

Inženjering informacionih sistema

Inženjering informacionih sistema Fakultet tehničkih nauka, Novi Sad Inženjering informacionih sistema Dr Ivan Luković Dr Slavica Kordić Nikola Obrenović Milanka Bjelica Dr Jelena Borocki Dr Milan Delić UML UML (Unified Modeling Language)

Више

Microsoft Word - CCERT-PUBDOC doc

Microsoft Word - CCERT-PUBDOC doc Analiza Qchain programskog paketa CCERT-PUBDOC-2003-02-04 Sigurnosni problemi u računalnim programima i operativnim sustavima područje je na kojem CARNet CERT kontinuirano radi. Rezultat toga rada ovaj

Више

(Microsoft PowerPoint Ben\232i\346.ppt [Compatibility Mode])

(Microsoft PowerPoint Ben\232i\346.ppt [Compatibility Mode]) Modelirajmo podatke za poslovanje Darko Benšić, dbensic@croz.net HrOUG 2011, Rovinj, 18. do 22. listopada 2011. Kako se Oracle SQL Developer DataModeler uklopio u agilni proces razvoja modela??? Agenda

Више

Рачунарска интелигенција

Рачунарска интелигенција Рачунарска интелигенција Генетско програмирање Александар Картељ kartelj@matf.bg.ac.rs Ови слајдови представљају прилагођење слајдова: A.E. Eiben, J.E. Smith, Introduction to Evolutionary computing: Genetic

Више

PuTTY CERT.hr-PUBDOC

PuTTY CERT.hr-PUBDOC PuTTY CERT.hr-PUBDOC-2018-12-371 Sadržaj 1 UVOD... 3 2 INSTALACIJA ALATA PUTTY... 4 3 KORIŠTENJE ALATA PUTTY... 7 3.1 POVEZIVANJE S UDALJENIM RAČUNALOM... 7 3.2 POHRANA PROFILA KORISNIČKIH SJEDNICA...

Више

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama Merenja u telekomunikacionim mrežama Merenja telefonskog saobraćaja Primer 1 - TCBH Na osnovu najviših vrednosti intenziteta saobraćaja datih za 20 mernih dana (tabela), pomoću metode TCBH, pronaći čas

Више

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr Oblikovanje i analiza algoritama 5. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. predavanje p. 1/68 Sadržaj predavanja Nehomogene rekurzije

Више

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

Računarske mreže Čas 2 Ivana Tanasijević   Matematički fakultet, Beograd 1 Računarske mreže Čas 2 Ivana Tanasijević e-mail: ivana@matf.bg.ac.rs Matematički fakultet, Beograd 1 Utvrđivanje gradiva sa prethodnog časa: popunjavanje adresne strukture, kreiranje soketa, privezivanje

Више

Introduction to Programming

Introduction to  Programming SQL Iskazi za modifkaciju nad podacima Unos novog podataka (2 metode) Insert Into Tabela Values(A 1,A 2,,A n ) Insert Into Tabela Select-iskaz Brisanje postojećeg podatka Delete From Tabela Where Uslov

Више

Baza fakultet sadrži 3 tabele: tabela studenti sadrzi informacije o studentima Njeni atributi su: indeks indeks studenta (primarni kljuc) ime ime stud

Baza fakultet sadrži 3 tabele: tabela studenti sadrzi informacije o studentima Njeni atributi su: indeks indeks studenta (primarni kljuc) ime ime stud Baza fakultet sadrži 3 tabele: tabela studenti sadrzi informacije o studentima indeks indeks studenta (primarni kljuc ime ime studenta prezime - prezime studenta napomena - napomena tabela predmeti sadrzi

Више

PowerPoint Presentation

PowerPoint Presentation Mehanizmi čuvanja podataka baznog sustava za potrebe Billing aplikacije Autor: Domagoj Dukarić, HEP ODS d.o.o. Koautor: Mario Blažanović, HEP ODS d.o.o. Ukratko o Oracle bazi Instanca memorijske strukture

Више

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 07 - Podstrukture, const, reference v2018/2019. Sastavio: Zvonimir Bujanović Podstrukture Član

Више

Recuva CERT.hr-PUBDOC

Recuva CERT.hr-PUBDOC Recuva CERT.hr-PUBDOC-2019-5-379 Sadržaj 1 UVOD... 3 2 INSTALACIJA ALATA RECUVA... 4 3 KORIŠTENJE ALATA RECUVA... 7 4 ZAKLJUČAK... 13 Ovaj dokument izradio je Laboratorij za sustave i signale Zavoda za

Више

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju Osnovni pojmovi WEB tehnologije korišteni u kolegiju Ivan Vazler Odjel za matematiku Sveučilište u Osijeku 16. listopada 2013. WWW - World Wide Web World Wide Web (WWW) svjetska mreža računala s izvorima

Више

Slide 1

Slide 1 NEOS DW/BI RAZVOJNO OKRUŽJE I METODOLOGIJA 16.11.2010 SADRŽAJ AJ O TVRKI NEOS DW/BI SUSTAVI PROJEKT USPOSTAVE DW/BI SUSTAVA NEOS DW/BI OKRUŽJE DEMO ADMIN KONZOLE Q&A 16.11.2010 NEOS DW/BI FRAMEWORK 2 O

Више

SELECT statement basic form

SELECT statement basic form NAZIV OBJEKTA ZNANJA Uvod u JQuery PROLOG Autor * Katarina Kaplarski Klasifikacija * Težina * Osnovni nivo Ključne reči * Ko sluša * Student OAS Trajanje * Komentari autora SADRŽAJ Apstrakt Cilj * Uvodne

Више

PowerPoint Presentation

PowerPoint Presentation Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Сопствени пакети и унутрашње класе Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp PMF-MO Seminar iz kolegija Oblikovanje i analiza algoritama 22.1.2019. mrežu - Ford-Fulkerson, Edmonds-Karp 22.1.2019. 1 / 35 Uvod - definicije

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Uvod u programiranje dr Ninoslava Savić Predavanja (3) sreda: 11:15 13:50 Učionica 16 Konsultacije sreda: 15 17 h Kabinet 43 Uvod u programiranje Fond časova: 3+3 Broj ESPB: 7 Ocena znanja (max. broj poena

Више

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Microsoft PowerPoint - 07-DinamickeStrukturePodataka Динамичке структуре података листа, стек, ред Програмирање 2: глава 6 Динамичке структуре података Динамичка алокација и динамичке структуре података Најзначајније динамичке структуре података листе и

Више

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1 ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1 do 5. Obezbediti ispis uspeha za unetu ocenu (1=nedovoljan,

Више

Dijagrami sekvenci

Dijagrami sekvenci Dijagrami sekvenci Izrada dijagrama sekvenci Dijagram sekvenci koristi se za specifikaciju vremenskih zahteva u opisu složenih scenarija opis toka poruka između objekata kojima se realizuje odgovarajuća

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode] Организација извршног програма (Марић, Јаничић: Програмирање 1, 9.3.3) Извршавање програма После успешног превођења (претпроцесирања, компилације, повезивања) програм може да се изврши Извршавање се захтева

Више

8

8 KAKO (NE KORISTITI OBJEKTNO-RELACIJSKE MOGUĆNOSTI ORACLE DBMS-a Zlatko Sirotić Istra informatički inženjering d.o.o., Pula e-mail: zlatko.sirotic@iii.hr SAŽETAK Kasnih 80-tih i ranih 90-tih godina prošlog

Више

Računarski praktikum I - Vježbe 11 - Funktori

Računarski praktikum I - Vježbe 11 - Funktori Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 11 - Funktori v2018/2019. Sastavio: Zvonimir Bujanović Funkcijski objekti (funktori) Objekt klase

Више

Upute za instaliranje WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa

Upute za instaliranje WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa koju možete pronaći na sljedećem linku: http://wordpress.org/download/ Kliknite na

Више

MEĐIMURSKO VELEUČILIŠTE ČAKOVEC RAČUNALSTVO PATRIK MIHOCI Izrada modela za objektno relacijsko povezivanje podataka u okviru aplikacije za opis predme

MEĐIMURSKO VELEUČILIŠTE ČAKOVEC RAČUNALSTVO PATRIK MIHOCI Izrada modela za objektno relacijsko povezivanje podataka u okviru aplikacije za opis predme MEĐIMURSKO VELEUČILIŠTE ČAKOVEC RAČUNALSTVO PATRIK MIHOCI podataka u okviru aplikacije za opis predmeta ZAVRŠNI RAD Mentor: dr.sc. Mihael Kukec, prof.v.š. ČAKOVEC, 2017. ZAHVALA Zahvaljujem se na stručnom

Више

Golden 7 Classic HTML5 na stolnim računalima i mobilnim uređajima. Vrsta igre: Video slot PVI (povratak vrijednosti igraču): 95,00 % Golden 7 Classic

Golden 7 Classic HTML5 na stolnim računalima i mobilnim uređajima. Vrsta igre: Video slot PVI (povratak vrijednosti igraču): 95,00 % Golden 7 Classic Golden 7 Classic HTML5 na stolnim računalima i mobilnim uređajima. Vrsta igre: Video slot PVI (povratak vrijednosti igraču): 95,00 % Golden 7 Classic tradicionalna je slot igra stare škole u kojoj nema

Више

Korisničko uputstvo mobilne aplikacije Digitalni Kiosk 1

Korisničko uputstvo mobilne aplikacije Digitalni Kiosk 1 Korisničko uputstvo mobilne aplikacije Digitalni Kiosk 1 Sadržaj Opis mobilne aplikacije Digitalni Kiosk... 3 Pokretanje aplikacije... 3 Registracija/Kreiranje novog korisničkog naloga... 3 Dodavanje platne

Више

Infokup - Školsko Osnovne škole Algoritmi BaPaCpp

Infokup - Školsko Osnovne škole Algoritmi BaPaCpp 21.. siječnja 2013.. od 1:30 do 16:30 Školsko natjecanje / Algoritmi (Basic/Pascal/C/C++) Sadržaj Zadaci... 1 Zadatak: Napolitanke... 2 Zadatak: Peking... 3 Zadatak: Joker... Zadaci U tablici možete pogledati

Више

Писање и превођење модула

Писање и превођење модула Писање и превођење модула ЦИЉ Научити како се пишу и преводе модули. ИСХОД Након ове вежбе ћете моћи да: Напишете кернел модул са неколико могућности, укључујући параметре Приступите кернелу из вашег модула

Више

Lorem ipsum dolor sit amet lorem ipsum dolor

Lorem ipsum dolor sit  amet lorem ipsum dolor Početna prezentacija za korisnike Ključna aktivnost 1: Mobilnost u svrhu učenja: Razmjene mladih i Mobilnost osoba koje rade s mladima Završno izvješće Mobility tool Projektni ciklus Završno izvješće 1.

Више

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode] Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu

Више

The Land of Heroes Vrsta igre: Video slot PVI (povratak vrijednosti igraču): 96,17 % Pronađite magičan mlin kako biste se spasili od strašne hladnoće

The Land of Heroes Vrsta igre: Video slot PVI (povratak vrijednosti igraču): 96,17 % Pronađite magičan mlin kako biste se spasili od strašne hladnoće The Land of Heroes Vrsta igre: Video slot PVI (povratak vrijednosti igraču): 96,17 % Pronađite magičan mlin kako biste se spasili od strašne hladnoće koja vlada u zemlji heroja. Do 4 dodatna Wild simbola

Више

Za formiranje JOPPD obrasca neophodno je točno popuniti šifre u osnovama primitaka. Svaka osnova primitka ima propisane šifre u prilozima JOPPD

Za formiranje JOPPD obrasca neophodno je točno popuniti šifre u osnovama primitaka. Svaka osnova primitka ima propisane šifre u prilozima JOPPD Za formiranje JOPPD obrasca neophodno je točno popuniti šifre u osnovama primitaka. Svaka osnova primitka ima propisane šifre u prilozima 2.- 4. JOPPD obrasca i za svaku kombinaciju šifri su propisana

Више

Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити ос

Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити ос Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити основне концепте мрежног модела 3. Објаснити основне

Више

UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET MIHAJLO PUPIN ZRENJANIN TEHNOLOGIJE DISTRIBUIRANIH INFORMACIONIH SISTEMA - Skripta za teorijski deo (RADNA

UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET MIHAJLO PUPIN ZRENJANIN TEHNOLOGIJE DISTRIBUIRANIH INFORMACIONIH SISTEMA - Skripta za teorijski deo (RADNA UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET MIHAJLO PUPIN ZRENJANIN TEHNOLOGIJE DISTRIBUIRANIH INFORMACIONIH SISTEMA - Skripta za teorijski deo (RADNA VERZIJA) Autori: Ljubica Kazi Biljana Radulovic Dalibor

Више

Fra Serafina Schoena Rijeka MB: MBO: Žiro račun: kod RBA d.d. GSM:

Fra Serafina Schoena Rijeka MB: MBO: Žiro račun: kod RBA d.d. GSM: EKLIPS MINI CMS upute za korištenje v1.0 1. Sadržaj isporuke i opće informacije EKLIPS MINI CMS sustav napravljen je pomoću sljedećih open source tehnologija Java JDK 1.5 - http://java.sun.com/javase/downloads/index_jdk5.jsp

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić do sada su korišćene "gotove" funkcije iz standardnih biblioteka (cin, cout...) one su pozivane iz main funkcije koja je glavna funkcija u programu jer izvršavanje programa

Више

Prezentator: Nataša Dvoršak Umag, 20.listopad 2006

Prezentator: Nataša Dvoršak  Umag, 20.listopad 2006 IIS BURIN BURIN HD - HelpDesk Nenad Lenđel, projektant programer IS-a HROUG 2007, Rovinj, 19. Listopada 2007.g. ULJANIK IRI d.o.o. SADRŽAJ Uvod Ciljevi izgradnje HelpDeska Funkcijske cjeline HelpDesk integracija

Више

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke od tih jezičkih razlika su: Java kod se prevodi u.class

Више

SPR , IV godina, VHDL – Ispitna pitanja

SPR , IV godina, VHDL – Ispitna pitanja VHDL, SPR, II kolokvijum, priprema, 2016 Napomena: Na kolokvijumu dolazi 1 zadatak (40%) i 1 praktican projekat (60%). Radi se u grupama prema utvrdjenom rasporedu od I kolokvijuma. A. ZADAI Priloziti

Више

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Računarski praktikum I - Vježbe 03 - Implementacija strukture string Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 03 - Implementacija strukture string v2018/2019. Sastavio: Zvonimir Bujanović Stringovi u C-u String

Више

Logičke izjave i logičke funkcije

Logičke izjave i logičke funkcije Logičke izjave i logičke funkcije Građa računala, prijenos podataka u računalu Što su logičke izjave? Logička izjava je tvrdnja koja može biti istinita (True) ili lažna (False). Ako je u logičkoj izjavi

Више

KREIRANJE TORRENTA Ako zelite da kreirate torrent fajl od nekog fajla ili foldera u vasem racunaru a kasnije podeliti sa drugim korisnicima i uploadov

KREIRANJE TORRENTA Ako zelite da kreirate torrent fajl od nekog fajla ili foldera u vasem racunaru a kasnije podeliti sa drugim korisnicima i uploadov KREIRANJE TORRENTA Ako zelite da kreirate torrent fajl od nekog fajla ili foldera u vasem racunaru a kasnije podeliti sa drugim korisnicima i uploadovati ga na neki od servera predvidjenih u te svthe (Trackera)

Више

Slide 1

Slide 1 Poluautomatizirana selekcija varijabli u prediktivnoj analizi Multicom Glavna područja ekspertize: Data Mining Obračun i naplata (Billing) Upravljanje matičnim podacima (MDM) Skladišta podataka (DWH) i

Више

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni podsjetnik. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

WAMSTER Prezentacija

WAMSTER Prezentacija WAMSTER Mi smo Studio Elektronike Rijeka d.o.o. tvrtka za razvoj tehnoloških rješenja u automatici i elektronici tvrka osnovana 2006. na temelju komercijalizacije rezultata magistarskog rada locirani u

Више

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode] 1. Broj bitova koji se jednovremeno prenosi i obrađuje unutar procesora naziva se: a) radni takt b) procesorski kod c) procesorska reč d) procesorski takt 1. Broj bitova koji se jednovremeno prenosi i

Више

Nekad i sad - od Forms-a do ADF-a Patrik Franković Roland Miklić Sektor za informatiku i telekomunikacije

Nekad i sad - od Forms-a do ADF-a Patrik Franković Roland Miklić Sektor za informatiku i telekomunikacije Nekad i sad - od Forms-a do ADF-a Patrik Franković Roland Miklić Sektor za informatiku i telekomunikacije Sadržaj Forms vs. ADF Kako započeti Model i View Controller jspx, jsff Tips & Tricks ADF ukratko

Више

P11.3 Analiza zivotnog veka, Graf smetnji

P11.3 Analiza zivotnog veka, Graf smetnji Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи

Више