PostgreSQL

Rodica Ciocea
Ofertă de interes a software-ului din "domeniul public" Internet.

Acest articol, despre ceea ce este prezentat drept "cel mai performant sistem de gestiune, de baze de date, gratuit disponibil pe Internet", se adresează celor care au încredere în posibilitatea existenței unor produse software de calitate în domeniul public. Acestea ar putea fi interesante cel puțin din punct de vedere practic, prin șansa de a dezvolta pe baza lor, investind doar propria activitate de documentare și programare, aplicații serioase. De asemenea, prin conceptele și soluții le tehnice propuse, prin crearea lor (mai ales în cazul produselor dezvoltate în cadrul unor proiecte de cerce tare vizând promovarea unor idei și metode noi), ele pot fi de interes didactic sau pot fi utilizate ca instrumente în proiecte de cercetare aplicativă.

Există, pe de o parte, ten dința de apreciere a domeniului public din Internet. Se afirmă că Internet-ul este "cea mai mare companie de soft din lume" și se prezice că cererea de produse "made by Internet" va crește exponențial. Se explică fenomenul atingerii unei calități superioare de către unele produse de acest gen, ca efect al deschiderii codului sursă, prin intermediul rețelei, către specialiști din toată lumea (virtuali critici și colabo ratori), deschidere din care se presupune că ar rezulta selecție și eficiență. Se denunță deficiențe notabile la ultimele versiuni ale unor produse comerciale consacrate, ca urmare a vitezei de elaborare sub impe rativul, inerent unui context comercial, de "a apare primul pe piață".

Există, pe de altă parte, firesc, reflexul de circumspecție la ceva gratuit și negarantat.

Scurt istoric al familiei Postgres

Istoria de 13 ani a dezvoltării RDBMS-urilor din familia Postgres consemnează câteva versiuni reprezentative, ca jaloane pe traiectoria apropierii de compatibilitatea SQL, în condițiile extinderii modelului relațional clasic cu facilități deosebite.

Elaborarea codului original de Postgres a început în 1985, implicând efortul unei echipe numeroase de studenți și programa tori, sub conducerea profesorului Michael Stonebraker de la Universitatea Berkeley din California. Illustra Information Technologies va lansa o variantă comercială a acestui cod.

Postgres95, lansat în 1994, aduce, pe lângă ameliorări ale codului (compatibilitate integrală cu ANSI C, reducere a dimensiunii, creșterea performanței), câteva îmbunătățiri majore (limbajul de interoga re Postquel a fost înlocuit cu un subset SQL etc.).

În 1996 apare PostgreSQL, cu un nume mai inspirat și cu caracteristici precum: adăugarea de opțiuni semnificative modulului de "backend", includere de elemente de limbaj compatibile ISO SQL, ANSI SQL/98, SQL/92 și ANSI SQL/89, extinderea setului de tipuri de date intrinseci etc. Server-ul Informix Universal (lansat în 1997) este bazat pe PostgreSQL (ca urmare a cumpărării de către Informix a Illustra Inc.). Versiunea actuală este 6.3.2. și se are în vedere continuarea perfecționării ei. A fost testată pe diverse platforme (aix, alpha, BSD44, bsdi, dgux, hpux, 1386_solaris, irix5, li nux, sco, sparc_solaris, sunos4, svr4, ultrix4).

Această succesiune a versiunilor creează oarece pro bleme de compatibilitate, cerând uneori proceduri de adaptare a unor baze de date create sub versiuni anterioare.

Există, evident, posibilitatea de a opta pentru varianta comercială derivată din modelul Postgres - Illustra, RDBMS care păstrează elementele interesante aduse de acest model, în condiții le unui spor de facilități, robustețe, viteză de prelucrare, calitate a asistării utilizatorului.

Caracteristici generale

Sistemul de gestiune de baze de date PostgreSQL poate fi definit ca fiind: relațio nal, foarte extensibil, cu orientare obiectuală. Unul din scopurile proiectului de cercetare care a dus la crearea modelului Postgres a fost demonstrarea posibilității de a crea un DBMS esențialmente relațio nal, cu un mare grad de extensibilitate, cu posibilitatea manipulării de obiecte și re guli complexe.

Sunt incluse facilitățile majore ale mode lului relațional clasic, precum cereri declara tive în SQL, optimizarea interogării, controlul concurent, tranzacții, suport multiutilizator.

Extensibilitatea (ca posibilitate a utilizatorului de a defini arbitrar operatori, tipuri, funcții și metode de acces) este asigurată printr-un mecanism tipic sistemelor relaționale: ansamblul de cataloage. Spre deosebire de RDBMS-urile standard, Postgres memorează mai multă informație în aceste cataloage (nu numai date despre tabele și coloane, dar și despre tipuri, funcții, metode de acces). Aceste cata loage apar utilizatorului ca niște clase oarecare, la care poate avea acces. Astfel, se pot face extensii care în RDBMS-urile convenționale se fac doar modificând codul de bază al produsului sau adăugând noi modu le scrise special de furnizorul respectivului RDBMS. Serverul Postgres poate încorpora cod scris de utilizator prin încărcare dinamică.

Categorisirea ca "obiectual-relațională" reflectă existența unor facilități specifice orientării obiect (ex.: conceptul de clasă, echivalent cu cel de tabel din sintaxa tip SQL, moștenirea de către o clasă nou creată a atributelor unei clase existente etc.), în condițiile asigurării, în același timp, și a caracteristicilor de bază de date relaționale și suportării limbajelor de interogare tradiționale corespunzătoare (ceea ce nu asigură sistemele de gestiune de baze de date considerate "orientate obiect").

Faptul că acest spectru de facilități este de interes a primit diverse confirmări. Baze de date comerciale au înglobat opțiuni propuse pentru prima dată în Postgres. În cadrul unor proiecte de anvergură, s-a ales acest RDBMS pentru me mo rarea unor structuri mai complexe - date și programe - de diverse tipuri (exemple: baze de date de imagini cu regăsire de imagini pe baza unor criterii de selecție, integrarea unui GIS de tip GRASS (sistem de informare geografic, un alt produs de interes din domeniul public) pentru compactizare și exploatare mai eficientă etc. Produsul a mai fost, de asemenea, folosit la dezvoltarea de diverse aplicații în cercetare și producție (sistem de analiză date financiare, pachete de monitorizare performanțe motoare, bază de date de trasare asteroizi, baze de date de informații medicale etc.) și a fost utilizat în mai multe universități ca model demonstrativ.

Elemente de performanță

Viteza de tratare a unei cereri utilizator depinde (alături de alte alți factori: configu rație hardware a platformei, sistem de opera re etc. ) de dimensiunea bazei de date și complexitatea cererii. Sunt suportate baze de date de mari dimensiuni (peste 200Gbytes), dar performanțele scad vizibil la tratarea bazelor mai mari de 5Gbytes pe mașinile cu procesor pe 32 biți. Exploatarea bazelor de date de mari dimensiuni este recomandată doar pe mașinile pe 64 biți.

Arhitectură produs

PostgreSQL este construit conform unui model client/server proces per utilizator. În fiecare sesiune, sunt implicate trei procese Unix cooperante: postmaster (proces supervizor tip demon, gestionând comunicația dintre procesele "frontend" și "backend", efectuând inițiali zări, alocări de memorie etc. ), "backend“ (procesul server de baze de date; postmaster-ul inițiază un nou proces backend pentru fiecare nouă conectare; acest proces este cel care asigură tratarea interogărilor; rulează întotdeauna pe mașina server), "frontend" (proces cerând conexiune la backend prin intermediul postmaster; poate rula pe altă mașină, de exemplu pe stația de lucru a clientului).

"Garnitura" actuală Postgres include, pe lângă RDBMS-ul propriu zis, o serie de produse destinate administrării acestui tip de baze de date și facilitării dezvoltării de aplicații. Aceste produse s-au cumulat în timp, prin aportul mai multor specialiști din toată lumea (cu contribuții diverse ca factură, anvergură și grad de finisare). În continua re, se amintesc câteva dintre acestea.

Facilități de acces utilizator

Partea de client a Postgres (procesul de tip "frontend") este monitorul interactiv psql. Prin el se oferă o soluție minimală de acces al utilizatorului. Formularea unor co menzi la nivel linie nu e foarte comodă pentru utilizator și nici pentru administrator. Pentru facilitarea creării, întreținerii și consultării de baze de date s-a impus elaborarea unor utilitare cu interfață grafică și cu un set cores punzător de funcții.

PgAccess este un utilitar de administrare și consultare baze PostgreSQL scris în Tcl/Tk, cu o interfață grafică atrăgătoare și cu serie întreagă de tratări și facilități la nivel de tabele, interogări, secvențe (include și un generator de rapoarte).

Există, de asemenea, MPMGR (interfață pentru administrare grafică), MPSQL (interfață SQL grafică).

Facilități de programare

Se oferă interfețe de programare din C (bi blioteca libpq), din C++ (biblioteca libpq++) și soluția de imbricare SQL - "embedded SQL" (apelurile SQL, într-o sintaxă specifică, sunt integrate în aplicația scrisă în C care, înainte de a fi compilată, este prelucrată de preprocesorul ecpg).

Există, de asemenea, pgsql-perl5 (interfață de programare din Perl5), libpgtcl (interfață de programare din Tcl), PyGres95 (interfață de programare din python) etc.

Pentru integrare cu WWW, pentru aplicații simple se poate utiliza interfața PHP (preprocesor hipertext - limbaj de script imbricat în HTML, asistând dezvoltatorii de WWW la scrierea de pagini generate dinamic), iar pentru aplicații mai complexe se poate utiliza un script Perl, lansabil în contextul mecanismului CGI (WDB-P95, o interfață WWW-Postgres).

S-a dezvoltat un driver ODBC pentru PostgreSQL, numit psqlODBC.

Pentru programatorii de Java există un driver JDBC.

S-au scris clase Java dedicate facilitării accesării PostgreSQL.

A apărut și un produs de tip RAD (Rapid Application Development) pentru dezvoltarea rapidă de aplicații Java de accesare PostgreSQL, deocamdată încă nefinisat și interesant mai mult ca perspectivă.

Un context de accesare de utilitate foarte largă ar fi consultarea de la nivelul unui server WWW, prin intermediul applet-urilor Java (utilizând pachetele awt pentru interfața grafică cu utilizatorul și sql pentru interfațarea cu RDBMS-ul) apelând driverul JDBC pentru Java. Se poate asigura o bună interfațare cu utilizatorul comun (care, în mod uzual, nu cunoaște structura bazei respective și nici limbajul SQL). Prin folosirea funcției JDBC de obținere de metainformații despre o bază de date (nume de tabele, coloane etc.) și prin ghidare la nivelul interfeței grafice (ferestre de tip "help" , posibilitate de selectări din meniuri succesive etc.), acest utilizator poate fi asistat în formularea unei interogări SQL.

Am scris câteva aplicații minimale de acest gen (pentru un prototip de server WWW pentru administrația publică), aplicații care au funcționat corespunzător (în regim de testare). Exemplific cu câteva capturi de ecrane.

O certitudine este aceea că elaborarea unor aplicații de exploatare a unor baze PostgreSQL, pornind de la limbajul Java, este o soluție "de viitor". Adoptarea ei va putea asigura, comparativ cu alte opțiuni de programare amintite (programe C, script-uri Perl etc.) o viteză corespunzătoare de tratare a operațiilor SQL solicitate, în condițiile unei interfețe utilizator mai atractive (ca facilități oferite și ca aspect) și bene ficiind de securitatea și portabilitatea garantate de utilizarea limbajului Java.

Concluzii

Prin disponibilitate (posibilitatea de a obține gratuit produsul, documentația, utilitare de dezvoltare aferente) și prin facilitățile oferite, Postgres poate fi util oricărui programator dispus să facă mici eforturi suplimentare pentru a dezvolta, fără achiziționare de software, aplicații viabile. Unități care au nevoie de un sistem de consultare facilă a unor seturi de date și care nu dispun de resursele necesare achiziționării unor RDBMS-uri comerciale puternice sau nu au, în general, cerințe informatice de un volum și o complexitate care să justifice investiția în software ar putea prefera o soluție bazată pe utilizarea acestui produs.

Unele facilități specifice (posibilitatea de a-și modifica modul de operare "din mers", în urma extensiilor utilizator, posibilitatea existenței unor atribute non-atomice ale unei relații, elementele de orientare obiect) impun Postgres ca un instrument deosebit de adecvat pentru constituirea rapidă de prototipuri în dezvoltarea de noi aplicații și structuri de date (care pot fi de o mare complexitate).

Am încercat o definire generală a profilului acestui RDBMS și o trecere în revistă a unor produse aferente, fără detalieri.

Celor care găsesc această sugestie de interes, site-ul dedicat de pe Internet le oferă un fond acoperitor de resurse (posibilitatea de încărcare de software prin rețea, documentație (inclusiv on-line) de diverse facturi, liste de mail etc.).


BYTE România - septembrie 1998


(C) Copyright Computer Press Agora