PostgreSQL

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
PostgreSQL
software
Siglă
Exemplu de captură de ecran
Tip Sistemul de gestionare a bazelor de date
Dezvoltator Grupul de dezvoltare globală PostgreSQL
Data primei versiuni 1996
Ultima versiune 13 (24 septembrie 2020 )
Sistem de operare Multiplatform
Limba C.
Licență Licență BSD
( licență gratuită )
Site-ul web www.postgresql.org

PostgreSQL (pronunția în engleză [poʊstɡrɛs ˌkjuːˈɛl] Pronunție , 5,6 kB MP3) este un SGBD complet orientat obiect , lansat sub o licență gratuită (stil licență BSD ). Adesea prescurtat ca „ Postgres ”, deși acesta este un nume vechi al aceluiași proiect, este o alternativă reală atât la alte produse gratuite precum MySQL , Firebird SQL și MaxDB, cât și la cele cu cod închis precum Oracle , IBM Informix sau DB2 și oferă caracteristici unice de acest gen care îl plasează în unele privințe în fruntea sectorului bazelor de date .

Istorie

Inițial SGBD a fost numit INGRES și a fost un proiect al Universității din Berkeley . În 1982 , liderul proiectului, Michael Stonebraker , a părăsit Berkeley pentru a comercializa produsul, dar ulterior s-a întors în contextul academic. În 1985 a părăsit din nou universitatea pentru a da viață unui proiect post-Ingres (care a luat numele de Postgres ) care a depășit limitele evidente ale produselor concurente ale vremii. Bazele izvoarelor Ingres și Postgres au fost și au rămas în timp, destul de distincte.

Noul proiect a urmărit să ofere suport complet pentru tipurile de date, în special capacitatea de a defini noi tipuri de date, UDF (User Defined Function), User Defined Types. A existat, de asemenea, posibilitatea de a descrie relația dintre entități (tabele), care până atunci a fost lăsată complet utilizatorului. Astfel, Postgres nu numai că a păstrat integritatea datelor, dar a reușit să citească informațiile din tabelele conexe într-un mod natural, urmând regulile definite de utilizator.

Până în 1986, dezvoltatorii au lansat un număr mare de articole care descriu noul sistem, iar în 1988 a fost lansat un prim prototip de lucru. Versiunea 1 a fost lansată în iunie 1989 pentru un număr limitat de utilizatori. A urmat o versiune 2 în iunie 1990 , în care sistemul de reguli a fost complet rescris. În versiunea 3, din 1991 , acest sistem a fost rescris din nou, dar a fost adăugat și suport pentru mai mulți manageri de stocare a datelor și un motor de interogare îmbunătățit. Până în 1993, exista deja un număr semnificativ de utilizatori care inundau echipa de dezvoltare cu cereri de asistență și noi caracteristici. După lansarea versiunii 4, care a fost în primul rând o curățare a codului, proiectul s-a încheiat.

Deși proiectul Postgres a fost abandonat oficial, licența BSD a permis dezvoltatorilor Open Source să obțină o copie a software-ului și apoi să-l îmbunătățească la discreția lor. În 1994, doi studenți Berkeley, Andrew Yu și Jolly Chen, au adăugat un interpret SQL la Postgres pentru a înlocui vechiul QUEL din vremea lui Ingres. Noul software a fost apoi lansat pe web sub numele de Postgres95 . În 1996 și-a schimbat din nou numele: pentru a evidenția suportul pentru limbajul SQL, s-a numit PostgreSQL .

Prima versiune a PostgreSQL a fost versiunea 6. De atunci, o comunitate de dezvoltatori voluntari din întreaga lume care se coordonează prin Internet au fost responsabili de proiect. Versiunea 6 a fost urmată de altele, fiecare dintre acestea aducând noi îmbunătățiri. În ianuarie 2005 , a fost lansat 8, primul nativ pentru Windows.

Deși licența permite comercializarea software-ului, codul Postgres nu a fost dezvoltat comercial la fel de repede ca Ingres. La un moment dat, totuși, Paula Hawthorn (membru original al echipei lui Ingres) și Michael Stonebraker au format o companie numită Illustra Information Technologies pentru a o comercializa.

Descriere

O analiză rapidă a PostgreSQL ar putea sugera că este similară cu alte baze de date. PostgreSQL folosește limbajul SQL pentru interogarea datelor. Acestea sunt stocate ca o serie de tabele cu chei străine care servesc la legarea datelor conexe. Programabilitatea PostgreSQL este principala sa forță și principalul avantaj față de concurenții săi: PostgreSQL facilitează construirea de aplicații pentru lumea reală, folosind datele preluate din baza de date.

Bazele de date SQL conțin date simple în „ tabele plate ”, necesitând utilizatorului să aducă și să grupeze informații legate folosind interogări. Acest lucru contrastează cu modul în care atât aplicațiile, cât și utilizatorii folosesc datele: cum ar fi într-un limbaj la nivel înalt cu tipuri de date complexe în care toate datele conexe funcționează ca elemente complete, de obicei denumite obiecte sau înregistrări (în funcție de limbă).

Conversia informațiilor din lumea SQL în cea a programării orientate pe obiecte prezintă dificultăți în principal datorită faptului că cele două lumi utilizează modele diferite de organizare a datelor. Industria numește această problemă „ nepotrivire de impedanță ”: cartografierea datelor de la un model la altul poate dura până la 40% din timpul de dezvoltare al unui proiect. O serie de soluții de cartografiere, denumite în mod obișnuit „ cartografiere obiect-relațională ”, pot rezolva problema, dar tind să fie scumpe și să aibă propriile probleme, provocând performanțe slabe sau forțând accesul la toate datele prin limbajul care acceptă cartografierea în sine.

PostgreSQL poate rezolva multe dintre aceste probleme direct în baza de date. PostgreSQL permite utilizatorilor să definească noi tipuri pe baza tipurilor normale de date SQL, permițând bazei de date să înțeleagă datele complexe. De exemplu, puteți defini o adresă ca un set de șiruri de text diferite pentru a reprezenta numărul casei, orașul etc. De aici înainte puteți crea cu ușurință tabele care conțin toate câmpurile necesare pentru a stoca o adresă cu o singură linie de cod.

PostgreSQL permite, de asemenea, moștenirea de tip, unul dintre conceptele principale ale programării orientate pe obiecte . De exemplu, puteți defini un tip de cod poștal, apoi puteți crea un tip cap (cod poștal) sau un tip us_zip_code pe baza acestuia. Prin urmare, adresele din baza de date ar putea accepta ambele tipuri, iar regulile specifice ar putea valida datele în ambele cazuri. În primele versiuni ale PostgreSQL, implementarea de noi tipuri necesita scrierea extensiilor în C și compilarea lor pe serverul de baze de date. De la versiunea 7.4 a devenit mult mai ușor să creați și să utilizați tipuri personalizate prin comanda „CREATE DOMAIN”.

Programarea bazei de date în sine poate obține avantaje mari prin utilizarea funcțiilor. Majoritatea sistemelor SQL permit utilizatorilor să scrie o procedură, un bloc de cod SQL pe care alte instrucțiuni SQL îl pot invoca. Cu toate acestea, SQL în sine rămâne inadecvat ca limbaj de programare, astfel încât utilizatorii pot întâmpina mari dificultăți în construirea unei logici complexe. Și mai rău, SQL în sine nu acceptă mulți dintre principalii operatori de bază ai limbajelor de programare, cum ar fi bucla și structurile de control condiționat . Prin urmare, fiecare furnizor și-a scris propriile extensii de limbaj SQL pentru a adăuga aceste caracteristici și, prin urmare, aceste extensii nu funcționează neapărat pe diferite platforme de baze de date.

În PostgreSQL, programatorii pot implementa logica într-unul din multele limbaje acceptate.

  • O limbă maternă numită PL / pgSQL similară cu limbajul procedural PL / SQL al Oracle, care oferă avantaje deosebite în procedurile care necesită o cerere intensivă.
  • Împachetări pentru limbaje de scripturi populare, cum ar fi Perl , Python , Tcl și Ruby, care vă permit să utilizați puterea lor în manipularea șirurilor și conectarea la biblioteci extinse de funcții externe.
  • Procedurile care necesită o performanță mai mare și o logică complexă de programare pot folosi C și C ++ .
  • Mai mult, este disponibilă și o interfață cu limbajul R , bogată în funcții statistice și pentru calcularea matricei .

Programatorul poate plasa codul pe server ca funcții , care fac codul reutilizabil ca o procedură stocată , astfel încât codul SQL să poată apela funcții scrise în alte limbi (cum ar fi C sau Perl).

Punctele forte ale programabilității PostgreSQL:

  • Creșterea performanței, deoarece logica este aplicată direct de serverul de baze de date simultan, reducând fluxul de informații între client și server.
  • Fiabilitate sporită, datorită centralizării codului de control pe server, nefiind nevoită să gestioneze sincronizarea logicii între mai mulți clienți și datele stocate pe server.
  • Prin plasarea straturilor de abstractizare a datelor direct pe server, codul clientului poate fi mai ușor și mai simplu.

Aceste avantaje fac din PostgreSQL, fără îndoială, cel mai avansat sistem de baze de date din punct de vedere al programabilității, ceea ce ajută la explicarea succesului său. Utilizarea PostgreSQL poate reduce timpul de programare total al multor proiecte, avantajele menționate mai sus crescând odată cu complexitatea proiectului în sine, evident dacă este utilizat de utilizatori experimentați în utilizarea acestuia.

Indici

Suportă indicii GiST și GIN ( Inversed Generalized Index ) utilizează arborele B + , hash. Puteți crea indexuri de expresii cu un index al rezultatului unei expresii sau funcții în loc de valoarea simplă a unei coloane, indexuri parțiale unde indexați o parte a unui tabel cu expresia SQL: CREATE INDEX. De asemenea, este capabil să utilizeze mai mulți indici împreună pentru a efectua interogări complexe.

Scheme

În PostgreSQL, toate obiectele (cu excepția rolurilor și spațiilor de tabelă ) sunt localizate într-o schemă. Acționează efectiv ca un spațiu de nume , permițând obiectelor cu același nume să coexiste în aceeași bază de date. Schemele sunt similare cu folderele din sistemul de fișiere , cu excepția faptului că nu pot fi una în alta și nu este posibil să se creeze legături simbolice care să indice o altă schemă sau obiect.

Bazele de date sunt create în mod implicit cu schema „publică” (comună), dar orice altă schemă suplimentară poate fi adăugată, iar publicul nu este necesar.

O „cale de căutare” determină ordinea în care sunt verificate schemele obiectelor necalificate (cele fără o schemă prestabilită) care pot fi configurate pe baza de date sau la nivelul rolului. „Calea de căutare” conține în mod implicit numele schemei speciale a „$ utilizator” care caută mai întâi o schemă cu numele utilizatorului conectat la baza de date. Dacă nu este găsit, caută următorul model.

Tipuri de date

Sunt incluse în mod nativ o mare varietate de tipuri de date:

  • Booleeni
  • numere cu precizie arbitrară
  • Personaje (text, varchar, char)
  • Piste
  • Data / ora (marca de timp / ora cu / fără fusuri orare, dată, interval)
  • Bani
  • Enum
  • Șiruri de biți
  • Tipul de căutare text
  • Compozit
  • Matrice (lungime variabilă și orice tip de date, inclusiv text și tipuri compuse) de până la 1 GB.
  • Primitive geometrice
  • Adrese IPv4 și IPv6
  • Blocuri CIDR și adrese MAC
  • XML care acceptă interogări XPath (începând cu 8.3)
  • UUID (de la 8.3)
  • JSON (de la 9.2)

MVCC

PostgreSQL gestionează concurența printr-un sistem cunoscut sub numele decontrol simultan multiversion (MVCC) care oferă fiecărei tranzacții o „imagine” a bazei de date, permițând modificări care nu sunt vizibile pentru alte tranzacții până când nu sunt executate. Acest lucru elimină aproape întotdeauna necesitatea de a utiliza încuietori de citire și asigură menținerea eficientă a principiilor ACID.

Programe de gestionare a interfeței grafice

  • phpPgAdmin - este o aplicație PHP gratuită care vă permite să administrați într-un mod simplificat, cu o interfață grafică bazată pe web, baza de date PostgreSQL
  • pgAdmin - este o aplicație multiplatformă, scrisă în C ++ , care vă permite să gestionați într-un mod simplificat, cu o interfață grafică, baza de date PostgreSQL.

Alte proiecte

linkuri externe

Controlul autorității GND ( DE ) 4690455-4
Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă cu software-ul liber