1 / 33

PostgreSQL

PostgreSQL. Milos Vesic Bojana Mitrovic. Istorijat. PostgreSQL objektno relacioni sistem za upravljanje bazama zasnovan na POSTGRES v4.2 razijen na Californiskom univerzitetu (Berkeley Computer Science Department).

rana-phelps
Download Presentation

PostgreSQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PostgreSQL MilosVesicBojanaMitrovic

  2. Istorijat • PostgreSQL objektno relacioni sistem za upravljanje bazama zasnovan na POSTGRES v4.2 razijen na Californiskom univerzitetu (Berkeley Computer Science Department). • POSTRGERS je sadrzao mnoge inovativne ideje za upravljanje bazama podataka koje su korioscene znatno kasnije. • PosgreSQL je open-source koji podrzava veliki broj SQL standarda i nudi • veliki broj modernih opcija kao sto su: -kompleksni upiti • -strani kljucevi • -okidaci • -pogledi • -i dr • naravno PostgreSQL je prosiriv i to u onim pravcima u kojima to korisniku najvise odgovara, • kao na primer: • -dodavanje novih tipova podataka • -dodavanje fukncija • -dodavanje operatora • -dodavanje proceduralnih jezika • -i dr. • I zbog svoje liberalne licence PostgreSQL moze biti modifikovan koriscen od strane svakog i prosledjivan takodje svakom.

  3. PostgreSQL je nastao iz paketa razvijenog na Kaliforniskom univerzitetu u Berkliju.Nakona vise od dekade razvijanja PostgreSQL je postao najkompleksnija open-source baza podataka. • POSTGRES je projekat vodjen od strane Profresora Michael Stonebraker pod sponzorstvom DARPA(Defense Advanced • Research Projects Agency),ARO (Army Research Office),NSF(National Science Foundation) i drugih. • Implementacija je pocela 1986. • Nakon 1986 postgre i imao nekoliko zvanicnih verzija ali prva "demo" verzija zavrsena je 1987 da bi 1988 bila prikazana ACM-SIGMOD konferenciji. • Verzija 1 objavljena je juna 1989 ali zbog velikih gresaka na sistemu • godinu dana kasnije(Jun. 1990) objavljena je Verzija 2. • Odmah za njom u nizu dolazi i verzija 3. koja daje podrsku za upravljanje visestrukim memoriskim resursima i poboljsava izvsivac upita. • Na kon toga sledece vece izdanje dolazi '95 i nosi naziv Postgres95 i ono donosi dugo ocekivanu portabilnost. • Postgres je koriscen za implementaciju mnogih istrazivackih i produktivnih aplikacija • npr: anlizu finansiskih sistema,analizu baze za pracenje putanje asteroida,obrade medicinskih baza podataka,raznih geografskih informacionihj sistema. • Zbog svoje dostupnosti lako je nasao put do univerziteta gde je koriscen kao sredstvo za edukciju. • Na kraju 1992 POSTGRES postaje glavni sistem za upravljanje podacima da bi se do kraja godine broj njegovih korisnika prakticno udvostrucio. • Berkeley POSTGRES projekat je zvanicno bio gotov objavljivanjem verzije 4.2.

  4. Postgres95 • 1994 Andrew Yu i Jolly Chen dodali su SQL jezicki interpretator POSTGRES-u i dali mu novo ime Postgres95. • Postgres95 je postepeno objavljivan na Web-u kako bi sam nasao put do korisnika. • Postgres95 je kompletno ANSI C., mnoge dorade na performansama ucinile su da bude cak da 30% brzi u odnosu na svog prethodnika. • Navece promene izvrsene su : • -upitni jezik PostQUEL zamenjen je sa SQL-om gde je dodata i GROUP BY naredba • -Nova front-end biblioteka • -Dodat mehanizam za upravljanje velikim objektima • -kompajliran pomocu ne pecovanog GCC • 1996 je bilo jasno da ce samo vreme pokazati da li je Postgres95 zaista toliko daobar. • Odabrano je novo ime PostgreSQL gde se jasno daje do znanja da je kompatibilan sa SQL • PostgreSQL imao je par znacajnijih verzija 0.03;1.00;1.01;1.02,cak se jedno vreme nije ni znalo koje su glavne izmene bile izvresne i zmedju ovih verzija ali je bilo siguno da treba instalirati 1.09 jer tu dodat COPY izlazni format i nakon toga tim odlucuje da se vrati na obelezavanje verzija po Berkliju, tj verzija 1.09 prelazi u verziju 6.0. • U svakoj novoj verziji dodavani su novi standardi i ubrzavao se sistem izvrsavanja upita -poslednja izdata verzija je 8.2.

  5. Tipovi podataka

  6. Numericki tipovi podataka numericki tipovi podataka sadrze 2,4,8 byte-ne celobrojne brednosti 4,8 byte-ne razlomljene vrednosti

  7. decimal i numeric su ekvivalentni,cuvju brojeve do 1000 cifara • korisnik definise preciznost i to u obliku • NUMERIC(preision,scale) • (precision)-odredjuje broj znacajnih cifara • (scale)-odredjuje broj cifara razlomljenog dela. • pr: • 25.432 • scale =3; • precision=5; • ukoliko se navede jedan broj podrazumeva se da je razlomljni deo 0; • ako se izostave oba parametra broj cifara je proizvoljan ali samo u granicama implementaciaj. • Tipovi real i double precision su u implementaciji IEEE 754 standarda. • u skladu sa tim neke vrednosti nece biti tacno zapamcene vec se pamtiti njihove aproksimacije. • serial i big serial nisu pravi tipovi podataka vec su samo konvencije u oznacavanju i sluze za postavljane jedinstvenog identifikatora kolone.

  8. MonetarnitipoviMonetary types Sluzi za pamcenje iznosa sa fiksiranom preciznoscu razlomljenog dela. Uglavnom se ovaj tip zamenjuje sa numerics i decimal.

  9. Karakterni tipoviCharacter types Broj n je pozitivan ceo broj i odredjuje mogucu duzinu niske. Kod char-a ukoliko se ne ispuni sav prostor naveden u inicijalizaciji prazna mesta se ispunjavaju blanco znacima,char uvek zauzima fiksnu vrednost zadatu brojem n kod varchar to nije slucaj jer se kod njega pamti sam string. char=char(1); Ako je n izostavljeno u varchar on prima string proizvoljne duzine. text-cuva string proizvoljne duzine. text nije u SQL standardu. Prostor za cuvanje ovih podataka(char,varchar,text) je 4 byte-a + velicina stringa a u slucaju char-a + prostor za cuvanje balnco znaka. Maximalni prostor za cuvanje jednog stringa je oko 1gb. Ne postoji razlika u radnim performansam izmedju ova tri tipa

  10. ovo su interni tipovi koje koristi sistem i nisu namenjeni za koriscenje od strane korisnika.

  11. Binarni tipoviBinary types • bytea omogucava cuvanje binarnog stringa. razlike izmedju binarnog stringa i stringa karaktera su: 1)binarni string moze cuvati nisku ispunjenu nulama i drugim ne printabilnim karaktere(van ranga 32-126) 2)operacije nad binarnim stringovima rade sa bitovima dok procesiranje karakternih stringova zavisi od lokalnih podesavanja. vrednosti byte-ova koji se unose trebaju bi razliciti od nekih specijalnih vrednosti kada se koriste kao delovi string literala u SQl izrazima.

  12. princip je da se ti byte-ovi konvertuju u trocifrene oktalne brojeve odgovarajuce vrednosti ispred kojih stoje 2 backslash-a.

  13. Datum/Vreme tipoviDate/Time types • PostgreSQL podrzava citav skup SQL tipova za datum i vreme. p-oznacava broj cifara razlomljenog dela sekundi. p uzima vrednost od 0 do 6 primer: p=2 tacost vremena je izrazena u stotinkama.

  14. vrednosti tipa timestamp se cuvaju kao realni broj dvostruke preciznosti po defaultu. • vrednosti tipa timestamp se cuvaju kao sekunde pre ili posle ponoci 1.1.2000. • Preciznost u mikro sekundma se moze dobiti za datume u intervalu od nekoliko godina oko 2000godine ali tacnost opada sa udaljavanjem od tog intervala.Kada se vrednosti tipa timestamp cuvaju kao celi brojevi(sto je compile-time opcija)preciznost u mikro sekundama je dostupna u okviru citavog ranga. • Vrednosi tipa time i interval se mogu cuvati kao 8 byte-ne celobrojne vrednosti ili vrednosti u pokretnom zarezu.

  15. Date/Time Input • datum i vreme se mogu biti uneti u bilo kom razumnom formatu npr:ISO8601,SQL i tradicionalnom POSTGRES formatu.

  16. postavljanjem DateStyle parametra na MDY,DMY,YMD odredjujemo interpretaciju unetog vremena. • type [ (p) ] ’value’; • time=time with out time zone; TIME Stamps cuva datum +vreme+ [vremenska zona] na ovaj nacin unocimo vreme tj navodjenjem medju jednostrukim navodnicima TIMESTAMP ’2007-11-19 15:39:00’

  17. Interval • tip interval sluzi za manipulaciju vremenskim intervalima. • unosi se na nacin: • iznos jedinica [iznos jedinica...] [ago ili prazno] • iznos je broj. • jedinice su second, minute, hour, day, week, month,year, decade, century, millennium ili skraenice ovih imenica ili njihove mnozine. • interno vrednosti tipa interval se cuvaju kao mesici,dana i sekunde.intervali se obicno formraju oduzimanjem vrednosti tipa timestamp. • primer koriscenja intervala: • timestamp with time zone ’2005-04-02 12:00’ + interval ’1 day’ • dace rezultat • timestamp with time zone ’2005-04-03 12:00’,

  18. Specijalne vrednosti • postgreSQL podrzava nekoliko specijalnih vrednosti unosa vremena i datuma.

  19. Date/Time output • kao izlazni format koriste se isti stilovi kao i za unos po defaultu je ISO8601 format.

  20. Boolean type • Podaci tipa boolean mogu imati jednu od dve vrednosti TRUE i FALSE i koristi se jedan byte prostora za njihovo smestanje. • mogu biti uneseni na nacin:

  21. Geometric types • geometriski tipovi predstavljaju dvo dimenzionalne objekte.

  22. Postoji bogat skup funkcija i operatora koji rade sa ovim tipovima podataka(rotacija,skaliranje,translacija...) • pr: • Translacija: • box ’((0,0),(1,1))’ + point ’(2.0,0)’ • Scaliranje/rotatcija: • box ’((0,0),(1,1))’ * point ’(2.0,0)’

  23. Network types PostgreSQL nudi tipove podataka za cuvanje ip adresa(IPv4 i IPv6) i MAC adresa. • inet- • ulazni format za ovaj tip: • adresa/c gde je adresa 32bitna u slucaju IPv4 ili 128bit-na ako je IPv6. • c je broj bitova mrezne maske(ako nije navedeno , c=32 za IPv4 odnosno 128 za IPv6). • cidr- • cuva adresu mreze ulazno izlazni format odgovara konvencijama Classless • Internet Domain Routing

  24. Format unosa je isti kao kod inet-a sem ako bi ovde izostavili c, broj bitova bi se racunao na osnovu predpostavke klasnog sistema. • razlika: • za razliku od cidr inet prihvata vrednosti sa nenula bitovima desno od mrezne maske. • macaddir cuva jedinstvene mac adrese mreznog hardvera. • ulazni format je u obliku: • ’08002b:010203’ • ’08002b-010203’ • ’0800.2b01.0203’ • ’08-00-2b-01-02-03’ • izlazni format • ’08:00:2b:01:02:03’

  25. Bit String types • Bitovni stringovi su stringovi nula i jedinica. • Mogu se koristiti u cuvanju i predstavljanju bit maski. • postoje dva tipa: • bit(n) • bit varying(n) • Dutina vrednost tipa bit mora biti tacno n. • Prilikom pokusaja smestanja kraceg ili duzeg bitonog stringa javlja se greska. • bit varying(n)- cuva string duzine do n. • bit=bit(1)

  26. PstgreSQL omogucava rad sa vise dimenzionalnom nizovima proizvoljne duzine. • Tip podataka moze biti bilo koji od osnovnih tipova ili tipa definisanog od strane korisnika. • integer[][] • integer[3][3] • unos se vrsi sintaksom: • ’{ val1 delim val2 delim ... }’ • ARRAY[val1 delim val2 delim ...] • pr: • ’{{1,2,3},{4,5,6},{7,8,9}}’ • ARRAY[10000, 10000, 10000, 10000]

  27. nizovma se pristupa preko indeksa koj pocinju od jedinice. • -pristup pravougaonom dela niza: • niz [gornja_granica:donja_granica][gornja_granica:donja_granica].... • trenutna dimenzija niza se vraca funkcijom array_dims • modifikacija nizova se vrsi prepisivanjem novih vrednosi ptrko starih. • dadavanjem k-tog elementa u postojeci niz od n elemenata (gde je k>n)pozicije izmedju k i n se ispunjavaju nulama.(vazi samo za jednodimenzione nizove) • konkatenacija se vrsi • niz1[1,2] || niz2[3,4] • {1,2,3,4} trazenje vrednosti u nizu SELECT * FROM tabela WHERE vrednost = ANY (niz1); SELECT * FROM tabela WHERE vrednost = ALL (niz1);

  28. SlozenitipoviComposite types • Slozeni tipovi opisuju strukturu podataka. • CREATE TYPE tacka AS ( • x double precision, • y double precision • ); • CREATE TYPE proizvod AS ( • ime text, • sifra_snabdevaca integer, • cena numeric • ); • Mogu da se koriste kao i ostali prosti tipovi podataka. • kada kreiramo tabelu automatski se kreira i slozeni tip istog imena kao i tabela,kojim ce biti predstavljen red tabele.

  29. CREATE TABLE proizvod ( • ime text, • sifra_snabdevaca integer REFERENCES snabdevac, • cena numeric CHECK (cena > 0) • ); • unos: • ’("string",42,1.99)’ • ROW(’string’, 42, 1.99) • (’string’, 42, 1.99) • pristup se vresi preko tacka operatora.

  30. Object Identifier Types

  31. Pseudo-Types

  32. Tipovi definisani od strane korisnika • CREATE TYPE name ( • INPUT = input_function, • OUTPUT = output_function • [ , RECEIVE = receive_function ] • [ , SEND = send_function ] • [ , ANALYZE = analyze_function ] • [ , INTERNALLENGTH = { internallength | VARIABLE } ] • [ , PASSEDBYVALUE ] • [ , ALIGNMENT = alignment ] • [ , STORAGE = storage ] • [ , DEFAULT = default ] • [ , ELEMENT = element ] • [ , DELIMITER = delimiter ] • )

  33. ..::I SEE YOU::..

More Related