Postgres

  • Anteriormente expliqué cuánto espacio ocupan las bases de datos de un servidor MySQL? y cuánto espacio ocupan las tablas de una base de datos MySQL. Esta vez voy a explicar cómo obtener la misma información, pero en un servidor PostgreSQL.

    Los comandos \l y \dt del cliente psql permiten listar bases de datos y tablas respectivamente. Sin embargo, cuando se utiliza el modificador +, también es posible conocer cuánto espacio en disco ocupan.

  • Luego de instalar un servidor Grafana, el siguiente paso es agregar el primer Data Source (fuente de datos a graficar). Afortunadamente Grafana incluye un plugin para conectarse a bases de datos Postgres, lo cual permite consultar y visualizar datos de cualquier tabla utilizando sentencias SQL.

  • Este artículo muestra cómo crear un usuario en un servidor de bases de datos PostgreSQL de manera simple gracias al utilitario createuser.

  • Supongamos que contamos una instancia de un servidor de bases de datos Postgres y deseamos crear una instancia adicional atendiendo peticiones en un puerto TCP/IP diferente. Este breve artículo explica cómo hacerlo.

    ¿Por qué crear varias instancias de un motor de bases de datos en un mismo servidor? Independientemente de la tecnología utilizada (Postgres, MySQL, SQL Server, etc.), replicar instancias de un motor de bases de datos es el método más común para implementar bases de datos repetidas, y de igual nombre, en un mismo servidor. Una situación clásica es cuando se requiere implementar diferentes entornos (desarrollo, testing y producción), de iguales características, pero sólo se cuenta con un único servidor de bases de datos. En este escenario, la mejor alternativa es replicar instancias: una para cada entorno. Esto además permite mejorar notablemente la seguridad del entorno de producción, y asignar recursos/permisos de manera independiente.

  • En MySQL utilizo frecuentemente la consulta SQL DESCRIBE para examinar la estructura de una tabla (examinar el nombre, tipo de dato y opciones de cada una de las columnas). Sin embargo, DESCRIBE no parte del estándar SQL, sino que es parte de MySQL. Por ende en Postgres no se dispone del mismo, aunque a tal fin el cliente psql cuenta con el subcomando \d.

  • Este artículo explica cómo exportar y restaurar (o importar) bases de datos PostgreSQL desde línea de comandos utilizando las herramientas pg_dump, pg_dumpall y psql.

  • En esta oportunidad quisiera compartir cómo agregar un gráfico de torta (o pie chart en inglés) en un dashboard de Grafana.

  • pgAdmin es la herramienta para administración de servidores de bases de datos PostgreSQL más popular y avanzada. Recientemente pasó de ser una aplicación de escritorio, a ser una aplicación Web Python desarrollada utilizando el microframework Flask (a partir de la versión 4).

    La gran ventaja de pasar a ser una aplicación Web (del estilo phpMyAdmin) es que una simple instalación en un servidor permite que la misma aplicación sea utilizada por SysAdmins, DBAs y desarrolladores por igual. Sin preocuparse por su instalación en diferentes entornos, seguridad y confidencialidad de claves, etc. Cada usuario tiene su cuenta con la que accede a la aplicación, y todas las credenciales de acceso a los diferentes servidores de bases de datos Postgres quedan almacenadas de forma centralizada en la aplicación.

    En este artículo voy a demostrar cómo instalar pgAdmin 4 en FreeBSD.

  • Este artículo explica detalladamente cómo instalar un servidor de bases de datos PostgreSQL en sistemas FreeBSD, y cómo inicializar una instancia.

  • Los recientes artículos dedicados a FreeBSD publicados en este blog, fueron una suerte de preámbulo para llegar al objetivo final: implementar una nube personal utilizando ownCloud sobre un servidor FreeBSD con las siguientes características: Nginx como servidor HTTP; PHP-FPM como servidor de aplicación (PHP en modo FastCGI); Postgres como motor de bases de datos; y ZFS como sistema de archivos. Una combinación muy ambiciosa que, a pesar de no estar soportada oficialmente por ownCloud, pretende utilizar la mejor alternativa disponible para implementar cada componente, con el fin de alcanzar la máxima eficiencia y rendimiento posible. En términos futboleros sería una especie de "selección", poner el mejor jugador disponible para cada posición: ownCloud+FreeBSD+Nginx+PHP-FPM+Postgres+ZFS.

  • Este (extenso) artículo cubre la instalación, configuración y puesta en funcionamiento de todos los componentes de un servidor de backup Bacula sobre Debian con PostgreSQL. Además de una breve introducción de cada uno de sus componentes y funcionamiento.

  • En este artículo voy a demostrar cómo listar los grants (privilegios de acceso) sobre una tabla en un servidor de bases de datos PostgreSQL.

  • Este artículo explica brevemente cómo listar bases de datos (lo que equivale a ejecutar show databases en MySQL) y tablas (show tables en MySQL) en Postgres, ejecutando consultas desde línea de comandos con la herramienta psql. La primera limitación que se encuentra un usuario de MySQL al interactuar por primera vez con un gestor de bases de datos Postgres.

  • Los servidores de bases de datos PostgreSQL permiten recargar su configuración invocando una función SQL desde un cliente.

  • Llegó la hora de poner en producción mi servidor de backup implementado con Bacula en Debian. Es por ello que, luego de clonar e instalar la nueva máquina virtual en el cluster de producción, es necesario realizar una limpieza (reset) del catálogo (base de datos) del Director de Bacula y los archivos (backups) del Storage Deamon, para comenzar nuevamente con un inicio fresco.

  • En este artículo voy a demostrar cómo modificar la contraseña de un usuario de PostgreSQL desde el cliente psql.

  • Los clientes de bases de datos de línea de comandos, además de permitir la ejecución de consultas SQL, suelen incorporar comandos propios del motor de bases de datos. Por ejemplo, comandos para obtener información sobre el motor, las bases de datos que posee una instancia o las tablas de una base de datos.

    Este artículo muestra cómo se ejecutan los comandos psql (PostgreSQL) correspondientes a las tareas más habituales con el cliente mysql (MySQL). Apunta a aquellos Administradores que tienen experiencia trabajando con MySQL y se topan con un servidor Postgres por primera vez.

  • LDAP (Lightweight Directory Access Protocol) es un protocolo estándar abierto para acceder a servicios de directorio X.500. Un directorio es una base de datos específicamente diseñada para la búsqueda y navegación de información. De manera similar a una guía telefónica, más que como una carpeta en un sistema de archivos. Al igual que una guía telefónica o libreta de direcciones/contactos, el directorio almacena información acerca de un ítem, como un doctor: primero se encuentra la guía telefónica, luego se buscan doctores, a continuación se busca la especialidad deseada, y finalmente se decide qué doctor examinar (obtener sus datos como dirección, número de teléfono, horarios, etc.)

    Los servicios de directorio juegan un rol importante en el desarrollo de aplicaciones sobre Internet y redes privadas (intranets) permitiendo compartir información de recursos (usuarios, sistemas, redes, servicios y aplicaciones) a través de la red. Como ejemplo, un servicio de directorio puede proveer un conjunto organizado de registros, generalmente respetando una estructura jerárquica, tal como una libreta de direcciones de correo electrónico dentro de una red corporativa. También son utilizados muy frecuentemente para proveer servicios de autenticación y autorización centralizados (y a su vez distribuidos entre varios servidores) en redes corporativas, tal como es el caso de Active Directory, el popular servicio de directorio implementado por Microsoft.

    El protocolo LDAP opera sobre los protocolos de transporte de Internet (TCP/IP). LDAP es una alternativa liviana al protocolo DAP (Directory Access Protocol) del estándar X.500 para uso en Internet. Liviana porque se basa en la pila TCP/IP en lugar de en la compleja pila OSI. Además tiene simplificaciones como la representación de la mayoría de los valores de atributos e ítems del protocolo como texto plano, lo cual está diseñado para simplificar la implementación de clientes.

    Por defecto, OpenLDAP utiliza una base de datos Bekerley DB como backend. Sin embargo, de acuerdo a experiencias previas con otras aplicaciones, esta librería es propensa a errores, corrupción de datos y es ineficiente en comparación a otras tecnologías similares (por ejemplo SQLite). Por ende, este artículo documenta la instalación de un servidor LDAP con Postgres como backend (un motor de bases de datos muchísimo más eficiente y robusto) lo cual requiere la instalación de un driver ODBC.

  • En distribuciones GNU/Linux estables, las versiones de paquete para ciertas aplicaciones y servicios suelen estar algo desactualizadas (no mucho), con lo cual a veces es deseable instalar la última versión disponible de un paquete a partir de su código fuente. Por ejemplo las versiones de paquete del servidor de bases de datos PostgreSQL en Debian 7 y Debian 8 son 9.1 y 9.4 respectivamente, siendo que la última versión estable de PostgreSQL es la 9.6. Si se desea entonces disponer de la esta última versión estable, será necesario compilarla e instalarla desde los fuentes (postgresql.org/ftp/source/).

  • Anteriormente expliqué cómo conectarse a una base de datos Postgres desde Python utilizando el driver pg8000. Esta vez voy a demostrar cómo instalar y utilizar el driver psycopg2, cuyo funcionamiento es muy similar al del driver pg8000.