Inzicht in PostgreSQL-architectuur

Voltooid

PostgreSQL is een relationeel databasebeheersysteem (RDMS) voor clients/servers. PostgreSQL ondersteunt ook een breed scala aan extensies, zoals de Citus-extensie in de optie Azure Cosmos DB for PostgreSQL. Nadat een extensie in de database is geladen, werkt deze net als elke ingebouwde functie.

PostgreSQL heeft ook een eigen querytaal met de naam pgsql. Daarnaast ondersteunt PostgreSQL procedurele talen zoals Ruby on Rails.

Schermopname van PostgreSQL-extensies en -talen.

Client-/serverarchitectuur

PostgreSQL is gebaseerd op een client-/serverarchitectuur. De server slaat gegevens op, beheert en retourneert gegevens naar clientprogramma's. Clientprogramma's vragen gegevens aan met behulp van pgSQL of een van de procedurele talen die PostgreSQL ondersteunt, zoals PL/pgSQL.

Een PostgreSQL-sessie bestaat uit drie onderdelen:

  • De postmaster
  • De clienttoepassing
  • Op de server

Postmaster

De Postmaster is het toezicht daemonproces dat een PostgreSQL-server beheert. De postmaster-daemon beheert de communicatie tussen de verschillende serverprocessen, waaronder het initialiseren van de server, het afsluiten van de server, het afhandelen van verbindingsaanvragen en het uitvoeren van andere achtergrondprocessen. In Azure Database for PostgreSQL hebt u geen toegang tot het bestandssysteem of tot het Postmaster-proces.

Clienttoepassingen

Clients voeren query's uit en werken met databases op een Azure Database for PostgreSQL-server. Als u query's wilt uitvoeren, hebt u een clienthulpprogramma nodig, zoals Azure Data Studio, DBeaver, pgAdmin of psql. In de volgende module leert u meer over clienthulpprogramma's.

Serverprocessen

Cluster : één PostgreSQL-server kan meerdere gebruikersdatabases hosten. PostgreSQL verwijst naar deze verzameling databases als een cluster. Elke database is gescheiden van de andere database en gebruikers en toepassingen communiceren met één database. Gebruikers worden gemaakt op cluster- of serverniveau.

Gegevens voor deze databases worden opgeslagen in de gegevensmap van het cluster met de naam PGDATA. De PGDATA-gegevensmap bevat een bestand met de versie van PostgreSQL die wordt uitgevoerd, pg_tblspc die koppelingen naar tablespaces bevat en pg_xlog die de logboekbestanden voor schrijven bevat.

Notitie

Azure Databases for PostgreSQL is een service die opslag en het onderliggende bestandssysteem beheert. Als gebruiker van deze server hebt u geen directe toegang tot de PGDATA-map of een van de bijbehorende submappen.

Naast de databases die u maakt, zijn er drie systeemdatabases:

  • postgres : de standaarddatabase. Nadat de server is gemaakt, maakt u verbinding met de postgres-database.
  • azure_maintenance: de database die serviceprocessen beheert. U hebt geen directe toegang tot deze database.
  • azure_sys: de Query Store-database. U mag de azure_sys-database of de bijbehorende schema's niet wijzigen. Als u iets in azure_sys wijzigt, werken Query Store en andere prestatiefuncties niet goed.

Schema's: een schema is een benoemde groepering van databaseobjecten . Grote databases met veel objecten profiteren van het ordenen van objecten in schema's. Als u bijvoorbeeld een schema maakt voor verkoopgerelateerde objecten en een schema voor clientgerelateerde objecten, is het gemakkelijker om het juiste object te vinden.

Serverparameters - PostgreSQL heeft verschillende configuratiebestanden, die bepalen hoe de database-engine moet werken. Het primaire PostgreSQL-configuratiebestand heet postgresql.conf.

Azure Database for PostgreSQL heeft deze configuratiebestanden vervangen door serverparameters, die toegankelijk zijn via Azure Portal of met behulp van de Azure CLI.

Serverparameters weergeven of wijzigen in Azure Portal:

  1. Navigeer naar uw Azure Database for PostgreSQL-server.
  2. Selecteer serverparameters in het linkermenu onder Instellingen.
  3. Gebruik de zoekbalk om de lijst met parameters te filteren of selecteer het paginanummer dat u nodig hebt.

Opslag : Azure Database for PostgreSQL beheert de gegevensopslag voor u en wordt ingericht op serverniveau. Of u nu burstable, algemeen gebruik of geoptimaliseerde rekenlaag voor geheugen selecteert, u kunt maximaal 32 TB aan opslag gebruiken. Als u opslag wilt inrichten, gaat u naar uw Azure Database for PostgreSQL-server en selecteert u uw configuratie in de sectie Overzicht. De sectie Compute + Storage wordt weergegeven. Gebruik onder Opslag en opslaggrootte (in GB) de schuifregelaar om de hoeveelheid opslagruimte te selecteren die u wilt inrichten.

De hoeveelheid opslagruimte die u inricht, definieert de I/O-capaciteit die beschikbaar is voor uw Azure Database for PostgreSQL-server. U kunt uw I/O-verbruik bewaken in Azure Portal of met behulp van Azure CLI-opdrachten. De relevante metrische gegevens die moeten worden bewaakt, zijn opslaglimiet, opslagpercentage, gebruikte opslag en IO-percentage.

Notitie

U kunt de hoeveelheid opslagruimte verhogen nadat u uw Azure Database for PostgreSQL-server hebt gemaakt, maar u kunt de hoeveelheid opslagruimte niet verminderen.

Tablespaces: met een on-premises implementatie van PostgreSQL kunt u tabelruimten maken die zijn gekoppeld aan het hoofdopslaggebied met de naam PGDATA met behulp van de pg_tblspc submap. Azure Database for PostgreSQL biedt geen ondersteuning voor tablespaces: alle tabellen worden gemaakt in het hoofdopslaggebied.

Systeemcatalogussen - PostgreSQL bevat veel systeemtabellen en weergaven waarin informatie over databaseobjecten wordt opgeslagen. Pg_database retourneert bijvoorbeeld alle databases op een server en pg_class statistieken over tabellen opslaat.

Notitie

Azure Database for PostgreSQL biedt toegang tot sommige, maar niet alle systeemcatalogussen.

Extensies - PostgreSQL ondersteunt een reeks extensies waarmee de kernfunctionaliteit van de database-engine wordt uitgebreid. Deze extensies worden beschikbaar gesteld in een opslagplaats met de naam PostgreSQL Extensions Network (PGXN).

Als u een PostgreSQL-extensie wilt gebruiken, moet deze worden geïnstalleerd in uw database. Als u een extensie wilt installeren, voert u de opdracht CREATE EXTENSION uit vanuit het hulpprogramma psql om de extensie in uw database te laden. Voorbeeld:

SELECT create_extension('postgis');

Voer de volgende query uit om te achterhalen welke extensies ondersteuning bieden voor Azure Database for PostgreSQL:

SELECT * FROM pg_available_extensions;

Alle Azure Database for PostgreSQL-servers bevatten de pg_stat_statements-extensie. Deze extensie is al geïnstalleerd om functionaliteit te bieden voor het bijhouden van uitvoeringsstatistieken van SQL-instructies. De serverparameter pg_stat_statements.track definieert welke instructies worden geteld door de extensie. De opties zijn:

  • Top : houdt alle instructies bij die rechtstreeks door clients worden uitgegeven (standaard).
  • Geen - geen instructies worden bijgehouden.
  • Alle - houdt alle instructies bij, inclusief geneste instructies en instructies die worden aangeroepen door functies.

Notitie

Er is prestatieoverhead op de server om elke SQL-instructie te registreren. Als u niet actief pg_stat_statements gebruikt, stelt u deze parameter in op geen. Houd er ook rekening mee dat sommige bewakingsservices van derden mogelijk afhankelijk zijn van pg_stat_statements.

Query optimizer - PostgreSQL maakt gebruik van een op kosten gebaseerde queryoptimalisatiemethode. De parser controleert de querysyntaxis en scheidt de query in verschillende onderdelen. De parser maakt een parseringsstructuur en geeft de query door aan de rewriter, die regels toepast op de query. De planner bepaalt de beste manier om de query uit te voeren voordat de query wordt uitgevoerd.

Back-endprocessen - PostgreSQL-proces- per transactiemodel. Wanneer een nieuwe gebruiker verbinding maakt, verifieert PostgreSQL de gebruiker en maakt een back-endserverproces om de verbinding te verwerken. De client communiceert alleen met het serverproces bij het verzenden van query's en het ontvangen van query's.