Verstehen der Architektur von PostgreSQL

Abgeschlossen

PostgreSQL ist ein Managementsystem für relationale Datenbanken (RDMS) mit Client/Server-Architektur. PostgreSQL unterstützt auch eine Vielzahl von Erweiterungen, z. B. die Citus-Erweiterung der Azure Cosmos DB for PostgreSQL-Option. Nachdem eine Erweiterung in die Datenbank geladen wurde, funktioniert sie wie jedes integrierte Feature.

PostgreSQL hat auch eine eigene Abfragesprache namens pgsql. Darüber hinaus unterstützt PostgreSQL prozedurale Sprachen wie Ruby on Rails.

Screenshot mit PostgreSQL-Erweiterungen und -Sprachen.

Client/Server-Architektur

PostgreSQL basiert auf einer Client/Server-Architektur. Der Server speichert und verwaltet Daten und gibt sie an Clientprogramme zurück. Clientprogramme fordern Daten mittels pgSQL oder einer der von PostgreSQL unterstützten prozeduralen Sprachen an, wie z. B. PL/pgSQL.

Eine PostgreSQL-Sitzung besteht aus drei Teilen:

  • Postmaster
  • Clientanwendung
  • Beim Server

Postmeister

Der Postmaster ist der beaufsichtigende Daemonprozess zum Verwalten eines PostgreSQL-Servers. Der Postmasterdaemon verwaltet die Kommunikation zwischen den verschiedenen Serverprozessen, einschließlich Initialisierung des Servers, Herunterfahren des Servers, Verarbeiten von Verbindungsanforderungen und anderer Hintergrundprozesse. In Azure Database for PostgreSQL haben Sie keinen Zugriff auf das Dateisystem oder den Postmasterprozess.

Clientanwendungen

Clients führen Abfragen aus und interagieren mit Datenbanken auf einem Azure Database for PostgreSQL-Server. Zum Ausführen von Abfragen benötigen Sie ein Clienttool wie Azure Data Studio, DBeaver, pgAdmin oder psql. Im nächsten Modul erfahren Sie mehr über Clienttools.

Serverprozesse

Cluster – ein einzelner PostgreSQL-Server kann mehrere Benutzerdatenbanken hosten. PostgreSQL bezieht sich auf diese Sammlung von Datenbanken als Cluster. Jede Datenbank ist von den anderen getrennt, und Benutzer und Anwendungen interagieren mit einer einzelnen Datenbank. Benutzer werden auf Cluster- oder Serverebene erstellt.

Daten für diese Datenbanken werden im Datenverzeichnis des Clusters mit dem Namen PGDATA gespeichert. Das PGDATA-Datenverzeichnis enthält eine Datei, die die ausgeführte Version von PostgreSQL enthält, pg_tblspc , die Verknüpfungen zu Tabellenspaces enthält, und pg_xlog , die die schreibgeschützten Protokolldateien enthält.

Hinweis

Azure Databases for PostgreSQL ist ein Dienst, der Speicher und das zugrunde liegende Dateisystem verwaltet. Als Benutzer dieses Servers haben Sie keinen direkten Zugriff auf das Verzeichnis PGDATA oder eines seiner Unterverzeichnisse.

Zusätzlich zu den von Ihnen erstellten Datenbanken gibt es drei Systemdatenbanken:

  • postgres - die Standarddatenbank. Nachdem Ihr Server erstellt wurde, stellen Sie eine Verbindung mit der Postgres-Datenbank her.
  • azure_maintenance – die Datenbank, die Dienstprozesse verwaltet. Sie haben keinen direkten Zugriff auf diese Datenbank.
  • azure_sys – die Abfragespeicherdatenbank. Sie dürfen die azure_sys Datenbank oder deren Schemas nicht ändern. Das Ändern von Elementen in azure_sys verhindert, dass der Abfragespeicher und andere Leistungsfeatures ordnungsgemäß funktionieren.

Schemas – Ein Schema ist eine benannte Gruppierung von Datenbankobjekten. Große Datenbanken mit vielen Objekten profitieren von der Organisation von Objekten in Schemas. Indem Sie z. B. ein Schema für vertriebsbezogene Objekte und ein Schema für clientbezogene Objekte erstellen, können Sie das richtige Objekt leichter finden.

Serverparameter – PostgreSQL verfügt über mehrere Konfigurationsdateien, die bestimmen, wie das Datenbankmodul funktionieren soll. Die Hauptkonfigurationsdatei für PostgreSQL wird als postgresql.conf bezeichnet.

Azure Database for PostgreSQL ersetzte diese Konfigurationsdateien durch Serverparameter, auf die über das Azure-Portal oder über die Azure CLI zugegriffen werden kann.

So können Sie Serverparameter im Azure-Portal anzeigen oder ändern

  1. Navigieren Sie zu Ihrem Azure Database for PostgreSQL-Server.
  2. Wählen Sie im linken Menü unter "Einstellungen"die Option "Serverparameter" aus.
  3. Über die Suchleiste können Sie die Liste der Parameter filtern oder die gewünschte Seitenzahl auswählen.

Storage – Azure Database for PostgreSQL verwaltet die Datenspeicherung für Sie und wird auf Serverebene bereitgestellt. Je nachdem, ob Sie den Computetarif „Burstfähig“, „Universell“ oder „Arbeitsspeicheroptimiert“ auswählen, können Sie bis zu 32 TB Speicherplatz nutzen. Um Speicher bereitzustellen, navigieren Sie zu Ihrer Azure-Datenbank für PostgreSQL-Server, und wählen Sie im Abschnitt "Übersicht" Ihre Konfiguration aus. Der Abschnitt "Compute + Storage " wird angezeigt. Wählen Sie unter „Speicher“ und „Speichergröße (in GB)“ mit dem Schieberegler die gewünschte Größe des bereitzustellenden Speichers aus.

Die Speichergröße, die Sie bereitstellen, bestimmt die E/A-Kapazität, die Ihrem Azure Database for PostgreSQL-Server zur Verfügung steht. Sie können Ihren E/A-Verbrauch im Azure-Portal oder mit Azure CLI-Befehlen überwachen. Die relevanten Metriken, die überwacht werden sollen , sind Speichergrenzwert, Speicherprozentsatz, verwendete Speicher und E/A-Prozent.

Hinweis

Sie können die Speichergröße erhöhen, nachdem Sie Ihren Azure Database for PostgreSQL-Server erstellt haben, aber Sie können sie nicht verringern.

Tablespaces - Mit einer lokalen Implementierung von PostgreSQL können Sie Tabellenbereiche erstellen, die mit dem Hauptspeicherbereich namens PGDATA mithilfe des unterverzeichnisses pg_tblspc verknüpft sind. Azure Database for PostgreSQL unterstützt keine Tabellenbereiche. Alle Tabellen werden im Hauptspeicherbereich erstellt.

Systemkataloge – PostgreSQL enthält viele Systemtabellen und Ansichten, die Informationen zu Datenbankobjekten speichern. Beispielsweise gibt pg_database alle Datenbanken auf einem Server zurück und pg_class Statistiken zu Tabellen speichert.

Hinweis

Azure Database for PostgreSQL ermöglicht den Zugriff auf einige, aber nicht alle Systemkataloge.

Erweiterungen - PostgreSQL unterstützt eine Reihe von Erweiterungen, die die Kernfunktionalität des Datenbankmoduls erweitern. Diese Erweiterungen werden in einem Repository namens „PostgreSQL Extensions Network“ (PGXN) zur Verfügung gestellt.

Um eine PostgreSQL-Erweiterung verwenden zu können, muss sie in Ihrer Datenbank installiert sein. Um eine Erweiterung zu installieren, führen Sie den BEFEHL CREATE EXTENSION aus dem psql-Tool aus, um die Erweiterung in Ihre Datenbank zu laden. Zum Beispiel:

SELECT create_extension('postgis');

Um herauszufinden, welche Erweiterungen Azure Database for PostgreSQL unterstützen, führen Sie die folgende Abfrage aus:

SELECT * FROM pg_available_extensions;

Alle Azure-Datenbank für PostgreSQL-Server enthalten die pg_stat_statements Erweiterung. Diese Erweiterung ist bereits installiert, um Funktionalität für die Nachverfolgung von Ausführungsstatistiken von SQL-Anweisungen zu bieten. Der Serverparameter pg_stat_statements.track definiert, welche Anweisungen von der Erweiterung gezählt werden. Die Optionen sind:

  • Top - verfolgt alle Anweisungen, die direkt von Clients ausgegeben werden (Standard).
  • Keine – es werden keine Aussagen nachverfolgt.
  • Alle – verfolgt alle Anweisungen, einschließlich geschachtelter Anweisungen und von Funktionen aufgerufene Anweisungen.

Hinweis

Das Protokollieren jeder SQL-Anweisung ist für den Server mit einem zusätzlichen Leistungsaufwand verbunden. Wenn Sie pg_stat_statements nicht aktiv verwenden, legen Sie diesen Parameter auf "none" fest. Beachten Sie außerdem, dass einige Überwachungsdienste von Drittanbietern möglicherweise auf pg_stat_statements angewiesen sind.

Abfrageoptimierer – PostgreSQL verwendet eine kostenbasierte Abfrageoptimierungsmethode. Der Parser prüft die Abfragesyntax und teilt die Abfrage in verschiedene Teile auf. Der Parser erstellt eine Analysestruktur und übergibt die Abfrage an den Rewriter, der Regeln auf die Abfrage anwendet. Der Planner ermittelt den besten Weg zur Ausführung der Abfrage, ehe die Abfrage tatsächlich ausgeführt wird.

Backend-Prozesse – PostgreSQL Prozessmodell pro Transaktion. Wenn ein neuer Benutzer eine Verbindung herstellt, authentifiziert PostgreSQL den Benutzer und erstellt einen Back-End-Serverprozess, der sich um die Verbindung kümmert. Der Client interagiert nur mit dem Serverprozess, wenn er Abfragen stellt und Abfrageergebnisse empfängt.