PostgreSQL
Generalitati
PostgreSQL reprezinta "cel mai performant sistem de gestiune,de baze de de date, gratuit disponibil pe Internet", si se adreseaza celor care au incredere in posibilitatea existentei unor produse software de calitate in domeniul public.
Acesta ar putea fi interesant cel putin din punct de vedere practic, prin sansa de a dezvolta pe baza lor, investin doar propria activitate de documentare si programare, aplicatii serioase.
De asemenea, prin conceptele si solutiile tehnice propuse, prin crearea lor (mai ales in cazul produselor dezvoltate in cadrul unor proiecte de cercatare vizand promovarea unor idei si metode noi), ele pot fi de inters didactic sau pot fi utilizate ca instrumente in proiectare si cercetare aplicativa.
Exista, pe de o parte, tendinta de depreciere a domeniului public din Internet.
Se afirma ca Internet-ul este "cea mai mare companie de soft din lume" si se prezice ca cererea de produse "made by Internet" va creste exponential.
Se aplica fenomenul atingerii unei calitati superioare de catre produse de acest gen, ca efect al deschiderii codului sursa, prin intermediul retelei, catre specialistii din toata lumea (virtuali critici si colaboratori), deschidere din care se presupune ca ar rezulta selectie si eficienta.
Se denunta deficiente notabile la ultimele versiuni ale unor produse comerciale consacrate, ca urmare a vitezei de elaborare sub imperativul, inerent unui context comercial, de "a apare primul pe piata".
Exista, pe de alta parte, firesc, reflexul de circumspectie la ceva gratuit si negarantat.
Scurt istoric al familiei Postgres
Istoria de 13 ani a dezvoltarii RDBMS-urilor din familia Postgres consemneaza cateva versiuni reprezentative, ca jaloane pe traiectoria apropierii de compatibilitatea SQL, in conditiile extinderii modelului relational clasic cu facilitati deosebite.
Elaborarea codului original de Postgres a inceput in 1985, implicand efortul unei echipe numeroase de studenti si programatori, sub conducerea prof. Michael Stonebraker de la Universitatea Berkelei din California.
Illustra Information Tehnologies va lansa o varianta comerciala a acestui cod.
Postgres95, lansat in 1994, aduce, pe langa ameliorari ale codului (compatibilitate integrala cu ANSI C, reducere a dimensiunii, cresterea performantei), cateva imbunatatiri majore (limbajul de interogare Postquel a fost inlocuit cu un subset SQL etc.).
In 1996 apare PostgreSQL, cu un nume mai inspirat si cu caracteristici precum: adaugarea de optiuni semnificative modului de "backend", includere de elemente de limbaj compatibile cu ISO SQL/98, SQL/92, ANSI SQL89, extinderea setului de tipuri de date intrinseci etc. serverul Informix Universal (lansat in 1997) este bazat pe PostgreSQL (ca urmare a cumpararii de catre Informix a Illustra Inc.).
Versiunea actuala este 6.3.2 si se are in vedere continuarea perfectionarii ei.
A fost testata pe diferite platforme (aix, alpha, BSD44, bsdi, dgux, hpux, 1386_solaris, irix5, linux, sco, sparc_solaris, sunos4, svr4, ultrix4).
Aceasta succesiune a versiunilor creeaza oarece probleme de compatibilitate, cerand uneori proceduri de adaptare a unor baze de date create sub versiuni anterioare.
Exista, evident , posibilitatea de a opta pentru varianta comercial derivata din modelul Postgres-Illustra, RDBMS care pastreaza elementele intersante aduse acestui model, in conditiile unui spor de facilitati, robustete, viteza de prelucrare, calitate a asistarii utilizatorului.
Caracteristici generale
Sistemul de gestiune de baze de date PostgreSQL poate fi definit ca fiind: relational, foarte extensibil, cu orientare obiectuala.
Unul din scopurile proiectului de cercetare care a dus la crearea modelului Postgres a fost demonstrarea posibilitatii de a crea un DBMS esentialmente relational, cu un mare grad de extensibilitate, cu posibilitatea manipularii de obiecte si reguli complexe.
Sunt incluse facilitati majore ale modelului relational clasic, precum cereri declarative in SQL ,optimizarea interogarii, controlul concurent, tranzactii, suport multiutilizator.
Extensibilitatea (ca posibilitate a utilizatorului de de a defini arbitrar operatori, tipuri, functii si metode de acces) este asigurata printr-un mecanism tipic sistemelor relationale :ansamblul de cataloage.
Spre deosebire de RDBMS-urile standard, Postgres memoreaza mai multa informatie in aceste cataloage (nu numai date despre tabele si coloane, dar si despre tipuri, functii , metode de acces). Aceste cataloage apar utilizatorului ca o clasa oarecare, la care poate avea acces. Astfel, se pot face extensii care in RDBMS-urile conventionale se fac doar modificand codul de baza al produsului sau adaugand noi module scrise special de furnizorul respectivului RDBMS.
Serverul Postgres poate incorpora cod scris de utilizator prin incarcare dinamica.
Categorisirea ca "obiectual relationala" reflecta existenta unor facilitati specifice orientarii obiect (ex:conceptul de clasa, echivalent cu cel de tabel din sintaxa tip SQL, mostenirea de catre o clasa nou creata a atributelor unei clase existente etc.), in conditiile aasigurarii in acelasi timp, si a caracteristicilor de baza de date relationale si suportarii limbajelor de interogare traditionale corespunzatoare ( ceea ce nu asigura sistemele de gestiune de baza de date considerate "orientare obiect ").
Faptul ca acest spectru de facilitati este de inters a primit diverse confirmari. Baze de date comerciale au inglobat optiuni propuse pentru prima data in Posrgres.
In cadrul unor proiecte de anvergura, s-a ales acest RDBMS pentru memorarea unor structuri mai complexe date si programe- de diverse tipuri (ex:baze de date de imagini cu regasirea de imagini pe baza unor criterii de selectie, integrarea unui GIS de tip GRASS (sistem de informare geografic, un alt produs de intiere in domeniul public) pentru compactizare si explorare mai eficienta produsul a mai fost folosit la dezvoltarea de diverse aplicatii in cercetare si productie (sistem de analiza date financiare, pachete de monitorizare performante motoare, baze de date de trasare asteroizi, baze de date de informatii medicale, etc.) si a fost utilizat in multe universitati ca model demonstrativ.
Elementele de performanta
Viteza de tratare a unei cereri utilizator depinde (alaturi de alti factori: configurarea hardare a platformei, sistemul de operare etc.) de dimensiunea bazei de date si complexitatea cererii.
Sunt suportate baze de date de mari dimensiuni (peste 200 Gb ), dar performantele scad vizibil la tratarea bazelor mai mari de 5 Gb pe masinile cu procesor cu 32 biti.
Explorare bazelor de date de mari dimensiuni este recomandata doar pe masinile de 64 biti.
Arhitectura produs
PostgreSQL este construit conform unui model client\server proces per utilizator.
In fiecare sesiune, sunt implicate trei procese Unix cooperante: postmaster (proces supervizor tip demon, gestionand comunicatia dintre procesele "frontend" si "backend" ,efectuand initializari, alocari de memorie etc), "backend" (procesul server de baze de date; postmaster-ul initiaza un nou proces backend pentru fiecare noua conectare; acest proces este cel care asigura tratarea interogarilor; ruleaza intotdeauna pe masinile server), "fronthed" (proces cerand conexiune la backend prin intermediul postmaster; poate rula pe alta masina, de axemplu pe statia de lucru a clientului).
"Garnitura " actuala Postgres include ,pe langa RDBMS-ul propriu zis, o serie de produse destinate administrarii acestui tip de baze de date si facilitarii dezvoltari de aplicatii.
Aceste produse s-au cumulat in timp, prin aportul mai multor specialisti din lume (cu contributii diverse ca factura, anvegura si grad de finisare ). In continuare se amintesc cateva dintre acestea .
Facilitati de acces utilizator
Partea de client a Postgres (procesul de tip "frontend") este monitorul interactiv psql. Prin el se ofera o solutie minimala de acces al utilizatorului.
Formularea unor comenzi la nivel linie nu e foarte comoda pentru utilizator si nici pentru administrator. Pentru facilitatea crearii, intretinerii si consultarii de baze de date s-a impus elaborarea unor utilitare cu interfata grafica si un set corespunzator de funcii.
PgAccess este un utilitar de administratie si consultare baze PostgreSQL scris in Tcl/Tk, cu o interfata grafica atragatoare si cu o serie intreaga de tratari si facilitati la nivel de tabele ,interogari, secvente (include si un generator de rapoarte).
Exista, de asemenea, MPMGR (interfata pentru administrarea grafica), MPSQL (interfata SQL grafica).
Facilitati de programare
Se ofera interfete de programare din C (bibllioteca libpq), din C++ (bibllioteca libpq++) si solutia de imbricare SQL-"embedded SQL" (apelurile SQL, intr-o sintaxa specifica, sunt integrate in aplicatia scrisa in C care, inainte de a fi compilata, este prelucrata de preprocesorul ecpg).
Exista pgsql-perl5 (interfata de programare din Perl 5), libpgtcl (interfata de programare din Tcl), PyGres95 (interfata de programare din Pyton) etc.
Pentru integrare cu WWW, pentru aplicatii simple se poate utiliza interfata PHP (preprocesor hipertext-limbaj de script imbricat in HTML, asistand dezvoltatorii de WWW la scriere de pagini generate dinamic), iar pentru aplicatii mai complexe se poate utiliza un script Perl, lansabil in contextul mecanismului CGI (WDB-p95, o interfata WWW Postgres).
S-a dezvoltat un driver ODBC pentru PostgreSQL, numit psqlODBC.
Pentru programatoride Java exista un driver JDBC. S-au scris clase Java dedicate facilitarii accesarii PostgreSQL.
A aparut si un produs de tip RAD(Rapid Aplication Development) pentru dezvoltarea rapida de aplicatii Java de accesare PostgreSQL , deocamdata inca nefinisat si intersant mai mult ca perspectiva.
Un context de accesare de utilitare foarte larga ar fi consultarea de la nivelul unui server WWW, prin intermediul appleturilor Java (utilizand pachetele awt pentru interfata grafica cu utilizatorul si sql pentru interfatarea cu RDBMS-ul) apeland driverul JDBC pentru Java.
Se poate asigura o buna interfatare cu utilizatorul comun (care,in mod uzual, nu cunoaste structura bazei respective si nici limbajul SQL).
Prin folosirea functiei JDBC de obtinere de metainformatii despre o baza de date (nume de tabele, coloane etc.) si prin ghidare la nivelul interfetei grafice (ferestre dee tip "help" ,posibilitate de selectari din meniuri sucesive etc.).
O certitudine este aceea ca elaborarea unor aplicatii de explorare a unor baze PostgreSQL, pornind de la limbajul Java, este o solutie de viitor.
Adoptarea ei va putea asigura, comparativ cu alte optiuni de programare amintite o viteza corespunzaroare de tratare a operatiilor SQL solicitate , in conditiile unei interfete utilizator mai atractive si beneficiind de securitatea si portabilitatea garantate de utilizarea limbajului Java.
Concluzii
Prin disponibilitate (posibilitate de a obtine gratuit produsul, documentatia, utilitare de dezvoltare aferente) si prin facilitatile oferite, Postres poate fi util oricarui utilizator dispus sa faca mici eforturi suplimentare pentru a dezvolta, fara achizitionare de software, aplicatii viabile.
Unitati care au nevoie de un sistem de consultare facila a unor seturi de date si care nu dispun de resursele necesare achizitionarii unor RDBMS-uri comerciale puternice sau nu au ,in general, cerinte informatice de un volum si o complexitate care sa justifice investitia in software ar putea prefera o solutie bazata pe utilizarea acestui produs.
Unele facilitati specifice (posibilitatea de a-si modifica modul de operare din "mers", in urma extensiilor utilizator, posibilitatea existentei unor atribute non-atomice ale unor relatii, elementele de orientare obiect) impun Postgres ca un instrument deosebit de adecvat pentru constituirea rapida de prototipuri in dezvoltarea de noi aplicatii si structuri de date (care pot fi de o mare complexitate).
Adresa pe Internet http://www.posgrsql.org le ofera un fond acoperitor de resurse (posibilitatea de incarcare de software prin retea, documentatie (inclusiv on-line) de diverse facturi,liste de mail etc.).