Descripción de la arquitectura de PostgreSQL

Completado

PostgreSQL es un sistema de administración de bases de datos relacionales (RDMS) cliente-servidor. PostgreSQL también admite una amplia variedad de extensiones, como la extensión Citus en la opción Azure Cosmos DB for PostgreSQL. Después de cargar una extensión en la base de datos, funciona como cualquier característica integrada.

PostgreSQL dispone de su propio lenguaje de consulta llamado pgsql. Además, PostgreSQL admite lenguajes de procedimientos, como Ruby on Rails.

Captura de pantalla que muestra los lenguajes y extensiones PostgreSQL

Arquitectura cliente-servidor

PostgreSQL se basa en una arquitectura cliente-servidor. El servidor almacena, administra y devuelve datos a los programas cliente. Los programas cliente solicitan datos mediante pgSQL o uno de los lenguajes de procedimientos que admite PostgreSQL, como PL/pgSQL.

Una sesión de PostgreSQL consta de tres partes:

  • El postmaster
  • La aplicación cliente
  • El servidor

Postmaster

El postmaster es el proceso de demonio de supervisión que administra un servidor PostgreSQL. El demonio de postmaster administra la comunicación entre los distintos procesos de servidor, como la inicialización y el apagado del servidor, el control de las solicitudes de conexión y la realización de otros procesos en segundo plano. En Azure Database for PostgreSQL, no tiene acceso al sistema de archivos ni al proceso de Postmaster.

Aplicaciones cliente

Los clientes ejecutan consultas e interactúan con las bases de datos de un servidor de Azure Database for PostgreSQL. Para ejecutar consultas, necesita una herramienta de cliente como Azure Data Studio, DBeaver, pgAdmin o psql. En el módulo siguiente, aprenderá sobre las herramientas de cliente.

Procesos de servidor

Clúster: un único servidor de PostgreSQL puede hospedar varias bases de datos de usuario. PostgreSQL hace referencia a esta colección de bases de datos como un clúster. Cada base de datos es independiente de la otra, y los usuarios y las aplicaciones interactúan con una sola base de datos. Los usuarios se crean en el nivel de clúster o servidor.

Los datos de estas bases de datos se almacenan en el directorio de datos del clúster denominado PGDATA. El directorio de datos PGDATA incluye un archivo que contiene la versión de PostgreSQL que se está ejecutando, pg_tblspc que contiene vínculos a espacios de tablas y pg_xlog que contiene los archivos de registro de escritura previa.

Nota

Azure Database for PostgreSQL es un servicio que administra el almacenamiento y el sistema de archivos subyacente. Como usuario de este servidor, no tiene acceso directo al directorio PGDATA ni a ninguno de sus subdirectorios.

Además de las bases de datos que cree, hay tres bases de datos del sistema:

  • postgres: la base de datos predeterminada. Una vez creado el servidor, se conecta a la base de datos postgres.
  • azure_maintenance: la base de datos que administra los procesos de servicio. No tiene acceso directo a esta base de datos.
  • azure_sys: la base de datos del Almacén de consultas. No debe modificar la base de datos azure_sys ni sus esquemas. Cualquier cambio en azure_sys impide que el Almacén de consultas y otras características de rendimiento funcionen correctamente.

Esquemas: un esquema es una agrupación con nombre de objetos de base de datos. Las bases de datos grandes con muchos objetos se benefician de la organización de los objetos en esquemas. Por ejemplo, crear un esquema para objetos relacionados con ventas y un esquema para los objetos relacionados con clientes facilita la búsqueda del objeto correcto.

Parámetros del servidor: PostgreSQL tiene varios archivos de configuración, que determinan cómo debe funcionar el motor de base de datos. El archivo de configuración principal de PostgreSQL se denomina postgresql.conf.

Azure Database for PostgreSQL ha reemplazado estos archivos de configuración por la opción Parámetros de servidor, a la que se puede acceder mediante Azure Portal o la CLI de Azure.

Para ver o modificar los parámetros de servidor en Azure Portal:

  1. Vaya al servidor de Azure Database for PostgreSQL.
  2. En el menú izquierdo, en Configuración, seleccione Parámetros del servidor.
  3. Use la barra de búsqueda para filtrar la lista de parámetros o seleccione el número de página que necesita.

Almacenamiento: Azure Database for PostgreSQL administra el almacenamiento de datos automáticamente y se aprovisiona a nivel de servidor. Tanto si selecciona el nivel de proceso Ampliable, De uso general u Optimizado para memoria, puede usar hasta 32 TB de almacenamiento. Para aprovisionar el almacenamiento, vaya al servidor de Azure Database for PostgreSQL y, en la sección Información general, seleccione su configuración. Se muestra la sección Proceso y almacenamiento. En "Almacenamiento" y "Tamaño de almacenamiento (en GB)" use el control deslizante para seleccionar la cantidad de almacenamiento que quiere aprovisionar.

La cantidad de almacenamiento que se aprovisiona es la capacidad de E/S disponible para el servidor de Azure Database for PostgreSQL. Puede supervisar el consumo de E/S en Azure Portal o mediante los comandos de la CLI de Azure. Las métricas pertinentes que se deben supervisar son el límite de almacenamiento, el porcentaje de almacenamiento, el almacenamiento usado y el porcentaje de E/S.

Nota

Puede aumentar la cantidad de almacenamiento después de haber creado el servidor de Azure Database for PostgreSQL, pero no puede reducirla.

Espacios de tabla: con una implementación local de PostgreSQL, puede crear espacios de tabla que estén vinculados al área de almacenamiento principal denominada PGDATA mediante el subdirectorio pg_tblspc. Azure Database for PostgreSQL no admite espacios de tablas: todas las tablas se crean en el área de almacenamiento principal.

Catálogos del sistema: PostgreSQL contiene muchas tablas y vistas del sistema que almacenan información sobre los objetos de base de datos. Por ejemplo, pg_database devuelve todas las bases de datos de un servidor y pg_class almacena estadísticas sobre las tablas.

Nota:

Azure Database for PostgreSQL permite el acceso a algunos de los catálogos del sistema, pero no a todos.

Extensiones: PostgreSQL admite una variedad de extensiones que amplían la funcionalidad básica del motor de base de datos. Estas extensiones están disponibles en un repositorio denominado Red de extensiones de PostgreSQL (PGXN).

Para usar una extensión de PostgreSQL, debe estar instalada en la base de datos. Para instalar una extensión, ejecute el comando CREATE EXTENSION de la herramienta psql para cargar la extensión en la base de datos. Por ejemplo:

SELECT create_extension('postgis');

Para averiguar qué extensiones se admiten en Azure Database for PostgreSQL, ejecute la consulta siguiente:

SELECT * FROM pg_available_extensions;

Todos los servidores de Azure Database for PostgreSQL incluyen la extensión pg_stat_statements. Esta extensión viene ya instalada para proporcionar funcionalidad para realizar el seguimiento de las estadísticas de ejecución de las instrucciones SQL. El parámetro de servidor pg_stat_statements.track define las instrucciones que contabiliza la extensión. Las opciones son:

  • Top: realiza un seguimiento de todas las instrucciones emitidas directamente por los clientes (valor predeterminado).
  • None: no se realiza el seguimiento de ninguna instrucción.
  • All: se realiza el seguimiento de todas las instrucciones, incluidas las instrucciones anidadas, y las instrucciones invocadas por las funciones.

Nota

Hay sobrecarga de rendimiento en el servidor para registrar cada instrucción SQL. Si no está usando la extensión pg_stat_statements, establezca este parámetro en "none". Tenga en cuenta también que algunos servicios de supervisión de terceros pueden depender de pg_stat_statements.

Optimizador de consultas: PostgreSQL usa un método de optimización de consultas basado en costos. El analizador comprueba la sintaxis de la consulta y separa la consulta en diferentes partes. El analizador crea un árbol de análisis y pasa la consulta al regenerador, que aplica reglas a esta. El planificador determina la mejor manera de ejecutar la consulta antes de que se ejecute.

Procesos de back-end: modelo de proceso por transacción de PostgreSQL. Cuando un nuevo usuario se conecta, PostgreSQL lo autentica y crea un proceso de servidor back-end para controlar la conexión. Al enviar consultas y recibir el resultado de las consultas, el cliente solo interactúa con el proceso de servidor.