¿Qué es PostgreSQL?
PostgreSQL es un gestor de bases de datos relacional y orientado a objetos. Su licencia y desarrollo es de código abierto, siendo mantenida por una comunidad de desarrolladores, colaboradores y organizaciones comerciales de forma libre y desinteresadamente. Esta comunidad es denominada PDGD (PostgreSQL Global Development Group, por sus siglas en inglés).
Es reconocido actualmente como uno de los sistemas gestores de bases de datos relacionales más potentes del mercado. Presenta fácil accesibilidad, es multiplataforma y está disponible para su utilización en casi todos los sistemas operativos utilizados en la actualidad sin disminuír su rendimiento.
Inicialmente, el desarrollo del proyecto comenzó a mediados de los años 80's en la Universidad de Berkeley en California. El proyecto estuvo liderado por Michael Stonebraker, junto a un grupo de trabajo de la universidad, luego de su experiencia con un proyecto anterior llamado "Ingres", uno de los primeros desarrollos de motor de bases de datos relacional. PGSQL fue basado con este desarrollo y fue lo que le generó el nombre, por el juego de palabras "post-Ingres", adaptándose inicialmente como "Postgres".
Aunque el proyecto de "Postgres" no utilizó código del desarrollo "Ingres", sí se utilizaron varias ideas aplicadas a este anterior, aunque lo que se pretendía lograr era principalmente solucionar los problemas del modelo relacional de los motores de bases de datos, que no comprendían "tipos", lo que actualmente se conocen como "objetos", que son combinaciones de datos simples que forman una única unidad.
Igualmente, no fue hasta después de mediados de los años 90's, cuando en ese momento llamado "Postgres95", es liberado para el desarrollo en formato abierto, y varias personas se unieron al proyecto para estabilizar y mejorar el sistema, añadirle funciones y el soporte al lenguaje SQL. En 1996, el nombre cambia de forma oficial para reflejar la característica del lenguaje SQL, y se lanza la primera versión oficial de código abierto bajo el nombre de "PostgreSQL", que se mantiene hasta la actualidad.
Características de PostgreSQL
PostgreSQL es un gestor de bases de datos relacional que presenta varias características por las que destaca, siendo uno de los mejores y más utilizados motores de BD en la actualidad. A continuación brindamos una lista de sus características y explicamos brevemente algunas de las más destacadas.
- Presenta un sistema de alta concurrencia: Presenta un sistema denominado MVCC, el cual permite que mientras un proceso escribe una tabla, otros puedan acceder a la misma tabla sin necesidad de verse bloqueados, y cada usuario obtiene una visión consistente.
- Sistema "Hot Standby": Este proceso permite a los usuarios poder conectarse con el servidor y ejecutar búsquedas en la bd mientras la misma está en modo de recuperación o "stand by". También se puede pasar de este modo a modo normal sin detener el flujo de búsquedas o consultas de los usuarios, manteniendo las conexiones abiertas. Esto es posible únicamente cuando la base de datos se encuentra en modo de solo-lectura.
- Soporte nativo: PostgreSQL presenta soporte nativo para los siguientes tipos de datos:
- Texto de largo ilimitado.
- Números de precisión arbitraria.
- Figuras geométricas con funciones asociadas.
- Direcciones MAC.
- Protocolos de direcciones IP (tanto IPv4 como IPv6).
- Bloques de direcciones CDIR.
- Arrays.
- Tipos de datos propios de los usuarios.
- Uso de formato JSON: El formato JSON se convierte en el punto débil de muchos sistemas de bases de datos relacionales. Sin embargo, PostgreSQL presenta buenas herramientas con las que es posible indexar elementos y realizar búsquedas en dicho formato. Aunque no se recomienda manejar toda la base de datos en JSON, y se utiliza para el guardado de información de algunos elementos e indexar sus propiedades.
- Notificaciones a tiempo real: A pesar de que PostgreSQL no fue diseñada para ser una BD que trabaje al 100% en tiempo real, si es posible mantener sincronizado en varios dispositivos un sistema de notificación para cuando se hacen cambios específicos en la base de datos, gracias a las funciones LISTEN, UNLISTEN y NOTIFY.
- Registro y guardado de transacciones: Una de las características más interesantes de PostgreSQL, es su capacidad de registrar cada transacción en un WAL (Write-Ahead-Log). Esto permite restaurar la base de datos a cualquier punto previamente guardado, una especie de "Checkpoint". Esto permite que no sea necesario realizar respaldos completos de forma frecuente, en especial para los casos en los que se trabaja con una bd que es muy grande o que contiene mucha cantidad de datos.
- Disparadores o triggers: En PostgreSQL, un disparador se define como la ejecución de un procedimiento almacenado, basado en una acción determinada sobre una tabla específica en la base de datos.
Estos disparadores se pueden definir por 6 características:
- Nombre del disparador.
- Momento de arranque definido.
- Evento del disparador.
- Tabla dónde se ejecuta.
- Frecuencia de ejecución.
- Función llamada / Función correcta o incorrecta.
Ventajas y desventajas de PostgreSQL
PostgreSQL es uno de los gestores de bases de datos de código libre más potentes y fiables del mercado, una de las mejores alternativas a MySQL. Una de las forma de describir y mencionar sus principales características, que le han traído el uso y reconocimiento actual, es a través de las ventajas y desventajas que presenta.
Ventajas de PostgreSQL
- Instalación y uso gratuito: PostreSQL es un gestor de base de datos de código libre y completamente gratuito, por lo que podemos instalarlo y utilizarlo las veces que queramos y en todos los dispositivos que queramos.
- Sistema disponible Multiplataforma: Es compatible con prácticamente todas las tecnologías y sistemas operativos de la actualidad.
- Estabilidad: PostgreSQL está hace más de 20 años en el mercado con un constante desarrollo y soporte de sus versiones. Incluso presenta un sistema de alta disponibilidad mientras los servidores están en modo de suspensión o recuperación, por lo que los usuarios pueden acceder en modo de solamente lectura sin bloquear de forma completa el sistema.
- Escalabilidad y configuración: Es posible configurar de forma individual PostgreSQL según los recursos de hardware disponibles en nuestro sistema, por lo que podemos ajustar el número de CPU y cantidad de memoria disponible de para un funcionamiento óptimo.
- Estándar SQL: Implementa la mayor parte de las funcionalidades principales del estándar SQL, por lo que se puede realizar de forma sencilla el incluír consultas y scripts de otros motores de bases de datos,
- Herramienta gráfica: Incorpora una herramienta gráfica para la administración de las bases de datos de forma fácil e intuitiva, por la cual podemos ejecutar sentencias SQL, realizar copias de seguridad o tareas de mantenimiento.
- Robustez y fiabilidad: PostgreSQL cumple con la característica y protocolo ACID, lo que significa Atomicidad, Consistencia, Aislamiento y Durabilidad (siglas en inglés). Por ello, se garantiza la información de la base de datos y fiabilidad en el sistema.
- Soporte y ayuda: A pesar de no contar con soporte telefónico o en línea, existe una infinidad de foros y páginas para nuestra ayuda. Además, la comunidad de PostreSQL es una de las más activas.
Desventajas de PostgreSQL
- PostgreSQL está diseñado específicamente para ambientes con alto volumen de datos, por lo que puede parecer lento en implementaciones para bases de datos de pequeño y mediano tamaño.
- No presenta una facilidad en comandos o sintaxis, por lo que se puede dificultar su uso si no poseemos conocimientos medios en lenguaje SQL.
Instalación de PostgreSQL en Ubuntu
Instalar Postgre SQL en Ubuntu resulta sencillo, ya que los repositorios del sistema ya continen paquetes Postgres, por lo que podremos instalarlos mediante apt. Primero abriremos la consola y actualizaremos el índice de paquetes locales, mediante el comando:
sudo apt-get update
Luego, procedemos a instalar el paquete Postgres y un paquete adicional llamado "contrib" que adiciona algunas herramientas útiles:
sudo apt-get install postgresql postgresql-contrib
Luego de instalar PostgreSQL, procedemos a iniciarlo con la cuenta por defecto asignada por el programa:
sudo -u postgres psql
Para salir de la consola de PostgreSQL, sólo debemos escribir lo siguiente:
postgres=# \q
Instalación de PostgreSQL en CentOS
Si queremos instalar PostgreSQL en nuestro SO CentOS, primero debemos descargar los repositorios. Si queremos hacerlo utilizando los repositorios oficiales para nuestra versión, lo haremos desde la página oficial:
https://www.postgresql.org/download/
En este ejemplo, realizaremos la descarga de la versión 9.6 para CentOS 7 x86_64.
El primer paso es la descarga de los repositorios correspondientes a nuestra versión:
sudo yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Luego, el siguiente paso es instalar el servidor y el cliente. Al igual que en la instalación por Ubuntu, instalaremos también con el paquete "contrib", mediante la siguiente línea:
sudo yum -y install postgresql96-server postgresql96 postgresql96-contrib
Posteriormente, inicializamos el setup de la instalación:
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Ahora debemos arrancar el servicio, corriendo el siguiente comando en consola:
sudo systemctl start postgresql-9.6
Finalmente, comprobamos que realmente el servicio esté en ejecución:
sudo systemctl status postgresql-9.6
Luego de realizados todos estos pasos, finalmente tendremos instalado PostgreSQL en nuestro sistema Ubuntu o CentOS.