Înțelegerea arhitecturii PostgreSQL

Finalizat

PostgreSQL este un sistem de gestionare a bazelor de date relaționale client/server (RDMS). PostgreSQL acceptă, de asemenea, o gamă largă de extensii, cum ar fi extensia Citus din opțiunea Azure Cosmos DB pentru PostgreSQL. După ce o extensie este încărcată în baza de date, aceasta funcționează ca orice caracteristică încorporată.

PostgreSQL are, de asemenea, propriul limbaj de interogare numit pgsql. În plus, PostgreSQL acceptă limbaje procedurale precum Ruby on Rails.

Captură de ecran care arată extensiile și limbile PostgreSQL.

Arhitectura client/server

PostgreSQL se bazează pe o arhitectură client/server. Serverul stochează, gestionează și returnează date către programele client. Programele client solicită date folosind pgSQL sau unul dintre limbajele procedurale pe care PostgreSQL le acceptă, cum ar fi PL/pgSQL.

O sesiune PostgreSQL constă din trei părți:

  • Șeful de poștă
  • Aplicația client
  • Serverul

Postmaster

Postmaster este procesul demonului de supraveghere care gestionează un server PostgreSQL. Demonul postmaster gestionează comunicarea între diferitele procese ale serverului, inclusiv inițializarea serverului, închiderea serverului, gestionarea cererilor de conectare și efectuarea altor procese de fundal. În Azure Database for PostgreSQL, nu aveți acces la sistemul de fișiere sau la procesul Postmaster.

Aplicații client

Clienții rulează interogări și interacționează cu bazele de date de pe un server Azure Database for PostgreSQL. Pentru a rula interogări, aveți nevoie de un instrument client, cum ar fi Azure Data Studio, DBeaver, pgAdmin sau psql. Veți afla despre instrumentele client în modulul următor.

Procese de server

Cluster - un singur server PostgreSQL poate găzdui mai multe baze de date de utilizatori. PostgreSQL se referă la această colecție de baze de date ca la un cluster. Fiecare bază de date este separată de cealaltă, iar utilizatorii și aplicațiile interacționează cu o singură bază de date. Utilizatorii sunt creați la nivel de cluster sau server.

Datele pentru aceste baze de date sunt stocate în directorul de date al clusterului numit PGDATA. Directorul de date PGDATA include un fișier care conține versiunea de PostgreSQL în curs de rulare, pg_tblspc care conține link-uri către tablespaces și pg_xlog care conține fișierele jurnal de scriere înainte.

Notă

Azure Databases for PostgreSQL este un serviciu care gestionează stocarea și sistemul de fișiere de bază. Ca utilizator al acestui server nu aveți acces direct la directorul PGDATA sau la oricare dintre subdirectoarele sale.

În plus față de bazele de date pe care le creați, există trei baze de date de sistem:

  • postgres - baza de date implicită. După ce serverul se creează, vă conectați la baza de date postgres.
  • azure_maintenance - baza de date care gestionează procesele de servicii. Nu aveți acces direct la această bază de date.
  • azure_sys - baza de date Query Store. Nu trebuie să modificați baza de date azure_sys sau schemele acesteia. Modificarea oricărui lucru din azure_sys împiedică Magazinul de interogări și alte caracteristici de performanță să funcționeze corect.

Scheme - O schemă este o grupare denumită de obiecte de bază de date. Bazele de date mari cu multe obiecte beneficiază de organizarea obiectelor în scheme. De exemplu, crearea unei scheme pentru obiectele legate de vânzări și a unei scheme pentru obiectele legate de client facilitează găsirea obiectului corect.

Parametrii serverului - PostgreSQL are mai multe fișiere de configurare, care determină modul în care ar trebui să funcționeze motorul bazei de date. Fișierul principal de configurare PostgreSQL se numește postgresql.conf.

Azure Database for PostgreSQL a înlocuit aceste fișiere de configurare cu parametri Server, care pot fi accesați prin portalul Azure sau utilizând Azure CLI.

Pentru a vizualiza sau a modifica parametrii serverului în portalul Azure:

  1. Navigați la serverul Azure Database for PostgreSQL.
  2. Din meniul din stânga, sub Setări, selectați Parametrii serverului.
  3. Utilizați bara de căutare pentru a filtra lista de parametri sau selectați numărul de pagină dorit.

Stocare - Azure Database for PostgreSQL gestionează stocarea datelor pentru dvs. și este furnizată la nivel de server. Indiferent dacă selectați nivelul de calcul Burstable, General purpose sau Memory optimized, puteți utiliza până la 32 TB de stocare. Pentru a furniza spațiu de stocare, navigați la serverul Azure Database for PostgreSQL și, din secțiunea Prezentare generală , selectați configurația. Se afișează secțiunea Calcul + Stocare. Sub Stocare și Dimensiune stocare (în GB), utilizați glisorul pentru a selecta cantitatea de spațiu de stocare pe care doriți să o furnizați.

Cantitatea de spațiu de stocare pe care o furnizați definește capacitatea I/O disponibilă pentru serverul Azure Database for PostgreSQL. Puteți monitoriza consumul de I/O în portalul Azure sau utilizând comenzile Azure CLI. Valorile relevante de monitorizat sunt limita de stocare, procentul de stocare, stocarea utilizată și procentul IO.

Notă

Puteți crește cantitatea de spațiu de stocare după ce ați creat serverul Azure Database for PostgreSQL, dar nu puteți reduce cantitatea de spațiu de stocare.

Tablespaces - Cu o implementare locală a PostgreSQL, puteți crea tablespace-uri care sunt legate de zona principală de stocare numită PGDATA folosind subdirectorul pg_tblspc . Azure Database for PostgreSQL nu acceptă spații de tabele: toate tabelele sunt create în zona principală de stocare.

Cataloage de sistem - PostgreSQL conține multe tabele și vizualizări de sistem care stochează informații despre obiectele bazei de date. De exemplu, pg_database returnează toate bazele de date de pe un server și pg_class stochează statistici despre tabele.

Notă

Azure Database for PostgreSQL permite accesul la unele, dar nu la toate cataloagele de sistem.

Extensii - PostgreSQL acceptă o serie de extensii care extind funcționalitatea de bază a motorului de baze de date. Aceste extensii sunt puse la dispoziție într-un depozit numit PostgreSQL Extensions Network (PGXN).

Pentru a utiliza o extensie PostgreSQL, aceasta trebuie să fie instalată în baza de date. Pentru a instala o extensie, rulați comanda CREATE EXTENSION din instrumentul psql pentru a încărca extensia în baza de date. De exemplu:

SELECT create_extension('postgis');

Pentru a afla ce extensii acceptă Azure Database for PostgreSQL, rulați următoarea interogare:

SELECT * FROM pg_available_extensions;

Toate serverele Azure Database for PostgreSQL includ extensia pg_stat_statements. Această extensie este deja instalată pentru a oferi funcționalitate pentru urmărirea statisticilor de execuție a instrucțiunilor SQL. Parametrul de server pg_stat_statements.track definește ce instrucțiuni sunt contorizate de extensie. Opțiunile sunt:

  • Sus - urmărește toate extrasele emise direct de clienți (implicit).
  • Niciunul - nu sunt urmărite declarații.
  • Toate - urmărește toate instrucțiunile, inclusiv instrucțiunile imbricate și instrucțiunile invocate de funcții.

Notă

Există o supraîncărcare de performanță pe server pentru a înregistra fiecare instrucțiune SQL. Dacă nu utilizați în mod activ pg_stat_statements, setați acest parametru la niciunul. De asemenea, rețineți că unele servicii de monitorizare terțe se pot baza pe pg_stat_statements.

Optimizator de interogări - PostgreSQL folosește o metodă de optimizare a interogărilor bazată pe costuri. Parserul verifică sintaxa interogării și separă interogarea în diferite părți. Parserul creează un arbore de analiză și transmite interogarea rescriătorului, care aplică reguli interogării. Planificatorul își dă seama care este cel mai bun mod de a executa interogarea înainte ca interogarea să fie executată.

Procese backend - model de proces PostgreSQL pe tranzacție. Când un utilizator nou se conectează, PostgreSQL autentifică utilizatorul și creează un proces de server backend pentru a gestiona conexiunea. Clientul interacționează cu procesul serverului numai atunci când trimite interogări și primește interogări.