PostgreSQL

KoMnA se za hranjenje in manipulacijo podatkov pri mnogih projektih zanaša na strežnik PostgreSQL. Odločitev zanj je bila dobro premišljena, a lahka. Temelji na najustreznejši kombinaciji 5 pomembnih lastnosti: zmogljivosti, stabilnosti, nadgradljivosti, razširljivosti in povezljivosti.

PostgreSQL je zmogljiv odprtokoden sistem za upravljanje s podatkovnimi bazami (DBMS), popolnoma konkurenčen velikim, bolj znanim izdelkom na tem področju (npr. DB2, MSSQL ali Oracle). Je rezultat več kot 20 let aktivnega razvoja in teče na operacijskih sistemih AIX, BSD, HP-UX, IRIX, Linux, Mac OS X, Solaris, True64, Windows in drugih.

Zmogljivost

PostgreSQL je najzmogljivejši izmed odprtokodnih sistemov za upravljanje podatkovnih baz:

  • zagotavlja vse lastnosti ACID,
  • dobro je združljiv s standardoma ANSI-SQL 92 in 99 (verjetno najbolje izmed vseh obstoječih implementacij SQL),
  • podpira MVCC s popolno izolacijo transakcij,
  • omogoča neomejeno velikost podatkovne baze in neomejeno število zapisov v tabelah,
  • ima popolno podporo za tuje ključe (foreign keys), združevanje (joins), poglede (views), prožilce (triggers), in funkcije na bazi (stored procedures) v več programskih jezikih,
  • omogoča podpoizvedbe (subqueries) — tudi znotraj stavka FROM,
  • podpira indeksiranje z B-drevesi (B-trees), R-drevesi (R-trees), zgostitvenimi funkcijami (hash functions) in GIST.
  • omogoča povrnitev na točko v času (point-in-time recovery), sheme (tablespaces), asinhrono replikacijo, gnezdene transakcije (nested transactions) in arhiviranje brez zaustavitve (hot backups),
  • omogoča dostop do sistemskega kataloga skozi in­for­ma­cijsko shemo.

Stabilnost

PostgreSQL je znan po izjemni zanesljivosti, kar je posledica kvalitetne programske kode, originalno pisane za sisteme UNIX. Strežnik se že dve desetletji aktivno uporablja v produkcijskih okoljih — tudi takšnih z več tisoč uporabniki, kjer se količina podatkov meri v terabajtih.

Tudi sami v več letih aktivne uporabe strežnika za razvoj in gostovanje lastnih aplikacij nismo naleteli niti na eno samo napako ali odstopanje od (zelo kakovostne) dokumentacije, predvsem pa nikoli nismo doživeli kakršnegakoli izpada ali izgube podatkov.

PostgreSQL je dobro zasnovan in omogoča visoko razpoložljivost, vključno z izdelavo var­nost­nih kopij brez zaustavljanja ter nadgradnjo strežnika z (v večini primerov) zgolj nekaj sekundnim premorom v delovanju.

Tudi sicer je administracija strežnika relativno preprosta in jo je mogoče v celoti avtomatizirati s pomočjo skript v ukazni lupini. Ker grafična orodja niso obvezna, se nadzor in upravljanje strežnika v nujnih primerih lahko izvaja tudi prek mobilnega telefona ali zelo počasne ko­mu­ni­ka­ci­jske linije.

Nadgradljivost in razširljivost

PostgreSQL je odprtokoden projekt, katerega koda je na voljo pod licenco tipa BSD. To nam omogoča uporabo strežnika v lastnih produktih in postavitev poljubnega števila podatkovnih baz (s poljubnim številom upo­rab­ni­kov) brez licenčnih omejitev.

Navedeni licenčni sporazum nam nudi tudi vpogled v izvorno kodo, kar je pri razvoju programske opreme in njenem poznejšem (večletnem) vzdrževanju ključnega pomena. Rezultat je redno nadgrajevan strežnik ob prihranku časa in denarja za nas in naše naročnike.

PostgreSQL podpira shranjene funkcije (stored procedures), ki jih je mogoče napisati v mnogih programskih jezikih (C, C++, Java, Perl, PL/pgSQL, Python, Ruby, Tcl idr.) in z njimi razširiti funk­cio­nalnost.

KoMnA uporablja predvsem jezik PL/pgSQL, ki je zelo podoben PL/SQL (Oracle), razvili pa smo tudi več krajših, a pomembnih funkcij v jeziku C, med drugim za:

  • natančnejše dnevniške zapise,

  • ko­mu­ni­ka­ci­jo z zunanjimi programi,

  • avtentikacijo upo­rab­ni­kov in sledenje njihove aktivnosti,

  • razvrščanje in filtriranje besedil v slovenskem jeziku (ki je tako nekajkrat hitrejše od standardne podpore tabelam Unicode).

Povezljivost

Povezljivost je ena izmed najpomembnejših prednosti PostgreSQL pred komercialnimi podatkovnimi bazami. Obstaja več sto projektov, v okviru katerih so razvili najrazličnejša orodja za delo s podatkovno bazo, med njimi tudi knjižnice, s katerimi je mogoče izdelati odjemalce v programskih okoljih Ada, Basic, C, C++, C#, Delphi, Java, JDBC, Lisp, .NET, ODBC, PHP, Pascal, Perl, Python, Ruby, Scheme, Qt in drugimi.

PostgreSQL je torej dosegljiv od kjerkoli, ne glede na uporabljeno programsko platformo. Dobra povezljivost pomeni preprosto izmenjavo podatkov z drugimi in­for­ma­cijskimi sistemi, dolgoročno pa tudi lažje razširitve, nadgradnje in izboljšave, tako z naše strani kot s strani drugih izvajalcev.