Baza za odrasle
- autor Ivan Voras
- pet 9.12.2011
- 07:05
PostgreSQL je jedna od prvih baza koje su primijenile MVCC (multi version concurrency control) algoritam za kontrolu čitanja i pisanja podataka koji omogućuje da se nad podacima istovremeno obavljaju čitanja i pisanja bez klasičnog zaključavanja redaka. Ovo je iznimno dobro primjenjivo u modernim aplikacijama za Web gdje postoji veliki broj korisnika koji čita sadržaj a mali broj koji ga stvara (i stoga ne smiju "smetati" ovoj većini). Povijesno, razvoj MVCC-a je donio i neka ograničenja koja su danas uglavnom uklonjena. Tako su uz read-committed izolaciju u najnovijoj verziji implementirani i "pravi," standardni izolacijski mehanizmi repeatable-read i serializable (u starijim verzijama su repeatable-read i seriazable bili aliasi a izolacija je bila negdje između). Drugo veliko ograničenje MVCC-a, nekorištenje indeksa za sve podatke u upitu (covering indexes) je još prisutno, ali je najavljena implementacija u sljedećoj verziji PostgreSQL-a (9.2). Još jedna velika mogućnost na koju su korisnici predugo čekali i koja je tek sada došla je korištenje privremenih tablica koje ne prolaze kroz cijeli sinkroni (ili polu-sinkroni) put kroz log. Nažalost, još uvijek nedostaje podrška za tablice koje se nalaze isključivo u memoriji, ali ovo je korak u pravom smjeru: unlogged tablice će uglavnom završiti u cacheu operacijskog sustava.
Prethodna verzija je donijela ugrađenu asinkronu replikaciju podataka između primarnog i sekundarnih servera po principu warm standby, što je sada nadograđeno sa sinkronom replikacijom i mogućnošću korištenja kao hot standby. Konačno je na sekundarnim serverima moguće izvoditi čitajuće operacije što puno znači za load balancing. Postoji veliki raspon parametara koji se mogu konfigurirati a koji utječu na omjer performansi i stabilnosti podataka koji su replicirani, od posve asinkronog do posve sinkronog načina rada. Korisno za određene vrste operacija je što se sinkrona replikacija može privremeno isključiti (ili uključiti) na razini pojedinih transakcija – što znači da se mogu ubrzati operacije s manje važnim podacima. Prethodni opis se odnosi samo na ugrađeni mehanizam replikacije, a za neke specifične potrebe (multi-master) su i dalje dostupni vanjski dodaci kao pgPool, Slony i Bucardo.
Ozbiljan SQL
SQL se tradicionalno smatra relativno jednostavnim deklarativnim jezikom – njegovi izrazi opisuju što treba napraviti, a ne kako. Iako početak SQL-a seže negdje u sredinu 1970-tih, jezik se i dalje aktivno razvija: svakih tri do pet godina ANSI i ISO izdaju novu verziju standarda koja obično dodaje nove mogućnosti i pojašnjenja. Zadnji takav standard izdan je 2008. godine.
S vremenom je SQL postao daleko moćniji od onog osnovnog skupa naredbi i klauzula koji se najčešće uči u školama i na tečajevima. Dok je za većinu korisnika vrhunac SQL-a klauzula JOIN koja relacijski spaja podatke, današnji state of the art je takav da je SQL sa svim opcijama praktički Turing-kompletan jezik (misli se na sam SQL a ne na serverske procedure koje ovu osobinu imaju defaultno). Dvije mogućnosti koje najviše doprinose ovome su windowing functions i writable common table expressions (WCTE). Prva mogućnost dozvoljava promatranje određenog podskupa podataka (redaka iz rezultata upita) za primjenu s agregatnim funkcijama, pa je tako na primjer moguće u jednom relativno jednostavnom upitu izračunavati međuzbrojeve unutar izvještaja. WCTE je najlakše objasniti kao da omogućuje da se sve vrste upita kombiniraju sa svim drugim vrstama upita, pa je na tako sada moguće u jednom upitu prebaciti podatke iz jedne tablice u drugu i još nad tim podacima koji se prebacuju izvesti neki upit, što kombinira DELETE, INSERT i SELECT u jednu naredbu. Sve ovo se moglo i prije na drugi način (na primjer, korištenjem serverskih procedura i/ili s nekoliko upita umjesto samo jednog) ali sada je to dio standardnog SQL-a.
Sljedeća napredna novost su K-nearest-neighbour (KNN) indeksi koji za razliku od standardnih preciznih indeksa omogućuju indeksiranje po "sličnosti" podataka. O tome što "sličnost" znači se brinu sami tipovi podataka pa tako geoinformacijski podaci mogu definirati sličnost kao blizinu, a pretraživanje teksta može sličnost definirati po korijenima riječi. Kao dodatak ovome dolaze space-partitioned trees (SPT) indeksi koji optimiziraju neke specifične slučajeve prije spomenutih zadataka i trigram-indeksi za tekstualne podatke koji konačno omogućuju korištenje indeksa za sve oblike klauzule LIKE.
Dobra vijest za one koji vole koristiti "NoSQL" pristup podacima ili samo veću fleksibilnost u pohrani podataka je podrška za tip podatka "hstore" koji je zapravo samostalna key-value tablica u jednom polju. Ideja iza ovoga je miješanje relacijskog pristupa gdje su bitni podaci smješteni "horizontalno" po tablici, a dodatni podaci na fleksibilan način unutar pojedinačnih polja. Vrlo je korisno što se pojedini ključevi unutar ovih polja također mogu indeksirati.
Manje značajna novost, ali nekima korisna je uvođenje "ograničenih" tipova podataka, na primjer numeričkih polja s točno određenim minimalnim i maksimalnim prihvatljivim vrijednostima, ili vremenskih polja sa sličnim ograničenjem. Korisnici kojima treba takvo nešto će konačno moći postaviti jezične osobine (kao redoslijed sortiranja) na pojedinačna polja (stupce) tablice. Unicode i hrvatski jezik su podržani gotovo "oduvijek."
Integracije
Relativno nedavna novost (od prethodne verzije) je podrška za 64-bitne servere na Windowsima, što konačno omogućava stvaranje doista velikih baza podataka. Instalacijski program dosta dobro skriva da se radi o aplikaciji koja je vrlo vezana za svoje početke u Unixu i korisniku na korištenje predaje potpuno konfiguriranu okolinu spremu za korištenje iz GUI upravljačkih alata.
Jedina mala nekompatibilnost koju smo primijetili je u imenovanju redoslijeda sortiranja – prilikom uvoza podataka će tako trebati zamijeniti "hr_HR.UTF-8" s "Croatian, Croatia." Kako se i na Windowsima defaultno koristi UTF-8, te kako PostgreSQL ima ugrađenu neovisnost o kodnim stranicama klijenta i servera, sve radi bez dodatne muke.
Kako puno poznatiji proizvodi imaju puno većih problema s instalacijom i konfiguracijom, možemo samo čestitati razvojnoj ekipi na dobro obavljenom poslu.
Potencijalno korisno za korisnike Linuxa je integracija PostgreSQL-a sa sustavom kontrole pristupa SELinux, koji uvodi dodatne sigurnosne kontrole za "ekstremne" slučajeve sigurnosnih problema sa samim serverom.
Za korištenje PostgreSQL-a u aplikacijama su dostupne biblioteke za sva imalo raširenija razvojna okruženja. Pristup iz Jave, .Net-a, PHP-a i svega ostalog se svodi na trivijalnu instalaciju (iznenađujuće malih) klijentskih biblioteka.
Unutar same baze implementiran je dio SQL standarda pod nazivom management of external data (SQL:MED), koji omogućuje pripajanje tablica (ili čak datoteka s podacima) sa drugih servera u imenski prostor baze podataka, odnosno transparentno miješanje lokalnih i stranih tablica s podacima bez obzira na vrstu servera. Moguće je tako preko ODBC-a pripojiti tablicu koju zapravo poslužuje SQL Server ili Oracle, ili drugim mehanizmima LDAP, CouchDB ili čak običnu CSV datoteku i sve zajedno ih koristiti u lokalnim upitima.
PostgreSQL odlično balansira mogućnosti i složenost. Inicijalna konfiguracija je (osobito na Windowsima) dovoljno dobra za brzi početak rada, a istovremeno postoji ogromna količina opcija i dodataka koji se mogu koristiti za vrlo napredne stvari. Razvoj projekta se odvija vrlo ubrzanim tempom i nove mogućnosti dolaze gotovo svakodnevno, pa je ovo jedan od proizvoda koji možemo svakako preporučiti i vrlo ozbiljnim korisnicima.
zadnji komentari na forumu (3)
PostgreSQL 9.1
Proizvođač
The PostgreSQL project
Tip
Baza podataka
Plus
Iznimno velike mogućnosti, konačno dobro razrađena podrška za Windowse, odlična dokumentacija
Minus
Windows GUI ne izgleda lijepo
Dojam
Korisnici MySQL-a ne znaju što propuštaju, a korisnici klasičnih komercijalnih proizvoda će biti iznenađeni širinom podrške
URL
izdvojeni tekstovi - siječanj 2012.
Ivan Maglić, direktor tvrtke Calisto, zastupnika tvrtke Gartner
Analitika s pedigreom uto 20.12.2011
Jeftina optika
U svijetu fotona i elektrona na jeftin način uto 20.12.2011
Oleg Maštruko
Hrvati na Kavkazu uto 20.12.2011
Huawei Global Headquarters, Shenzhen
U kineskoj Silicijskoj dolini uto 20.12.2011
ALBtelecom, Tirana
Telekom u zemlji orlova uto 20.12.2011
FreeBSD 9.0
Umjetnost BSD-a uto 20.12.2011
Bitcoin
Valuta budućnosti ili nečija podvala? uto 20.12.2011
Organska elektronika
Procesori od plastike uto 20.12.2011
Stop Online Piracy Act 2011
Firewall za pirate uto 20.12.2011
PostgreSQL 9.1
Baza za odrasle pet 9.12.2011
Brother MFC-9970CDW
Radni konj sri 30.11.2011





















PostgreSQL 9.1
Pa zato što u članku ima link dolje za dodati komentar...
PostgreSQL 9.1
Odlična fora su im ovi trigram-indeksi!...