Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web

 

Capitol 1

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:

     Tehnologia client/server este modelul de procesare in care o singura aplicatie este folosita in comun de mai multe procesoare (front-end si back-end), care coopereza (intr-un mod transparent pentru utilizator) pentru terminarea procesarii ca pe un singur task unificat.
      Un produs client/server combina impreuna procesoarele pentru a asigura o singura imagine a sistemului (iluzie).
      Resursele partajabile sunt pozitionate la clientii care au cereri care acceseaza servicii autorizate.
      Aceasta arhitectura este total recursiva: pe rand serverele pot deveni clienti si pot cere servicii de la alte servere din retea si asa mai departe.
 
 

Capitol 2

Linux

Scurta istorie

         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.

Caracteristicile sistemului

         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
 
 

Capitol 3

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 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.

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 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.

Elementele de performanta

         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).

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, 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

   Frontend/Backend  Protocol

           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.

Autentificare

           Frontendul trimite pachetul Startup, Postmasterul il foloseste si consulta continutul fisierului pg_hba.conf determinand metoda de autentificare a frontendului ce trebuie folosita.

Interogare

           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.

Apelari de functii

          Frontendul trimite mesaje de apelare de functii catre backend. Raspunsul trimis de catre backend depinde de rezultatul functiei apelate.

Terminare

           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
 

Interfata ODBC

           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

                       Arhitectura

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

a) aplicatia frontend trimite o cerere la postmaster prin binecunoscutul sochet de retea.
b) postmasterul creaza un server backend.

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.

c) frontend conectat la serverul backend.
O multime de conecsiuni pot fi stabilite.
O implicatie a acestei arhitecturi este ca  postmasterul si backendul ruleaza pe o aceeasi masina (serverul de date), in timp ce aplicatia frontend poate rula oriunde.
Acest lucru este demn de retinut pentru ca fisierele care pot fi accesate pe o masina  client pot nu fi accesibile (sau pot fi accesate numai folosind un nume diferit) pe masina server baza de date.

De retinut este faptul ca postmasterul si serverul postgres ruleaza sub identificatorul de superuser postgres.
De notat ca superuserul Postgres nu trbuie sa fie neaparat superuserul UNIX, “root”.
In orice caz, orice fisiere in legatura cu baza de date ar trebui sa apartina superuserului Postgres.

PosgreSQL Programer’s Guide   Arhitecture pag 2