OBRADA PROSTORNO-VREMENSKIH TOKOVA PODATAKA U STREAMINSIGHT DSMS

Size: px
Start display at page:

Download "OBRADA PROSTORNO-VREMENSKIH TOKOVA PODATAKA U STREAMINSIGHT DSMS"

Transcription

1 SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br.1023 OBRADA PROSTORNO-VREMENSKIH TOKOVA PODATAKA U STREAMINSIGHT DSMS Ivan Padovan Zagreb, veljača 2015.

2

3 Mentor: Prof. dr. sc. Zdravko Galić Voditelj rada: Prof. dr. sc. Zdravko Galić

4 Sadržaj 1. Uvod Tokovi podataka StreamInsight tehnologija StreamInsight tokovi podataka StreamInsight način obrada i analize događaja tokova podataka CRUD StreamInsight adapteri MS SQL Server Spatial Prostorni tipovi podataka Točka Niz linija Zakrivljeni niz linija Niz krivulja Poligon Krivuljni poligon Skup točaka Skup nizova linija Skup poligona Geometrijska kolekcija SRID Prostorne operacije Operacije za manipulaciju prostornih objekata Operacije za utvrđivanje relacije između postornih objekata Operacije za obavljanje upita nad atributima prostornih objekata Aplikacija za obradu prostorno-vremenskih tokova podataka Arhitektura Adapteri Upiti Način rada aplikacije Testiranje Pokretanje i vizualizacija... 65

5 6. Zaključak Literatura Sažetak Summary Skraćenice Privitak... 76

6 1. Uvod U današnjem svijetu globalizacije i sve bržeg protoka ljudi, prometa i informacija internet se širi sve većom brzinom te razvoj tehnologije napreduje iz dana u dan. Zbog toga imamo sve više elektroničkih uređaja koji imaju ugrađenu GPS tehnologiju, bežični pristup internetu, gomilu podataka spremljenih na tim uređajima i razne senzore koji mogu određivati toplinu, akceleraciju itd. Rezultat takve situacije je i puno uređaja koji mogu nešto mjeriti i proizvesti veliku količinu podataka. Dominantna tehnologija za upravljanje podacima su sustavi za upravljanje bazama podataka (SUBP), utemeljeni na relacijskom ili objektno-relacijskom modelu podataka. SUBP je sustav gdje se svi podaci spremaju i čuvaju, gdje je trenutno stanje jedino važeće stanje i gdje se ne zahtijevaju usluge u realnom vremenu. U SUBP-u se manipulacija podataka obavlja preko upitnog jezika gdje se upiti obavljaju nad cijelom bazom podataka bez obzira kolika je veličina te baze. Aplikacije koje koriste SUBP, koriste ih uglavnom radi spremanja podataka te za manipulaciju nad tim podacima kao i za obavljanje upita nad tim spremljenim podacima. Iako se SUBP najčešće primjenjuju, postoje primjeri situacija gdje takav tip sustava nije primjenjiv. Naprimjer, to bi bila situacija kada postoji velika količina izmjerenih podataka koji imaju vremensku komponentu kao i moguću prostornu komponentu, ali ti podaci nisu od takve važnosti da moraju biti spremljeni za duži period već za jako kratak period kako bi mogli poslužiti samo kao indikator nekih vrijednosti u realnom vremenu. Opisana situacija bi se mogla riješiti pomoću SUBP-a uz određene uvjete. Prvi uvjet je da se automatizira unos podataka iz raznih izvora podataka te da se automatski izbrišu podaci koji više nisu potrebni iz baze. Za takav pristup aplikacija ne bi bila skalabilna. Drugi uvjet je da se uvedu okidači koji bi pratili stanje unosa da ne prijeđe u nedozvoljeno stanje. Puno okidača također bi usporilo bazu i dolazili bi problemi skaliranja koji bi uzrokovali zastoj u obradi podataka. Treći 1

7 uvjet je da u slučaju prevelikog broja podataka unesu samo određeni podaci, a ostali izbace. Takav pristup bi uzrokovao manju točnost izlaznog rezultata. Zbog navedenih problema očito je kako je potreban drugačiji pristup i sustav za upravljanje podacima u realnom vremenu. Upravo iz tog razloga nastali su sustavi za upravljanjem tokova podataka SUTP. SUTP sustavi imaju nekoliko karakteristika po kojima se razlikuju od SUBP sustava. Najprije, tokovi podataka su sekvence zapisa raspoređene prema vremenu dolaska. Naime, SUTP sustavi obrađuju podatke tijekom vremena, dok SUBP sustavi podatke obrađuju a priori. Zatim, tokovi podataka mogu proizlaziti iz više različitih izvora podataka, što znači da SUTP nema kontrolu nad vremenom dolaska i količinom dolaznih podataka. Također, valja istaknuti i kontinuitet i neograničenost dolaska tokova podataka, stoga SUTP sustavi ne mogu predvidjeti završetak tokova podataka. [14] Pojedini primjeri implementiranih sustava za upravljanje tokovima podataka su StreamInsight DSMS (Data Stream Managment System)[1] Microsoft korporacije i Oracle Streams [13] korporacije Oracle. Osim komercijalnih sustava Microsofta i Oracla postoje i sustavi otvorenog koda koji su razvijeni na raznim sveučilištima. Iako StreamInsight DSMS sustav upravlja tokovima podataka, u sustavu nije implementirana prostorna komponenta za upravljanje prostorno-vremenskih tokova podataka. U svijetu je sve više podataka koji dolaze s prostornom komponentom te su u SUBP-u sustavi implementirali prostornu komponentu za upravljanje prostornim podacima. Premda SUBP sustavi većinom upravljaju prostornim podacima, SUTP sustavi nemaju implementiranu prostornu komponentu za upravljanje prostorno-vremenskim podacima. Takva tvrdnja vrijedi i za StreamInsight DSMS sustav koji nije implementirao prostornu komponentu, ali je otvorio mogućnost proširenja funkcionalnosti sustava s korisničkim ugrađenim komponentama. U sklopu ovog rada napravljena je aplikacija s proširenim mogućnostima upravljanja prostorno-vremenskim tokovima podataka koja se temelji na StreamInsight tehnologiji. 2

8 2. Tokovi podataka Tok podataka je skup podataka koji sadrže vremensku instancu zajedno s drugim podacima koji su vezani za tu vremensku instancu. Primjeri tokova podataka u stvarnom svijetu mogu biti skup podataka o temperaturi, tlaku, padalinama, broju posjetitelja na nekoj lokaciji itd. Svi ti skupovi podataka imaju vremensku komponentu te ih to čini primjenjivim za tokove podataka. Teoretska definicija toka podataka može se definirati na sljedeći način: Kontinuirani tok podataka S je (moguće beskonačan) multiskup (bag) elemenata ás, tñ, pri čemu n-torka s pripada shemi S a t Î T je vremenska oznaka elementa.[11] Iz definicije se može zaključiti da je element toka podataka sličan elementu relacijskog modela. U relacijskom modelu element relacije sastoji se od identifikatora i skupa atributa koji predstavlja taj element. Element toka podataka isto tako ima identifikator, a to je vremenska instanca te skup atributa koji su vezani za tu vremensku instancu. Razlika koja postoji između ta dva modela je u tome što u relacijskom modelu svaki identifikator elementa mora biti jedinstven, dok identifikator elementa toka ne mora biti jedinstven te kod tokova podataka skup elemenata mora biti konačan i ne smije biti ograničen. Isto tako je važno napomenuti da identifikator elementa toka ne mora biti vremenski trenutak već može biti i vremenski interval i ne mora odgovarati realnom niti sistemskom vremenu. Tok podataka može se podijeliti na dva tipa; bazni i izvedeni tok. Bazni tok podataka je izvorni tok podataka koji ulazi u sustav za upravljanje tokovima podataka. Izvedeni tok podataka je izlazni tok dobiven kao rezultat operatora u upitu. Postojeći tradicionalni sustavi za upravljanje bazama podataka SUBP se zasnivaju na process-after-store paradigmi (slika1) koja ne obrađuje tokove podataka na djelotvoran način. Takva paradigma se zasniva na izlaznom (eng.inbound) modelu 3

9 procesiranja gdje prvo kreće početak transakcije i unos podataka u bazu. Nakon toga se podaci indeksiraju unutar baze i završava transakcija. Poslije toga ide postavljanje upita na temelju kojeg se dohvaćaju podaci iz baze i prikazuju korisniku. Takav način izlaznog procesiranja bi s tokovima podataka prouzrokovao usporavanje obrade podataka. [11] Slika 2.1.Tradicionalni SUBP (outbound processing/process-after-store) [11] Upravo iz tog razloga sustavi za upravljanjem tokova podataka SUTP koji su po svojoj prirodi kontinuirani rabe koncept ulaznog (eng. inbound) procesiranja (slika 2). Ulazno procesiranje funkcionira na način da se tokovi podataka ubacuju u sustav i procesiraju on-the-fly u memoriju. Iz memorije se rezultati obrade šalju klijentskim aplikacijama. [11] 4

10 Slika 2.2. SUTP (inbound processing/process-on-the-fly) [11] Prilikom usporedbe ta dva načina procesiranja vidljiva je razlika između izlaznog i ulaznog procesiranja podataka. Kod izlaznog procesiranja podaci su statični a upiti dinamički, dok su kod ulaznog procesiranja podaci dinamički a upiti statični. Temeljne razlike u radu između SUBP i STUP mogu se vidjeti u tablici 1. Tablica 2.1.SUBP-SUTP usporedba [11] SUBP Perzistentne relacije Ad-hoc upiti Slučajni pristup Neograničena (vanjska) memorija Trenutačno stanje podataka Obrada u realnom vremenu nije moguća Relativno mali broj novih podataka-promjena Podaci proizvoljne granulacije Pristup podacima određen upitnim procesorom i fizičkim DB dizajnom SUTP Tranzistentni tijekovi podataka Kontinuirani upiti Sekvencijalni pristup Ograničena (glavna) memorija Povijesni podaci Obrada u realnom vremenu Goleme količine dolazećih podataka Podaci konačne granulacije Nepredvidljivi/Promjenljivi dotok podataka 5

11 Usporedba upravljanja podacima SUTP-a i SUBP-a pokazuje da SUTP upitni jezik za tokove podataka ima velike sličnosti s upitnim jezikom SUBP-a. Jedina razlika između SUTP-a i SUBP-a je da su rezultati SUBP upitnog jezika konačni dok su upiti u SUTP-u potencijalno beskonačni.[11] U slučaju kad tok podataka uz vremensku instancu sadrži i prostornu instancu, nastaje vremensko-prostorni tok podataka. Model vremensko-prostornih tokova podataka je podvrsta vremenskog toka podataka. Vremensko-prostorni tokovi u SUTP-u mogu se obrađivati jednako kao i vremenski tokovi podataka uz uvjet da se prostorna komponenta prostorno-vremenskog toka gledala kao atribut. Razlika između vremensko-prostornih tokova podataka i vremenskih tokova podataka je u mogućnosti vremensko-prostornog toka da se obrađuje bez dodatnih atributa dok kod vremenskog toka to nema smisla. Zbog toga se u prostorno-vremenskom toku podataka prostorna komponenta može gledati kao atribut vremenskom toku podataka. Prostorni se upiti nad vremensko-prostornim tokovima podataka obavljaju na isti način na koji se obavljaju upiti nad prostornim podacima u SUBP-u. Iz tog razloga je tehnologija prostornih upita koji se obavljaju u SUBP-u primjenjiva i u sustavu vremensko-prostornih tokova podataka. Isto tako kod vremensko-prostornih tokova podataka trebali bi postojati prostorni podaci u bazi podataka da bi se mogli izvršavati prostorni upiti nad vremensko-prostornim tokovima podataka sa postojećim skupom prostornih objekata. Tehnologije koje se mogu ukomponirati za prostorno-vremenske tokove podataka su StreamInsight i SQL Server korporacije Microsoft te Oracle Stream i Oracle baza korporacije Oracle. Od baza otvorenog koda postoji još i PostgreSQL baza podataka koja se može ukomponirati zajedno s nekim sustavima tokova podataka otvorenog koda. U ovom će se radu koristiti StreamInsight tehnologija zajedno s SQL Server Spatial tehnologijom. 6

12 3. StreamInsight tehnologija Tehnologija StreamInsight -a je tehnologija razvijena od strane Microsoft korporacije. Ta tehnologija je dodatak za Microsoftov SQL Server koji obrađuje tokove podataka. Služi kao platforma za razvoj aplikacija koje obrađuju tokove podataka. Takve aplikacije se nazivaju CEP aplikacije (eng.cep-complex event processing) jer procesiraju složene događaje. StreamInsight platforma pruža: Mogućnost dohvata podataka iz više izvora Analizu podataka u stvarnom vremenu bez spremanja podataka u baze i upotreba okidača iz sustava baza podataka Visoko optimiranu izvedbu i propusnost podataka. Arhitektura je napravljena na način da podržava pararelno izvršavanje kontinuiranih upita nad tokovima podataka NET razvojno okruženje gdje se koristi.net jezik pomoću LINQ tehnologije za razvoj aplikacija koje obrađuju tokove podataka. Fleksibilne mogućnosti izvedbe gdje postoje tri vrste izvedbe StreamInsigtha. StreamInsight može biti potpuno integriran unutar aplikacije pomoću DLL-a. Može biti izveden kao samostalni server s više aplikacija i korisnika koji dijele taj server. Samostalni StreamInsight server može biti dio farme servera. Upravljačko sučelje i dijagnostički pregledi omogućuju praćenje i upravljanje CEP aplikacijama. StreamInsight DSMS pruža mogućnosti analiziranja,dijagnoza, troubleshoot upita korištenih u aplikacijama na temelju alata Event Flow Debuggera. 3.1 StreamInsight tokovi podataka Svi podaci u StreamInsight serveru su organizirani kao tokovi događaja. Svaki tok opisuje potencijalno beskonačnu kolekciju podataka koja se mijenja kroz vrijeme. Svaki element toka je događaj koji ima svoju jedinstvenu identifikacijsku oznaku gdje je ta identifikacijska oznaka vrijeme kao i korisni teret koji predstavlja skup 7

13 atributa za pojedini događaj. Važno je napomenuti da identifikacijska oznaka događaja toka nema istu važnost kao kod statičnih podataka u SUBP-a jer samo služi za razlikovanje događaja a ne služi za povezivanje događaja. Osnovni dijelovi svakog događaja su zaglavlja (eng. Header) i korisni teret (eng. payload). Zaglavlje je sastavni dio događaja koja sadrži metapodatke koji definiraju tip događaja kao i jedan ili više vremenskih trenutaka za definiciju vremenskog intervala pojedinog događaja. Vremenski trenuci događaja nisu definirani sustavom servera već su definirani u izvornim podacima koji ulaze u server. Korisni teret je.net struktura podataka koja drži podatke asocirane na događaj. Korisni teret je korisnički definirana klasa čija se instanca ubacuje u događaj toka podataka. Korisni teret ne podržava ugniježđene klase. Oni događaji čiji vremenski trenuci stvarnog svijeta odgovaraju redoslijedu u tokovima prilikom obrade tokova kod upita zovu se in order događaji. To znači da prethodni događaj u toku ne smije imati veće vrijeme od onog ispred njega. Događaji koji nisu tako raspoređeni zovu se out of order događaji. StreamInsight server sadrži mehanizam koji kontrolira takve događaje tako da izlazni tok ima pravilan raspored vremenskih trenutaka osim ako se u upitu ne specificira da se ne žele korekcije ulaznih tokova podataka. Tip događaja (eng. event kind) pokazuje stanje događaja u pogledu dali je događaj novi događaj u toku ili je to potvrda potpunosti postojećeg događaja unutar toka podataka. StreamInsight DSMS podržava dva tipa događaja :INSERT i CTI (current time increment). INSERT tip događaja dodaje novi događaj s korisnim teretom unutar toka podataka. U korisnom teretu se nalaze određeni podaci instance neke napravljene klase podataka.[12] CTI tip događaja je interpunkcijski događaj koji pokazuje potpunost postojećeg događaja u toku podataka. Bez prisustva CTI događaja u ulaznom toku, nijedan izlazni tok se neće generirati za dani upit nad ulaznim tokom. CTI struktura se sastoji od pojedinog polja koja prikazuje trenutačni vremenski trenutak. CTI događaj ima dvije svrhe. Prva svrha mu je da omogućuje prihvaćanje i obradu događaja čiji vremenski trenuci ne odgovaraju njihovom rasporedu dolaska u upit. Kad je CTI događaj pušten iz sustava, to pokazuje serveru da nijedan sljedeći 8

14 INSERT događaj neće izmijeniti povijest događaja prije CTI vremenskog trenutka. Nakon puštanja CTI događaja, nijedan INSERT događaj ne može imati početni vremenski trenutak raniji od CTI vremenskog trenutka. Pokazatelj potpunosti toka događaja omogućuje serveru da pusti rezultate bilo kojeg operatora koji ima akumulirano stanje te na taj način da osigura efikasan tok podataka kroz sustav. Druga svrha mu je da održava nisku latentnost upita. Za implementaciju CTI događaja u StreamInsight serveru potrebno je implementirati klasu AdvanceTimeSettings. Ta klasa omogućava da se out of order događaji smjeste u pravilan vremenski redoslijed toka.[12] Modeli događaja toka podataka definiraju oblik događaja na temelju njegovih temporalnih karakteristika. StreamInsight DSMS podržava tri modela toka podataka a to su intervalni model, točkasti model i rubni model. Intervalni model se prikazuje kao događaj (time1, time2, korisni teret), točkasti model se prikazuje s događaj (time1, 0, korisni teret) a rubni model se prikazuje kao događajpočetak (time1, beskonačnost, korisni teret) i događajkraj (time1, time2,korisni teret). Točkasti model predstavlja događaj pojavljivanja kao pojedina točku u vremenu. Točkasti model događaja zahtijeva samo početno vrijeme događaja. StreamInsight DSMS zaključuje važeći kraj dodavanjem male jedinice vremena u osnovnom vremenu tipa podataka za početni trenutak da bi se uspostavio vremenski trenutak za svaki događaj. Budući da je završni trenutak isključujući, točkasti događaj je važeći samo za trenutno početno vrijeme te je zbog toga najprikladniji za sustave vremensko-prostornih tokova podataka. Intervalni model događaja predstavlja događaj čiji je korisni teret ispravan za određeni vremenski period. Događaj mora imati specificiran početni i završni vremenski trenutak za svaki događaj. Početni vremenski trenuci događaja su uključivi (U-unija događaja) dok su završni vremenski trenuci događaja isključivi ( -presjek događaja) bez obzira na važenje korisnog tereta. Rubni model predstavlja pojavu događaja čiji korisni teret je važeći za dani interval vremena gdje je jedino početni trenutak poznat na dolasku u server. Završno vrijeme je zato postavljeno na maksimalno vrijeme u budućnost. Kasnije se 9

15 završno vrijeme za određeni događaj toka ažurira. Model sadrži dva svojstva a to su vrijeme pojavljivanja i rubni tip te oni zajedno definiraju početnu ili završnu točku rubnog događaja. 3.2 StreamInsight način obrada i analize događaja tokova podataka Obrada događaja je organizirana unutar upita te bazirana na logici tih definiranih upita. Upiti uzimaju potencijalno beskonačan tok vremensko osjetljivih podataka te izvode računanja na tim podacima i izbacuju rezultat na određeno definirani način. Upitni predložak (eng. QueryTemplate) je temeljna jedinica upitne kompozicije. To je struktura koja definira poslovnu logiku potrebnu za kontinuiranu analizu i obradu događaja ubačenih u server pomoću ulaznog adaptera te koja generiraju tok događaja koji upotrebljava izlazni adapter. Više upitnih predložaka se mogu kombinirati i spajati u jedan upitni predložak. Upitni predložak je napisan u LINQ u te se kombinira s programskim jezikom C#. StreamInsight server pruža sljedeće funkcionalnosti za pisanje upita i analiza: Izračun za uvođenje dodatnog svojstva događaja - Korišteni slučajevi poput pretvaranja jedinica zahtijevaju izvedbu računanja na početku dolaska tih događaja. Korištenjem projekcijskih operacija u serveru, mogu se dodati dodatna polja za korisni teret i izvoditi računanja nad postojanim poljima u ulaznim događajima. Filtriranje događaja U slučajevima poput oznake za uzbunu gdje je potrebno provjeriti dali je određeni korisni teret prešao određeni prag. Postoji mogućnost za događaje koji ne zadovoljavaju određene pragove da se filtriraju pomoću filter operacije koja radi pomoću bolovog operatora preko korisnog tereta događaja. Grupiranje događaja StreamInsight server pruža mogućnost grupiranja pomoću operatora grupiranja koji dopušta dijeljenje ulaznog toka podataka na temelju svojstva događaja poput identifikacijske oznake ili nekog drugog polja korisnog tereta. Na taj način se druge operacije upita primijenjuju zasebno na te podijeljene dijelove. 10

16 Prozori kroz vrijeme Grupiranjem događaja tijekom vremena je moguće vidjeti broj pogreška koje su se dogodile tijekom fiksnog intervala vremena. Poskočni prozori i klizeći prozori definiraju prozor preko događaja toka radi izvedbi određenih analiza gdje se mogu vidjeti pogreške koje su se dogodile tijekom fiksnog intervala vremena. Agregacije StreamInsight server ima ugrađene operacije agregacije sum,count,min,max i average koje operiraju na prozorima. Identifikacija TOP K kandidata Posebna vrsta agregacijskih operacija je potrebna u slučaju potrebe identificiranja događaja koji su najviše rangirani s obzirom na neke postavljene specifikacije unutar toka podataka. TopK operator dozvoljava provjeru takvih događaja pomoću rasporeda koji je postavljen nad događajima u toku. Uklapanje događaja s različitih tokova podataka Postoje slučajevi kad se događaji primaju s više tokova podataka, te da nisu vremenski posve ujednačeni. StreamInsight server pruža mogućnost udruživanja koja izvodi uklapanje događaja s dva izvora ako se njihova vremena preklapaju i pruža mogućnosti izvršenja predikata uklapanja koji je specificiran na polju korisnog tereta. Rezultat takvog preklapanja sadrži korisni teret iz prvog i drugog događaja. Kombiniranje događaja s različitih tokova u jedan događaj Operator unije dopušta spajanje višestrukih ulaznih tokova podataka u jedan tok podataka. Korisnički definirani dodaci- Budući da sve funkcionalnosti nekad nisu dovoljne za izvršenje određenog upita nad tokovima, StreamInsight server dopušta korisnički definirane upite koji bi imali korisničko definiranu funkcionalnost. Mogu se definirati korisničke agregacije i korisnički upitni operatori. Spajanjem upitnog obrazaca sa specifičnim ulaznim i izlaznim adapterom registrira se upitna instanca unutar StreamInsight CEP servera. Spojeni upiti mogu biti započeti, zaustavljeni te upravljani unutar servera. Jednom kad se podaci unesu u server preko ulaznih adaptera, računanje toka podataka može biti kontinuirano izvođeno nad podacima. 11

17 3.3 CRUD U sustavu tokova CRUD (Create,Read,Update,Delete) operacije se razlikuju u odnosu na ostale sustave poput perzistentnih sustava koji implementiraju CRUD operacije. Create operator u StreamInsight DSMS sustavu koristi metodu CreateInsertEvent() koja stvara događaj određenog oblika koji se puni s korisnim teretom te dobiva vremenski trenutak na temelju kojeg se postavlja u red u toku. Read operator se razlikuje u sustavu tokova u odnosu na ostale sustave u načinu čitanja podataka gdje je jedini način da se izvorni podaci čitaju je onaj na temelju upita u kojem su ulazni podaci potpuno jednaki izlaznim podacima. Update operator zapravo ne postoji u sustavu tokova jer su ulazni događaji nepromijenjivi i ne postoji način da se ti ulazni događaji u toku izmjene ili izbrišu. Najsličnije promjeni podataka u tokovima postoji kod rubnih događaja. Rubni događaji mogu započeti u nekom vremenskom trenutku te kraj postaviti na beskonačno, a promijeniti pojedini rubni događaj može se jedino zatvaranjem rubnog događaja a to znači postaviti mu završni vremenski trenutak. Delete operator ne postoji u tokovima podataka. Najbliže brisanju podataka događaja je pozivanje metode RelaseEvent() kod izlaznog adaptera gdje će se ulazni događaj izvaditi iz toka u serveru i kopirati na neko vanjsko spremište. RelaseEvent() metoda oslobađa memoriju od podataka događaja iz servera.[12] 3.4 StreamInsight adapteri Adapter po svojoj definiciji je oblikovni obrazac koji pomaže da dva nekompatibilna sučelja rade zajedno. U StreamInsight tehnologiji adapteri imaju sličnu svrhu. Adapteri služe za pretvaranje i dostavljanje ulaznih događaja tokova iz vanjskih izvora u server i izlazne događaje tokova iz servera u izlazni vanjski izvor podataka. Ulazna instanca adaptera prihvaća ulazne događaje od strane vanjskih izvora poput baze podataka, mrežnih portova, raznih senzora,tekstualnih datoteka itd. Takav adapter čita ulazne događaje u formatu u kojem su oni isporučeni i 12

18 pretvara ih u format događaja koji je u StreamInsight serveru podržan. Ulazni adapter služi tome da specifičan izvor događaja prebaci u server. U slučaju da izvor događaja proizvodi samo jedan tip događaja, adapter može biti tipiziran tom jednom vrstom događaja. Sve instance adaptera u tom slučaju proizvode isti fiksni format korisnog tereta u kojem su broj polja i njihovi tipovi poznati unaprijed. Primjeri takvih događaja su podaci raznih senzora podataka gdje se zna koji format određeni senzor izbacuje. U slučaju slanja različitih tipova događaja s nekog izvora događaja, postoji mogućnost da će događaji sadržavati različiti format korisnog tereta ili da format korisnog teret neće biti poznat unaprijed. Untyped adapter se u takvim situacijama implementira.untyped adapter je adapter u kojem je tip događaja nepoznat i zbog tog razloga se implementira Untyped događaj kao apstraktna klasa iz koje se nasljeđuju intervalni, točkasti i rubni događaji. S Untyped adapterom, format korisnog tereta je dobavljen kao dio konfiguracijskih specifikacija za vrijeme provođenja upita. Primjeri takvih izvora uključuju CSV datoteke koje sadrže varirajući broj polja gdje se tipovi podataka koji su spremljeni u datoteci su nepoznati sve do trenutka instanciranja upita. Pojedina instanca adaptera tipizirana ili netipizirana uvijek šalje događaje u nekom specifičnom tipu događaja. Izlazni adapter služi da prima događaje koji su obrađeni od strane StreamInsight servera, pretvori događaje u format za izlazni uređaj koji očekuje podatke iz servera. Izlazni adapteri imaju iste karakteristike kao i ulazni adapter. 13

19 4. MS SQL Server Spatial SQL Server je sustav za upravljanje bazama podataka i skladište podataka koji je razvila korporacija Microsoft. Sustav je razvijen za spremanje i manipulaciju podacima za raznovrsne aplikacije. SQL Server se temelji na relacijskom modelu. Upitni jezik SQL Servera za manipulaciju podacima zove se T-SQL. Jedna od komponenti koju SQL Servera sadrži je prostorna komponenta nazvana SQL Server Spatial. MS SQL Server Spatial je komponenta na temelju koje se mogu obavljati prostorni upiti nad prostornim podacima koji se spremljeni u SQL Server bazi podataka. Prostorni podaci u SQL Server-u predstavljaju informacije o nekoj fizičkoj lokaciji na zemlji i obliku nekog geometrijskog objekta. SQL Server podržava dva tipa prostornih podataka a to su: Geometrijski tip prostornih podataka je predstavljen u Euklidskom dvodimenzionalnom koordinatnom sustavu. Instance geometrijskih tipova su prikazani u dvodimenzionalnom koordinatnom sustavu s X-osi i Y-osi. Geografski tip prostornih podataka je predstavljen u zakrivljenom koordinatnom sustavu. Instance geografskih objekata su prikazani na elipsoidu s longitudom i latitudom kao koordinatom pozicije na elipsoidu. Oba tipa su implementirana kao.net CLR (eng. common language runtime) tipa podataka u SQL Serveru. 4.1 Prostorni tipovi podataka Prostorni tipovi podataka se dijele na geometrijske i geografske tipove podataka. SQL Server ima podršku za šesnaest tipova prostornih objekata ili prostornih instanci ali samo jedanaest prostornih instanci se mogu kreirati. SQL Server može nad kreiranim instancama manipulirati i spremati u bazu podataka. Prostorne instance SQL Server-a nasljeđuju određena svojstva od svojih roditeljskih instanci koje se mogu raspoznati kao: točke, linijski nizovi, zatvoreni nizovi linija, spojene krivulje, poligoni, zakrivljeni poligoni ili kao višestruke geometrijske ili geografske instance u geometrijskoj kolekciji. Geografski tip ima još dodatnu instancu zvanu FullGlobe. 14

20 Slika 4.1.Hijerahija geometrijskih i geografskih tipova podataka [2] Na slici 3 je prikazana geometrijska hijerarhija na temelju koje su geometrijski i geografski tipovi podataka bazirani. Geografski i geometrijski tipovi od kojih se mogu napraviti instance u SQL Server-u su prikazani plavom bojom. Kao što slika 3 prikazuje, deset tipova koji se mogu instancirati su: točke, skup točaka, niz linija, zakrivljeni niz linija, skup zakrivljenih nizova linija, spojene krivulje, poligon,zakrivljen poligon, skup poligona i geometrijska kolekcija. Isto tako postoji i dodatni tip koji može se instancirati u SQL Server-u a to je FullGlobe. U SQL Server-u geometrijski i geografski tipovi se mogu prepoznati kao specifična instanca sve dok je dobro formirana instanca iako nije definirana eksplicitno. Podtipovi geometrijskih i geografskih tipova mogu se podijeliti na jednostavne i kolekcijske tipove. Jednostavni tipovi su: Točke Niz linija Zakrivljeni niz linija Niz krivulja Poligon Krivuljni poligon 15

21 Kolekcijski tipovi uključuju: Skup točaka Skup nizova linija Skup poligona Geometrijsku kolekciju Točka Unutar SQL Servera točka je 0-dimenzionalni objekt koji reprezentira jednu lokaciju i može sadržavati visinu Z i mjerenu vrijednost M. Točka se u SQL Serveru može prikazati kao geometrijski ili geografski tip podataka. Točka kao geometrijski tip podataka predstavlja jednu lokaciju gdje atribut X prezentira X koordinatu a atribut Y prezentira Y koordinatu točke. SRID (eng. Spatial Reference System Identifier) predstavlja identifikaciju prostornog geometrijskog datuma u kojem se želi prostorni objekt prikazati. Točka kao geografski tip podatak predstavlja lokaciju gdje Lat atribut predstavlja latitudu a Lng atribut predstavlja longitudu. Vrijednosti za latitudu i longitudu su mjereni u kutevima. Vrijednosti za latitudu uvijek leži unutar intervala [-90,90] a za vrijednosti izvan te domene će se izbaciti greška. Vrijednosti za longitudu uvijek leže u intervalu [-180,180] te vrijednosti izvan te domene su prebačene u vrijednosti te domene. Primjerice vrijednost -190 se prebaci u vrijednost 170 a vrijednost 360 u vrijednost 0. SRID predstavlja identifikaciju prostornog geografskog datuma u kojom se želi određeni prostorni objekt prikazati Niz linija Niz linija je jednodimenzionalni objekt koji predstavlja sekvencu točaka i linija koje povezuju te točke. Prilikom kreiranje niza linija isto tako mora se naznačiti SRID bilo da se radi o geometrijskom tipu ili geografskom tipu podataka. 16

22 Slika 4.2.Primjeri instanci nizova linija [2] Niz linija može se prikazati na četiri vrste načina na slici 4. Pod broj jedan može se vidjeti jednostavan nezatvoreni niz linija. Pod broj dva može se vidjeti kompleksni nezatvoreni niz linija. Pod broj tri može se vidjeti zatvoreni jednostavni niz linija koji predstavlja prsten. Pod broj četiri može se vidjeti zatvoreni kompleksan niz linija koji se ne može klasificirati kao prsten Zakrivljeni niz linija Zakrivljeni niz linija je kolekcija jednog ili više kontinuiranog segmenta kružnog luka. Segment kružnog luka je zakrivljeni segment definiran sa tri točke u dvodimenzionalnoj ravnini gdje prva točka ne može biti ista kao i treća točka. Ako su tri točke u segmentu kružnog luka kolinearne, segment kružnog luka se tretira kao linijski segment. Slika 4.3.Primjeri instanci zakrivljenih nizova linija [2] Niz krivulja Niz krivulja je kolekcija jednog zakrivljenog niza, više zakrivljenih nizova linija ili niza linija geometrijskog i geografskog tipa. U SQL Server-u prazan niz krivulja može se kreirati ali da bi bio valjan za upite i manipulaciju mora poštivati neka pravila. Prvo pravilo je da mora sadržavati barem jedan niz linija ili zakrivljeni niz 17

23 linija. Drugo pravilo je da sekvenca niza linija ili zakrivljenog niza linija bude kontinuirana. Slika 4.4.Primjeri instanci nizova krivulja [2] Na slici 6 se mogu vidjeti neki primjeri valjanih instanci nizova krivulja Poligon Poligon je dvodimenzionalna površina spremljena kao sekvenca točaka koja definira vanjski povezani prsten linija i nula ili više unutarnjih prstena. Instanca poligona može biti kreirana od najmanje tri različite točke. Instanca poligona SQL Servera isto tako može biti prazna. Vanjski i unutarnji prsteni definiraju granice poligona. Prostor unutar prstena definira površinu poligona. Slika 4.5.Primjeri instanci poligona [2] Na slici 7 se mogu vidjeti tri primjera poligona. U prvom primjeru imamo prikazan samo jedan vanjski prsten linija koji definira poligon. U drugom primjeru vidimo jedan vanjski prsten i dva unutarnja prstena.granice cijelog poligona definirane su granicama vanjskog prstena i granicama unutarnjeg prstena a površina poligona je definirana kao površina vanjskog prstena oduzeta od površina dvoje unutarnjih prstena. U trećem primjeru imam sličan prikaz kao i u drugom primjeru samo što se ovdje međusobno dva unutarnja prstena dodiruju. Da se dva unutarnja prstena sijeku, instanca poligona ne bi bila važeća te se ne bi mogli obavljati upiti nad takvim poligonom. 18

24 4.1.6 Krivuljni poligon Krivuljni poligon je zakrivljena površina definirana vanjskim granicama prstena i granicama unutarnjih prstena koji se međusobno ne preklapaju u slučaju da postoje unutarnji prsteni. Postoje dva kriterija koji definiraju atribute instance krivuljnog poligona. Prvi kriterij je da granice instance krivuljnog poligona su definirane granicama vanjskog prstena i svim granicama unutarnjeg prstena. Drugi kriterij je da površina instance krivuljnog poligona se nalazi između granica vanjskog prstena i granica unutarnjih prstena. Instanca krivuljnog poligona se razlikuje od običnog poligona po tome što može sadržavati segmente kružnih lukova i zakrivljene nizove linija kao dijelove prstena Skup točaka Skup točaka je kolekcija nula ili više točaka. Granice instance skupa točaka su prazne Skup nizova linija Skup nizova linija je kolekcija nula ili više geometrijskih i geografskih nizova linija. Primjeri skupova nizova linija se mogu vidjeti na slici 8. Slika 4.6.Primjeri instanci skupova niziova linija [2] 19

25 Prvi prikaz na slici 8 prikazuje nizove linija koji se ne dodiruju. Drugi prikaz prikazuje dva niza linija koji imaju zajedničku krajnju točku. Treći prikaz prikazuje kako jedan niz linija dodiruje unutarnji dio drugog niza linija. Četvrti prikaz prikazuje presjek dva niza linija. Peti prikaz prikazuje nezatvorene nizove linija a nizovi su nezatvoreni jer se unutarnji dijelovi nizova linija ne presijecaju. Šesti prikaz prikazuje dva zatvorena niza linija Skup poligona Skup poligona je kolekcija nula ili više poligona. Primjer skupa poligona može se vidjeti na slici 9. Slika 4.7. Primjer instanci skupova poligona [2] Na prvom prikazu slike 9 može se vidjeti dva odvojena poligona gdje jedan ima dva unutarnja prstena a drugi jedan unutarnji prsten. Na drugom prikazu može se vidjeti presjek dva poligona na vanjskoj granici dva poligona Geometrijska kolekcija Geometrijska kolekcija je kolekcija nula ili više geometrijskih ili geografskih instanci. Geometrijska kolekcija može se kreirati kao prazna kolekcija SRID SRID je oznaka za svaku prostornu instancu u SQL Serveru. SRID predstavlja prostorni referentni sustav baziran na specifičnom elipsoidu koji najbolje opisuje planet Zemlju. SRID se koristi da bi preslikao prostornu instancu na ravnu 20

26 površinu ili zakrivljenu površinu elipsoida. U SQL Serveru prostorni stupac može sadržavati različite SRID-e unutar jedne tablice, ali se prostorni upiti nad tim geometrijskim objektima neće moći onda izvršavati. 4.2 Prostorne operacije Prostorne operacije u SQL Serveru se mogu obavljati nad geometrijskim i geografskim objektima koji se nalaze u SQL Server bazi. Budući da se ovaj rad bazira na podacima tokova koji su dobiveni preko GPS uređaja i podaci sadrže geografske koordinate, opisane prostorne operacije se izvode nad geografskim tipovima podataka Operacije za manipulaciju prostornih objekata Ključne operacije za manipulaciju prostornih objekata nad geografskim podacima u SQL Server bazi podataka su: STBuffer - operacija vraća geografski objekt koji predstavlja uniju svih točaka čija udaljenost od geografske instance nad kojom se obavlja operacija je manja ili jednaka specificiranoj udaljenosti. STIntersection-operacija vraća prostorni objekt dobiven presjekom zadanog geografskog objekta s drugim zadanim geografskim objektom. Površina dobivenog objekta je površina gdje se preklapaju površine dva zadana objekta. STUnion-vraća prostorni objekt kojemu se unutarnja površina sastoji od površine dva ili više zadanih geografskih objekata. STDifference-operacija vraća prostorni objekt dobiven razlikom dva prostorna objekta. Površina dobivenog objekta sastoji se od površina dva zadana prostorna objekta gdje površine dva zadana objekta se ne preklapaju međusobno. 21

27 4.2.2 Operacije za utvrđivanje relacije između postornih objekata Ključne operacije za utvrđivanje relacija između geografskih objekata unutar SQL Server baze podataka su: STEquals-operacija provjerava jednakost zadanih geografskih instanci. STDisjoint-operacija provjerava dali se međusobno dvije zadane geografske instance prostorno ne preklapaju. STIntersects-operacija provjerava dali prva zadana geografska instanca siječe drugu zadanu geografsku instancu. STDinstance-operacija vraća najkraću udaljenost između dva dana geografska objekta Operacije za obavljanje upita nad atributima prostornih objekata U SQL Serveru sve geografske instance imaju određen broj atributa koji se mogu dohvaćati preko metoda koje pruža SQL Server. Upiti nad atributima prostornih objekata koji se mogu izvoditi u SQL Server-u su: STGeometryType - operacija vraća instancu tipa geografskog objekta InstanceOf- operacija utvrđuje dali je geografskom objektu dan tip instance STGeometryN-vraća specifični geografski objekt iz geometrijske kolekcije STNumPoints- vraća broj točaka od kojih se sastoji instanca STPointN-vraća specifičnu točku instance STStartPoint- operacija vraća početnu točku instance STEndpoint- operacija vraća završnu točku instance STDimension-operacija vraća dimenziju instance STLength-operacija vraća dužinu prostorne instance STArea-operacija vraća površinu geografske instance STIsEmpty operacija određuje dali je instanca prazna STIsClosed- operacija određuje dali je instanca zatvorena NumRings-operacija vraća broj prstena unutar instance poligona RingN-operacija vraća specifični unutarnji prsten poligona 22

28 5. Aplikacija za obradu prostorno-vremenskih tokova podataka Aplikacija za obradu prostorno-vremenskih tokova podataka je CEP aplikacija koja je izrađena u sklopu rada o obradi prostorno-vremenskih tokova u StreamInsight tehnologiji. Izrađena je u Microsoft programskom alatu Visual Studio 2012 uz pomoć programskih paketa od strane StreamInsight tehnologije i razvijena je u C# programskom jeziku. Aplikacija je napravljena da se spaja sa StreamInsight DSMS-om koji obrađuje tokove i SQL Server bazom podataka koja radi dohvat i obavljanje upita nad prostornim objektima koji su zadani ručno ili se nalaze u bazi podataka. CEP aplikacija za obradu prostorno-vremenskih tokova je razvijena sa svrhom obrade velike količine tokova podataka gdje svaki podatak ima prostornu i vremensku instancu. Obrada tokova podataka u CEP aplikaciji je postupak gdje se od ulaznih izvora podataka radi tok nad kojim se obavljaju upiti slični SQL upitima. Razvijena CEP aplikacija proizvodi izlazni prostorno-vremenski tok podataka dobiven na temelju prostorno-vremenskog upita nad ulaznim tokom podataka. Također može se proizvesti izlazni tok sa samo vremenskom komponentom pomoću prostorno-vremenskog upita nad ulaznim prostorno-vremenskim tokom podataka. 5.1 Arhitektura Arhitektura CEP aplikacije se sastoji od više komponenti. Najvažnija komponenta razvijene CEP aplikacije su adapteri. Adapteri omogućavaju izradu ulaznog toka podataka koji se onda obradi upitom i šalje izlaznom adapteru. Uz adaptere u aplikaciji su razvijeni i upiti koji služe da na neki način obrade ulazni tok podataka. Uz upite i adaptere, razvijena je isto tako komponenta koja spaja adaptere i upite. CEP aplikacija je razvijena da bi mogla obrađivati prostorni dio toka podataka. Iz tog razloga bilo je potrebno razviti prostorne upite za tokove podataka. Kako bi se mogli obavljati prostorni upiti u CEP aplikaciji, implementirana je SQL Server baza koja u sebi sadrži prostorne objekte poput gradova, regija i država. Također se uzimaju SQL Server Spatial funkcije da bi se mogli obavljati prostorni upiti nad tokovima. 23

29 Na slici 10 je prikazana struktura programskih paketa koji definiraju razvijenu CEP aplikaciju za obradu prostorno-vremenskih tokova podataka. Na slici 10 može se vidjeti na koji su način paketi međusobno spojeni. Ulazni adapter iz paketa CSV Adapter i izlazni adapter iz paketa WCF Adapter se spajaju s paketom GeospatialQueries u kojem se nalaze svi upiti i komponenta koja spaja adaptere i upite. Rezultati izlaznog toka se prosljeđuju do paketa GeospatialStreamApp gdje se nalazi pogled aplikacije. Tada se podaci izlaznog toka prikazuju na zaslonu ekrana aplikacije. Slika 5.1.Dijagram paketa aplikacije U ovom poglavlju će se detaljno objašnjavati na koji način funkcioniraju upiti nad tokovima i adapteri. Detaljno će se isto tako objašnjavati na koji način su implementirani adapteri i upiti u CEP aplikaciji Adapteri U ovom poglavlju će se detaljno opisati struktura i način na koji djeluju CSV ulazni i WCF izlazni adapter ali prvo će se objasniti općenit način kako adapter funkcionira. 24

30 Općenit način rada adaptera StreamInsight server prima tokove podataka iz nekog izvora. Taj izvor podataka može biti baza podataka, tekstualna datoteka, podaci iz nekog senzora itd. Ti izvori podataka mogu biti aktualni te mogu biti povijesni. StreamInsight DSMS za žive podatke koristi oblikovni obrazac promatrača (eng. observer pattern) a za povijesne podatke oblikovni obrazac brojača (eng. enumerable). Cilj StreamInsight DSMS-a je da na efikasan način ubaci podatke u server te da na efikasan način izbaci obrađene podatke iz servera. Uobičajene metode za ubacivanje podataka u server ne rade na efikasan način za tokove podataka jer tokovi po svom obujmu mogu biti ogromni. Jako bi dugo trebalo vremena da se podaci tokova odjednom svi učitaju u server i nakon toga obrade u serveru te na kraju izvade iz servera. Zbog tog razloga StreamInsight DSMS je uveo ulazne i izlazne adaptere koji postepeno unose podatke tokova u server te ih iznose iz servera. Tokovima podataka se pristupa pomoću metode CepStream<TPayload> koja daje listu događaja nad kojima se provode upiti. Neizostavni dio svake aplikacije koja se bavi tokovima podataka su adapteri (eng.adapter pattern). Da bi bilo moguće izraditi adaptere, potrebno je shvatiti način na koji takvi adapteri rade. Adapteri su neka vrsta transformatora koja dostavlja događaje u StreamInsight server. Ključan čimbenik kod adaptera je način na koji tok podataka teče kroz server. Na slici 11 je prikazan način toka podataka iz ulaznog adaptera prema izlaznom adapteru. Slika pokazuje da slijed podataka od izvora prema upitu do objekta koji prima ulazne događaje je jednosmjeran. Događaji se čitaju s izvora pomoću ulaznog adaptera koji onda ih dostavlja upitu. U upitu događaj prolazi od jednog do drugog operatora koji ih oblikuju na određeni način te nakraju ih dostavlja izlaznom adapteru. Tok podataka izvršne kontrole za primanje i pretvaranje događaja može biti obosmijeran za razliku od toka od izvora prema primatelju ulaznih događaja. Obosmijernost toka je moguća zbog interakcijskih točaka između komponenti. Obosmjernost u ovom slučaju znači da se tok može puniti i prazniti. Interakcijske točke su: READ : je operacija koja služi za čitanje iz nekog određenog izvora podataka 25

31 ENQUEUE : je operacija koja služi za postavljanja događaja pročitanog iz izvora podataka u tok podataka unutar StreamInsight servera DEQUEUE : je operacija koja služi za izvlačenja događaja iz toka podataka u serveru da ga operator WRITE može napisati u neki izlazni izvor podataka WRITE : je operacija koja služi za pisanje u neki određeni izvor podataka Slika 5.2.Pregled interakcijskih točaka unutar StreamInsight servera Za potrebe izgradnje ulaznog i izlaznog adaptera potrebno je implementirati ta četiri operatora. Interakcija između adaptera i StreamInsight servera je definirana stanjem servera (eng. state machine). Stanje servera se jednako odnosi na ulazne i izlazne adaptere. Na slici 11 je prikazano stanje servera i međusobna interakcija između njih. Za pravilnu izradu stanja uređaja za adaptere potrebno je implementirati određene metode koje bi obavljale određene funkcije. Te metode su Start(), Resume(), Dispose(), Enqueue(), Dequeue(), Ready(), Stopped(), StopQuery().[12] Kad se pojedini upit u aplikaciji pokrenuo pomoću Start() metode, pokrenula se Start() metoda za ulazni adapter i za izlazni adapter. Nakon toga se dinamički čitaju podaci iz izvora i u ulaznom adapteru stvaraju događaji. Događaji se onda pomoću Enque() metode ubacuju u tok podataka. Enque() metoda je puna ovisno o definiranom upitu. To znači da će se za pojedini vremenski prozor Enque() biti pun nakon što uzme sve događaje vremenskog prozora. Nakon toga se Enque() prazni pomoću ReleaseEvent() metode koja oslobađa zauzetu memoriju od ulaznih događaja. Nakon što se pomoću upita stvore izlazni događaji, oni dolaze 26

32 do izlaznog adaptera koji izvlači tokove iz servera i postavlja ih negdje. Nakon što je postavio događaje, oslobađa memoriju pomoću ReleaseEvent() metode. Kad je Deque() metoda prazna, može ponovno učitavati izlazne događaje. Slika 5.3.Prikaz stanja servera i njihova međusobna interakcija Važna komponenta adaptera je protokol rukovanja (eng. Handshake) između servera i adaptera koji je uvijek sinkroniziran tako da u bilo kojem trenutku kod izvršenja adapter može provjeriti stanje i reagirati na temelju tog stanja kao što je prikazano na slici 12. Životni ciklus interakcije adaptera sa serverom se sastoji od sljedećih operatora: 27

33 Created: Instanca adaptera počinje interakcijom s StreamInsight serverom kad je upit započeo. Running:Server postavlja adapter u Running stanje i poziva Start() na adapter asinkrono i garantira da će taj poziv napraviti samo jednom. Kad je adapter u Running stanju, adapter može postaviti događaj u tok ili izvući događaj iz toka u serveru. Suspended: Stanje Suspended se postavlja kad server nije u mogućnosti primanja događaja iz izvora podataka u tok servera ili slanja događaja iz toka servera u vanjski izvor. Stopping:U bilo kojem trenutku za vrijeme Running ili Suspended stanja,server može pomaknuti adapter u Stopping stanje kao odgovor prema asinkronom zahtjevu za zaustavljanje upita. Stopped:U bilo kojem trenutku može se pozvati operator Stopped. Prepručljivo je obrisati podatke koje je adapter primio prije postavljanja adaptera u Stopped stanje.[12] CSV ulazni adapter CSV ulazni adapter je implementirana tehnologija unutar aplikacije pomoću koje se ulazni podaci iz izvora pretvaraju u događaje toka podataka. Izvor podataka za CSV adapter su tekstualne datoteke koje se učitavaju i iz kojih se kreiraju događaji. CSV adapter je neovisan proces koji radi samostalno u svojoj dretvi i obavlja svoju zadaću sukladno ugrađenim StreamInsight operatorima adaptera. 28

34 Slika 5.4.UML dijagram razreda ulaznog CSV adaptera Struktura Struktura CSV adaptera temelji se na tri razreda a to su razred za tvornicu (eng.factory pattern) adaptera, razred za konfiguracijske podatke i razred za adapter točkastog oblika događaja. Osnovni razred i temeljni razred ulaznog adaptera je CSVInputFactory koji predstavlja tvornicu ulaznih događaja. CSVInputFactory je oblikovni obrazac tvornice koji predstavlja tvornicu ulaznih događaja toka. Svaka tvornica događaja u StreamInsight DSMS mora imati sučelje tvornice. Tako CSVInputFactory implementira sučelje IInputAdapterFactory<TConfigInfo>. public interface IInputAdapterFactory<TConfigInfo> : IDisposable { InputAdapterBase Create(TConfigInfo configinfo, EventShape eventshape, CepEventType cepeventtype); } Sučelje IInputAdapterFactory ima metodu Create koja stvara događaj toka prema obliku događaja, vrsti događaja i prema konfiguraciji. Unutar te metode se mogu 29

35 nalaziti maksimalno tri implementacije adaptera buduću da postoje tri implementirana oblika događaja u StreamInsight tehnologiji. CSV ulazni adapter sadrži implementaciju metodu Create u kojoj se mogu stvarati točkasti događaji tipa cepeventtype pomoću adaptera za točkaste događaje. CepEventType sadrži u sebi atribute ulaznog izvora podataka na temelju kojeg se stvara događaj sa tim atributima. Za implementaciju IInputAdapterFactory sučelja, razred TConfigInfo je bitan za adapter jer sadrži konfiguracijske podatke o izvoru podatka koje su bitni za pravilan unos podataka u tok podataka. Za CSV adapter konfiguracijski podaci sadrže adresu tekst datoteke izvora podataka, znak koji odvaja atribute izvora unutar tekst datoteke, CTI frekvenciju gdje je napisano koliko vremenskih prozora se odjednom obrađuje i neke ostale informacije. CSV tvornica stvara instancu točkastog adaptera koji implementira apstraktni razred PointInputAdapter koja se zove CSVPointInput. PointInputAdapter nasljeđuje apstraktnu klasu Adapter koja u sebi sadrži metode za manipulaciju toka. Razred Adapter isto tako sadrži u sebi trenutačna stanja adaptera. public abstract class Adapter : IDisposable, IAdapter { protected Adapter(); public AdapterState AdapterState { get; } protected internal virtual void CleanupResources(); public void Dispose(); protected virtual void Dispose(bool disposing); protected internal virtual void OnStopped(); public void Ready(); public abstract void Resume(); public virtual void Stop(); public void Stopped(); } Kôd 5.1 Razred Adapter CSVPointInput nadjačava metode Start, Resume i Dispose te ima metodu ProduceEvents koja uzima podatke iz tekstualne datoteke i stvara od njih 30

36 događaje toka. Prilikom pokretanja metode Start, pokreće se nova dretva koja sadrži metodu ProduceEvents. Dispose metoda oslobađa zauzetu memoriju Način rada CSV adapter radi na način da se prilikom pokretanja metode Start pokreće nova dretva koja sadrži metodu ProduceEvents. ProduceEvents metoda pokreće while petlju koja se prekida u slučajevima da je stanje adaptera Stopping prilikom kojeg se poziva operator Stopped. Operator Stopped poziva se u aplikaciji ako je tekstualna datoteka pročitana do kraja ili ako StreamInsight server više ne može uzimati novu memoriju u sebe. U normalnim okolnostima unutar while petlje se čitaju podaci iz tekst datoteke pomoću StreamReader razreda. Podaci jednog pročitanog retka iz tekstualne datoteke se ubacuju u kreiranu instancu PointEvent tipa. Nakon toga se instanca PointEvent ubacuje u metodu Enque kao ulazni parametar koja postavlja događaj u tok podataka unutar servera WCF izlazni adapter WCF izlazni adapter je tehnologija pomoću koje se obrađeni događaji iz toka unutar StreamInsight servera uzimaju i šalju na određenu URL adresu SOAP (eng.simple Object Acces Protocol) protokolom temeljem Microsoftove WCF tehnologije. WCF adapter je isto tako neovisan proces koji radi samostalno na svojoj dretvi i obavlja svoju zadaću sukladno ugrađenim StreamInsight DSMS operatorima adaptera. U ovom poglavlju će se objasniti WCF i SOAP tehnologija da bi mogao razumjeti način na koji funkcionira WCF izlazni adapter. 31

37 Slika 5.5. UML dijagram razreda izlaznog WCF adaptera WCF i SOAP WCF (eng. Windows Communication Foundation) je sučelje za razvoj servisno orijentiranih aplikacija. Pomoću WCF-a se mogu slati podaci kao asinkrone poruke od jedne krajnje točke servisa prema drugoj. WCF servis može komunicirati koristeći razne protokole poput REST-a (eng. Representational State Transfer) ili SOAP protokola. Glavna namjena WCF-a je da preko krajnjih točaka koje pruža WCF servis, aplikacije mogu komunicirati s WCF servisom i na taj način slati ili primati podatke. Jedan od načina preko kojeg se izvršava komunikacija između aplikacije i WCF servisa je SOAP protokol. SOAP protokol je baziran na XML (eng. EXtensible Markup Language) jeziku i omogućuje komunikaciju između aplikacije i operativnog sustava. SOAP protokol razmjenjuje poruke koje su napisane u XML formatu preko HTTP (eng. HyperText Transfer Protocol) protokola. 32

38 Struktura Struktura WCF adaptera se isto tako temelji na tri razreda koji imaju sličnu svrhu kao i CSV adapter. Osnovni razred izlaznog adaptera je WebOutputFactory koji predstavlja tvornicu izlaznih događaja to jest rezultantnih događaja dobivenih upitom u StreamInsight serveru. WebOutputFactory je oblikovni obrazac kao i CSVInputFactory te implementira sučelje IOutputAdapterFactory<TConfigInfo>. IOutputAdapterFactory sučelje ima istu svrhu kao i IInputAdapterFactory sučelje te može stvoriti isto tako tri implementacije adaptera. public interface IOutputAdapterFactory<TConfigInfo> : IDisposable { OutputAdapterBase Create(TConfigInfo configinfo, EventShape eventshape, CepEventType cepeventtype); } Kao i u IInputAdapterFactory, IOutputAdapterFactory sadrži metodu Create koja uzima kao ulazne parametre konfiguracijske podatke, oblik događaja i tip događaja. Konfiguracijski podaci se nalaze u razredu nazivu WebOutputConfig. WebOutputConfig u sebi sadrži podatke adrese SOAP poruke za razmjenu podataka, URL adresu servisa preko kojeg se razmjenjuju poruke, HTTP metodu preko koje se šalju SOAP poruke i ostale podatke. Metoda WCF tvornice koja implementira sučelje IOutputAdapterFactory stvara instancu točkastog izlaznog adaptera koji implementira apstraktni razred PointOutputAdapter koji se zove WebPointOutput. Kao i PointInputAdapter, PointOutputAdapter implementira apstraktni razred Adapter. WebPointOutput nadjačava iste metode kao i CSVPointInput. Metode WebPointOutput razreda obavljaju slične funkcije kao i nadjačane metode u CSVPointInput samo što WebPointOutput služi za primanje podataka iz StreamInsgiht servera. Prilikom pokretanja nadjačane metode Start, pokreće se nova dretva koja sadrži metodu CosumeEvents koja služi da bi primala događaje iz StreamInsight servera Način rada 33

39 Prije nego se pokrene WCF izlazni adapter, potrebno je rezervirati URL adresu za WCF servis koji bi primao i slao SOAP poruke preko HTTP protokola. Nakon toga može se pokrenuti metoda Start kojom bi se stvorila nova dretva u kojoj bi se pokrenula metoda CosumeEvents. Unutar te metode se nalazi while petlja koja bi se vrtila sve dok stanje adaptera ne bude Stopping i sve dok StreamInsight server imam slobodnu memoriju za događaje. U normalnim okolnostima unutar while petlje se pomoću metode Deque koja prima događaje iz StreamInsight servera primaju trenutačni događaji i postavljaju se kao trenutni događaji tipa PointEvent. Nakon toga se provjerava vrsta događaja i ako je vrsta događaja EventKind.Insert, onda se podaci tog događaja uzimaju za daljnju obradu. Atributi s vrijednostima svakog događaja se postavljaju u SOAP poruku XML formata koja se preko POST metode HTTP protokola šalju WCF servisu na URL adresu koja je dana u konfiguracijskim podacima Upiti Upiti su neizostavni dio obrade tokova podataka. Za razliku od standardnog pogleda na upite kod SUBP-a, upiti u SUTP-u nad tokovima podataka imaju veći značaj jer oblikuju izlazni tok podataka koji se kontinuirano izvodi što je bit cijelog postupka obrade tokova. Nakon što se lokacija izvora podataka dostavi i način dohvata implementira za StreamInsight server, izvedba obrade može se kontinuirano izvoditi nad podacima. Podaci ulaznih događaja ubace se u server koji te događaje obradi pomoću postavljenih upita na serveru koji proizvode obrađene izlazne događaje. Upiti na serveru se pišu u LINQ sučelju gdje je LINQ mehanizam za izražavanje deklarativnih upita nad skupovima podataka za.net programske jezike Upotreba LINQ za upite nad tokovima podataka LINQ (eng. language integrated query) je skup metoda koja proširuje upitne mogućnosti nad skupom podataka u programskom jeziku C#. LINQ je po sintaksi 34

40 jako sličan SQL upitnom jeziku te omogućuje zajedničku upotrebu s.net sučeljem, SQL Server bazom podataka, ADO.NET i XML dokumentima. Neki od osnovnih LINQ operatora su Select, Where, SelectMany, Join, Take, Skip, Concat, OrderBy, Distinct, GroupBy gdje operatori rade određene stvari slično kao i SQL operatori. Razlika između SQL i LINQ je način postavljanja upita gdje s LINQ se postavljaju upiti poput from t in entitet select t.t1 dok SQL postavlja upite poput select t1 from entitet. LINQ operatori su napravljeni na način da obrađuju upite nad kompleksnijom hijerarhijskom strukturom podataka. LINQ je po svojoj strukturi puno fleksibilniji nego SQL.[12] StreamInsight DSMS je za potrebe obrade tokova podataka primijenio LINQ za postavljanje upita nad tokovima podataka. StreamInsight DSMS usvaja LINQ i prilagođava je svojim potrebama obrade upita nad tokovima podataka da obavljaju istu radnju kao i LINQ s običnim podacima. StreamInsight DSMS je za svaki način prikaza toka podataka uzeo standardne LINQ operatore gdje su operatori naslijeđeni i prilagođeni tokovima podataka. Osnovna reprezentacija toka podataka je definirana sa CepStream<TPayload> nad kojim se obrađuju LINQ upiti i oblikuju izlazni tokovi podataka. Osnovni elementi LINQ na temelju kojih se obavljaju upiti su: Projekcija: operacija koja uzima CepStream<T1> tok i pretvara ga u CepStream<T2> gdje je T1 korisni teret ulaznog događaja a T2 korisni teret izlaznog događaja. Projekcija koristi SELECT oznaku iz LINQ-a. Filtriranje: operacija koja je izražena sa WHERE oznakom iz LINQ na temelju kojih se iz toka CepStream<T> vraća izfiltrirani CepStream<T> tokovi podataka. Udruživanje: operacija koja uspoređuje događaje dva ulazna toka na temelju atributa njihovih korisnih tereta. U slučaju preklapanja vremenskih trenutaka i uvjetnih atributa, podaci korisnih tereta ta dva toka se pridružuju te spajaju u jedan izlazni događaj. Oznake s kojima se povezuju podaci su ON... EQUALS... WHERE. Postoje više vrsta spajanja kao unutarnje spajanje, jednako spajanje, prekriženo spajanje, ljevo anti-poluspajanje te spajanje višestrukih tokova. 35

41 Unija: operacija koja kombinira događaje raznih tokova koristeći operaciju UNION iz LINQ-a. Grupiranje: operacija koja grupira događaje po nekim vrijednostima atributa njihovih korisnih tereta u određene skupine da bi se nad tim skupinama mogle obavljate ostale operacije poput agregacija, projekcija itd. Operacije koje se obavljaju nad grupiranim podacima se nazivaju applay branch. Applay branch su zatvorene unutar grupe te nije moguće udruživanje grupiranih tokova sa tokovima izvan grupiranja. Isto tako može se grupirati projekcija Vremenski upiti nad tokovima podataka Vremenski upiti nad tokovima podataka su upiti koji baziraju svoje operatore na temelju vremena. StreamInsight tehnologija omogućuje upite koji mogu obavljati agregacije bazirane na vremenu. Mogu se razvijat korisnički agregati i korisnički operatori koji se koriste u sklopu vremenskih upita. Isto tako StreamInsight DSMS omogućava modifikaciju vremenskih instanci događaja u tokovima podataka Prozori događaja Prozori događaja predstavljaju neki skup događaja unutar nekog vremenskog intervala. Prozor sadrži podatke događaja kroz vrijeme i omogućuje izvedbu raznih operacija nad događajima unutar tog prozora. Operacije prozora pretvaraju tokove događaja u tokove prozora koji su predstavljeni s CepWindowStream<T> tokovima koja može služiti kao osnova za operacije nad skupovima. Svaki prozor kroz vrijeme predstavlja skup događaja. Prozor može biti utemeljen na vremenu ili utemeljen na broju. Svaki tip prozora na drugačiji način raspoređuje događaje unutar prozora.tipovi prozora su: Poskočni prozor (eng. Hopping window) Prozori bazirani na trenutačnom snimku (eng. Snapshot window) Prozori bazirani na broju (eng. Count window) 36

42 Vrste prozora Poskočni prozori Poskočni prozor definira podskup događaja koji padaju unutar nekog vremenskog perioda i preko kojeg se mogu izvoditi neki izračuni bazirani na skupovima poput agregacije. Takav prozor se razlikuje od prozora baziranog na trenutačnom snimku i brojevno baziranog prozora po tome što dijeli vrijeme na jednake vremenske intervale. Ti vremenski intervali se mogu preklapati te imati prazninu između dva susjedna prozora. Definiraju se veličinom skoka H i veličinom prozora S. Ako je veličina skoka i veličina prozora jednaka kao na slici 15 onda se takvi prozori zovu klizeći prozori (eng. tumbling windows). Slika 5.6. Poskočni prozori s točkastim događajima U slučaju da S i H nisu isti, imat ćemo ili preklapanje prozora u slučaju da je veličina S>H ili prazninu između prozora u slučaju da je veličina S<H. Na slici 15 imamo primjer kada je H<S. Takvi prozori se zovu poskočni prozori.[12] Prozori bazirani na trenutačnom snimku Prozori bazirani na trenutačnom snimku definiraju podskup događaja koji se nalaze unutar nekog vremenskog intervala i preko kojeg se mogu izvoditi računanja. Prozor dijeli vrijeme duž početnog vremenskog trenutka i završnog vremenskog trenutka događaja tako da su takvi prozori dinamični i bazirani na događajima. Prozori bazirani na trenutačnom snimku su definirani početnim vremenima i završnim vremenima događaja gdje se veličina i vremenski period prozora definira događajima u toku. Na slici 16. može se vidjeti način na koji se prozori definiraju. Za svaku promjenu broja događaja u određenom vremenskom trenutku u kojem mora bit minimalno jedan događaj, stvara se novi prozor. [12] 37

43 Slika 5.7. Snimke prozora s proširenim intervalima za točkaste događaje Prozori bazirani na broju Prozori bazirani na broju definiraju skup događaja koji se nalaze unutar nekog vremenskog perioda i preko kojeg se mogu izvoditi računanja nad skupovima podataka poput agregacije. Brojevno bazirani prozori nemaju fiksnu veličinu vremenskog intervala. Oni su definirani brojem događaja koje oni sadrže. Taj način je prikladan za tokove događaja koji imaju neregularnu frekvenciju pojavljivanja događaja. Na slici 17. je prikazan primjer prozora baziranog na broju koji uzima dva događaja za svaki prozor gdje je vremenski interval varijabilan. [12] Slika 5.8.Prozori bazirani na broju Prozor baziran na broju može biti korišten jedino s korisnički definiranim agregatima i korisnički definiranim operatorima ali ne i s ugrađenim agregatima i TopK. 38

44 Operacije izvedive nad prozorima Operacije nad skupovima koje se izvode nad tokovima podataka pretvaraju prozore tokova u događaje tokova CepStream<T>. Operacije koje se izvode nad prozorima tokovima su: Agregacije TopK Korisnički definirane agregacije i operatori Unutar tog skupa operacija postoje dvije grupe operacija. Prva grupa operacija koji se temelji na agregacijama daje skalarni rezultat na temelju ulaznih događaja. Druga grupa operacija daje 0...n izlaznih događaja na temelju ulaznih događaja. Primjeri prve grupe operacija su sum, avg, count te korisnički definirane agregacije. Te operacije su primijenjive nad prozorima tokova u kojem jedan rezultantni događaj odgovara svakom pojedinom ulaznom prozoru. Korisni teret tog događaja je skalarni rezultat obavljene operacije iz prve grupe. Primjeri druge grupe operacija su TopK i korisnički definirani operatori. Operacije su definirane nad tokovima prozora te proizvode 0 ili više događaja po prozoru kao rezultat obavljene operacije iz druge grupe. Prilikom obavljanja operacija nad tokovima kad događaj iz toka prozora se prebaci operatoru i kad događaj iz operatora se prebaci tok događaja, vremenski trenuci događaja se mogu mijenjati. Transformacije vremenskih trenutaka se zovu ulazne politike i izlazne politike Agregacije Agregacije su operacije nad skupovima koje izvode neka računanja nad skupom podataka. Ti podskupovi su specificirani kao prozori događaja ili grupirani događaji kroz vrijeme. Agregacije se mogu primijenjivati samo na prozore te se ne mogu primijenjivati na obične događaje tokova. U StreamInsight DSMS agregacije se mogu primijenjivati samo na CepWIndowStream<T> tokove podataka. Rezultat agregacije je skalarna vrijednost koja se prikazuje kao korisni teret. Agregacije nad prozorima se računaju inkrementalno a to znači da se rezultat agregacije mijenja s dolaskom i odlaskom događaja iz toka podataka. Vrste agregacija koje StreamInsight DSMS podržava su : 39

45 Avg: daje prosjek određenih atributa korisnog tereta unutar prozora Sum: sumira vrijednosti atributa korisnog tereta unutar prozora, null vrijednost se gleda kao 0 Min: daje minimalnu vrijednost atributa korisnog tereta unutar prozora, ne obrađuje null vrijednosti Max: daje maksimalnu vrijednost atributa korisnog tereta unutar prozora, ne obrađuje null vrijednosti Count: broji događaje unutar pojedinog prozora Count operacija u odnosu na avg, sum, min, max gleda cijele događaje dok druge operacije gledaju atribute korisnog tereta pojedinog događaja. [12] TopK TopK je operacija koja gleda određene atribute korisnog tereta pojedinog događaja unutar prozora te vraća n najvećih ili najmanjih vrijednosti ovisno o tome kako je postavljen upit. Na slici 18 može se vidjeti način na koji se rangiraju događaji ovisno o vrijednostima atributa pojedinog događaja. Slika 18 prikazuje prozore gdje je veličina prozora veća od skoka. TopK je vremensko osjetljiv operator a to znači da će životni tijek izlaznih događaja bit postavljen prema izlaznoj politici prozora. Isto tako vrijedi kad postoje n atributa s jednakim vrijednostima da takvi događaji dobivaju istu k poziciju. Slika 5.9.TopK operator nad poskočnim prozorom 40

46 Upit TopK u napravljenoj aplikaciji izvodi se nad točkastim događajima. Sa svrhom da bi se mogli rangirati podaci, potrebno je obaviti dodavanje vremenskog intervala gdje je upitu postavljeno na 10 minuta. Na slici 18 je prikazan način na koji se točkasti podaci uzimaju iz određenog prozora te izvršava rangiranje. Unutar svakog prozora se izvršava rangiranje 3 događaja s najvećim brzinama. Kao izlazni rezultat je napravljena nova klasa koja ima atribute rank, identifikaciju vozila te državu vozila. [12] Korisnički definirani agregati i operatori Korisnički definirane agregacije se skraćeno nazivaju UDA (eng. User Defined Aggregate) a korisnički definirani operatori se nazivaju UDO (eng. User Defined Operator). One služe da pojedini korisnik definira agregacije koje mogu biti kompleksnije od postojećih agregacija te da budu prilagođene nekoj posebnoj svrsi. Isto to vrijedi i za korisničko definirane operatore. U aplikaciji je potrebno definirati klasu za korisnički definirani agregat. Klasa korisnički definiranog agregata mora implementirati CepAggregate<TinputPayload,TOutputPayload> sučelje koje sadrži u sebi ulazni korisni teret te izlazni korisni teret primitivnog tipa. Sučelje CepAggregate sadrži metodu GenerateOutput() koja se mora implementirati Modifikacija vremenskog trenutka StreamInsight DSMS sadrži operatore koji mijenjaju vremenske trenutke događaja. Postoje više operatora u StreamInsight DSMS-u koje mijenjaju vremenske trenutke a to su: ShiftEventTime() operator mijenja početno vrijeme svakog događaja u toku prema specificiranom izrazu. Vremenski operator vrijedi samo za početno vrijeme te ne vrijedi za krajnje vrijeme niti za korisni teret događaja. Promijenjeno vrijeme može ići u budućnost i u prošlost. AlterEventDuration() operator mijenja životni tijek događaja. Definira se vremenski interval tijekom kojeg je događaj važeći. Vremenski interval se nadodaje na početni trenutak događaja. 41

47 AlterEventLifeTime() operator kombinira operatore ShiftEventTIme() i AlterEventDuration() funkcije. Prvi parametar za AlterEventLifeTime() funkciju definira početni vremenski trenutak događaja, dok drugi parametar definira vremenski interval događaja. Vrijeme mora biti specificirano kao UTC vrijeme. ToPointEventStream() operator je funkcija koja pretvara rubne i intervalne događaje u točkaste događaje. Za vremenski trenutak točkastog događaja se uzima jedino početni vremenski trenutak intervalnog/rubnog događaja. ClipEventDuration() operator uzima dva toka kao parametre i mijenja životni tijek svakog pojedinog događaja u prvom toku prema početnom vremenu sljedećeg odgovarajućeg događaja u drugom toku. Na slici 13 je prikazan način na koji funkcija ClipEventDuration() djeluje. Slika prikazuje tok 1 i tok 2 gdje je definirano da se životni tijek događaja toka1 mijenja na životni tijek toka2 u slučaju da se vrijeme događaja toka 1i toka 2 preklapaju i da im se identifikacija poklapa. Prema slici može se vidjeti da je događaj A iz toka 1 promijenio životni tijek jednak onom događaju A iz toka 2 budući da im se vremena preklapaju. [12] Slika 5.10.ClipEventDuration Korisnički definirane funkcije Korisničke definirane funkcije se zovu UDF (eng.user Defined Function) te se mogu definirati tako da su najprikladnije korisničkim potrebama te mogu biti kompleksnije od ugrađenih funkcija StreamInsight DSMS-a. Mogu biti korištene za filtriranje predikata, za projekcije, za pridruživanje predikata itd. Ali u tom slučaju parametri i povratne vrijednosti moraju biti primitivne vrijednosti tipa int,string,double u takvim funkcijama. 42

48 Korisnički definirane agregacije Korisnički definirane agregacije se skraćeno nazivaju UDA. One služe da pojedini korisnik definira agregacije koje mogu biti kompleksnije od postojećih agregacija te da budu prilagođene nekoj posebnoj svrsi. Razred korisnički definiranog agregata mora implementirati apstraktni razred CepAggregate<TinputPayload,TOutputPayload> koje sadrži u sebi ulazni korisni teret te izlazni korisni teret primitivnog tipa. Tip ToutputPayload mora biti primitivnog tipa poput int,string,double. Razred CepAggregate sadrži metodu GenerateOutput() koja se mora implementirati. U slučaju da se trebaju implementirati neki statički podaci koji se ne nalaze u izvornim podacima toka, može se implementirati konfiguracijski razred. Jedini uvjet za konfiguracijski razred je da on mora moći biti serijaliziran. Primjer kostura strukture koja se mora implementirati za UDA može se vidjeti u programskom kodu ispod. public abstract class CepAggregate<TInput, TOutput> : CepModule<TInput, TOutput> { protected CepAggregate(); public abstract TOutput GenerateOutput(IEnumerable<TInput> payloads); } public class Aggregate: CepAggregate<TInput, TOutput> { UDAConfig _udaconfig; public Aggregate (UDAConfig udaconfig) { _udaconfig = udaconfig; } public override Toutput GenerateOutput(IEnumerable<TInput> payloads) {... } } Kôd 5.2 Apstraktni razred CepAggregate i razred Aggregate koji nasljeđuje CepAggregate razred 43

49 Korisnički definirani operatori Korisnički definirani operator UDO (eng.user Defined Operator) je operator koji uzima broj događaja toka iz nekog vremenskog intervala. Taj broj događaja na neki korisničko definirani način ih preoblikuje te vrati isti broj preoblikovanih događaja. Korisnički definirani operatori su jako dobro rješenje kad se neki upiti ne mogu obaviti samo s osnovnim LINQ operacijama. Jedan takav primjer bi bio kad bi htjeli obaviti neki prostorni upit iz Entity Frameworka u LINQ za tok podataka. Takvo nešto ne bi bilo moguće jer LINQ dodatak od StreamInsight DSMS-a za tokove podataka to ne podržava. U tom slučaju, upotreba UDO operatora je nužna. S ciljem da se korisničko definirani operator ponaša determinističko, StreamInsight DSMS omogućuje sljedeće čimbenike : Korisničko definirani operator prima događaje raspoređene na temelju sinkroniziranog vremena i intervalni događaji nisu podržani. Jedino INSERT događaj se propušta kroz korisničko definirani operator. Korisničko definirani operator toka može biti deaktiviran od strane servera ovisno o tome dali server dopušta takav operator. Svaki INSERT događaj uzorkuje pozivanje metode ProcessEvent s kojom dolazi pozivanje metode NextCti i IsEmpty atributa. Korisnički definirani operator se dijeli na vremensko osjetljive i vremensko neosjetljive. U onim osjetljivim, uz promjenu tereta nekog događaja, može se izmijeniti i vremenska komponenta događaja. Radi implementacije korisnički napravljenih operatora, potrebno je implementirati određenu strukturu koja je dana od strane StreamInsight tehnologije da bi korisnički izrađeni operatori mogli se upotrebljavati. Da bi mogli implementirati operator, prvo moramo napraviti klasu koja će naslijediti apstraktni razred CepOperator. Razred CepOperator obavezno mora implementirati metodu GenerateOutput. Unutar metode GenerateOutput implementiramo na koji način želimo obraditi podatke događaja. Nakon toga moramo izraditi još jednu klasu, ali ovaj put statičnu klasu koja sadrži statičnu metodu s nazivom operatora koji će se koristiti unutar upita i sa anotacijom CepUserDefinedOperator u kojoj definiramo 44

50 tip klase operatora. Isto kao i za UDA, mogu se implementirati konfiguracijski podaci za operator koji se ne nalaze u izvoru podataka od kojih se kreiraju događaji. Primjer kostura strukture koda koji je potrebno implementirati za UDO može se vidjeti ispod. public abstract class CepOperator<TInput, TOutput> : CepModule<TInput, TOutput> { protected CepOperator(); public abstract IEnumerable<TOutput> GenerateOutput(IEnumerable<TInput> payloads); } public class Operator: CepOperator<TInput, TOutput> { UDOConfig _udoconfig; public Operator (UDOConfig udoconfig) { _udoconfig = udoconfig; } public override IEnumerable<TOutput> GenerateOutput(IEnumerable<TInput> payloads) {... } } public static class UdoExtensionMethods { [CepUserDefinedOperator(typeof(Operator))] public static TOutput UDOperator(this CepWindow< TInput > window) { throw CepUtility.DoNotCall(); } } Kôd 5.3 Apstraktni razred CepOperator, razred Operator koji nasljeđuje CepOperator i statički razred UdoExtensionMethods Prostorno vremenski upiti nad tokovima podataka Prostorno-vremenski upiti predstavljaju obradu tokova podataka gdje se uzima u obzir i prostorna komponenta uz vremensku komponentu toka. Implementacija prostorne komponente predstavljaju proširenje StreamInsight DSMS sustava na prostorno-vremenske upite. Takav pristup omogućuje raznovrsniju paletu upita i prostorno-vremensku manipulaciju nad tokovima podataka. Bit takvih upita je omogućavanje prostorne agregacije događaja uz ugrađene vremenske agregacije 45

51 događaja u StreamInsight DSMS sustavu. Pomoću takvog načina se mogu definirati prostorni prozori uz postojeće vremenske prozore. Da bi prostorno-vremenske upite nad tokovima bilo moguće izvršiti, potrebno je koristiti postojeće prostorne upite koji se upotrebljavaju za relacijske baze podataka. Uz pomoć takvih upita je moguće izvoditi prostornu manipulaciju nad događajima koji imaju prostornu instancu. U ovom radu se uz StreamInsight tehnologiju koristila SQL Server Spatial tehnologija pomoću koje su prostorni upiti nad prostorno-vremenskim tokovima bili omogućeni. Da bi prostorni upiti nad tokovima bili efikasni i upotrebljivi, potrebno je imati prostornu bazu podataka stalnih prostornih objekata nad kojom bi se postavljali upiti za događaje toka. Isto tako je potrebno implementirati prostorno-vremenske agregacije i prostornovremenski operatore da bi mogli se izvoditi nad tokovima podatka. Iz tog razloga u StreamInsight tehnologiji postoji mogućnost kreiranja korisničkih agregacija, funkcija i operatora. Implementacijom upita u aplikaciji za obradu prostorno-vremenskog prozora fokus se držao na prostorno vremenske mogućnosti upita nad tokovima. Sa tom idejom su i implementirani upiti nad tokovima u aplikaciji. Osim upita su implementirani i korisnički operatori, korisnički agregati kao i korisnički definirane funkcije. Svrha korisničkih operatora,agegata i funkcija je da prošire mogućnosti obrade prostorno-vremenskih tokova tako da usklade se mogućnosti istodobne manipulacije nad prostorno-vremenskim tokovima podataka. Iz tog razloga se implementirani neki operatori i agregacije koji se koriste u prostorno vremenskoj obradi tokova podataka Implementacija prostorno-vremenskih tokova podataka Radi dobivanja toka podataka, potrebno je prvo imati izvor podataka pomoću kojeg bi se napravio tok podataka. Taj izvor podataka ne mora nužno biti samo jedan izvor, ali u sklopu ovog rada napravljen je uređeni izvor podataka sa već uređenom strukturom događaja koja je implementirana u aplikaciji. Izvor podataka koji se koristi za izradu tokova može se vidjeti na slici 20. Prema slici može se primijetiti da su podaci strukturirani na način da više podataka ima istu vremensku instancu ali različitu prostornu instancu. Takvom strukturom je omogućeno da 46

52 svaki događaj predstavlja jedan objekt u stvarnom svijetu. Da je nekim slučajem struktura podataka postavila se na način da svaki red ima jednu vremensku instancu i više prostornih instanci nekih objekata, bilo bi kompliciranije izvoditi kreiranje događaja u sustavu tokova podataka. U sklopu rada, podaci koji se koriste za izradu prostorno-vremenskog toka predstavljaju podatke o automobilima u određenom prostorno-vremenskom trenutku dobivenog preko GPS-a. Struktura ulaznog događaja je napravljena kao SpatialCarEvent razred. Tip događaja koji se ubacuje u StreamInsight server točkastog je tipa jer današnji izvori podataka koji proizvode podatke prostorno-vremenskog događaja poput GPS-a, proizvode ih kao točkaste događaje. Slika 5.11.Prikaz ulaznog izvora podataka Unutar SpatialCarEvent razreda, vremenska instanca nije implementirana jer SpatialCarEvent razred predstavlja teret ubačenog događaja a vremenska instanca predstavlja vrijeme događaja unutar StreamInsight servera. Iako se vremenska i prostorna instanca nalaze na različitim mjestima unutar StreamInsight servera, oni u teoretskom smislu SUTP-a predstavljaju tip intime. Intime tip događaja je referenca prostorno-vremenskog elementa toka podataka. 47

53 public class SpatialCarEvent { public double latitude { get; set; } public double longitude { get; set; } public double height { get; set; } public string id { get; set; } public string carid { get; set; } public int speed { get; set; } } Kôd 5.4 Razred SpatialCarEvent Drugi tip događaja koji se koji se upotrebljava unutar SUTP-a naziva se pokretni objekt (eng.moving object). Tip pokretnog objekta je opisan linearnom funkcijom kretanja točkastog pokretnog objekta duž x i y osi unutar određenog vremenskog intervala. Vrijednost tipa pokretnog objekta je strukturirana kao skup točkastih vremenskih instanci koji sadrže koeficijente kretanja x0,y0,x1,y1 koji su dobiveni linearnom jednađbom. Struktura događaja pokretnog objekta je implementirana kao razred MovingCarEvent koji sadrži sve opisne podatke objekta kao i SpatialCarEvent uz atribut movingobjects koji predstavlja vrijednosti pokretnog objekta u string tipu. Struktura unutar movingobjects je definirana kao skup točkastih događaja koji su strukturirani kao format fx0 fy0,fx1 fy1,t0 t1,x y public class MovingCarEvent { public string movingobjects { get; set; } public double height { get; set; } public string id { get; set; } public string carid { get; set; } public int speed { get; set; } } Kôd 5.5 Razred MovinglCarEvent Osim razreda koji definira intime i moving object tip događaja, napravljen je razred TrajectoryCarEvent koji služi kao izlazni tip događaja u kojem se pokazuje trajektorijaa kretanja pokretnog objekta u određenom vremenskom intervalu. public class TrajectoryCarEvent { public string trajectory { get; set; } public double height { get; set; } public string id { get; set; } public string carid { get; set; } public int speed { get; set; } } Kôd 5.6 Razred TrajectoryCarEvent 48

54 Implementacija SQL Server baze prostornih objekata Prostorno-vremenski upiti nad tokovima podataka za neke prostorne upite moraju imati podatke o prostornim objektima. Prilikom upita o presjeku događaja s nekim prostornim objektima, potrebno je imati informacije o tim prostornim objektima. Iz tog razloga je vrlo korisno imati bazu prostornih objekata za prostorne upite nad tokovima podataka. U ovom radu takva baza prostornih objekata je SQL Server baza podataka. U njoj su smješteni prostorni podaci svih država i gradova na svijetu kao i Austrijskih regija u definiranom geoprostornom datumu WGS84. Prostorni upiti nad prostorno-vremenskim događajima mogli bi se izvršavati i bez prostorne baze podataka, ali bi u tom slučaju upiti bili ograničeni na samo korisniči unesene prostorne objekte. Prostorna baza podataka omogućava raznovrsnije upite poput najbližeg susjeda i presjeka događaja s određenim prostornim područjem koji se nalazi u bazi podataka Korisnički definirane funkcije za prostorno vremenske upita Korisničke definirane funkcije su obične funkcije iz C# programskog jezika koji se koriste za uobičajene zadatke u razvoju aplikacije. Mogu se isto tako iskorisiti za prostorno-vremenske upite kod filtriranja i projekcije predikata. Najprikladnije ih je korisiti za prostorno filitriranje prostorno-vremenskih događaja nekog toka podataka gdje može se utvrditi prostorna relacija događaja s nekim prostornim objektom. Mogu se iskoristiti za projekciju rezultata na način da se kao rezultat prikaže prostorno područje u kojem se događaj nalazi. Isto tako može se napraviti funkcija za najbližeg susjeda. Unutar aplikacije su implementirane funkcije za presjek s prostornim objektom iz baze podataka i najbližeg susjeda Korisnički definirana funkcija za presjek događaja s poligonom Korisnički definirana funkcija za presjek događaja s poligonom je funkcija koja uzima pojedini događaj i na temelju njegove prostorne instance određuje s kojim se poligonom siječe. Da bi se moglo utvrditi s kojim se poligonom siječe, potrebno je obaviti prostorni upit s prostornom bazom objekata koja se nalazi unutar SQL Servera. U aplikaciji je implementirana funkcija koja određuje s kojom se državom i regijom određeni događaj siječe. 49

55 Da bi se moglo pristupiti prostornim objektima u bazi podataka, korištena je tehnologija Entity Framework koja služi za preslikavanje relacijskog modela u objektni model podataka. Na temelju Entity Frameworka i LINQ-a određeni su prostorni objekti koji se sijeku s prostorno-vremenskim događajima toka Korisnički definirana funkcija za pronalaženje najbližeg susjeda događaja Korisnički definirana funkcija za pronalaženje najbližeg susjeda događaja je funkcija koja računa udaljenosti svakog prostornog objekta iz baze s trenutnim događajem. Nakon toga se rasporede udaljenosti objekata iz baze od najmanje do najveće. Onaj prostorni objekt s kojim je događaj u najmanjoj udaljenosti je najbliži objekt. Unutar aplikacije, funkcija za određivanje najbližeg objekta je implementirana kao procedura u SQL Server bazi podataka. Na temelju Enity Framework tehnologije ona se na jednostavan način pozove iz SQL Server baze podataka da bi izbacila podatke o najbližem susjedu. U aplikaciji najbliži susjed može biti bilo koji grad na svijetu Korisnički definirane agregacije za prostorno vremenske upite Korisnički definirane agregacije su korisne za grupiranje prostrornih događaja u novi oblik. Primjerice za povezivanje prostornih događaja iz nekog vremenskog prozora u niz linija. Korisnički definirane agregacije su najkorisnije kad trebamo prostorno-vremenski grupirati događaje u tip pokretnih objekata i kad treba određivati trajektorijae objekata. Važno je napomenuti da kod prostornovremenske agregacije, događaji za grupiranje se unutar prikupljaju unutar vremenskog intervala. Uz pomoć agregata u aplikaciji je implementiran agregat za kreiranje pokretnih objekata na temelju intime događaja Korisnički definirani agregat za kreiranje pokretnih objekata na temelju intime događaja Agregat za kreiranje pokretnih objekata je UDA agregat StreamInsight tehnologije. UDA omogućuje implementaciju operacije koja prostorno-vremenske intime događaje unutar određenog vremenskog intervala pretvara u događaje pokretnih objekata. Budući da je struktura tipa pokretnog objekta napravljena kao fx0 fy0,fx1 fy1,t0 t1,x y potrebno je izračunati koeficijente fx0 fy0,fx1 fy1 50

56 koji služe kao opis pokretnog objekta. Koeficijenti fx0 fy0,fx1 fy1 se računaju prema formulama na slici 21. Slika 5.12.Funkcije za izračunavanje koeficjenata pokretnog objekta Isto tako, može se primijetiti iz formule da je potrebno određivati vrijednost prikladne vremenske instance. Iz tog razloga je u konfiguracijskim podacima postavljen atribut vremenske instance prvog događaja iz izvora podataka. To je napravljeno da bi se dobila relativna vremenska instanca jer bi apsolutna vremenska instanca bila računata od Kristovog rođenja te bi takva vrijednost instance bila prevelika. Algoritam pseudokoda izvedbe UDA agregata je napisana na sljedeći način: Algoritam Moving(IP) ulaz: skup prostorno-vremenskih referenci tipa ipoint izlaz: pokretni objekt mo tipa mpoint metoda: mo:=null for each ipi Î IP if mo=æ then fun.x0=ip.spatial.x,fun.xl=0,fun(funkcija kretanja) fun.y0=ip.spatial.y,fun.yl=0,tp(vremenski period) tp.start=ip.temporal tp.end=ip.temporal else up=mo.units.last ipl=up.endpoint fun.x0=(-ip.temporal)*(ipl.spatial.x-ip.spatial.x)/ (ipl.temporal- ip.temporal)+ipl.spatial.x fun.x1=(ipl.spatial.x-ip.spatial.x)/(ipl.temporal-ip.temporal) 51

57 fun.y0=(-ip.temporal)*(ipl.spatial.y-ip.spatial.y)/ (ipl.temporal- ip.temporal)+ipl.spatial.y fun.y1=(ipl.spatial.y-ip.spatial.y)/(ipl.temporal-ip.temporal) if fun=up.function then up.timeperiod.end=up.temporal return mo else tp.start=ipl.temporal tp.end=ip.temporal end if end if kreiraj novi upnew upnew.timeperiod=tp upnew.function=fun mo.add(upnew) mo:=add(mo,ip) end for return mo end Moving Pseudokôd 5.1 Izvedba UDA agregata Moving Iz tog opisa pseudokoda se može vidjeti način po kojemu UDA agregat funkcionira i na koji način obrađuje ulazne intime događaje Korisnički definirani operatori za prostorno vremenske upite UDO je jako fleksibilan način za upite jer pruža mogućnost na koji način definirati izlazne prostorno vremenske vrijednosti za pojedini događaj. Tehnologija StreamInsgiht-a omogućuje izradu svih vrsta operacija za prostorno-vremensku obradu. Operatori za obradu prostorno-vremenskih tokova u teoretskom smislu mogu se podijeliti na operacije projekcije u vremensku domenu, operacije interakcije s vrijednostima iz vremenske domene, operacije koje predstavljaju brzinu promjene pokretnih objekata, operacije dobivene mehanizmom vremenskog podizanja i operacije udaljenosti [10]. Unutar aplikacije su implementirane operacije udaljenosti, operacije koje predstavljaju brzinu promjene pokretnih objekata, operacije interakcije s vrijednostima iz vremenske domene i operacije projekcije u vremensku domenu. Prilikom implementacije kompleksnijih operacija, UDO razredi unutar svojih metoda mogu koristiti UDF metode. Velika prednost UDO-a je leži u činjenici da UDO može izvrtiti događaje i obaviti željenu radnju u jednostavnoj for petlji koja je 52

58 brža od LINQ izvođenja upita. Na taj način, određeno filtriranje i grupiranje može se brže obaviti. Isto tako, UDO načinom se događaji toka dobiveni iz jednog vremenskog prozora mogu obrađivati pararelno i na taj način ubrzati proces upita. Kod velike količine podataka događaja i kompleksnih prostornih upita koji se obavljaju nad velikom bazom prostornih objekata, pararelni način je jedini izlaz za ubrzanje postupka obrade tokova Korisnički definirani operator za dobivanje prostornog objekta koji je događaj presjekao U aplikaciji je implementiran operator koji provjerava prostorni objekt iz baze podataka koji siječe događaj toka. Takav operator predstavlja operaciju projekcije u vremensku domenu. Korisnički definirani operator u aplikaciji je implementiran kao LINQ upit u kojem se provjerava država ili regija u bazi podataka koja siječe intime događaj. Operator za dobivanje poligona koji je događaj presjekao opisan je pseudokodom RegionIntersection. Algoritam RegionIntersection(ip) ulaz: točkasti objekt tipa ipoint izlaz: regija reg koja se siječe s točkastim objektom ipoint metoda: spoji se na bazu podataka i dohvati skup regija REG={reg1,reg2,..,regn} iz baze for each regi Î REG if regi siječe ip return regi end if end for end RegionIntersection Pseudokôd 5.2 Izvedba metode RegionIntersection Unutar tog pseudokoda je opisan princip rada tog operatora i temeljni način po kojem taj operator funkcionira. 53

59 Korisnički definirani operator za pronalaženje najbližeg susjeda događaja Implementirani operator unutar aplikacije za najbližeg susjeda pronalazi najbliži grad trenutnom događaju toka podatka. Operator najbližeg susjeda predstavlja operaciju udaljenosti. U korisničkom operatoru najbliži grad se dobiva preko LINQ upita nad prostornim objektima u bazi podataka SQL Servera za određeni trenutni događaj toka podataka. Za operator najbližeg susjeda napisan je pseudokod NereastNeighbor koji opisuje način na koji operator djeluje. Algoritam NereastNeighbor(ip) ulaz: točkasti objekt tipa ipoint izlaz: najbližu točkastu lokaciju loc od ip lokacije metoda: spoji se na bazu podataka i dohvati skup lokacija LOC={loc1,loc2,..,locn} iz baze D=null, D je skup svih udaljenosti lokacija od ipoint događaja for each loci Î LOC di.distance=distance(loci,ip) di.loc=loci D.add(di) end for D. sortiraj uzlazno Uzmi dmin iz D return dmin.loc end NereastNeighbor Pseudokôd 5.3 Izvedba metode za određivanje najbližeg susjeda Korisnički definirani operator za implementaciju at operatora za obradu nad pokretnim objektima Operator at je korisnički definirani operator koji za svaki pokretni objekt računa presjek sa zadanim geometrijskim objektom što u slučaju napravljene aplikacije znači poligonom ili linijom. Razlika između operacije at i operacije intersect je što intersect računa prostorni presjek dva geometrijska objekta a at operacije računa prostorno-vremenski presjek dva objekta. Iz tog razloga operacija at spada u operacije interakcije s vremenskom domenom. Operacija at je implementirana tako da za svaki pokretni objekt između događaja pokretnog objekta računa se geometrijska linija. Za tu geometrijsku liniju znaju se koordinate i vremena početne i krajnje točke. Zatim se provjerava dali ta linija siječe zadani geometrijski objekt. U slučaju da siječe geometrijski objekt, izračunava se vremenska i prostorna 54

60 instanca presjeka i na temelju tih podataka se računaju novi koeficijenti pokretnog objekta. Tako se dobiju reducirani podaci pokretnog objekta u slučaju da postoji presjek pokretnog objekta i danog geometrijskog objekta. Zadani geometrijski objekt kao i početna vremenska instanca toka su postavljeni u konfiguraciji koja se ubacuje neovisno o podacima izvora koji se pretvaraju u događaje.algoritam pseudokoda za implementaciju at operatora je sljedeći: Algoritam At(mp,poligon) ulaz: pokretni točkasti objekt tipa mp(moving point),statički prostorni objekt tipa geometry izlaz: mpr pokretni točkasti objekt tipa mpoint reduciran kad poprima vrijednosti ulazne geometrije metoda: neka je mp={ up1,up2,...,upn } pokretni točkasti objekt takav da je lista <up1,up2,...,upn> uređena po vremenskim intervalima neka je mpr:= Æ for each upi Î mp do line:=createline(up1) if intersects(line,poligon) pr=intersection(line,poligon) if presjek projekcije line i poligon pr(point reduced) je točka then vremenski trenutak t kada se presjeca projekcija line sa poligon je up1.p.start else izračunaj vremenski trenutak t kada se presjeca line s poligon end if linearna funkcija Mp jedinice upr predstavlja točku presjeka pr upri.p.start:=t Ù upri.p.end:=t upri.p.lc := true Ù upri.p.rc:=true else if pr je tipa line, tj.presjek projekcije line i poligon je linija then nađi početnu p1 i krajnju p2 točku presjeka pr nađi trenutke t1 i t2 kada točke p1 i p2 presjecaju jedinicu upi izračunaj linearnu funkciju Mp između dvije točke p1 i p2 upri.p.start := t1 upri.p.end := t2 upri.p.lc := true Ù upri.p.rc := true upri.mp:= Mp upri.p := p else if pr je tipa multipoint ili multiline, tj. presjek projekcije l i g je skup točaka ili skup linija then for each element (geometriju) pri skupa pr, tj. pri Î pr do kreiraj jedinicu slojevite reprezentacije upri na način opisan iznad, ovisno od toga da li je pri točka ili linija 55

61 end for end if end for return mpr end At Pseudokôd 5.4 Izvedba At operatora Unutar tog pesudokoda može se vidjeti osnovni princip po kojemu algoritam za at operator funkcionira Korisnički definirani operator za implementaciju trajectory operatora za obradu nad pokretnim objektima Operator trajectory je korisnički definirani operator koji pretvara pokretne objekte u povezane linije koje čine trajektorijau kretanja objekta. Na taj način je dobivena operacija koja prati brzinu promjene pokretnih objekata. Pomoću te operacije možemo dobiti vizualni prikaz puta određenog objekta prilikom obrade prostornovremenskih tokova podataka. Operator je implementiran tako da se od komponenti pokretnog objekta rade geometrijske linije koje se onda spajaju. Spojene linije poslije se mogu vizualno prikazati kao LINESTRING geometrijski tip podataka. Kao i za operator At i agregat Moving, implementiran je inopisan pseudokod za Trajectory operator. Pseudokod operatora Trajectory je sljedeći: Algoritam Trajectory(mp) ulaz: pokretni točkasti objekt tipa mp(moving point) izlaz: lp(line projection) trajektorija pokretnog točkastog objekta tipa line metoda: neka je mp={up1,up2,...,upn} pokretni točkasti objekt takav da je lista <up1,up2,...,upn> uređena po vremenskim intervalima if mp=æ then return Æ else lp:=createline(up1) for each upi Î mp za i>1 do l:= createline(upi) lp:= lineunion(lp,l) end for return lp end if end Trajectory Pseudokôd 5.5 Izvedba operatora Trajectory 56

62 Pseudokod predstavlja osnovi princip po kojemu operator pretvara pokretne objekte u skup povezanih linija koji je određeni entitet tj. automobil prošao u određenom vremenskom intervalu Implementirani upiti aplikacije za obradu prostorno-vremenskih tokova podataka Upit projekcije presjeka regije u vremenskoj domeni Implementirani upit za projekciju presjeka regije u vremenskoj domeni daje podatke o regijama u Austriji gdje se pojedini događaj zbio. Takav upit je realiziran na temelju operatora UDORegion. Operator UDORegion u sebi sadrži metodu koja računa prostorni presjek događaja s poligonom Austrijske regije. Podaci o Austrijskim regijama su spremljeni u SQL Server bazi podataka te im se pristupa na temelju EntityFrameworka. U prikazu upita ispod može se vidjeti LINQ upit na temelju kojeg se oblikuje izlazni tok podataka. Ulazni tok je definiran s varijablom inputstream koja pohranjuje u sebi trenutačne podatke toka unutar StreamInsight servera. var query = from car in inputstream.snapshotwindow() select car.udoregion(); Na temelju UDORegion operatora dobiju se izlazni podaci toka u obliku elemenata s nazivima Austrijskih regija i vremenskih instanci Upit određivanja najbližeg susjeda Implementirani upit za određivanje najbližeg susjeda je operacija udaljenosti. Na temelju tog upita dobije se najbliži grad za događaj prostorno-vremenskog toka. Isto kao i za upit se regijama, izlazni oblik toka je oblikovan kao element s nazivom najbližeg grada i vremenskom instancom. var query = from car in inputstream.snapshotwindow() select car.udoneraestcity(); Za oblikovanje izlaznog toka koristi se operator UDONereastCity koji grupira udaljenosti svih gradova iz SQL Server baze podataka i odabire najkraću udaljenost. Kao rezultat izbacuje se element koji ima najkraću udaljenost s 57

63 događajem toka. Upit za određivanje najbližeg susjeda je najsporiji unutar aplikacije zbog količine obrade za određivanje svih prostornih udaljenosti Upit određivanja pokretnih objekata na temelju intime događaja Implementirani upit za određivanje pokretnih objekata na temelju intime događaja vremenski podiže intime događaje u pokretne objekte. Vrlo je bitno da takav upit prvo grupira podatke. Budući da se primijenjuje korisnički agregat Moving koji grupira skup intime događaja i pretvara ga u pokretni objekt, potrebno je grupirati te događaje po identifikaciji entiteta. Identifikacije entiteta su registracijski brojevi automobila čija su kretanja izmjerena GPS-om. Nakon što se grupiraju podaci prema registracijskim brojevima automobila, postavlja se klizeći prozor veličine 5 sekundi. Unutar tog vremenskog intervala od 5 sekundi dohvaćaju se svi događaji s istim registracijskim oznakama. Prikupljeni se događaji zatim šalju Moving agregatu koji računa koeficijente pokretnog objekta i sprema ih u String format. Podaci pokretnog objekta u String formatu spremaju se kao varijabla movingobjects u razredu izlaznog toka MovingCarEvent. var query = from cars in inputstream group cars by cars.id into car from c in car.tumblingwindow(timespan.fromseconds(5)) select new MovingCarEvent() { movingobjects = c.moving(new UDAConfig() { timebegining = new DateTime(2014, 10, 17, 5, 46, 46, DateTimeKind.Utc).ToString() }), id = car.key, speed = (int)c.avg(e => e.speed), height = c.avg(e => e.height), carid = c.min(e => e.carid) }; Kôd 5.7 Primjer upita prema kojem se dobivaju pokretni objekti na temelju intime događaja Upit prostorno vremenskog presjeka pokretnih objekata s zadanim prostornim objektom Implementirani upit za prostorno-vremenski presjek pokretnog objekta koristi operator At koji računa presjek pokretnog objekta sa zadanim poligonom. Na temelju tog upita dobivaju se pokretni objekti koji se nalaze unutar vremenskog 58

64 intervala i prostornog poligona. Drugim riječima, nemoguća je vremenska i prostorna instanca pokretnog objekta koja nije u vremensko-prostornom intervalu. Upit funkcionira tako da se pokretnom objektu koji siječe poligon izračuna najprije prostorna,a zatim i vremenska točka presjeka. Iz LINQ upita ispod vidimo kako su prvo izračunati pokretni objekti koji se spremaju u varijablu query. Nakon toga su ubačeni unutar drugog LINQ upita u kojem je definiran prozor baziran na trenutačnom snimku i operator At. Unutar tog operatora su izračunati presjeci događaja, tj. pokretnih objekata, te su kao rezultati izbačeni oni pokretni objekti unutar zadanog poligona. var query = from cars in inputstream group cars by cars.id into car from c in car.tumblingwindow(timespan.fromseconds(3)) select new MovingCarEvent() { movingobjects = c.moving(new UDAConfig() { timebegining = new DateTime(2014, 10, 17, 5, 46, 46, DateTimeKind.Utc).ToString() }), id = car.key, speed = (int)c.avg(e => e.speed), height = c.avg(e => e.height), carid = c.min(e => e.carid) }; var queryat = from car in query.snapshotwindow() select car.at(new UDOConfig() { timebegining = new DateTime(2014, 10, 17, 5, 46, 46, DateTimeKind.Utc).ToString(), geometry , , , , ))" }); Kôd 5.8 Primjer upita prostorno vremenskog presjeka pokretnih objekata s zadanim prostornim objektom Upit određivanja trajektorija pokretnih objekata Upit za određivanje trajektorija pokretnih objekata računa njihov put prijeđen unutar određenog prostornog intervala. Put se prikazuje kao niz povezanih linija koji zovemo trajektorija. Isto kao i kod prošlog upita, prvo su se odredili pokretni objekti intime događaja te postavili u varijablu query. Nakon toga je skup pokretnih objekata iz varijable query ubačen u drugi upit pomoću kojeg je izračunata trajektorija pokretnih objekata. Trajektorija pokretnih objekata je izračunata 59

65 pomoću operatora Trajectory koji od koeficijenata pokretnih objekata računa koordinate i kreira trajektoriju tih koordinata. var query = from cars in inputstream group cars by cars.id into car from c in car.tumblingwindow(timespan.fromseconds(3)) select new MovingCarEvent() { movingobjects = c.moving(new UDAConfig() { timebegining = new DateTime(2014, 10, 17, 5, 46, 46, DateTimeKind.Utc).ToString() }), id = car.key, speed = (int)c.avg(e => e.speed), height = c.avg(e => e.height), carid = c.min(e => e.carid) }; var querytrajectory = from car in query.snapshotwindow() select car.trajectory(new UDOConfig() { timebegining = new DateTime(2014, 10, 17, 5, 46, 46, DateTimeKind.Utc).ToString() }); Kôd 5.9 Primjer upita određivanja trajektorija pokretnih objekata Način rada aplikacije Princip rada aplikacije jest da prvo pokrene upit nad tokom podataka. Upiti se nalaze u razredu SpatialQueries te pokretanje jedne metode s definiranim upitom pokreće tok podataka unutar StreamInsight servera. U SpatialQueries razredu se nalaze strukture pojedinih upita u statičnim metodama. Unutar metoda gdje su definirani upiti nalazi se metoda BindAndRunQuery iz razreda Binding. Unutar BindAndRunQuery metode se pokreće StreamInsight server u kojem su definirane sve komponente za obradu toka podataka. Za aplikaciju koja obrađuje tokove podataka u StreamInsight serveru, nužno je kreirati server te iz njega kreirati instancu aplikacije. Iz instance aplikacije mogu se potom kreirati adapteri i predložak za upit. Unutar aplikacije prvo je kreirana instanca servera, a nakon nje aplikacija iz instance servera s određenim nazivom Tok vozila. 60

66 Zatim su implementirani ulazni i izlazni adapteri gdje je ulazni adapter tipa CSVInputFactory, a izlazni tipa WebOutputFactory. Kreirani adapteri stvoreni su za instancu aplikacije Tok vozila. Slijedi kreiranje upitnog predloška iz instance aplikacije u koji se stavlja struktura upita za tok podataka. Nakon toga kreirana je instanca razreda Query Binder koji predstavlja povezivanje upita. Takva metoda upitnog povezivanja pruža fleksibilnost i ponovnu iskoristivost pri izradi StreamInsight DSMS aplikacije. Metoda instancira izrađeni upit nad tokom podataka, a instanci upita dodaju se ulazni i izlazni adapteri. Dodavanje ulaznih adaptera radi se pomoću metode BindProducer() kojoj se moraju dodati konfiguracijski podaci ulaznih izvora podataka. Dodavanje izlaznih adaptera radi se pomoću metode AddConsumer() kojoj se moraju dodati konfiguracijski podaci izlaznog izvora podataka. Upitno povezivanje ima mogućnost dinamičnog načina dodavanja, brisanja i izmjena ulaznih i izlaznih adaptera. Na kraju se instanca upitnog povezivanja dodaje u upitni objekt aplikacije. Taj upitni objekt pomoću metode Start() pokreće upit koji iz ulaznog toka stvara izlazni tok. 5.2 Testiranje Testiranje je dio razvoja aplikacije koji obično dođe na kraju razvoja. On je ujedno i najbitniji dio razvoja, a služi kao potvrda da aplikacija radi na pravilan način. Testovi se razvijaju kako bi aplikacija funkcionirala prema zahtjevu korisnika. Prema tome, za svaki korak korištenja aplikacije radi se test koji provjerava radi li na način na koji je zamišljen da radi. U razvijenoj aplikaciji za obradu prostornovremenskih tokova najbitniji dio za provjeravanje su korisnički definirane funkcije, operacije i agregacije prema kojima se oblikuje izlazni tok podataka. Provjera ispravnosti implementirane prostorne komponente StreamInsight DSMS sustava izvedena je kreiranjem testova za ključne operatore, agregate i funkcije na temelju kojih je prostorna komponenta implementirana. Razvijena CEP aplikacija, osim paketa koji su prikazani na slici 10, ima paket GeospatialStreamApp.Test. U tom su paketu implementirani svi testovi koji su bitni 61

67 za provjeru rada korisničkih operatora i agregata. Unutar paketa GeospatialStreamApp.Test je ubačen skup ulaznih tokova podataka u svrhu testiranja. Testni podaci se ubacuju u server preko metode GetTestReading koja implementira sučelje IQStreamable. IQStreamable sučelje je potrebno implementirati ako se žele ručno ubaciti podaci ulaznog toka bez korištenja ulaznih adaptera. Prva metoda testiranja zove se TestMovingObject te služi da bi testirala pretvaranje intime događaje u pokretne objekte. U toj metodi se SpatialCarEvent pretvara u MovingCarEvent. Za navedeno su testiranje ručno izračunati parametri funkcije za tri događaja. Izračunati parametri unutar testne metode su zatim uspoređeni sa izračunatim parametrima dobivenim preko UDF funkcije koja kreira za UDA razred Moving pojedini pokretni objekt. Druga metoda testiranja zove se TestAtOperator te služi da bi testirala prostornovremenski presjek događaja tipa MovingCarEvent sa zadanim poligonom. Razred koji implementira operator At koristi također UDF funkciju koja računa za svaki pokretni objekt presjek sa zadanim poligonom. Da bi se uspješno mogla testirati At operacija bilo je potrebno definirati zadani poligon koji siječe prostornu instancu izmjerenog događaja. Nakon toga se od događaja prije i poslije njega napravi trajektorija. Trajektorija se presiječe s zadanim poligonom i uspoređuje dali je točka presjeka prostorno i vremenski identična sa maknutim događajem. Treća metoda testiranja zove se TestTrajectoryOperator te služi za testiranje dobiva li se trajektorija objekata u određenom vremenskom trenutku na temelju događaja pokretnih objekata tipa MovingCarEvent. U toj se metodi ručno unesu događaji iz kojih se napravi trajektorija, nakon čega se ubace u UDF funkciju za izračunavanje trajektorije za trajectory operator, a zatim se te dvije trajektorije usporede. Nakon što se preko testova pokaže da implementirane komponente za prostorni dio StreamInsight DSMS sustava uspješno rade, mogu se prikazati rezultati obrade tokova. 62

68 Na slici 22 može se vidjeti prikaz događaja kao pokretnih objekata na temelju modela MovingCarEvent. Mogu se vidjeti koefijenti funkcije kretanja unutar atributa movingobjects. Isto tako je prikazana prosječna brzina vozila i visina vozila. Rezultat prikazan na ekranu je dobiven pomoću sljedećeg upita koji je opisan u kodu 5.7. Slika 5.13.Prikaz pokretnih objekata kao izlazni tokovi Na slici 23 može se vidjeti prikaz trajektorija događaja na temelju modela MovingCarEvent. Mogu se vidjeti nizovi linija unutar atributa movingobjects. Isto tako su prikazane i prosječne brzine i visine vozila. Rezultat prikazan na ekranu dobiven je pomoću sljedećeg upita koji je isto opisan u kodu

69 Slika 5.14.Prikaz trejektorija pokretnih objekata Prikaz sa slike 24 se može dobiti na temelju upita koji je opisan u poglavlju o implementiranim upitima pod nazivom Upit projekcije presjeka regije u vremenskoj domeni. Slika 5.15.Prikaz presjeka intime događaja s austrijskim regijama 64

70 5.3 Pokretanje i vizualizacija Nakon što su implementirane prostorne funkcionalnosti StreamInsight DSMS sustava testirane, implementiran je način prikaza izlaznih tokova. Prikaz izlaznih tokova je implementiran kao WPF (eng. Windows Presentation Foundation) aplikacija s BingMap kartom. Početni izgled WPF aplikacije GeospatialStreamApp može se vidjeti na slici 25. Slika 5.16.Početni izgled GeospatialStreamApp Da bi aplikacija mogla obrađivati prostorno-vremenske tokove podataka, najprije je potrebno obaviti slijedeće korake koji omogućuju rad StreamInsight DSMS sustava. Prvo je potrebno imati instaliran SQL Server 2012 SUBP na računalu, te u slučaju da SQL Server 2012 na računalu ne postoji preko URL adrese 65

71 ga je potrebno instalirati. Nakon toga potrebno je osigurati da WCF izlazni adapter može raditi. Kao što je rečno prije u radu, izlazni adapter GeospatialStreamApp je WCF adapter koji šalje rezultate izlaznih tokova na URL adresu. Da bi bilo omogućeno slanje podataka izlaznog toka na URL adresu, potrebno ju je prvo rezervirati. Rezervacija URL adrese obavlja se tako da se prvo otvori CommandPrompt alat administratorskim ovlastima. Nakon toga je potrebno ubaciti sljedeću naredbu za rezervaciju URL adrese. netsh http add URLacl URL= user=everyone Poruka na slici 26 govori da je rezervacija uspješno obavljena. Nakon završetka rada aplikacije, potrebno je otkazati rezervaciju URL adrese pomoću sljedeće naredbe. netsh http delete URLacl URL= s Slika 5.17.Prikaz rezerevacije URL adrese za prijenos podataka izlaznog toka do aplikacije Pokretanje obrade prostorno-vremenskog toka kreće pritiskom na gumb Start a zaustavlja se na gumb Stop. 66

72 Slika 5.18.Prikaz vozila ulaznog toka podataka Vizualni prikaz vozila prema podacima ulaznog toka prikazna je na slici 27. Svako vozilo je označeno na karti svojom registracijskom oznakom. Gore iznad karte se prikazuje zadnja vremenska instanca. Slika 28 prikazuje trajektorije vozila s registracijskim oznakama 1 i 3. Trajektorije su dobivene prostorno-vremenskim upitom gdje su se događaji ta dva vozila grupirala unutar vremenskog prozora od 20 sekundi pomoću poskočnog prozora. Bitno je napomenuti da ti prozori se vremenski ne sijeku te stoga između prošle i trenutačne trajektorije ne postoje dodirne točke i zbog toga su trajektorije za pojednio vozilo međusobno ne povezane. Prema tome, jako je bitno da se za trajektorije odaberu vremenski prozori koji se međusobno preklapaju da bi se dobila povezani niz linija. 67

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije Biznis scenario: U školi postoje četiri sekcije sportska, dramska, likovna i novinarska. Svaka sekcija ima nekoliko aktuelnih projekata. Likovna ima četiri projekta. Za projekte Pikaso, Rubens i Rembrant

More information

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan. SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan. 1) Kod pravilnih glagola, prosto prošlo vreme se gradi tako

More information

Port Community System

Port Community System Port Community System Konferencija o jedinstvenom pomorskom sučelju i digitalizaciji u pomorskom prometu 17. Siječanj 2018. godine, Zagreb Darko Plećaš Voditelj Odsjeka IS-a 1 Sadržaj Razvoj lokalnog PCS

More information

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević GUI Layout Manager-i Bojan Tomić Branislav Vidojević Layout Manager-i ContentPane Centralni deo prozora Na njega se dodaju ostale komponente (dugmići, polja za unos...) To je objekat klase javax.swing.jpanel

More information

Podešavanje za eduroam ios

Podešavanje za eduroam ios Copyright by AMRES Ovo uputstvo se odnosi na Apple mobilne uređaje: ipad, iphone, ipod Touch. Konfiguracija podrazumeva podešavanja koja se vrše na računaru i podešavanja na mobilnom uređaju. Podešavanja

More information

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings Eduroam O Eduroam servisu Eduroam - educational roaming je besplatan servis za pristup Internetu. Svojim korisnicima omogućava bezbedan, brz i jednostavan pristup Internetu širom sveta, bez potrebe za

More information

SAS On Demand. Video: Upute za registraciju:

SAS On Demand. Video:  Upute za registraciju: SAS On Demand Video: http://www.sas.com/apps/webnet/video-sharing.html?bcid=3794695462001 Upute za registraciju: 1. Registracija na stranici: https://odamid.oda.sas.com/sasodaregistration/index.html U

More information

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB. 9.72 8.24 6.75 6.55 6.13 po 9.30 7.89 5.86 10.48 8.89 7.30 7.06 6.61 11.51 9.75 8.00 7.75 7.25 po 0.38 10.21 8.66 7.11 6.89 6.44 11.40 9.66 9.73 7.69 7.19 12.43 1 8.38 7.83 po 0.55 0.48 0.37 11.76 9.98

More information

Upute za korištenje makronaredbi gml2dwg i gml2dgn

Upute za korištenje makronaredbi gml2dwg i gml2dgn SVEUČILIŠTE U ZAGREBU - GEODETSKI FAKULTET UNIVERSITY OF ZAGREB - FACULTY OF GEODESY Zavod za primijenjenu geodeziju; Katedra za upravljanje prostornim informacijama Institute of Applied Geodesy; Chair

More information

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI Za pomoć oko izdavanja sertifikata na Windows 10 operativnom sistemu možete se obratiti na e-mejl adresu esupport@eurobank.rs ili pozivom na telefonski broj

More information

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri. Potprogrami su delovi programa. Često se delovi koda ponavljaju u okviru nekog programa. Logično je da se ta grupa komandi izdvoji u potprogram, i da se po želji poziva u okviru programa tamo gde je potrebno.

More information

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE CJENOVNIK KABLOVSKA TV Za zasnivanje pretplatničkog odnosa za korištenje usluga kablovske televizije potrebno je da je tehnički izvodljivo (mogude) priključenje na mrežu Kablovskih televizija HS i HKBnet

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka 25. novembar 2011. godine 7. čas SQL skalarne funkcije, operatori ANY (SOME) i ALL 1. Za svakog studenta izdvojiti ime i prezime i broj različitih ispita koje je pao (ako

More information

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA KOŽA I TEKSTIL ALU FELGE CJENIK APLIKACIJE CERAMIC PRO PROIZVODA Radovi prije aplikacije: Prije nanošenja Ceramic Pro premaza površina vozila na koju se nanosi mora bi dovedena u korektno stanje. Proces

More information

1. Instalacija programske podrške

1. Instalacija programske podrške U ovom dokumentu opisana je instalacija PBZ USB PKI uređaja na računala korisnika PBZCOM@NET internetskog bankarstva. Uputa je podijeljena na sljedeće cjeline: 1. Instalacija programske podrške 2. Promjena

More information

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd, AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje Marko Eremija Sastanak administratora, Beograd, 12.12.2013. Sadržaj eduroam - uvod AMRES eduroam statistika Novine u okviru eduroam

More information

BENCHMARKING HOSTELA

BENCHMARKING HOSTELA BENCHMARKING HOSTELA IZVJEŠTAJ ZA SVIBANJ. BENCHMARKING HOSTELA 1. DEFINIRANJE UZORKA Tablica 1. Struktura uzorka 1 BROJ HOSTELA BROJ KREVETA Ukupno 1016 643 1971 Regije Istra 2 227 Kvarner 4 5 245 991

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 3 DEFINICIJA KLASE U JAVI Miloš Kovačević Đorđe Nedeljković 1 /18 OSNOVNI KONCEPTI - Polja - Konstruktori - Metode - Parametri - Povratne vrednosti - Dodela

More information

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

Struktura indeksa: B-stablo.   ls/swd/btree/btree.html Struktura indeksa: B-stablo http://cis.stvincent.edu/html/tutoria ls/swd/btree/btree.html Uvod ISAM (Index-Sequential Access Method, IBM sredina 60-tih godina 20. veka) Nedostaci: sekvencijalno pretraživanje

More information

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik) JEDINSTVENI PORTAL POREZNE UPRAVE Priručnik za instalaciju Google Chrome dodatka (Opera preglednik) V1 OPERA PREGLEDNIK Opera preglednik s verzijom 32 na dalje ima tehnološke promjene zbog kojih nije moguće

More information

Tutorijal za Štefice za upload slika na forum.

Tutorijal za Štefice za upload slika na forum. Tutorijal za Štefice za upload slika na forum. Postoje dvije jednostavne metode za upload slika na forum. Prva metoda: Otvoriti nova tema ili odgovori ili citiraj već prema želji. U donjem dijelu obrasca

More information

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports. IZVJEŠTAJI U MICROSOFT ACCESS-u (eng. reports) su dijelovi baze podataka koji omogućavaju definiranje i opisivanje načina ispisa podataka iz baze podataka na papir (ili PDF dokument). Način izrade identičan

More information

PROJEKTNI PRORAČUN 1

PROJEKTNI PRORAČUN 1 PROJEKTNI PRORAČUN 1 Programski period 2014. 2020. Kategorije troškova Pojednostavlj ene opcije troškova (flat rate, lump sum) Radni paketi Pripremni troškovi, troškovi zatvaranja projekta Stope financiranja

More information

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU KONFIGURACIJA MODEMA ZyXEL Prestige 660RU Sadržaj Funkcionalnost lampica... 3 Priključci na stražnjoj strani modema... 4 Proces konfiguracije... 5 Vraćanje modema na tvorničke postavke... 5 Konfiguracija

More information

Struktura i organizacija baza podataka

Struktura i organizacija baza podataka Fakultet tehničkih nauka, DRA, Novi Sad Predmet: Struktura i organizacija baza podataka Dr Slavica Aleksić, Milanka Bjelica, Nikola Obrenović Primer radnik({mbr, Ime, Prz, Sef, Plt, God, Pre}, {Mbr}),

More information

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020. Idejno rješenje: Dubrovnik 2020. Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020. vizualni identitet kandidature dubrovnika za europsku prijestolnicu kulture 2020. visual

More information

Advertising on the Web

Advertising on the Web Advertising on the Web On-line algoritmi Off-line algoritam: ulazni podaci su dostupni na početku, algoritam može pristupati podacima u bilo kom redosljedu, na kraju se saopštava rezultat obrade On-line

More information

Nejednakosti s faktorijelima

Nejednakosti s faktorijelima Osječki matematički list 7007, 8 87 8 Nejedakosti s faktorijelima Ilija Ilišević Sažetak Opisae su tehike kako se mogu dokazati ejedakosti koje sadrže faktorijele Spomeute tehike su ilustrirae a izu zaimljivih

More information

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći:

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći: Pogledi Ciljevi Poslije kompletiranja ove lekcije trebalo bi se moći: Opisati pogled Formirati novi pogled Vratiti podatke putem pogleda Izmijeniti postojeći pogled Insertovani, ažurirati i brisati podatke

More information

Office 365, upute za korištenje elektroničke pošte

Office 365, upute za korištenje elektroničke pošte Office 365, upute za korištenje elektroničke pošte Naša ustanova koristi uslugu elektroničke pošte u oblaku, u sklopu usluge Office 365. To znači da elektronička pošta više nije pohranjena na našem serveru

More information

3. Obavljanje ulazno-izlaznih operacija, prekidni rad

3. Obavljanje ulazno-izlaznih operacija, prekidni rad 3. Obavljanje ulazno-izlaznih operacija, prekidni rad 3.1. Spajanje naprava u ra unalo Slika 3.1. Spajanje UI naprava na sabirnicu 3.2. Kori²tenje UI naprava radnim ekanjem Slika 3.2. Pristupni sklop UI

More information

Mindomo online aplikacija za izradu umnih mapa

Mindomo online aplikacija za izradu umnih mapa Mindomo online aplikacija za izradu umnih mapa Mindomo je online aplikacija za izradu umnih mapa (vrsta dijagrama specifične forme koji prikazuje ideje ili razmišljanja na svojevrstan način) koja omogućuje

More information

MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE

MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE 3309 Pursuant to Article 1021 paragraph 3 subparagraph 5 of the Maritime Code ("Official Gazette" No. 181/04 and 76/07) the Minister of the Sea, Transport

More information

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum:

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum: Programiranje Nastava: prof.dr.sc. Dražena Gašpar Datum: 21.03.2017. 1 Pripremiti za sljedeće predavanje Sljedeće predavanje: 21.03.2017. Napraviti program koji koristi sve tipove podataka, osnovne operatore

More information

Windows Easy Transfer

Windows Easy Transfer čet, 2014-04-17 12:21 - Goran Šljivić U članku o skorom isteku Windows XP podrške [1] koja prestaje 8. travnja 2014. spomenuli smo PCmover Express i PCmover Professional kao rješenja za preseljenje korisničkih

More information

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu Marijana Glavica Dobrica Pavlinušić http://bit.ly/ffzg-eprints Definicija

More information

DIPLOMSKI RAD. Katastar i Oracle 8i Spatial

DIPLOMSKI RAD. Katastar i Oracle 8i Spatial SVEUČILIŠTE U ZAGREBU GEODETSKI FAKULTET UNIVERSITY OF ZAGREB FACULTY OF GEODESY Zavod za inženjersku geodeziju - Institute of Engineering Geodesy Kačićeva 26, HR-10000 Zagreb, CROATIA Tel.: (+385 1) 456

More information

DIPLOMSKI RAD. Ispitivanje mogućnosti klasične baze prostornih podataka kod aplikacija za praćenje objekata u realnom vremenu

DIPLOMSKI RAD. Ispitivanje mogućnosti klasične baze prostornih podataka kod aplikacija za praćenje objekata u realnom vremenu SVEUČILIŠTE U ZAGREBU - GEODETSKI FAKULTET UNIVERSITY OF ZAGREB - FACULTY OF GEODESY Zavod za geomatiku; Katedra za geoinformatiku Institute of Geomatics; Chair of Geoinformatics Kačićeva 26; HR-10000

More information

int[] brojilo; // polje cjelih brojeva double[] vrijednosti; // polje realnih brojeva

int[] brojilo; // polje cjelih brojeva double[] vrijednosti; // polje realnih brojeva Polja Polje (eng. array) Polje je imenovani uređeni skup indeksiranih vrijednosti istog tipa (niz, lista, matrica, tablica) Kod deklaracije, iza naziva tipa dolaze uglate zagrade: int[] brojilo; // polje

More information

STRUČNA PRAKSA B-PRO TEMA 13

STRUČNA PRAKSA B-PRO TEMA 13 MAŠINSKI FAKULTET U BEOGRADU Katedra za proizvodno mašinstvo STRUČNA PRAKSA B-PRO TEMA 13 MONTAŽA I SISTEM KVALITETA MONTAŽA Kratak opis montže i ispitivanja gotovog proizvoda. Dati izgled i sadržaj tehnološkog

More information

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6.

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6. KOREKTAN PREVOD? - Reupotrebljiv softver? ( ne postoji prefiks RE u srpskom jeziku ) - Ponovo upotrebljiv softver? ( totalno bezveze ) - Upotrebljiv više puta? - Itd. PLAN RADA 1. Počnimo sa primerom!

More information

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. SEMINARSKI RAD U OKVIRU PREDMETA "Računalna forenzika" 2016/2017. GIF FORMAT (.

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. SEMINARSKI RAD U OKVIRU PREDMETA Računalna forenzika 2016/2017. GIF FORMAT (. SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SEMINARSKI RAD U OKVIRU PREDMETA "Računalna forenzika" 2016/2017 GIF FORMAT (.gif) Renato-Zaneto Lukež Zagreb, siječanj 2017. Sadržaj 1. Uvod...

More information

MASKE U MICROSOFT ACCESS-u

MASKE U MICROSOFT ACCESS-u MASKE U MICROSOFT ACCESS-u Maske (Forms) ili obrasci su objekti baze podataka u Accessu koji služe za unošenje, brisanje i mijenjanje podataka u tablicama ili upitima koji imaju ljepše korisničko sučelje

More information

TEHNIĈKO VELEUĈILIŠTE U ZAGREBU ELEKTROTEHNIĈKI ODJEL Prof.dr.sc.KREŠIMIR MEŠTROVIĆ POUZDANOST VISOKONAPONSKIH PREKIDAĈA

TEHNIĈKO VELEUĈILIŠTE U ZAGREBU ELEKTROTEHNIĈKI ODJEL Prof.dr.sc.KREŠIMIR MEŠTROVIĆ POUZDANOST VISOKONAPONSKIH PREKIDAĈA TEHNIĈKO VELEUĈILIŠTE U ZAGREBU ELEKTROTEHNIĈKI ODJEL Prof.dr.sc.KREŠIMIR MEŠTROVIĆ POUZDANOST VISOKONAPONSKIH PREKIDAĈA SF6 PREKIDAĈ 420 kv PREKIDNA KOMORA POTPORNI IZOLATORI POGONSKI MEHANIZAM UPRAVLJAĈKI

More information

APLIKACIJA ZA RAČUNANJE N-GRAMA

APLIKACIJA ZA RAČUNANJE N-GRAMA SVEUČILIŠTE U ZAGREBU FILOZOFSKI FAKULTET ODSJEK ZA INFORMACIJSKE ZNANOSTI Ak. god. 2009./ 2010. Ante Kranjčević APLIKACIJA ZA RAČUNANJE N-GRAMA Diplomski rad Mentor: dr. sc. Kristina Vučković Zagreb,

More information

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze Trening: Obzor 2020. - financijsko izvještavanje i osnovne ugovorne obveze Ana Ključarić, Obzor 2020. nacionalna osoba za kontakt za financijska pitanja PROGRAM DOGAĐANJA (9:30-15:00) 9:30 10:00 Registracija

More information

ONLINE APLIKACIJA ZA SLANJE OBAVIJESTI U PREDDEFINIRANO VRIJEME

ONLINE APLIKACIJA ZA SLANJE OBAVIJESTI U PREDDEFINIRANO VRIJEME SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Stručni studij ONLINE APLIKACIJA ZA SLANJE OBAVIJESTI U PREDDEFINIRANO VRIJEME Završni

More information

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT TRAJANJE AKCIJE 16.01.2019-28.02.2019 ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT Akcija sa poklonima Digitally signed by pki, pki, BOSCH, EMEA, BOSCH, EMEA, R, A, radivoje.stevanovic R, A, 2019.01.15 11:41:02

More information

MS.CS Petar Popić, software engineer. Copyright Petar Popic Software Engineering

MS.CS Petar Popić, software engineer. Copyright Petar Popic Software Engineering Inženjerski pristup razvoja programskih aplikacija ili Software Engineering MS.CS Petar Popić, software engineer ppopic@gmail.com 1 Software Engineering Teme: Pregled i povijest Software Engineering discipline,

More information

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine UNIVERZITETUBEOGRADU RUDARSKOGEOLOŠKIFAKULTET DEPARTMANZAHIDROGEOLOGIJU ZBORNIKRADOVA ZLATIBOR 1720.maj2012.godine XIVSRPSKISIMPOZIJUMOHIDROGEOLOGIJI ZBORNIKRADOVA IZDAVA: ZAIZDAVAA: TEHNIKIUREDNICI: TIRAŽ:

More information

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a NIS PETROL Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a Beograd, 2018. Copyright Belit Sadržaj Disable... 2 Komentar na PHP kod... 4 Prava pristupa... 6

More information

POSTGIS KAO SUVREMENI INFORMACIJSKI EKOSUSTAV

POSTGIS KAO SUVREMENI INFORMACIJSKI EKOSUSTAV DOI: 10.19279/TVZ.PD.2014-2-1-13 POSTGIS KAO SUVREMENI INFORMACIJSKI EKOSUSTAV Siniša Tkalčec, Alen Šimec Tehničko veleučilište u Zagrebu Sažetak U ovom radu biti će prikazan suvremeni informacijski ekosustav

More information

KABUPLAST, AGROPLAST, AGROSIL 2500

KABUPLAST, AGROPLAST, AGROSIL 2500 KABUPLAST, AGROPLAST, AGROSIL 2500 kabuplast - dvoslojne rebraste cijevi iz polietilena visoke gustoće (PEHD) za kabelsku zaštitu - proizvedene u skladu sa ÖVE/ÖNORM EN 61386-24:2011 - stijenka izvana

More information

Bušilice nove generacije. ImpactDrill

Bušilice nove generacije. ImpactDrill NOVITET Bušilice nove generacije ImpactDrill Nove udarne bušilice od Bosch-a EasyImpact 550 EasyImpact 570 UniversalImpact 700 UniversalImpact 800 AdvancedImpact 900 Dostupna od 01.05.2017 2 Logika iza

More information

Osigurajte si bolji uvid u poslovanje

Osigurajte si bolji uvid u poslovanje Osigurajte si bolji uvid u poslovanje Mario Jurić Megatrend poslovna rješenja d.o.o. 1 / 23 Megatrend poslovna rješenja 25 + godina na IT tržištu 40 M kn prihoda 50 zaposlenih 60% usluge Zagreb i Split

More information

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION VFR AIP Srbija / Crna Gora ENR 1.4 1 ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION 1. KLASIFIKACIJA VAZDUŠNOG PROSTORA

More information

Kooperativna meteorološka stanica za cestovni promet

Kooperativna meteorološka stanica za cestovni promet Kooperativna meteorološka stanica za cestovni promet Marko Gojić LED ELEKTRONIKA d.o.o. marko.gojic@led-elektronika.hr LED Elektronika d.o.o. Savska 102a, 10310 Ivanić Grad, Croatia tel: +385 1 4665 269

More information

Primjeri pitanja iz 1. ili 2. skupine (za 2 ili 4 boda po pitanju) -

Primjeri pitanja iz 1. ili 2. skupine (za 2 ili 4 boda po pitanju) - Razvoj poslovnih aplikacija, EFO 1. Kolokvij pitanja Kolokvij će se sastojati od 12 pitanja, od toga će biti 3 skupine pitanja: 1. Skupina: 5 pitanja s zatvorenog tipa s ponuđenim odgovorima (svako pitanje

More information

RAČUNALNA APLIKACIJA ZA RFID EVIDENCIJU STUDENATA NA NASTAVI

RAČUNALNA APLIKACIJA ZA RFID EVIDENCIJU STUDENATA NA NASTAVI SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Sveučilišni studij RAČUNALNA APLIKACIJA ZA RFID EVIDENCIJU STUDENATA NA NASTAVI Završni

More information

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ DIZAJN TRENINGA Model trening procesa FAZA DIZAJNA CILJEVI TRENINGA Vrste ciljeva treninga 1. Ciljevi učesnika u treningu 2. Ciljevi učenja Opisuju željene

More information

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C INFOTEH-JAHORINA Vol. 10, Ref. E-I-15, p. 461-465, March 2011. Implementacija sparsnih matrica upotrebom listi u programskom jeziku C Đulaga Hadžić, Ministarstvo obrazovanja, nauke, kulture i sporta Tuzlanskog

More information

Otpremanje video snimka na YouTube

Otpremanje video snimka na YouTube Otpremanje video snimka na YouTube Korak br. 1 priprema snimka za otpremanje Da biste mogli da otpremite video snimak na YouTube, potrebno je da imate kreiran nalog na gmailu i da video snimak bude u nekom

More information

DIPLOMSKI RAD. Sučelje katastarske baze podataka

DIPLOMSKI RAD. Sučelje katastarske baze podataka SVEUČILIŠTE U ZAGREBU - GEODETSKI FAKULTET UNIVERSITY OF ZAGREB - FACULTY OF GEODESY Zavod za primijenjenu geodeziju; Katedra za upravljanje prostornim informacijama Institute of Applied Geodesy; Chair

More information

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO ROBERT PRAŠNIČKI

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO ROBERT PRAŠNIČKI MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO ROBERT PRAŠNIČKI IZRADA MOBILNE I WEB APLIKACIJE ZA GENERIRANJE QR KODA UPOTREBOM PYTHON PROGRAMSKOG JEZIKA ZAVRŠNI RAD ČAKOVEC, 2014. MEĐIMURSKO VELEUČILIŠTE

More information

PE FORMAT (.EXE,.DLL)

PE FORMAT (.EXE,.DLL) SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA RAČUNALNA FORENZIKA PE FORMAT (.EXE,.DLL) Marko Veizović Zagreb, siječanj 2017. Sadržaj 1. Uvod... 1 2. PE format... 2 2.1. EXE i DLL datoteke...

More information

Priprema podataka. NIKOLA MILIKIĆ URL:

Priprema podataka. NIKOLA MILIKIĆ   URL: Priprema podataka NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info Normalizacija Normalizacija je svođenje vrednosti na neki opseg (obično 0-1) FishersIrisDataset.arff

More information

DEFINISANJE TURISTIČKE TRAŽNJE

DEFINISANJE TURISTIČKE TRAŽNJE DEFINISANJE TURISTIČKE TRAŽNJE Tražnja se može definisati kao spremnost kupaca da pri različitom nivou cena kupuju različite količine jedne robe na određenom tržištu i u određenom vremenu (Veselinović

More information

Klasterizacija. NIKOLA MILIKIĆ URL:

Klasterizacija. NIKOLA MILIKIĆ   URL: Klasterizacija NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info Klasterizacija Klasterizacija (eng. Clustering) spada u grupu tehnika nenadgledanog učenja i omogućava grupisanje

More information

DALJINSKI NADZOR I UPRAVLJANJE BEŽIČNIM ČVOROVIMA

DALJINSKI NADZOR I UPRAVLJANJE BEŽIČNIM ČVOROVIMA SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Sveučilišni studij DALJINSKI NADZOR I UPRAVLJANJE BEŽIČNIM ČVOROVIMA Diplomski rad Tvrtko

More information

2. Objektno orjentirana analiza i dizajn poslovnih aplikacija, MVC model

2. Objektno orjentirana analiza i dizajn poslovnih aplikacija, MVC model 2. Objektno orjentirana analiza i dizajn poslovnih aplikacija, MVC model Evolucija kako je nastao objektno orjentirani pristup aplikacijama Objektno orjentirani (OO) pristup razvoju aplikacija pojavio

More information

RANI BOOKING TURSKA LJETO 2017

RANI BOOKING TURSKA LJETO 2017 PUTNIČKA AGENCIJA FIBULA AIR TRAVEL AGENCY D.O.O. UL. FERHADIJA 24; 71000 SARAJEVO; BIH TEL:033/232523; 033/570700; E-MAIL: INFO@FIBULA.BA; FIBULA@BIH.NET.BA; WEB: WWW.FIBULA.BA SUDSKI REGISTAR: UF/I-1769/02,

More information

VELEUĈILIŠTE NIKOLA TESLA U GOSPIĆU MYSQL SUSTAV ZA UPRAVLJANJE BAZAMA PODATAKA OTVORENOG KODA

VELEUĈILIŠTE NIKOLA TESLA U GOSPIĆU MYSQL SUSTAV ZA UPRAVLJANJE BAZAMA PODATAKA OTVORENOG KODA VELEUĈILIŠTE NIKOLA TESLA U GOSPIĆU Silvio Valjak MYSQL SUSTAV ZA UPRAVLJANJE BAZAMA PODATAKA OTVORENOG KODA Završni rad Gospić, 2015. VELEUĈILIŠTE NIKOLA TESLA U GOSPIĆU POSLOVNI ODJEL Struĉni studij

More information

IMPLEMENTACIJA PODLOGE ZA SARADNJU KROKI ALATA SA ALATIMA ZA UML MODELOVANJE OPŠTE NAMENE

IMPLEMENTACIJA PODLOGE ZA SARADNJU KROKI ALATA SA ALATIMA ZA UML MODELOVANJE OPŠTE NAMENE IMPLEMENTACIJA PODLOGE ZA SARADNJU KROKI ALATA SA ALATIMA ZA UML MODELOVANJE OPŠTE NAMENE IMPLEMENTATION OF BASIS FOR COOPERATION BETWEEN KROKI TOOL AND UML MODELING TOOLS Željko Ivković, Renata Vaderna,

More information

Projektovanje softvera. Dijagrami slučajeva korišćenja

Projektovanje softvera. Dijagrami slučajeva korišćenja Projektovanje softvera Dijagrami slučajeva korišćenja Uvod 2 Dijagram slučajeva korišćenja (use-case) prikazuje skup slučajeva korišćenja i aktera Tipično se koristi da specificira neku funkcionalnost

More information

EKSPLORATIVNA ANALIZA PODATAKA IZ SUSTAVA ZA ISPORUKU OGLASA

EKSPLORATIVNA ANALIZA PODATAKA IZ SUSTAVA ZA ISPORUKU OGLASA SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Sveučilišni diplomski studij računarstva EKSPLORATIVNA ANALIZA PODATAKA IZ SUSTAVA ZA ISPORUKU

More information

Sveučilište Jurja Dobrile u Puli Fakultet ekonomije i turizma «Dr. Mijo Mirković» Josip Bošnjak. Fizički dizajn baze podataka.

Sveučilište Jurja Dobrile u Puli Fakultet ekonomije i turizma «Dr. Mijo Mirković» Josip Bošnjak. Fizički dizajn baze podataka. Sveučilište Jurja Dobrile u Puli Fakultet ekonomije i turizma «Dr. Mijo Mirković» Josip Bošnjak Fizički dizajn baze podataka Završni rad Pula, 2015. Sveučilište Jurja Dobrile u Puli Fakultet ekonomije

More information

KREIRANJE DINAMIČKIH INTERFEJSA ZASNOVANIH NA META-ŠEMAMA CREATION OF DYNAMIC INTERFACES BASED ON META-SCHEMES

KREIRANJE DINAMIČKIH INTERFEJSA ZASNOVANIH NA META-ŠEMAMA CREATION OF DYNAMIC INTERFACES BASED ON META-SCHEMES INFOTEH-JAHORINA Vol. 10, Ref. E-I-11, p. 441-445, March 2011. KREIRANJE DINAMIČKIH INTERFEJSA ZASNOVANIH NA META-ŠEMAMA CREATION OF DYNAMIC INTERFACES BASED ON META-SCHEMES Vladimir Vujović, Elektrotehnički

More information

Web usluge. Web usluge

Web usluge. Web usluge Sadržaj Uvod....3 Ideja i način rada Web usluga.... 4 Slojevi Web usluga i protokoli.....6 XML (extensible Markup Language).... 7 SOAP (Simple Object Access Protocol)....9 WSDL (Web Service Description

More information

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti MRS LAB 03 MRSLab03 Metodologija Razvoja Softvera Vežba 03 Dijagrami aktivnosti 1. Dijagram aktivnosti Dijagram aktivnosti je UML dijagram koji modeluje dinamičke aspekte sistema. On predstavlja pojednostavljenje

More information

Upotreba selektora. June 04

Upotreba selektora. June 04 Upotreba selektora programa KRONOS 1 Kronos sistem - razina 1 Podešavanje vremena LAMPEGGIANTI 1. Kada je pećnica uključena prvi put, ili u slučaju kvara ili prekida u napajanju, simbol SATA i odgovarajuća

More information

DZM Aplikacija za servise

DZM Aplikacija za servise Mobendo d.o.o. DZM Aplikacija za servise Korisničke upute Andrej Radinger Sadržaj Instalacija aplikacije... 2 Priprema za početak rada... 4 Rad sa aplikacijom... 6 Kopiranje... 10 Strana 1 of 10 Instalacija

More information

CRNA GORA

CRNA GORA HOTEL PARK 4* POLOŽAJ: uz more u Boki kotorskoj, 12 km od Herceg-Novog. SADRŽAJI: 252 sobe, recepcija, bar, restoran, besplatno parkiralište, unutarnji i vanjski bazen s terasom za sunčanje, fitnes i SPA

More information

Upravljanje kvalitetom usluga. doc.dr.sc. Ines Dužević

Upravljanje kvalitetom usluga. doc.dr.sc. Ines Dužević Upravljanje kvalitetom usluga doc.dr.sc. Ines Dužević Specifičnosti usluga Odnos prema korisnicima U prosjeku, lojalan korisnik vrijedi deset puta više nego što je vrijedio u trenutku prve kupnje. Koncept

More information

MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08

MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08 MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08 LAB 08 Konceptualni model podataka Logički model podataka 1. Konceptualni model podataka Modeli podataka omogućavaju modelovanje semantičke i logičke

More information

DANI BRANIMIRA GUŠICA - novi prilozi poznavanju prirodoslovlja otoka Mljeta. Hotel ODISEJ, POMENA, otok Mljet, listopad 2010.

DANI BRANIMIRA GUŠICA - novi prilozi poznavanju prirodoslovlja otoka Mljeta. Hotel ODISEJ, POMENA, otok Mljet, listopad 2010. DANI BRANIMIRA GUŠICA - novi prilozi poznavanju prirodoslovlja otoka Mljeta Hotel ODISEJ, POMENA, otok Mljet, 03. - 07. listopad 2010. ZBORNIK SAŽETAKA Geološki lokalitet i poucne staze u Nacionalnom parku

More information

OSNOVE QGIS-a ZA ARHEOLOGE

OSNOVE QGIS-a ZA ARHEOLOGE Institut za arheologiju / Arheološki muzej u Zagrebu Nera Šegvić, Filomena Sirovica, Kristina Turkalj Priručnik uz radionicu: OSNOVE QGIS-a ZA ARHEOLOGE Arheološki muzej u Zagrebu, 27. lipnja 2016. OSNOVE

More information

UPITI (Queries) U MICROSOFT ACCESSU XP

UPITI (Queries) U MICROSOFT ACCESSU XP UPITI (Queries) U MICROSOFT ACCESSU XP Odabirom opcije [Queries] na izborniku [Objects] koji se nalazi s lijeve strane glavnog prozora baze na većem dijelu ekrana pojavljuju se dva osnovna načina izrade

More information

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP M. Mitreski, A. Korubin-Aleksoska, J. Trajkoski, R. Mavroski ABSTRACT In general every agricultural

More information

OTVARANJE BAZE PODATAKA I IZRADA TABLICE U MICROSOFT ACCESS-u

OTVARANJE BAZE PODATAKA I IZRADA TABLICE U MICROSOFT ACCESS-u OTVARANJE BAZE PODATAKA I IZRADA TABLICE U MICROSOFT ACCESS-u MS Access je programski alat za upravljanje bazama podataka. Pomoću Accessa se mogu obavljati dvije grupe aktivnosti: 1. izrada (projektiranje)

More information

Obrada podataka poslanih preko web formi

Obrada podataka poslanih preko web formi Obrada podataka poslanih preko web formi Kreiranje forme na web stranici Forme omogućuju komunikaciju korisnika i sustava (web stranice ili aplikacije). Sadrže HTML elemente za upis ili odabir (polja za

More information

SVEUČILIŠTE U ZAGREBU FAKULTET PROMETNIH ZNANOSTI

SVEUČILIŠTE U ZAGREBU FAKULTET PROMETNIH ZNANOSTI SVEUČILIŠTE U ZAGREBU FAKULTET PROMETNIH ZNANOSTI Roman Tušek EKSTRAKCIJA INFORMACIJA O PROMETNIM ZAGUŠENJIMA IZ VELIKIH BAZA PODATAKA GPS-OM PRAĆENIH VOZILA DIPLOMSKI RAD Zagreb, 2016. Sveučilište u Zagrebu

More information

Analiza mogućnosti povezivanja alata OSSIM s alatima za strojno učenje i statističku analizu

Analiza mogućnosti povezivanja alata OSSIM s alatima za strojno učenje i statističku analizu SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 705 Analiza mogućnosti povezivanja alata OSSIM s alatima za strojno učenje i statističku analizu Dino Sulić Zagreb, Lipanj

More information

Programiranje za internet zimski semestar 2013/2014. Java kroz primjere (skripta je u fazi izradi)

Programiranje za internet zimski semestar 2013/2014. Java kroz primjere (skripta je u fazi izradi) Programiranje za internet zimski semestar 2013/2014 Java kroz primjere (skripta je u fazi izradi) Zadatak broj 1 Nacrtati kocku. (Zanimljiv teži problem za razmišljanje: Nacrtat kocku čije će dimenzije

More information

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO KRISTIAN LEINER

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO KRISTIAN LEINER MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO KRISTIAN LEINER održanim ispitima izrađena pomoću ASP.NET MVC tehnologije ZAVRŠNI RAD ČAKOVEC, 2015. MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO KRISTIAN

More information

WEB APLIKACIJA S BAZOM RECEPATA

WEB APLIKACIJA S BAZOM RECEPATA SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Preddiplimski studij računarstva WEB APLIKACIJA S BAZOM RECEPATA Završni rad Emil Vartušek

More information

RJEŠAVANJE BUGARSKOG SOLITERA

RJEŠAVANJE BUGARSKOG SOLITERA SVEUČILIŠTE U SPLITU PRIRODOSLOVNO MATEMATIČKI FAKULTET ZAVRŠNI RAD RJEŠAVANJE BUGARSKOG SOLITERA Bože Brečić Split, rujan 2015. Sadržaj 1. Uvod... 1 1.1. Povijest bugarskog solitera... 1 1.2. Slični

More information

POSTGIS KAO SUVREMENI INFORMACIJSKI EKOSUSTAV

POSTGIS KAO SUVREMENI INFORMACIJSKI EKOSUSTAV POLYTECHNIC & DESIGN Vol. 1, No. 2, 2014. POSTGIS KAO SUVREMENI INFORMACIJSKI EKOSUSTAV Siniša Tkalčec, Alen Šimec Sažetak U ovom radu biti će prikazan suvremeni informacijski ekosustav kao što su GoogleMaps,

More information

Univerzitet u Beogradu Matematički fakultet Internet baze podataka

Univerzitet u Beogradu Matematički fakultet Internet baze podataka Univerzitet u Beogradu Matematički fakultet Internet baze podataka Seminarski rad iz predmeta Baze podataka-napredni koncepti 2010/2011 šk.god. Profesor: Student: Dr Gordana Pavlović-Lažetić Mirjana Maljković,

More information

REVITALIZACIJA SUSTAVA ZA OBRADU ISPADA I PLANIRANIH RADOVA U SN DISTRIBUCIJSKOJ MREŽI

REVITALIZACIJA SUSTAVA ZA OBRADU ISPADA I PLANIRANIH RADOVA U SN DISTRIBUCIJSKOJ MREŽI HRVATSKI OGRANAK MEĐUNARODNE ELEKTRODISTRIBUCIJSKE KONFERENCIJE - HO CIRED 6. (12.) savjetovanje Opatija, 13. - 16. svibnja 2018. SO3-30 Tena Bego Končar - Inženjering za energetiku i transport d.d. tena.bego@koncar-ket.hr

More information

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

STABLA ODLUČIVANJA. Jelena Jovanovic.   Web: STABLA ODLUČIVANJA Jelena Jovanovic Email: jeljov@gmail.com Web: http://jelenajovanovic.net 2 Zahvalnica: Ovi slajdovi su bazirani na materijalima pripremljenim za kurs Applied Modern Statistical Learning

More information