podrška za prostorne tipove podataka sa implementacijom u ms sql server 2008

56
Jovan Vidić Podrška za prostorne tipove podataka sa implementacijom u MS SQL Server 2008 Diplomski rad Novi Sad, januar 2009. UNIVERZITET U NOVOM SADU PROIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU

Upload: jovan-vidic

Post on 08-Aug-2015

75 views

Category:

Documents


4 download

DESCRIPTION

Obuhvaćeni su svi fundametalnih koncepti spatialpodataka.Cilj rada je da pruži kvalitetan uvod i osnovu zadalja proučavanja. Kao baza za demostraciju dela spatialmogućnosti izabran je MS SQL Server 2008

TRANSCRIPT

Page 1: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Jovan Vidić

Podrška za prostorne tipove podataka sa implementacijom u MS SQL Server 2008

Diplomski rad

Novi Sad, januar 2009.

UNIVERZITET U NOVOM SADUPROIRODNO-MATEMATIČKI

FAKULTETDEPARTMAN ZA MATEMATIKU I

INFORMATIKU

Page 2: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

2

Page 3: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Predgovor

Cilj ovog rada je obuhvatanje svih fundametalnih koncepata spatial podataka na jednom mestu. Iako, su istraživanja na ovu temu davno započeta, do skoro nije postojalo šire interesovanje. Rad nema svrhu da detaljno prikaže sve spatial tipove i operacije koje se nad njima mogu izvršiti, već da pruži kvalitetan uvod i osnovu za dalja proučavanja. Kao baza za demostraciju dela spatial mogućnosti izabran je MS SQL Server 2008, pošto je Microsoft na svojim skupovima veliku pažnju posvećivao ovom problemu i može se očekivati da će njihova implementacija biti jedna od najšire prihvaćenih.

Uvodno poglavlje donosi definicije spatial podataka i osnovne informacije o njima. Takođe, u njemu se navode osnovni formati za zapis podataka, kao i organizacije i standardi koji se bave ovom tematikom.

Drugo poglavlje daje punu sliku šta jedan spatial sistem mora da sadži. U njemu je poseban akcenat na semantici jezika koji treba da pruži podršku za spatial tipove, kao i na mogućnim ograničenjima i problemima prilikom realizacije takvog jezika.

Treće poglavlje predstavlja pregled mogućnosti MS SQL Server 2008 baze podataka i opis implementacije spatial funkcionalnosti. Prevashodno, akcenat je na geometrijskim tipovima podaka.

U četvrtom poglavlju dat je demonstrativni primer spatial baze implementirane u MS SQL Server 2008. Ovaj primer pokazuje na koji način se kreiraju spatial tabele, kako se vrše operacije nad njima, i daje jasnu sliku kako je Microsoft implementirao standard.

Zakljčak objedinjuje informacije prezentovane u radu i daje objašnjenje razloga sve veće popularnosti ovakvih sistema. Pored ovoga, donosi osnovne smernice za dalji rad i istraživanja u ovoj oblasti.

Zahvaljujem se mentoru na razumevanju i usmeravanju tokom izrade diplomskog rada. Posebnu zahvalnost dugujem mojoj porodici na razumevanju i podršci.

Novi Sad, januar 2009. Jovan Vidić

3

Page 4: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

4

Page 5: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Sadržaj

Predgovor...................................................................................................................... 31. Uvod.......................................................................................................................... 7 1.1 Spatial modeli....................................................................................................... 9 1.2 Standardi.............................................................................................................. 92. Spatial baze podataka................................................................................................ 11 2.1 Definicija spatial baze podataka........................................................................... 11 2.2 Modeliranje.......................................................................................................... 12 2.3 Spatial tipovi podataka......................................................................................... 13 2.4 Spatial veze 15 2.5 Integracija Geometrije u DMBS.......................................................................... 15 2.6 Upiti...................................................................................................................... 16 2.7 Grafički ulaz i izlaz.............................................................................................. 17 2.8 Integrisanje geometrije u jezik upita.................................................................... 18 2.9 Spatial indeksiranje.............................................................................................. 18 2.10 Podška za spatial join......................................................................................... 19 2.11 Sistemska arhitektura......................................................................................... 203. MS SQL Server 2008 Spatial podrška...................................................................... 23 3.1 Performanse i i mogućnosti.................................................................................. 23 3.2 Uvoz spatial podataka.......................................................................................... 24 3.3 Spatial tipovi podaka............................................................................................ 24 3.4 Osnovne SQL operacije sa spatial podacima....................................................... 26 3.5 Spatial tipovi podaka i operacije nad njima......................................................... 274.Primer baze potadaka sa spatial podacima................................................................. 33 4.1 Model podataka battleship baze........................................................................... 33 4.2 Prikaz spatial podataka......................................................................................... 35 4.3 Plan izvšavanja spatial upita................................................................................ 37 4.4 SQL implementacija aplikacije............................................................................ 39Zaključak....................................................................................................................... 47Literatura....................................................................................................................... 49Biografija....................................................................................................................... 51Ključna dokumentacija.................................................................................................. 53Key words documentation............................................................................................. 55

5

Page 6: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

6

Page 7: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

1. UVOD

U današnje vreme dolazi do sve veće potrebe za objedinjavanjem različitih podataka i to od standardnih tabelarnih zapisa i baza podataka, pa sve do multimedija kao što su video zapisi, fotografije i muzika. Trendovi u razvoju softvera pokazuju da postoji veliki broj online rešenja koja u sebi sadrže implementirane kombinovane mogućnosti svih vrsta podataka.

Istovremeno, napredak tehnologije doveo je do visoke dostupnosti geografskih usluga kao što su Microsoft® Virtual Earth™ ili Google Earth sa jedne strane, i jeftinih GPS uređaja sa druge strane. Tehnlogija je napredovala do te mere da geografski informativni sistemi (GIS) postaju, umesto samo uskom krugu specijalista, dostupni širokoj populaciji.

Spatial podaci mogu biti korišćeni na mnogo načina. Neki od mogućih su: Prodavci na svojim web sajtovima mogu prikazati listu lokacija svojih radnji na

mapi Menadžeri prodaje mogu definisati geografske regione prodaje i koristiti ih da na

pravi način udovolje klijentima, kao i da vrše analize prodaja. Vozači mogu na jednostavan način odrediti distance između dve lokacije, kao i

napraviti plan putovanja Agenti u agencijama za promet nekretninama mogu na jednostavne načine naći

sve objekte koji odgovoraju klijentovim zahtevima

Ova lista predstavlja samo jedan izuzetno mali prikaz mogućnosti spatial tipova podataka.

SQL Server 2008, o kome će biti kasnije reči, donosi podršku za geografske i geometrijske podatke kroz nove Spatial tipove podataka.

1.1 Spatial Modeli

Spatial tipovi podataka se koriste da reprezentuju tačke, linije, i oblasti na površinama. Najčešće su ovi elementi direktno povezani sa konkretnim lokacijama na Zemlji.

7

Page 8: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

1.1.1 Geodetski spatial modeli

Osnovni problem, kada se opisuju lokacije na površinama planeta, je što planete nisu ravne. Zemlja je veoma kompleksan objekt koji može biti aproksimativno prikazan kao sferoid, odnosni “izravnana” sfera. Preciznu reprezentaciju Zemlje predstavlja globus, na kome su lokacije predstavljene korišćenjem geografskih dužina i širina, koje se izražavaju u stepenima počevši od ekvatora i griniča.

Slika 1. Geodetski spatial model

1.1.2 Planarni spatial model

Iako geodetski tipovi podataka preciznije definišu geografske tipove podataka, korišćenje elipsoidnog oblika je izuzetno komplikovano kada ljudi moraju da rade sa ravnim mapama. Da bi se radilo sa GeoSpatial podacima na ravnoj površini morala bi se kreirati ravna projekcija sferoida. Postoji mnogo matematičkih modela prema kojima se sferoid projektuje na ravnu površinu.

Najpoznatiji modeli su: - Mercator projection, - The Peters projection, - Lambert Conformal Conic projection

8

Page 9: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

U zavisnosti od toga koji model je izabran, konverzija geospatial podatka sa sferoida na ravnu površinu dovodi do nekih poremećaja u veličini mape. Ovo se vidi na konkretnom primeru na slici 2. gde je Grenland priblizno iste veličine kao i Sjedinjene Američke Države, iako je u stvarnosti je značajno manji. Iz ovih razloga planarni model pokazuje bolje rezultate na manjim geografskim površinama kao što su države, regioni, gradovi….

Slika 2. Planarni Spatial model

1.2 Standardi

Open Geospatial Consortium (OGC) predstavlja internacionalnu volontersku organizaciju čiji članovi održavaju Geography Markup Language (GML) standard. OGC koordinira sa ISO TC 211 standardima kako bi postojala konzistentnost između OGC i ISO standarada. GML je 2007. godine usvojen kao ISO 19136 standard.

GML je u osnovi XML standard podataka za GeoWeb infrastrukturu, i kao takav omogućuje uređajima koji se povezuju na internet pristup geografskim informacijama. Između ostalog ove informacije mogu sadržati podatke o uslovima u saobraćaju ili lokacijama od značaja.

1.2.1 GML model

Originalni GML model je bio baziran na World Wide Web konzorcijumovom Resource Description Framework (RDF). Kasnije je OGC uveo XML šeme kako bi se omogućila upotreba postojećih geografskih baza, a čiju je relacionu strukturu XML mogao jednostavno definisati. Rezlutujuća XML šema je zadržala mnogo funkcionalnosti od samog RDF-a.

9

Page 10: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

GML sadrži bogat set primitiva koji se koriste da bi se kreirale specifične šeme ili jezici. Ovi primitivi uključuju:

- Feature - Geometry - Coordinate Reference System - Time- Dynamic feature- Coverage (including geographic images)- Unit of measure- Map presentation styling rules

10

Page 11: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

2. Spatial baze podataka

2.1 Definicija spatial baze podataka

Postoje mnoga polja u kojima je potrebno upravljati geometrijskim, geografskim ili spatial podacima, ondnosno podacima vezanim za prostor. Predmet interesovanja bi mogla biti površina zemlje ili 3D prostori koji predstavljaju lance molekula. Sve od nastanka sistema za upravljanje relacionim bazama podataka postoje pokušaji da se podaci organizuju u podsisteme baza podataka. Jedna od bitnih tehnoloških karakteristika podsistema za upravljenje spatial podacima treba da bude sposobnost da se nosi sa velikim skupovima relativno malih geometrijskih objekata, npr. set od 10000 poligona.

U zavisnosti od usluga koje podsistemi mogu da pruže, postoji nekoliko izraza kojima se definišu:

Pictorial Image Geometric Geographic Spatial.

Izrazi “pictorial” ili “image” sistemi baza podataka potiču iz činjenice da su podaci inicijalno dobijeni iz digitalnih rasterskih slika (npr. slike sa satelita). Izraz spatial sistemi baza podataka naročito je popularizovan serijom konferencija “Symposium on Large Spatial Databases (SSD)” koji se održava dva puta godišnje, počevši od 1989. godine. U početku, na ovim konferncijama, kao tema je dominirala potreba da sistemi za upravljanje podacima sadrže objekte u prostoru umesto slika. Ovo je dovelo do pojave dva tipa sistema za upravljanje podacima, a koji se odnose na podatke vezane za prostor: “Image database systems” i “Spatial database systems”. Sistemi za upravljanje bazama podataka zasnovanih na slikama mogu uključivati tehnike za analiziranje koje mogu ekstrahovati objekte iz slika, i nad njima izvršiti neke spatial operacije.

Postoji nekoliko definicija spatial sistema za upravljanje bazama podataka1:1. Spatial sistem za upravljanje bazama podataka je RDMBS2. Sadrži spatial tipove podataka u svom modelu podataka i jeziku upita3. Pruža podršku za spatial tipove podataka u samoj implementaciji, omogućujući

barem spatial indeksiranje i efikasne algoritme za izvršavanje join-a

1 Precizna definicija ne postoji, i razni autori različito definišu šta je spatial sistem za upravljanje bazama podataka.

11

Page 12: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

2.2 Modeliranje

Glavna istraživanja vezana za spatial sisteme baza podataka su ona čija je primena u Geografskim informacinim sistemima (GIS).

Postoje dva važna pogleda o tome šta spatial sistemi baza podataka treba da reprezentuju:

1. Objekte u prostoru. Predstavljaju različite objekte u prostoru koji imaju sopstveni geometrijski opis

2. Prostor. Reprezentuje sam prostor i daje neki opis o svakoj tački u njemu.

Prvi pogled reprezenzuje sam model, npr. gradove, reke, jezera... Drugi pogled reprezentuje tzv. tematske celine, npr. država isparticionisana na područja. Oba pogleda mogu biti korišćena za reprezentaciju kako pojedinačnih objekata, tako i objekata povezanih u prostoru.

Za modelovanje pojedinačnih objekata koriste se: tačka, linija i region. U geometrijskom aspektu tačka predstavlja jednu lokaciju u prostoru. Ovo ne mora da znači da tačka reprezentuje sam oblik. Kod mapa koje imaju veliko skaliranje tačke se mogu koristiti za prikaz grada, iako on sam po sebi predstavlja veliku geografsku površ. Linija (u ovom obliku reprezentovana krivom u prostoru), predstavlja osnovu za prikaz reka, puteva, električnih vodova... Region se koristi za modelovanje 2D prostora kao što su jezera, države, igrališta...

Slika 3. Tri osnovna tipa pojedinačnih objekata: tačka, linija i region

12

Page 13: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Dve najvažnije instance spatial povezenih kolekcija objekata su particije i mreže. Particije mogu biti prikazane kao skupovi regiona za koje je obavezno da budu disjunktni. Na ovaj način se najčešće prikazuju regioni koji imaju zajedničke granice. Particije se koriste za prikaz tematskih mapa. Mreže mogu biti prikazane kao grafovi na površini, a sastoje se od skupova tačaka koje formiraju čvorove, i linija, koje predstavljaju geometrijske granice. Mreže se koriste za prikaz auto-puteva, reka, pruga, ...

Slika 4. Particije i mreže

U osnovi tačka u prostoru je definisana parom realnih brojeva. Nažalost, u praksi u računarskoj implementaciji ne postoje realni brojevi već njihova konačna i limitirana aproksimacija. Iz ovog razloga nastaje mnogo problema u geometrijskim proračunima. Na primer, presek između dve tačke će biti okružen mrežom (takva je reprezentacija) koja je predstavljena tačkom. Ukoliko se napravio test da li je tačka na jednoj od linija, rezultat bi bio netačan.

2.3 Spatial tipovi podataka

Sistem spatial tipova podataka ili spatial algebra može da obuhvati apstrakcije za tačke, linije i regione, veze između njih, kao i operacije za njihovo slaganje. Kao primer spatial algebre može se uzeti ROSE algebra.

ROSE algebra nudi tri tipa podataka tačke, linije i regione, a čije vrednosti su bazirane na realmima. Da bi se ove vrednosti opisale koriste se R-block i R-face. Za izabrani realm R, R-block je povezan skup segmenata linija iz R. R-face je u osnovi poligon sa rupama koji može biti definisan preko segmenata realma.

ROSE algebra je bazirana na second-order signature koji dozvoljava opis polimorfnih operacija kvantifikatorima vrsta (možemo ih smatrati skupovima tipova). Dva takva skupa su EXT = {lines, regions} i GEO = {points, lines, regions}.

13

Page 14: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Postoje četiri klase topoloških relacija:1. Spatial predikati koji izražavaju topološke veze:

∀ geo in GEO. ext1, ext2 in EXT. area in regionsarea-disjoint.∀ ∀

geo × regions → bool inside

ext 1 × ext 2 → bool intersects, meets

area × area → bool adjacent, encloses

2. Operacije koje vraćaju atomske vrednosti spatial tipova podataka geo in GEO.∀

lines × lines → points intersection

regions × regions → regions intersection

geo × geo → geo plus, minus

regions → lines contour

3. Spatial operatori koji vraćaju brojeve: obj in OBJ. geo, geo1, geo2 in GEO.∀ ∀

set(obj) × (obj → geo) → geo sum

set(obj) × (obj → geo1) × geo2 → set(obj) closeset

U ovom primeru sum je spatial agregatna funkcija.

Postoji nekoliko bitnih pojmova vezanih spatial tipove podataka:

1. Proširivost. Postoji generalni dogovor da su definicije tipova i operatori zavisni od aplikacije. Takođe moraju postojati dodatni ili alternativni tipovi i operatori koji bi kasnije vodili proširivosti sistema.

2. Kompletnost. Ostaje pitanje da li postoji neki formalan kriterijum koji kaže da je konkretna operacija kompletna.

3. Jedan ili više tipova? Neki autori tvrde da bi trebalo da postoji samo jedan osnovni tip geometry, a da se bilo koja instanca može dobiti miksom ovog tipa.

4. Skup operacija. Spatial algebra ne bi trebalo da nudi samo operacije nad atomskim tipovima, već i sa spatial povezanim skupovima podataka.

14

Page 15: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

2.4 Spatial veze

Uz operacije koje nudi spatial algebra, spatial veze su najvažnije. Na primer, one omogućuju izvršavanje upita koji će vratiti sve objekte koji su u datoj vezi sa objektom upita.

Postoji tri vrste spatial veza:1. Topološke spatial veze, kao što su dodavanje, pripadnost, nepripadnost.2. Direktne veze. Npr. iznad, ispod, severno_od, jugozapadno_od, ...3. Metričke veze. Npr. udaljenost < 100

2.5 Integracija geometrije u DMBS

Centralna ideja za integraciju geometrijskog modelovanja u DBMS model podataka je da se reprezentuju spatial objekti korištenjem objekata sa bar jednim atributom spatial tipa podataka. DBMS podaci moraju biti nasleđeni od strane spatial tipova podataka na nivou atomskih tipova. Za sada se relacini model podataka često koristi kao osnova.

relation drzava ( naziv: STRING, oblast: REGION, povrsina: INTEGER)relation grad (naziv: STRING, centar: POINT, oblast: REGION)relation reka (naziv : STRING, tok: LINE)

Primer 1. Primer reprezentacije

Spatial model podataka je integrisan u ER model kao kompleksan objektni model. Mnogo teže pitanje je kako integrisati particije i mreže. Za particije postoji mogućnost da se prikažu kao skupovi objekata reprezentovanih regionima. Važnost modelovanja particija je prepoznata i postoji sugestija da se uvede specijalan tip podataka AREA.

Modelovanje spatial mreža nije još uvek u centru pažnje u istraživanjima, ali postoji značajan broj ljudi koji radi na istraživanjima grafova u bazama podataka. Za ovaj model kao rešenje se predlaže GraphDB model. GraphDB nudi klase sa mogućnošću nasleđivanja, kao i u drugim objektno orijentisanim modelima, a dodatno prepoznaje tri vrste klasa:

Simple classes Link classes Path classes.

class vertex = pos: POINT;vertex class junction = name: STRING;vertex class exit = nr: INTEGER;link class section = route: LINE, no_lanes: INTEGER, top_speed: INTEGER

15

Page 16: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

     from vertex to vertex;path class highway = name: STRING as section+;

2.6 Upiti

Sa jedne tačke gledišta problem sa upitima je kako povezati operacije spatial algebre sa mogućnostima koje nudi DMBS jezik upita. Takođe postoje činjenice da spatial podaci zahtevaju grafičku reprezentaciju rezultata. Operacije za manipulaciju spatial atributima se mogu podeliti kao spatial select, spatial join, spatial function application, i drugi skupovi operacija.

Spatial selection. Striktno govoreći, ne postoje takve stvari kao što su spatial selekcija. Selekcija je operacija koja iz skupa objekata vraća one koji zadovoljavaju predikat. Ipak, izraz se u literaturi koristi za opis selekcije bazirane na predikatu.

Primeri spatial upita: Pronaći sve gradove u Vojvodini

cities select [ceneter inside Vojvodina] Pronaći sve reke koje pripadaju presecaju izabrani kvadrat

rivers select [route intersects Sqare] Naći sva naseljena mesta sa više od 35 000 stanovnika koja su udaljena manje od

200km od Rumecities select[dist(center,Ruma) < 200 and pop > 35000)

Poslednji primer pokazuje da uslovi upita mogu biti metrički upiti, koji se mogu pojaviti u konjukciji sa spatial predikatima.

Spatial join. Slično kao spatial selekcija, spatial join je join koji koji poredi bilo koja dva objekta korišćenjem predikata nad svojim vrednostima atributa.

Primeri spatial join-a: Gradovi sa državama kojima pripadaju

cities states join[center inside area] Za svaki put naći sve gradove koji su udaljeni manje od 50km

cities roads join[dist(center, route) < 50]

Spatial selekcije i join-i su toliko važni da je neophodno da budu podržani u spatial indeksiranjima i od strane specijalnih join algoritama, a najmanje za najvažnije spatial predikate.

Spatial function application.U skup-orijentisanim upitima nova vrednost spatial tipa podataka se izračunava za svaki upit u skupu. Razni spatial algebarski operatori dozvoljavaju umetanja kao što su filter operator, replace operator, extend operator. Extend operator uzima izraz i izračunava ga za svaki objekt u skupu, a zatim rezultujuću vrednost dodaje kao novi atribut objekta.

16

Page 17: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Primer: Za svaki put koji prolazi kroz Vojvodinu vratiti naziv, deo geometrije koja pripada Vojvodini i njenu dužinu.

roads select[route) intersects Vojvodina]extend [intersection(route, Vojvodina) {part}]extend [length(part) {plength}] project [rname, part, plength]

Other set operations. Ostali operatori nad skupovima predstavljaju operacije za manipulaciju celim skupovima spatial objekata i to na specijalan način: oni “leže” na interfejsu između spatial algebre i DBMS objektne algebre. Praktična vrednost operacija predstavlja mogućnost manipuacije particijama.

Neke od sugerisanih operacija su: Overlay. Izračunava elementarne regione koji nastaju kao rezultat preklapanja dve

particije. Može biti prikazan kao posebna vrsta spatial join-a. Fusion. Predstavlja specijalnu vrstu grupisanja. Objekti se grupišu po nekoj

određenoj vrednosti atributa. Voronoi. Daje iz skupa tačaka S odgovorajaći skup region objekata (Voronoi

diagram).

2.7 Grafički ulaz i izlaz

Tradicionalni sistemi za upravljanje bazama podataka uglavnom obrađuju alfanumeričke tipove podataka koji lako mogu biti uneti preko tastature i tekstualno reprezentovani rezultatom upita (npr. tabele). Za spatial baze podataka grafička reprezentacija vrednosti spatial tipova je od esencijalnog značaja. Na primer u GIS aplikacijama korisnik želi da na jednoj mapi vidi rezultate više izvršenih upita.

Osnovne potrebe okruženja za izvršavanje spatial upita su:1. Spatial tipovi podataka2. Grafički prikaz rezultata upita3. Grafičko preklapanje rezultata više upita4. Prikaz konteksta5. Mogućnost provere sadržaja ekrana6. Proširivost okvira (npr. Mogućnost zumiranja)7. Modifikacija grafičkog prikaza (npr. Bojenje)8. Legenda9. Mogućnost postavki labela10. Skaliranje selektovane oblasti11. Definisanje potpodručja na rezultatima upita

Za potrebe prikaza podskupova rezultata i opisa svakog pojedinačnog podskupa razvijen je specijalni graphical presentation language – GPL.

17

Page 18: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

2.8 Integrisanje geometrije u jezik upita

Integrisanje geometrije u jetik upita mora da zadovolji tri glavna aspekta:1. Zapis spatial vrednosti kao konstatni u jeziku upita i grafički ulaz tih

konstatni2. Izražavanje četiri klase fundametalnih operacija3. Opis prezentacije rezultata

Zapis spatial vredosti kao konstanti. U tradicionalnim jezicima upita konstante pripadaju alfanumeričkim tipovima podataka i kao takve lako se tekstualno reprezetuju i mogu se unositi korišćenjem tastature. Kod spatial tipova podataka ovo nije tako jednostavno. Za ulaz se može koristi grafički uređaj ili može biti izračunat prethodnim upitom. Ukoliko je ulaz izračunat nekim drugim upitom, postoji mogućnost da su uvedena imena za neke vrednosti.

Izražavanje četiri klase fundametalnih operacija. Očigledno, može se zaključiti da ne postoje problemi za izražavanje spatial selekcija i spatial join-a, pošto su selekti i join-i podržani od strane svih jezika upita. Suprotno od toga, ostali setovi operacija spatial algebre se ne uklapaju u logiku klasičnih selekcija jezika upita.

Opis prezentacije rezultata. Može se raspravljati o tome da li ovo treba da bude deo specifikacije jezika upita, ili treba da bude definisano korisničkim interfejsom. Postoje interesantne obzervacije na tu temu koje govore o tome da prezentacioni jezik treba da bude uključen u sam jezik upita, kako bi determinisali pojedine podskupove odgovora.

2.9 Spatial indeksiranje

Glavna svrha spatial indeksiranja je podrška spatial selektima koji obrađuju velike skupove spatial objekata. Spatial indeksni metod organizuje površi i objekte na takav način da samo pojedini delovi površi ili podskupovi objekata imaju potrebu da se pojave kao rezultat upita. Postoje dva načina da se omogući spatial indeksiranje: (1) uvođenjem eksternih spatial struktura podataka koje su pridodate sistemu i (2) spatial objekti se mapiraju u jednodimenzionalni prostor tako da mogu biti sačuvani u standardne jednodimenzionalne indekse kao što su B-stabla.

U osnovi ideja spatial indeksa je korišćenje aproksimacija za izvršavanje upita. Ovo znači da indeks struktura upravlja objektima korišćenjem jednog ili više spatial ključeva koji su u osnovi mnogo jednostavniji od spatial tipova podataka. Upotreba aproksimacija vodi ka tzv. filter and refine strategiji za obradu podataka. Osnovni primer predstavlja bounding box aproksimacija.

18

Page 19: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Slika 5. Bounding box i grid aproksimacije

2.10 Podrška za spatial join

Spatial join obuhvata sve objekte koji su povezani spatial predikatom. U ovom slucaju klasicni join-i nisu primenljivi. Centralna ideja spatial join-a je strategija filtriranja i profinjavanja, koja koristi ideks strukturu. Spatial join može koristiti dve strategije: Grid approximation/bounding box i None/one/both operands perezentovanih indeks strukturom.

Kod grid aproksimacija, za strukture koje imaju overlap predikat, join algoritam pokušava da odredi parove kandidata. U osnovi vrši se paralelno skeniranje dva seta z-elemenata2 kojima odgovaraju dva skupa spatial objekata. Preklapanje, koje je za GIS sisteme jako važna operacija je, u stvari, specijalan slučaj. Generalni problem kod grid aproksimacije je što prevelika precinost vodi ka neefikasnosti, jer postoji previše z-elemenata po objektu, tako da dolazi do previše nepravilnih spajanja.

Ako se za korak filtriranja koristi bounding box strategija, problem predstavlja određivanje dva skupa trouglova R, S i sve parove (r, s), r R, s S, tako da r preseca s.∈ ∈ Ako nijedan operand nije predstavljen spatial indeksima, dobra tehnika je koristiti algortam baziran na presecima trouglova. Jedan od takvih algoritam je bb_join, koji je korišćen u Gral system.

Ukoliko je jedan operand predstavljen spatial indeksom onda se mogu koristiti index join ili repeated search join. Ovo je klasična tehnika koja koristi B-tree indeks, koji može biti primenjen i spatial strukture. Ukoliko se pretražuju veliki skupovi podataka, bb_join algoritam daje bolje rezultate.

Skorija istraživanja u ovoj oblasti fokusirana su na spatial joine kada oba operanda imaju spatial indeks. Osnovna ideja je da se nekako implementira sinhroni prolazak kroz dve indeks strukture. Paralelni prolazak kroz dva grida moguće je izvršiti implementiranje R-tree algoritama.

Spatial joini predstavljaju najkompleksnije operacije, i konstatno se vrše istraživanja na tom polju. Pošto join operacija daje najpribližnije tačne razultate, glavni problem je naći pravu meru između preciznosti i performansi.

2 Skupovi bit stringova, Orenstein

19

Page 20: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

2.11 Sistemska arhitektura

Na nivou sistemske arhitekture, problem predstavlja integracija svih alata koji su definisani kao neophodni da bi spatial podrška bila potpuna. Standardna arihtektura treba da bude proširena sledećim funkcionalnostima:

reprezentacija tipova iz spatial algebre procedure za atomske operacije spatial indeksne strukture tehnike filtriranja i profinjavanja algoritme za spatial join funkcije koštanja za sve operacije statistika za procenu izbora spatial selekta i spatial join-a ekstenzija optimizera koja mapira upite u specijalizovane metode obrade ekstenzija korisničkog interfejsa za grafičku reprezentaciju spatial tipova

Prva generacija GIS je implementirana direktno nad fajl sistemom i nije koristila mogućnosti DBMS kao što su definicije podataka visokog nivoa, fleksibilne upite, upravljanje transakcijama. Postoje dva glavna pristupa implementaciji i to su: višeslojna arhitektura (layered architecture) i dvostruka arhitektura (dual architecture).

Kod višeslojne arhitekture spatial funkcionalnosti se implementiraju “iznad” sistema za upravljanje bazama podaka.

Slika 6. Višeslojna arhitektura

Kod dvostruke arhitekture postoji gornji sloj koji integriše dva nezavisna sistema: DBMS podsistem koji obrađuje ne-spatial podatke i spatial podsistem za snimanje i manupulaciju prostornim podacima.

Slika 7. Dvostruka arhitektura

20

Spatial alati

Standardni RDMBS

Integracioni sloj

Standardni DBMS Spatial podsistem

Page 21: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Kod ovakvog pristupa spatial objekat je “razbijen” na dva dela. Prvi deo se sastoji iz ne-spatial atributa koji se čuvaju u DBMS. Drugi deo je spatial atribut i sadrži strukture podataka koji su impementirani direktno na fajl sistemu. Ova dva dela su povezana logičkim pokazivačima. Ovakav pristup je implementiran u većini komericjalnih GIS, kao i u nekim istraživačkim prototipovima.

Istraživanja na polju proširivih sistema baza podaka (npr. Postgres, Probe, EXODUS, GENESIS, Gral, Sabrina...) su imala cilj da omoguće ekstenziju u obliku kakvom su i zahtevane po specifikaciji.

Upotreba proširivih sistema vodi ka integrisanoj arhitekturi koja se zasniva na: Ne postoji razlika između standardnih tipova podaka (npr. String) i spatial tipa

(npr Region). Ovo uključuje i operacije, tako da npr. konkatenacija stringova, u principu, se ne razlikuje sa presekom regiona. Sistemska arhitektura treba da ih tretira na isti način.

Ne postoji razlika između klasterovanih ili sekundarnih indeksa za standardne atribute i spatial atribute.

Postoji sličnost, odnosno sort/merge join je isti kao bounding box join. Mehanizam za optimizaciju upita ne bi trebao da pravi razliku između spatial i

ostalih operacija.

Ovako integrisana arihtektura u princupu može biti implementirna kao novi DBMS napisan iz početka ili kreiranjem prikladnih ekstenzija na postojećem DBMS-u. Spatial DBMS je baziran na proširivom DBMS-u kako bi ubuduće bilo moguće dodavati funkcionalnsti koje nedostaju. Ovo je veoma bitno pošto još uvek ne postoji tačan skup spatial algebre.

Arhitektura proširivog DBMS-a u svojoj osnovi nudi slotove i registracijske servise za sve vrste ekstenzija. Nekoliko spatial DBMS prototipa je bazirane na prošrivoj arhitekturi (npr. Probe, DASDBS GEO-Kernel, Gral). Među poslednjim prototipovima su GEO++ baziran na PostgreSQL i GeoSabrina bazirana na Sabrina sistemu.

21

Page 22: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Slika 8. Integrisna, prošriva arhitektura

22

Page 23: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

3. MS SQL Server 2008 Spatial podrška

3.1 Performanse i mogućnosti

Spatial tipovi podataka su implentirani kao CLR3 sistemski tipovi, što znači da je podrška za njih ugrađena u sam jezik. SQL Server 2008 donosi povećanje maksimalne veličine CLR tipova od 8000 bajtova iz SQL Server 2005 na veličinu od 2GB, što omogućuje skladištenje izuzetno velikih elementa kao što su kompleksni poligoni koji se sastoje iz velikog broja tačaka.

SQL Server 2008 omogućava kombinaciju Spatial podataka sa bilo kojim drugim podacima, što omogućava ukidanje potrebe za održavanjem odvojenih “dedicated” spatial servera, a sa druge strane postoji mogućnost za izvršavanje upita visokih performansi.

Performanse upita su drastično povećane uvođenjem spatial indeksa. Spatial indeksi su definisani kao mrežno orijentisana hierarhija na više nivoa. Konceptualni model spatial indeksa prikazan je na slici ispod.

Slika 9. Model spatial indeksa u MS SQL Server 2008

3 Common Language runtime

23

Page 24: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

SQL Server optimizer upita kreira odluke na osnovu “koštanja” izvršenja implementacije, a pošto su spatial indeksi integralni deo baze podataka, sam server odlučuje hoće li koristiti spatial indeks ili ne.

3.2 Uvoz spatial podataka

Geografski i geometrijski tipovi podataka uključuju metode za uvoz i izvoz podataka u Well Known Text (WKT) i Well Known Binary (WKB) formate koji su definisani od strane OGC-a. Takođe je geografske podatke moguće uvoziti korišćenjem Geographic Markup Language (GML) formata. Geografski podaci su već dostupni iz mnogih državnih i komercijalnih izvora, a takođe mogu biti lako izvezeni iz jedne od mnogobrojnih GIS aplikacija i GPS sistema.

3.3 Spatial tipovi podataka

Spatial tipovi podataka u MS SQL Server 2008 su : Point LineString Polygon GeomCollection MultiPolygon MultiLineString MultiPoint

Slika 10. Organizacija spatial podataka u MS SQL Server 2008

24

Page 25: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

3.4 Osnovne SQL operacije sa spatial podacima

- Kreiranje tabele sa Spatial podacima:

CREATE TABLE Venue(    Id INT IDENTITY(1,1) NOT NULL,    Name NVARCHAR(256),    Location GEOGRAPHY)

- Unos podataka u tabelu sa spatial podacima

1. INSERT INTO Venue VALUES ('HBOS', 

     geography::STGeomFromText(        'POINT(55.9271035250276  ◊ ­3.29431266523898)',4326));

2. INSERT INTO Venue VALUES(     'Glasgow Caledonian University',     geography::Parse(         'POINT(55.8659449685365     ◊ ­4.25072511658072)')); 

3. INSERT INTO Venue VALUES(     ‘Dundee University',      geography::STGeomFromWKB(         0x01010000000700ECFAD03A4C4001008000    B5DF07C0,◊         4326));

4. INSERT INTO Venue VALUES(     'Microsoft Campus, TVP',     geography::Point(51.4618933852762, ­0.926690306514502, 4326));

5. INSERT INTO Venue VALUES(     Microsoft Edinburgh Office',     geography::STPointFromText( 'POINT(55.9523783996701  ◊­3.2051030639559)', 4326));

25

Page 26: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

- Čitanje podataka iz spatial vrši se standardnim SQL upitom. Spatial tipovi imaju ekstenziju specifičnu za Microsoft, a to je mogućnost pozivanja funkcije nad poljem koje predstavlja rezultat upita.

SELECT Id, Name, Location.ToString() As LocationTextFROM Venue

Slika 11. Rezultat izvršenja spatial upita

26

Page 27: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

3.5 Spatial tipovi podaka i operacije nad njima

3.5.1 LineString

LineString služi za predstavljanje niza koordinata. Ovo je jednodimenzionalni tip.

Njime se predstavljaju linearni objekti, kao što su: Putevi Pruge Reke...

LineString se definiše sledećim Stringom:

geography::STGeomFromText('LINESTRING (49.0170682501048 2.54223106428981, 52.3141136672348 4.7684115730226, 55.9505973290652 ­3.36429820396006, 51.4748916216195 ­0.444141207262874, 40.4884308949113 ­3.56782372109592)', 4326);

Slika 12. Primer prikaza rezultata upita u kome je rezultat LineString tipa

Operacije nad poljima koja su tipa LineString su izuzetno korisne. Jedan od demonstrativnih primera na Microsoft-ovim seminarima je prikaz površine koju će dunav poplaviti u koliko se izlije po 5km na svaku stranu obale.

27

Page 28: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

- Razdaljina se može izračunati pozivom funkcije Length. Funkcije za izačunavanje razdaljina su izuzezno korisne u GPS uređajima.

DECLARE @g geography

SELECT @g = geography::Parse('LINESTRING (49.0170682501048 2.54223106428981, 52.3141136672348 4.7684115730226, 55.9505973290652 ­3.36429820396006, 51.4748916216195 ­0.444141207262874, 40.4884308949113 ­3.56782372109592)');SELECT @g.STLength()­­­­­­­­­­­­­­­­­­­­­­2845161.34954758

Među linijama definisanim LineString tipom moguće je odrediti i tačke preseka. Ova tačka se određuje upotrebom funkcije STIntersection.

DECLARE @a geometry, @b geometry, @c geometry

SELECT @a = geometry::Parse('LINESTRING(0 0, 10 10)'),@b = geometry::Parse('LINESTRING(10 0, 0 10)'),@c = geometry::Parse('LINESTRING(20 20, 30 30)');

SELECT @a.STIntersection(@b).ToString() AS [first], @a.STIntersection(@c).ToString() AS [second],@a.STIntersects(@c) AS [third]

first          second                      third­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­POINT (5 5)    GEOMETRYCOLLECTION EMPTY    0

Za skup tačaka definisan ovim tipom, u svakom trenutku je moguće dobiti poligon kome pripadaju pozivom funkcije STEnvelope. Rezultat poziva ove funkcije je poligon koji je definasan kombinacijom minimalne i maksimalne vrednosti X i Z koordinata za instancu Geometry tipa.

28

Page 29: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

3.5.2 Polygon

Poligoni se reprezentuju nizovima koordinata u zatvorenom prstenu u kome su prva i poslednja koordinata jednake. Koriste se za definisanje dvodimenzionalnih površina.

Poligon se definiše tipom Polygon.

geography::STGeomFromText('POLYGON ((55.8676369395107 ­4.23691584728658, 55.8703819289804 ­4.25517079420388, 55.8681968506426 ­4.27013483829796, 55.8562753535807 ­4.26963351666927, 55.8552713692188 ­4.25607042387128, 55.8528072573245 ­4.24729574471712, 55.8606443367898 ­4.23971313983202, 55.8676369395107 ­4.23691584728658))', 4326);

Slika 13. Primer prikaza rezultata upita u kome je rezultat Polygon tipa

29

Page 30: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

- Dužina i površina poligona se izračunavaju funkcijama STLength i STArea. Konkretna primena ovih funkcija može biti za izračunavanje površina država, jezera ili kod sistema za prodaju nekretnina za izračunavanje površine stana. Dužina poligona se može koristiti za izračunavanje dužine državne granice koju on predstavlja.

DECLARE @g geography;

SELECT @g = geography::STGeomFromText('POLYGON ((55.8676369395107 ­4.23691584728658, 55.8703819289804 ­4.25517079420388, 55.8681968506426 ­4.27013483829796, 55.8562753535807 ­4.26963351666927, 55.8552713692188 ­4.25607042387128, 55.8528072573245 ­4.24729574471712, 55.8606443367898 ­4.23971313983202, 55.8676369395107 ­4.23691584728658))', 4326);

SELECT @g.STLength()/1000.0 AS [Length (km)], @g.STArea()/1000000.0 AS [Area (km^2)]

Length (km)            Area (km^2)­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­6.74090984542709       2.96444752890813

- Pripadnost poligonu se izračunava pozivom funkcije STIntersects. Najbolji primer za upotrebu ove funkcije je prikaz kompletnog toka reka u nekoj državi ili regiji.

DECLARE @g geography;

SELECT @g = geography::STGeomFromText('POLYGON ((55.8676369395107 ­4.23691584728658, 55.8703819289804 ­4.25517079420388, 55.8681968506426 ­4.27013483829796, 55.8562753535807 ­4.26963351666927, 55.8552713692188 ­4.25607042387128, 55.8528072573245 ­4.24729574471712, 55.8606443367898 ­4.23971313983202, 55.8676369395107 ­4.23691584728658))', 4326);

SELECT Name FROM VenueWHERE Location.STIntersects(@g) = 1

Name­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­Glasgow Caledonian University

30

Page 31: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Funkcija STDifference kao rezultat daje skup tačaka osnovnog poligona koje ne pripadaju i poligonu koji je parametar poziva.

SELECT @g.STDifference(@g).ToString()

31

Page 32: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

32

Page 33: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

4. Primer baze potadaka sa spatial podacima

MS SQL Server 2008 je planiran da bude dostupan u decembru 2008. godine. Za sada ne postoje kvalitetni nekomercijalni alati koji bi omogućili uvoz geospatial podataka u samu bazu. Takođe još uvek ne postoji dovoljno literature vezane za samu implementaciju spatial tipova u samom SQL Serveru. Primer upotrebe dela spatial mogućnost prezentovan je aplikacijom koja se popularno zove potapanje podmornica (Battleship).

4.1 Model podataka Battleship baze

Model baze predstavlja osnovu za implementaciju igre čiju osnovu predstavljaju tabla i brodovi raspoređeni na njoj. Model prikazuje kombinaciju spatial i osnovnih tipova podaka.

Microsoft je spatial tipove implementirao u sam CLR, a odmah je dao i podršku u .NET kroz CLR tipove podataka. Rezultat operacija nad ovim modelom jeste praktična impentacija DBMS-a koji istovremeno obrađuje i spatail i standardne podatke.

Do trenutka pisanja rada nije izašla produkcijska verzija MS SQL Server 2008 Management Studio vizelnog okruženja, tako da se tačno ne zna koji alati će biti implementirani u finalnoj veriziji. Po poslednjim informacijama u verziju će biti uključen i modul za vizuelnu reprezentaciju upita.

33

Page 34: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Slika 14. Model podataka

34

Page 35: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

4.2 Prikaz spatial podataka

MS SQL Server 20084 iako donosi nativnu podršku za spatial tipove, dolazi bez alata za prikaz rezultata upita. Kao jedan od razloga može se pretpostaviti očekivanje kompanije da se MS Visual Earth sa svojim integrecijskim servisima koristi za ovakve stvari. Ovo ograničava korisnike koji žele da uporede mogućnosti MS SQL Server 2008 sa implementacijama ostalih proizvođača.

Trenutno postoji mnogo open source rešenja koja mogu da ispišu podatke definisane WTK formatom. Ovakva rešenja imaju prilično limitiran set opcija, i uglavnom se koriste za prikaz geometrijskih tipova. Jedan od njih je i ShapeDesigner koji predstavlja .NET aplikaciju za prikaz geografskih prikaza podataka. Ova aplikacija ima mogućnost prikaza podataka iz tekstualnog editora, kao i direktnom konekcijom na bazu.

Da bi se prikazalo trenutno stanje table sa brodovima, potrebno je pozvati stored procedure Cheat. Rezultat poziva ove procedure je lista brodova sa pripadajućim koordinatam definisanim LineString tipom. Rezultat prikaza je na slici 15.

4 U verziji koju je Microsoft besplatno delio na svojim konferencijama

35

Page 36: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Slika 15. Prikaz spatial podataka.

36

Page 37: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

4.3 Plan izvšavanja spatial upita

U MS SQL Server 2008 spatial operacije se tretiraju jednako kao i sve ostale operacije nad standardnim tipovima podataka. Ovo omugćuje kreiranje izuzetno kompleksnih upita koji kombinuju standardne i spatial tipove.

Microsoft, u svojim prezentacijama novog SQL Servera često prikazuje primere koji demonstriraju, pravu snagu spatial tehnologije. Jedan od demostrativnih primera, čija brzina izvršavanja je gotovo ravna brzini izvršavanja standardnih upita, je izlistavnje svih poštanskih ispostava u Severnoj Americi. Izvršavanje ovako zahtevnog upita je moguće zahvaljujući naprednim tehnikama za ocenjivanje i optimizaciju spatial upita. Takođe, visoke performanse omogućuju i spatial indeksi koji su deo standardne implementacije.

Da bi se dobila prava slika brzine rada spatial upita bilo bi potrebno napraviti uporedne testove MS SQL Servera sa bazama ostalih prozvođača. Ovakva testiranja, sa većim količinama podataka, mogu se očekivati tokom 2009. godine.

Na slici 16. može se videti deo plana izvršenja upita za poziv funkcije Shoot.

37

Page 38: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Slika 16. Plan izvršavanja upita

38

Page 39: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

4.4 SQL implementacija aplikacije

Aplikacija predstavlja osnovnu MS SQL Server 2008 bazu podataka sa spatial podacima i stored procedurama i funkcijama koje implementiraju logiku aplikacije. Zbog kašnjenja sa izlaskom produkcijske verzije5 MS SQL Server 2008 i manjka alata za migraciju mapa, ovaj primer samo pruža uvid u deo spatial implementacije, pre svega bazirane na geometrijskim tipovima podataka.

Model baze (sl. 14) sastoji se iz sedam tabela koje kombinuju standardne i spatial tipove podataka. Podaci su zapisani u WKT formatu, i moguće ih je kombinovati u upitima i join-ima.

Definicije tabela koje ne sadrže spatial tipove su iste kao i u prethodnim verzijama MS SQL Servera i nema potrebe ih posebno razmatrati.

Tabele koje sadrže spatial tipove su: GamePlayerShip. Ovo je osnovna tabela u aplikaciji i predstavlja poziciju

konkretnog broda za iguru na tabli. Pozicija broda definisana je atributom Line koji je Geomtery tipa. CREATE TABLE [dbo].[GamePlayerShip](

[Id] [int] IDENTITY(1,1) NOT NULL,

[GameId] [int] NOT NULL,

[PlayerId] [int] NOT NULL,

[ShipId] [tinyint] NOT NULL,

[Line] [geometry] NOT NULL,

[Hits] [tinyint] NOT NULL,

 CONSTRAINT [PK_GamePlayerShip] PRIMARY KEY CLUSTERED 

(

[Id] ASC

)WITH   (PAD_INDEX     =   OFF,   STATISTICS_NORECOMPUTE     =   OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

)ON[PRIMARY]

5 Verzija je tokom cele godine dostupna Microsoft Gold Certificated partnerima

39

Page 40: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

GamePlayerShot. Ova tabela predstavlja pokušaj potapanja od strane igrača. Spatial tip je implementiran preko atributa Point koji označava jedno polje na tabeli koje je korisnik odabrao.

CREATE TABLE [dbo].[GamePlayerShot](

[Id] [int] IDENTITY(1,1) NOT NULL,

[GameId] [int] NOT NULL,

[PlayerId] [int] NOT NULL,

[Point] [geometry] NULL,

[Result] [tinyint] NOT NULL,

  CONSTRAINT [PK_GamePlayerShot] PRIMARY KEY CLUSTERED(

[Id] ASC  )WITH   (PAD_INDEX     =   OFF,   STATISTICS_NORECOMPUTE     =   OFF,  

IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)ON[PRIMARY]

)ON[PRIMARY]

Četiri osnovne procedure koje implementiraju logiku aplikacije su:

NewGame. Kao parametar zahteva ime igrača da bi se kreirali igrač i sama igra, a zatim se generiše random tabela sa brodovima. Funkcija vraća id igrača i id igre koji se koriste za pozive ostali procedura. Procedura poziva još jednu proceduru AddShip koja dodaje brod na tablu.

CREATE PROCEDURE [dbo].[NewGame] (@Name NVARCHAR(100)

) ASBEGIN

­­postavi brojaceDECLARE @GameId   INTDECLARE @PlayerId INTDECLARE @BoardSize INTSET @BoardSize = 10INSERT INTO Game VALUES (GETDATE(), GETDATE(),NULL)SET @GameId = SCOPE_IDENTITY()SELECT @PlayerId = IdFROM   Player WHERE Name = @NameIF @PlayerId IS NULLBEGIN

INSERT INTO Player VALUES (@Name)SET @PlayerId = SCOPE_IDENTITY()

END INSERT INTO GamePlayer VALUES (@GameId, @PlayerId, 0, 0)

40

Page 41: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

DECLARE @StartX TINYINTDECLARE @StartY TINYINTDECLARE @EndX TINYINTDECLARE @EndY TINYINTDECLARE @Orientation BITDECLARE ShipCursor CURSOR FORSELECT Id, Length FROM Ship ORDER BY Length DESCOPEN ShipCursor  ­­­ (zatvoriti kasnije)­­­ Cursor InfoDECLARE @ShipId TINYINT; DECLARE @ShipLength TINYINTFETCH NEXT FROM ShipCursor INTO @ShipId, @ShipLengthWHILE (@@FETCH_STATUS <> ­1)BEGIN

DECLARE @placed BITSET @placed = 0WHILE (@placed = 0)BEGIN

PRINT '­­­ Placing ship '+CAST (@ShipId AS VARCHAR(2))

SET @Orientation = ROUND(RAND(),0)IF @Orientation = 0BEGIN ­­ 'Horizontal'

SET @StartX = ROUND(RAND()*(@BoardSize­1­@ShipLength)+1,0)

SET @StartY = ROUND(RAND()*(@BoardSize­1)+1,0)SET @EndX = @StartX + @ShipLength ­ 1SET @EndY = @StartY

ENDELSEBEGIN ­­ 'Vertical'

SET @StartX = ROUND(RAND()*(@BoardSize­1)+1,0)SET @StartY = ROUND(RAND()*(@BoardSize­1­

@ShipLength)+1,0)SET @EndX = @StartX SET @EndY = @StartY + @ShipLength ­ 1

ENDPRINT 'Start:'+CAST (@StartX AS VARCHAR(2)) 

+','+CAST(@StartY AS VARCHAR(2))+ ' End:'+CAST (@EndX AS VARCHAR(2)) 

+','+CAST(@EndY AS VARCHAR(2))EXEC AddShip @GameId, @PlayerId, @ShipId, @StartX, 

@StartY, @EndX, @EndYSELECT @placed  = COUNT(*)FROM   GamePlayerShipWHERE  GameId   = @GameIdAND    PlayerId = @PlayerIdAND    ShipId   = @ShipId

END ­­ WHILESET @placed = 0

FETCH NEXT FROM ShipCursor INTO @ShipId, @ShipLengthENDCLOSE ShipCursorDEALLOCATE ShipCursor

41

Page 42: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

SELECT @GameId AS GameId,      @PlayerId AS PlayerId,      'Igra je spremna za start. Za pocetak izvrsite EXEC Shoot 

' + CAST(@GameId AS VARCHAR(10)) + ',' + CAST(@PlayerId AS VARCHAR(10)) + ',' + '[x],[y] '

END

Shoot. Predstavlja osnovnu proceduru za samu igru i pozive spatial operacija. Za izvršavanje procedure potrebno je proslediti id igre i id igrača. Pozivom procedure izvrašava se “pucanj”, odnosno pokušava se pronaći brod ili deo broda. Kao rezultat poziva vidi se da li je brod pogođen ili je bio promašaj.

CREATE PROCEDURE [dbo].[Shoot] ( @GameId   INT @PlayerId INT, @X TINYINT, @Y TINYINT) ASBEGINSET NOCOUNT ON;DECLARE @NumberOfShips TINYINTSET @NumberOfShips = 5DECLARE @point geometrySET @point = geometry::STGeomFromText('POINT('+CAST(@X AS 

VARCHAR(2))+' '+CAST(@Y AS VARCHAR(2))+')',4326);DECLARE @GamePlayerShipId INTDECLARE @ShipId INTDECLARE @Result INTSET @Result = 0­­ Da li je ta tacka vec probanaSELECT @Result = COUNT(*) FROM   GamePlayerShot WHERE  Point.STIntersects(@point) = 1AND    GameId = @GameIdAND    PlayerId = @PlayerIdIF @Result > 0BEGIN ­­ Vec pokusana ­ promasaj

SET @Result = 0INSERT INTO GamePlayerShot VALUES (@GameId, @PlayerId, 

@point, @Result)ENDELSEBEGIN­­ da li tacka preseca liniju broda

SELECT  @GamePlayerShipId = Id, @ShipId = ShipId

FROM GamePlayerShipWHERE [Line].STIntersects(@point) = 1AND GameId = @GameIdAND PlayerId = @PlayerIdIF @GamePlayerShipId IS NOT NULL BEGIN ­­ pogodak

­­ Update brodaUPDATE GamePlayerShip

42

Page 43: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

SET    Hits = Hits + 1WHERE  GameId = @GameIdAND    PlayerId = @PlayerIdAND    ShipId = @ShipId­­ provera da li je broj potpljenSELECT @Result = CASE WHEN (GPS.Hits = LS.Length) THEN 2 ELSE 1 ENDFROM   GamePlayerShip GPSINNER JOIN Ship LS ON LS.Id = GPS.ShipIdWHERE  GameId = @GameIdAND    PlayerId = @PlayerIdAND    ShipId = @ShipId

END­­ snimanje pokusajaINSERT INTO GamePlayerShot VALUES (@GameId, @PlayerId, 

@point, @Result)IF @Result = 2BEGIN ­­ Potopljen jedan, provera ostalih

SELECT @Result = CASE WHEN COUNT(GPS.Id) = @NumberOfShips THEN 3ELSE 2 END

FROM    GamePlayerShip GPSINNER JOIN Ship LS ON LS.Id = GPS.ShipId

AND GPS.Hits = LS.Length ­­ sunkWHERE   GameId = @GameIdAND     PlayerId = @PlayerId

ENDIF @Result = 3BEGIN ­­ Pobeda, pamti se rezultat

UPDATE GamePlayerSET    Score = (SELECT SUM(LS.Points)FROM   GamePlayerShip GPSINNER JOIN Ship LS 

ON  LS.Id = GPS.ShipIdAND LS.Length = GPS.Hits

WHERE  GPS.GameId = @GameIdAND     GPS.PlayerId = @PlayerId)WHERE   GamePlayer.GameId = @GameIdAND     GamePlayer.PlayerId = @PlayerIdUPDATE GameSET    WinnerPlayerId = @PlayerId

,  TimePlayed = GETDATE()WHERE  Id = @GameId

ENDEND ­­ vec pokusanoSELECT @Result AS [Result]

 , DescriptionFROM AttackResult WHERE Id = @Result

END

43

Page 44: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Cheat. Procedura prikazije tretnutno stanje na tabeli. Cilj ove procedure nije upotreba prilikom same igre, već kao alat za testiranje i bolje razumevanje koda.

CREATE PROCEDURE [dbo].[Cheat] (@GameId INT,@PlayerId INT) ASBEGINSET NOCOUNT ON;SELECT LS.Name   AS [Ship]

, LS.Length AS [ShipLength], GPS.Hits  AS [NumberOfHits], GPS.Line.STAsText() AS [Location] 

FROM    GamePlayerShip GPSINNER JOIN Ship LS ON LS.Id = GPS.ShipIdWHERE GPS.GameId = @GameIdAND GPS.PlayerId = @PlayerId

END

Reset. Procedura čisti sve pokušaje igrača i omogućuje igru iz početka. Pošto je cilj ovog primera demonstracija spatial operacija, ova funkcija omogućuje nekoliko prolazaka kroz isto stanje u bazi kako bi se utvrdio i testirao njihov način funkcionisanja.

CREATE PROCEDURE [dbo].[ResetGame] (@GameId INT) ASBEGINSET NOCOUNT ON;UPDATE GameSET WinnerPlayerId = NULLWHERE Id = @GameIdUPDATE GamePlayerSET Score = 0WHERE GameId = @GameIdUPDATE GamePlayerShip SET Hits = 0 WHERE GameId = @GameIdDELETE FROM GamePlayerShot WHERE GameId = @GameIdEND

AddShip. Kao što je ranije navedeno AddShip predstavlja jednu od najvažnijih funkcija aplikacije. U ovom primeru ona se može koristiti u pozivu procedure NewGame kako bi se kreirala tabela spremna za igru, a takođe se može iskoristiti za dodatne testove kada se na postojeću tabelu dodaje novi brod.

CREATE   PROCEDURE   [dbo].[AddShip]   (@GameId   INT,@PlayerId   INT, @ShipId INT,@StartX TINYINT,@StartY TINYINT, @EndX TINYINT, @EndY TINYINT) ASBEGINSET NOCOUNT ON;DECLARE @line varchar(500);

44

Page 45: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

DECLARE @overlaps TINYINTSET @line = 'LINESTRING('+CAST(@StartX AS VARCHAR(2))+' 

'+CAST(@StartY AS VARCHAR(2))+','+CAST(@EndX AS VARCHAR(2))+' '+CAST(@EndY AS VARCHAR(2))+')'

SELECT @overlaps = COUNT(ShipId) FROM   GamePlayerShipWHERE  GameId = @GameIdAND  PlayerId = @PlayerIdAND  Line.STIntersects(geometry::STGeomFromText(@line, 4326)) = 1IF @overlaps = 0 

INSERT INTO GamePlayerShip( GameId, PlayerId, ShipId, Line, Hits) VALUES (@GameId, @PlayerId, @ShipId, 

geometry::STGeomFromText(@line, 4326), 0) ­­ default hits: 0ELSE

RAISERROR(N'Ship overlaps existing ships', 10, 10)END

45

Page 46: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

46

Page 47: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Zaključak

Napredak koji je ostvaren u hardverskoj industirji doveo je do pada cena uređaja koji obrađuju prostorne podatke, a samim tim i do njihove dostupnosti prosečnim korisnicima. Industrija softvera je ovo prepoznala i sada postoje besplatni servisi kao što su Google Earth ili Microsoft Visual Earth. Ovi servisi pružaju informacije koje su do skoro bile dostupne uskom krugu ljudi, sada su dostupne svakoj osobi koja ima širokopojasnu internet konekciju. Direktna posledica ovakvog toka razvoja geografskih informacionih sistema je izuzetno niska cena GPS uređja, koji se integrišu u automobile, PDA uređaje, a u poslednje vreme sve češće i u mobilne telefone.

Prozvođači sistema za upravljanje relacionim bazama podataka kao što su Oracle, IBM, Microsoft već godinama u svoje baze podataka postepeno uvode podršku za spatial tipove podataka. Oracle je već u verziji 8i imao neku vrstu podrške za prostorne tipove. MySQL, PostgreSQL i Micorsoft SQL Server 2005 su imali nadogradnje postojećih sistema na spatial sisteme. Međutim većina tih implementacija nije donosila sve funkcioalnosti koje bi jedan spatial DBMS trebalo da poseduje.

Microsoft je SQL Server 2008 prišao sa izuzetnom ozbiljnoću, organizujući razvojni tim čiji fokus je bio na implementaciji spatial podrške na osnovu OGC standarda. Ceo razvoj je izveden u beogradskom razvojnom centru. SQL Server 2008 je razvijen pod kodnim imenom Katamai i njegov izlazak se očekuje krajem 2008 godine. Na osnovu beta verzije koje su bile dostupne, i na osnovu koje je nastao i ovaj rad, utisak je da je podška za geometrijske tipove podataka detaljno implementirana i da joj se posvetila posebna pažnja. Podrška za geografske tipove je značajno slabija, ali se ovo ne može uzeti kao mana pošto se ni sam OGC nije precizno definisao šta sve podrazumevaju i kako bi trebalo implentirati ove tipove. Trenutno, dve najveće poteškoće u radu sa ovom verzijom SQL Server-a je nedostatak alata koji bi omogućili uvoz dostupnih spatial podataka. Na internetu postoji mnogo besplatnih tzv shape datoteka, ali ne posotoje grafička okružanje za njihov uvoz i on se mora vršiti korišćenjem alata iz komandne linije. Druga poteškoća u radu je nepostojanje aplikacije za prikaz rezultata upita. Sada se rezultati prikazuju isto kao i rezultati stanradnih SQL upita.

Sa sigurnošću se može reći da spatial baze podataka više ne predstavljaju budućnost, već su one prisutne i spektar njihove upotrebe je izuzetno širok. Agencije za proment nekretnina mogu koristi ove baze za izuzetno lako pronalaženje stanova koji zadovoljavaju zahtev klienta (npr. Sve stanove u određenom delu grada sa određenom kvadraturom), kompanije koje imaju velike magacine mogu koristiti spatial podatke kako bi locirale proizvode i preciznije pratile stanje na zalihama, GPS sitemi mogu u realnom vremenu obrađivati još veće i kompleksnije strukture podataka. Cela softverska industrija je prihvatila ovu tehnologiju tako da se su podrška za spatial dali Hibernate .NET spatial tipove kao deo CLR-a, LINQ... U narednom periodu se može očekivati sve više poslovnih aplikacija koje imaju snažnu podršku za spatial tipove.

47

Page 48: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Mogućnosti daljih unapređenja ovog rada su veoma velike. Podrška za spatial tipove podataka je sve veća, a konstantno raste broj firmi koje u svoje prozvode implementira spatial podršku. Osnovni pravci daljih istraživanja bi trebali ići ka geografskim tipovima podataka koji su do sada bili slabo podržani. Jedan od istraživačkih radova bi mogao napraviti komparaciju među implementacijama svih relevantnih RDMBS-ova koji su implementirali spatial mogućnosti (IBM DB2, Oracle, Microsoft, Postgres, MySQL...). Takođe se mogu istraživati biblioteke i tehnologije koje olakšavaju rad sa spatial bazama kao što su Hibernate, N-Hibernate, LINQ....

48

Page 49: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Literatura

[1] Spatial Databases: A Tour, Prentice Hall, 2003, Shashi Shekhar, Sanjay Chawla[2] With Application to GIS, 2001, Morgan Kaufmann , Philippe Rigaux, Michel O. Scholl, Agnes Voisard[3] GIS, Spatial Analysis and Modeling, 2005, ESRI Press, David Maguire, Michael Batty, Michael Frank Goodchild[4] Introduction to MS SQL Server 2008 spatial support http://www.jasonfollas.com/blog/archive/2008/03/14/[5] Microsoft SQL Server 2008 http://msdn.microsoft.com/en-us/sqlserver/[6] Open Geospatial Consortium http://www.opengeospatial.org/ [7] Geography Markup Language http://en.wikipedia.org/wiki/Geography_Markup_Language [8] Well Known Text Format (WKT) http://en.wikipedia.org/wiki/Well-known_text [9] Geographic Information System http://en.wikipedia.org/wiki/Geographic_information_system

49

Page 50: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

50

Page 51: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Biografija

Jovan Vidić rođen je 28.11.1982. godine u Rumi. Završio je osnovnu školu “Zmaj Jova Jovanović” u Rumi, a zatim i tehničku školu “Milenko Brzak – Uča” u Rumi, smer elektrotehničar automatike. Godine 2001. upisuje Prirodno-matematički fakultet u Novom Sadu, smer poslovna informatika. Od januara 2006. godine zaposlen kao programer u firmi “Navigator DOO”.

Novi Sad, januar 2009. Jovan Vidić

51

Page 52: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

52

Page 53: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

UNIVERZITET U NOVOM SADUPRIRODNO MATEMATIČKI FAKULTET

KLJUČNA DOKUMENTACIJSKA INFORMACIJA

Redni broj:RBRIdentifikacioni broj:IBRTip dokumentacije: Monografska dokumentacijaTDTip zapisa: Tekstualni štampani materijalTZVrsta rada: Diplomski radVRAutor: Jovan VidićAUMentor: dr Dragan MašulovićMNNaslov rada: Podrška za prostorne tipove podataka sa implementacijom

u MS SQL Server 2008NRJezik publikacije: srpski (latinica)JPJezik izvoda: srpskiJIZemlja publikovanja: SrbijaZPUže geografsko područje: VojvodinaUGPGodina: 2009.GOIzdavač: autorski reprintIZMesto i adresa: 21000 Novi Sad, Prirodno-matematički fakultet, Institut za matematiku, Trg Dositeja Obradovića 4MAFizički opis rada: ( 5/56/0/0/16/0/0 )

(broj poglavlja/ strana/ lit.citata/ tabela/ slika/ grafika/ priloga)

FO

53

Page 54: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

Naučna oblast: InformatikaNONaučna disciplina: Baze podatakaND

Predmetne odrednice, Ključne reči: Prostorni tipovi podataka, GPS, Baze podatakaPOUDKČuva se: Biblioteka Departmana za matematiku

i informatiku, Prirodno-matematički fakultet, Novi SadČUVažna napomena: nemaVNIzvod: Obuhvaćeni su svi fundametalnih koncepti spatial

podataka.Cilj rada je da pruži kvalitetan uvod i osnovu za dalja proučavanja. Kao baza za demostraciju dela spatial mogućnosti izabran je MS SQL Server 2008

IZ Datum prihvatanja teme od strane NN veća: 12. januar 2009.DPDatum odbrane: DOČlanovi komisije: (Naučni stepen/ ime i prezime/zvanje/ fakultet)KO Predsednik: dr Mirjana Ivanović, redovni profeosor,

Prirodno-matematički fakultet, Univerzitet u Novom SaduČlan: dr Miloš Racković, redovni profeosor,

Prirodno-matematički fakultet, Univerzitet u Novom SaduČlan: dr Dragan Mašulović, Vanredni profesor,

Prirodno-matematički fakultet, Univerzitet u Novom Sadu

54

Page 55: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

UNIVERSITY OF NOVI SADFACULTY OF NATURAL SCIENCES & MATHEMATICS

KEY WORDS DOCUMENTATION

Accession number:ANOIdentification number:INODocument type: Monograph documentationDTType of record: Textual printed material TRContents code: Graduation thesisCCAuthor: Jovan VidićAUMentor: Ph.D. Dragan Mašulović,MNTitle: Spatial data types support with implmentation in

MS SQL Server 2008TILanguage of text: Serbian (Latin)LTLanguage of abstract: Serbian LTCountry of publication: SerbiaCPLocality of publication: VojvodinaLPPublication year: 2009.PYPublisher: Author's reprintPUPublication place: Novi Sad, Trg D. Obradovića 4PPPhysical description: ( 5/56/0/0/16/0/0 )PD (chapters/pages/literature/tables/pictures/graphs/appendix)Scientific field: InformaticsSFScientific discipline: DatabasesSDSubject Key words: Spatial data types, GPS, databasesSKW

55

Page 56: Podrška za prostorne tipove podataka sa  implementacijom u MS SQL Server 2008

UCHolding data Insitute of Mathematics Library,

Faculty of Science and Mathematics,Trg D. Obradovića 4, Novi Sad

HDNote: noneNAbstract: It contains all fundamental concepts of spatial data types.

Purpose of this work is to give quality introduction and basis for future resarch. For demonstration choosen database is MS SQL Server 2008.

Accepted by the Scientific Board on: 12.january.2009.ABASDefended:DEThesis Defend board: (degree/name and surname/title/faculty)DB President: Ph.D. Mirjana Ivanovic, Full Profesor,

Faculty of Science, University of Novi SadMember: Ph.D. Miloš Rackovic, Full Profesor,

Faculty of Science, University of Novi SadMember: Ph.D. Dragan Masulovic, Associate profesor,

Faculty of Science, University of Novi Sad

56