Descripción de la arquitectura de PostgreSQL
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.
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
Administrador de correos
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 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 anticipada.
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. El cambio de cualquier cosa 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 de 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 reemplazó estos archivos de configuración por parámetros de servidor, a los que se puede acceder a través de Azure Portal o mediante la CLI de Azure.
Para ver o modificar los parámetros de servidor en Azure Portal:
- Vaya al servidor de Azure Database for PostgreSQL.
- En el menú de la izquierda, en Configuración, seleccione Parámetros del servidor.
- Use la barra de búsqueda para filtrar la lista de parámetros o seleccione el número de página que necesita.
Storage - Azure Database for PostgreSQL gestiona el almacenamiento de datos por ti 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 la 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 para 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.
Tablespaces : con una implementación local de PostgreSQL, puede crear espacios de tablas 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 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 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 desde 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 qué instrucciones son contadas por 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 un seguimiento de ninguna declaración.
- All : realiza un 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 usa activamente pg_stat_statements, establezca este parámetro en ninguno. 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 en 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.