Domeniul bazelor de date in zilele noastre
Tehnologia calculatoarelor face
permanent modificari mijloacelor de munca in intreaga lume.
Informatii care erau alta data
stocate in depozite pline cu rafturi pot fi accesate acum instantaneu la
o apasare de buton a mouselui.
Comenzile plasate de clienti din
alte state pot fi acum instantaneu procesate la nivelul unei instalatii
de fabricatie.
Desi acum 20 de ani foarte multe
dintre aceste informatii erau transportate in baze de date de pe calculatoarele
mainframe, birourile operau inca intr-un mediu de preluare secventiala.
Daca trebuia executata o interogare,
era informat departamentul MIS (Management Information Sistem) si datele
corespunzatoare erau obtinute cat mai curand posibil.
In plus fata de dezvoltarea unui
model de baza de date relationala, alte doua tehnologii au dus ceeace este
acum numit un sistem un sistem de baze de date client/server.
Prima tehnologie importanta a
fost calculatorul personal. Aplicatii ieftine, usor de folosit, precum
Lotus 1-2-3 si Word Perfect au permis angajatilor sa creeze documente si
sa administreze datele rapid si corect.
Deoarece vinzarile acestor produse
au crescut remarcabil, tehnologia a avansat foarte repede.
Utilizatorii s-au obisnuit sa
modernizeze continuu sistemele, deoarece rata schimbului a fost echilibrata
rapid de scaderea pretului celor mai avansate sisteme.
A doua tehnologie importanta a
fost dezvoltarea retelelor locala de calculatoare (LAN) si integrarea lor,
in birouri, in intrega lume.
Desi utilizatorii erau obisnuiti
cu terminalele conectate la un mainframe comun, acum fisierele procesate
put fi stocate local intr-un birou si accesate la orice calculator conectat
la retea.
Aparitia calculatorului Apple
Macintosh a introdus o interfata grafica prietenoasa cu utilizatorul,
astfel ca acum calculatoarele sunt ieftine, puternice si simplu de utilizat.
In plus, ele pot fi accesate din locuri situate la distanta si cantitati
mari de date put fi transferate la serverele de date departamentale.
In aceasta perioada de schimbari
rapide si progres , a parut un nou tip de sistem. Numit client/server,
deoarece procesarea este intre calculatoatele client si server de baze
de date, acest tip nou de aplicatie a constituit o modificare radicala
de la programarea aplicatiilor bazate pe calculatoarele mainframe. Dintre
numeroasele avantaje ale acestei arhitecturi, se remarca urmatoarele:
Capitol 2
UNIX este unul dintre
cele mai populare sisteme de operare din lume datorita bazei sale largi
de distributie si asistenta.
Initial a fost dezvoltat
ca un sistem multitasking pentru minicalculatoare si mainframe-uri la mijlocul
anilor 70, dar cu timpul a devenit unul dintre cele mai utilizate sisteme
de operare, in ciuda unei interfete uneori confuze si a lipsei de standardizare.
De unde aceasta popularitate?
Pentru ca multi programatori simt ca este cel mai potrivit- Adevaratul
Sistem de Operare. De unde si dezvoltarea Linuxului de catre un grup in
continua crestere de programatori care vor sa-si vare mainile (si cunostintele)
in propriul sistem de operare.
Versiuni de UNIX exista pe multe platforma,
de la calculatoare personale la supercalculatoare de tipul Cray Y-MP. Cele
mai multe versiuni de UNIX pentru PC-uri sunt insa scumpe si greoaie.
Linux este foarte
probabil, cea mai importanta realizare din domeniul software-ului liber
, de la originalul si binecunoscutul Razboi al Stelelor sau mai recentul
Emacs.
Acest sistem de operare
este croit atat pe masura companiilor cat si a institutiilor de invatamant
sau pentru utilizatorii particulari.
Nu mai este vorba
de un sistem de operare pentru initiatii UNIX care isi petrec ore in sir
in fata consolei (desi,probabil un numar important de utilizatori intra
in aceasta categorie).
Avem de-a face cu
o imitatie de UNIX care ruleaza pe calculatoare echipate cu procesoare
Intel de 32 biti (80386 sau mai recente).
Sub Linux se poate
rula o mare varietate de software: procesoare de documente cum este TeX,
interfata grafica X-Windows, compilatoare cum este GNU C\C++ sau software-ul
de comunicatie TCP\IP.
Este o implementare
versatila si de buna calitate de UNIX, care poate fi obtinuta si distribuita
liber in termenii licientei publice generale GNU (GPL, GNU-general public
licence- act care stipuleaza in principal dreptul de acces neangradit in
programele GNU).
Linux transforma un
calculator personal intr-o statie de lucru .Va pune la dispozitie intregul
potential al UNIX-ului.
Firmele instaleaza
Linux pe intregi retele de calculatoare in scopul gestiunii de date, pentru
crearea unui mediu de calcul distribuit sau pentru telecomunicatii.
In intreaga lume Universitatile
folosesc Linux pentru predarea proiectarii si implementarii sistemelor
de operare.
Bineinteles linux
este folosit de utilizatorii particulari, pentru aplicatii diverse.
Linuxul a fost si
este in continuare dezvoltat de un grup de voluntari care comunica in principal
pe Internet, facand schimburi de cod sursa, raportand erori si rezolvand
probleme intr-un mediu complet deschis.
Oricine se alatura acestui
efort de dezvoltare este binevenit: tot ceea ce i se cere este interesul
de a sapa prin codul unui sistem da operare de tip UNIX si ceva cunostinte
de programare.
Linux este compatibil
in mare masura cu un numar redus de standarde UNIX, incluzand caracteristicile
IEEE POSIX.1, Sistem V si BSD la nivel de sursa.
Scopul principal in
timpul dezvoltarii acestui sistem de operare a fost acela e a asigura
un nivel de compatibilitate cat mai mare cu restul sistemelor si aplicatiilor
UNIX.
Un numar mare de programe
pentru UNIX, accesibile liber, pot fi compilate imediat pe Linux.
In plus, tot codul
sursa al Linux-ului, inclusiv nucleul, driverele pentru periferice, bibliotecile,
programele utilizator si utilajul de dezvoltare sunt distribuite liber.
Caracteristicile Linux-ului
include controlul executiei job-ului tip POSIX, pseudoterminalele, suportul
pentru versiuni narionale sau console virtuale.
Pot fi memorate date
in varii sisteme de gestiune a fisierelor, cel nativ, ext2fs, dar si Minix-1,
Xenis, Dos si ISO 9660 pentru discuri compacte.
Linux poseda o implementare
completa a suitei de protocoale de comunicatie TCP\IP.
Sunt incluse drivere
pentru cele mai raspandite placi de retea Ethernet, implementari
pentru SLIP, PLIP si PPP, sistem de fisiere in retea (NFS) si gama completa
de servicii client-server TCP/IP.
Nucleul Linux este
programat sa utilizeze facilitati speciale ale modului protejat al procesoarelor
Intel 80386. In particular, Linux foloseste facilitatile acestor procesoare
pentru gestiune a memoriei si multitasking.
In sarcina nucleului
Linux intra si executia programelor cu ajutorul tehnicii de paginare la
cerere. Aceasta inseamna ca numai acele portiuni de program necesare pentru
executie intr-un anumit moment sunt citite de pe disc in memoria calculatorului.
De asemenea, Linux
utilizeaza partajarea de memorie intre programe cu copiere la scriere.
Acest lucru inseamna o reducere a necesarului de memorie si deci o mai
buna gestionare globala a acesteia.
In vederea cresterii
memoriei disponibile pentru executia programelor, Linux implementeaza paginarea
pe disc, permitand alocarea a pana la 256 Mb a ceea ce se numeste spatiu
de swap. Cand programele au nevoie de multa memorie interna, o parte
din informatii este evacuata in acel spatiu pe disc, iar locul ei este
refolosit. Portiuni de date si programe circula intre disc si memoria interna,
in functie de necesitati. Asadar, spatiul de swap este o extensie utila
a memoriei RAM, dar nu o poate inlocui, fiind mult mai lenta.
Nucleul Linux gestioneaza
intreaga memorie interna atat pentru executia programelor cat si pentru
accesul rapid la fisiere, de tip cache. Toata memoria disponibila este
utilizata pentru cache de fisiere. Cand se ruleaza programe mai mari, zona
de cache este diminuata corespunzator.
Programele executabile
pot folosi legarea dinamica la biblioteci partajate: codul bibliotecii,
utilizat in comun, se gaseste intr-un fisier unic pe disc. Astfel programele
executabile pot ocupa mult mai putin spatiu.
Exista si posibilitatea
legarii statice, cand codul este inclus in intregime in fisierul executabil,
pentru cei ce doresc depanarea sau intretinerea unor executabile independent
de prezenta bibliotecii partajate.
Legarea dinamica a
bibliotecii partajate se produce numai in momentul executiei, pemitind
programatorului sa inlocuiasca module din biblioteca cu unele proprii.
Pentru a usura depanarea
programelor, nucleul face posibil vidajul de memorie si analiza lui in
cazul terminarii anormale, pentru a putea determina cauzele caderii.
Limbaje de programare si utilitare
Linux ofera un mediu
complet UNIX pentru dezvoltarea de programe si aplicatii, incluzand bibliotecile
standard, compilatoarele, depanatoarele si intregul set de utilizare software
necesar.
In mod obisnuit, dezvoltarea
de programe pentru UNIX se face in limbajele C/C++. Compilatorul standard
pentru aceste limbaje este compilatorul GNU, gcc.
In afara de C si C++,
multe alte limbaje compilate sau interpretate sunt disponibile sub Linux,
cum ar fi Smalltalk, FORTRAN, Pascal, Lips, Scheme si Ada.
In plus, sunt disponibile
asambloare pentru scrierea de cod in mod protejat pentru 80386. Interpretoare
sofisticate, raspindite in lumea Unix, cum este Perl sau Tcl/Tk pentru
dezvoltarea de aplicatii sub X Windows sunt disponibile si sub Linux.
Depanatorul standard
sub Linux este gdb, care permite executia controlata a unui program sau
analiza unui vidaj de memorie.
Cu ajutorul
utilitarului Gprof se realizeaza culegerea de statistici referitoare la
executia unui program in scopul ameliorarii performantelor lui.
Emacs este un editor
de programe sofisticat care ofera un mediu integrat de editare si compilare
interactiva a programelor in diverse limbaje de programare.
Alte utilitare includ
make, pentru compilarea de aplicatii mari si RCS, un sistem pentru intretinerea
versiunilor unui program.
Legarea bibliotecilor
se face dinamic, permitand fisiere executabile mici sau inlocuirea de rutine
de biblioteca cu rutine utilizator.
Linux este astfel
un mediu ideal pentru dezvoltarea de programe: modern, standard si bine
echipat.
Portarea pe alte sisteme
de tip UNIX este foarte mult usurata.
Linux poate fi utilizat
ca o solutie economica pentru dezvoltarea de programe , acasa sau in firme
specializate ,pentru diverse alte sisteme tinta.
Studiul programarii
sub Linux este usurat de faptul ca toate sursele sistemului de operare
sunt disponibile.
Revista CHIP pag 2 LINUX de Costin Oproiu
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 17 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.
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 asigurarii 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.
Viteza de tratare a
unei cereri utilizator depinde (alaturi de alti factori: configurarea hardware
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
chiar de catre un roman, si anume domnul Teodorescu Constantin, 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).
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.
Prin disponibilitate
(posibilitate de a obtine gratuit produsul, documentatia, utilitare de
dezvoltare aferente) si prin facilitatile oferite, Postgres 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.).
Instalarea server-ului POSTGRESQL
In primul rand trebuie sa cream un cont
pentru server-ul de baze de date astfel:
# su
# /usr/sbin/adduser postgres
# passwd postgres
# exit
Odata ce am facut asta creeam directoarele
necesare pentru a putea instala server-ul POSTGRESQL cu permisiunile adecvate:
# su
# cd /usr/src
# mkdir pgsql
# chown postgres:postgres pgsql
# cd /usr/local
# mkdir pgsql
# chown postgres:postgres pgsql
# exit
Acum incepem cu procesul de compilare
si instalare:
# su postgres
# cd /usr/src/pgsql
# tar xzvf /local/download/postgres-7.0.x.tar.gz
Aici difera un pic in functie de versiune
configure poate fi in directorul postgres-7.0.x/src sau poate fi in postgres-7.0.x.
Deci vedeti unde este, eventual dintr-o alta consola si apoi faceti schimbarea
de director.
# cd /usr/src/pgsql/postgresql-7.0.x/src
# ./configure --prefix=/usr/local/pgsql \
--with-tcl --with-perl
# gmake all > make.log 2>&1 &
# tail -f make.install.log
# exit
Acum trebuie sa configuram sistemul
si sa-l configuram astfel incat sistemul sa stie unde sunt bibliotecile,
trebuie sa actualizam fisierul /etc/ld.so.conf
# su
# echo /usr/local/pgsql/lib >> /etc/ld.so.conf
# /sbin/ldconfig
# exit
De asemenea trebuie sa actualizam fisierul
~/.bash_profile al contului de administrator al serverului POSTGRESQL.
# su postgres
Apoi editam fisierul ~/.bash_profile
si adaugam urmatoarele linii:
PATH =$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
PGLIB=/usr/local/pgsql/lib
PGDATA=/usr/local/pgsql/data
export PATH MANPATH PGLIB PGDATA
# exit
Odata ce am instalat si configurat serverul
de baze de date POSTGRESQL trebuie sa initializam si sa pornim server-ul
astfel:
# su postgres
# initdb
# cd
# nohup postmaster -i > pgserver.log 2>&1 &
********************************************
Presupunem ca avem o baza de date numita
Proba cu o tabela numita Test.
Aceasta o cream astfel, dupa ce am pornit
server-ul cu comanda de mai sus:
# createdb Proba
# psql Proba
Proba=> create table Test(Nume varchar(20),Prenume varchar(20),
Proba-> Email varchar(30));
Astfel am creat baza de date Proba si
in cadrul ei tabela Test.
Acum nu mai ramane decat sa introducem
cateva inregistrari ca sa avem o
baza de date.
Aceasta se face astfel:
Proba=>INSERT INTO Test VALUES('Ionescu','Ion','ionescu@linux.ro');
Proba=>INSERT INTO Test VALUES('Popescu','Marin','popescu@linux.ro');
Proba=>INSERT INTO Test VALUES('Marin','Adrian','marin@linux.ro');
Si putem introduce cate inregistrari
dorim.
********************************************
Acum trebui sa setam drepturi de extragere
pentru utilizatorul folosit de server-ul de web Apache.
# su postgres
# psql proba
Proba=> GRANT SELECT ON Test TO nobody;
Proba=> \z
Proba=> \q
# exit
In prealabil trebuia creat user-ul nobody
cu comanda:
# createuser nobody
altfel riscam ca server-ul sa va spuna ca user-ul nobody nu exista.
Comanda createuser nobody o dam dupa
ce am intrat ca utilizator postgres si am pornit server-ul cu comanda amintita
mai sus cea cu nohup postmaster.
Instalarea
server-ului de web APACHE cu PHP ca modul
si cu suport de baze de date PostgreSQL
Pentru a instala APACHE cu PHP introducem
urmatoarele instructiuni:
# su
# cd /usr/src
# tar xzvf /local/download/apache_1.3.x.tar.gz
# tar xzvf /local/download/php-4.0.x.tar.gz
# cd apache_1.3.x
# ./configure --prefix=/usr/local/apache
# cd ../php-4.0.x
# ./configure --with-pgsql=/usr/local/pgsql \
--with-apache=../apache_1.3.x --enable-track-vars \
--enable-sysvsem --enable-sysvshm \
--enable-url-includes
# make
# make install
# cd ../apache_1.3.x
# ./configure --prefix=/usr/local/apache \
--activate-module=src/modules/php4/libphp4.a
# make
# make install
# cd ../php-4.0.x
# cp php4.ini-dist /usr/local/lib/php4.ini
# exit
Acum trebuie configurat serverul de
web APACHE.Aceasta se face prin modificarea catorva setari in fisierul
/usr/local/apache/conf/httpd.conf
In acesta trebuie modificate directivele:
ServerAdmin , ServerName, DocumentRoot si directiva Directory dar si
AddType application/x-httpd-php4 .php
DirectoryIndex index.htm index.php
Acestea toate si celelalte sunt bine
comentate in fisierul httpd.conf din directorul conf al server-ului APACHE.Comentariile
incluse in fisier ne dau explicatii detaliate pentru a putea face corect
aceste setari.Acum dupa ce am facut toate setarile de rigoare nu ne ramane
decat sa pornim server-ul.
Pornirea serverului APACHE se face astfel:
# su
# cd /usr/local/apache/bin
# ./apachectl start
Iar oprirea server-ului se face tot
cu comanda apachectl astfel:
# ./apachectl stop
Postgres
foloseste un protocol de mesaje de baza pentru comunicarea intre frontend
si backend.
Protocolul
este implementat peste TCP/IP si deasemenea pe sochetii Unix.
Cele trei
componente majore ale Postgresului sunt: frontend (ruleaza pe client),
postmasterul si backendul (ruleaza pe server).
Postmasterul
si backendul au roluri diferite dar ele pot fi implementate de acelasi
executabil.
Un frontend
trimite un pachet de pornire la postmaster. Acesta include numele userului
si a bazei de date la care userul vrea sa se conecteze.
Postmasterul
foloseste aceste informatii consultand, in plus, si fisierul pg_hba.conf
determinand daca informatiile de autentificare cu frontendul corespund.
Odata
ce aceste informatii de autentificare sunt validate de catre Postmaster
acesta raspunde frontendului ca are permisiunea si-l paseaza backendului.
Interogarile
si rezultatele schimbate intre frontend si backend sunt comunicatii de
natura secventiala. Postmasterul nu mai ia parte in continuare la comunicatie.
Cand frontendul
doreste sa se deconecteze, acesta trimite un pachet de inchidere a conecsiunii
fara asteptarea raspunsului de la backend.
Pachetele
sunt trimise sub forma de strimuri de date.
Primul
bit determina ce ar trebui sa se astepte de la restul pachetului.
In sectiunea
de protocol se poate vorbi de patru tipuri diferite de mesaje depinzand
de stadiul conecsiunii si anume: autentificare, interogare, apelari de
functii, si terminatori.
Frontendul trimite pachetul Startup, Postmasterul il foloseste si consulta continutul fisierului pg_hba.conf determinand metoda de autentificare a frontendului ce trebuie folosita.
Odata ce
autentificarea este facuta cu succes, caz in care postmaster raspunde
cu mesajul AutentificationOk, acesta da legatura la backend.
Frontendul trimite
mesaje de interogare la backend. Raspunsul trimis de backend depinde de
continutul interogarii.
Frontendul trimite mesaje de apelare de functii catre backend. Raspunsul trimis de catre backend depinde de rezultatul functiei apelate.
Frontendul trimite un mesaj terminare si inchide conecsiunea imediat.
PostgreSQL Programer’s Guide Frontend/Backend Protocol Chapter 22 by Phil Thompson
Un exemplu de aplicatie front/end este psql. Acesta da posibilitatea de a tiparii interactiv interogari catre postgres si de a vedea rezultatele interogarii.
Redhat 5.1 man psql
Una din
tehnologiile fundamentale in sistemul de operare Windows este Open Database
Connectivity (ODBC-Capacitatea de conectare a bazelor de date deschise).
Aceasta
tehnica permite aplicatiilor sub Windows sa acceseze o baza de date prin
intermediul unui program driver.
In loc
sa avem o interfata personalizata cu fiecare baza de date, ne puteti conecta
la baza de date pe care o dorim printr-un simplu program driver.
Seamana
foarte mult cu conceptul de program driver pentru imprimante din Windows,
pentru care scrieti programul fara a va interesa tipul de imprimanta.
Diferentele
particulare, pe care in procedura DOS trebuie sa le particularizam pentru
fiecare imprimanta in parte, sunt manipulate de programul driver pentru
imprimanta.
ODBC preia
acelasi concept si il aplica bazelor de date.
Partea
vizuala a ODBC se afla in Control Panel pentru sistemele Windows si in
propriul grup de programe ptr. Windows NT.
ODBC este o abstractizare a API (Interfata de programare a aplicatiei)
care permite scrierea de cod standard “ODBC”, folosind ODBC API.
Accesul backend vine de la driverele ODBC, sau drivere specifice care permit
accesul la date.
PostODBC este un astfel de driver, de-a lungul altora care sunt disponibile,
cum ar fi OpenLink ODBC, etc.
Odata ce am scris o aplicatie ODBC ar trebui sa fim capabili sa ne conectam
la orice baza de date backend, atata timp cat schema bazei de date este
aceeasi.
Spre exemplu, am putea avea un server MS SQL si PostgreSQL care au aceasi
date.
Folosind ODBC, aplicatia noastra Windows ar putea face aceleasi cereri
sursa backend putand fi aceeasi.
In lumea reala, diferentele de drivere si nivelul suportat de ODBC reduc
potentialul ODBC.
Access, Delphi si Visual Basic suporta direct ODBC. Sub C++, cum ar fi
Visual C++, se poate folosi C++ ODBC API.
In visual C++, putem folosi clasa CrecordSet, care acopera setul ODBC API
prin clasele MFC. Aceasta este cel mai usor drum daca dorim sa dezvoltam
aplicatia Windows C++ sub WindowsNT.
Daca scriem o aplicatie pentru PostgreSQL putem folosi cererile ODBC la
serverul PosgreSQL, sau aceasta numai cand un alt program de baze de date
ca MS SQL Server sau Access are nevoie de acces la date.
Visual Basic dispune de obiecte RecordSet care folosesc ODBC direct pentru
acces la date.
O alta interfata disponibila insa pentru JAVA a Postgresului este JDBC.
Capitol 4
Conceptul arhitectural al Postgresului
In jargon baze de date, Postgres foloseste un model client/server numit
“proces per-user”.
O sesiune Postgres consta din cooperarea urmatoarelor procese (programe):
Unproces daemon de supervizare (postmaster), aplicatia frontend a userului
(programul psql), si unul sau mai multe servere backend de baze de
date (procesul postgres el insusi)
Un singur proces postmaster conduce o colectie de baze de date pe o
singura gazda.
Astfel o colectie de baze de date este numita si site.
Aplicatiile frontend care doresc sa acceseze o baza de date printr-o
instalare face apelul la librarie.
Libraria trimite cererea userului prin retea la postmaster.
Cum este stabilita o conecsiune


Cum o conecsiune este stabilita, aceasta porneste un nou proces server
backend si conecteaza procesul frontend la un nou server.
Din acel punct, procesul frontend si serverul backend comunica fara
interventia postmasterului. Cu toate ca, postmasterul merge intotdeauna,
asteptand cereri, procesele frontend si backend vin si pleaca.
Libraria libpq permite unui singur frontend sa faca multiple conecsiuni
la procesele backend.
Oricum, aplicatia frontend este un singur fir de executie suportate
in mod curent in libpq.


PosgreSQL Programer’s Guide Arhitecture pag 2