Como instalar un servidor de BBD y no morir en el intento

Por Soloelectronicos @soloelectronico

PostgreSQL, también llamado Postgres, es un sistema de gestión de bases de datos relacional orientado a objetos y de código abierto, publicado bajo la licencia PostgreSQL,​ similar a la BSD o la MIT.

Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa o persona, sino que e s dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre o apoyados por organizaciones comerciales denominada el PGDG ( PostgreSQL Global Development Group).

Algunas de sus principales características de PostgreSQL son, entre otras, las siguintes:

  • Alta concurrencia :Mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visión consistente.
  • Amplia variedad de tipos nativos. PostgreSQL provee nativamente soporte para:
    • Números de precisión arbitraria.
    • Texto de largo ilimitado.
    • Figuras geométricas (con una variedad de funciones asociadas).
    • Direcciones IP (IPv4 e IPv6).
    • Bloques de direcciones estilo CIDR.
    • Direcciones MAC.
    • Arrays.

Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por completo indexables gracias a la infraestructura GiST de PostgreSQL,de hecho algunos ejemplos son los tipos de datos GIS creados por el proyecto PostGIS.

  • Claves ajenas también denominadas Llaves ajenas o Claves Foráneas (foreign keys).
  • Disparadores (triggers): Un disparador o trigger se define como una acción específica que se realiza de acuerdo a un evento, cuando este ocurra dentro de la base de datos. En PostgreSQL esto significa la ejecución de un procedimiento almacenado basado en una determinada acción sobre una tabla específica. Ahora todos los disparadores se definen por seis características:
    • El nombre del disparador o trigger
    • El momento en que el disparador debe arrancar
    • El evento del disparador deberá activarse sobre...
    • La tabla donde el disparador se activará
    • La frecuencia de la ejecución
    • La función que podría ser llamada
    • La función no es correcta
  • Vistas.
  • Integridad transaccional.
  • Herencia de tablas.
  • Tipos de datos y operaciones geométricas.
  • Soporte para transacciones distribuidas. Permite a PostgreSQL integrarse en un sistema distribuido formado por varios recursos (p.ej, una base de datos PostgreSQL, otra Oracle, una cola de mensajes IBM MQ JMS y un ERP SAP) gestionado por un servidor de aplicaciones donde el éxito ("commit") de la transacción global es el resultado del éxito de las transacciones locales. Más información en inglés en http://www.theserverside.com/discussions/thread.tss?thread_id=21385#95297 y en http://java.sun.com/javaee/technologies/jta/index.jsp.
  • Funciones:Bloques de código que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes, con la potencia que cada uno de ellos da, desde las operaciones básicas de programación, tales como bifurcaciones y bucles, hasta las complejidades de la programación orientada a objetos o la programación funcional.

PostgreSQL soporta funciones que retornan "filas", donde la salida puede tratarse como un conjunto de valores que pueden ser tratados igual a una fila retornada por una consulta (query en inglés).

Las funciones pueden ser definidas para ejecutarse con los derechos del usuario ejecutor o con los derechos de un usuario previamente definido. El concepto de funciones, en otros DBMS, son muchas veces referidas como " procedimientos almacenados" (stored procedures en inglés).

Em resumen POstgreSQL ofrece seguridad en términos generales,integridad en BD: restricciones en el dominio e integridad referencial, soportando afirmaciones (Assertions),disparadores (Triggers) y autorizaciones,conexiones a sistema de gestión de bases de datos,asi como transacciones y respaldos.

En este post vamos a utilizar nuestro entorno local e instalar el programa pgAdmin que creara uan BBDD PostgreSQL . Lo haremos paso a paso ,explicaremos cómo hacer uso de este gestor y finalmente comentaremos unos cuantos comandos de utilidad para ejecutar desde consola.

Instalación PostgreSQL

Empezaremos descargando pgAdmin desde este enlace: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows

Una vez en la página, seleccionamos la versión PostgreSQL deseada y sistema operativo con el que estamos trabajando

En el caso de W10 ,la ultima version es la 13.1 pero en muchos casos por compatibiliad podria ser necesario versiones mas antiguas motivo por el cual hay disponibles para descargar desde la 9.3.25 hasta 13.1 tanto para Mac como para Windows .


Pulsamos en el botón download now y se iniciará la descarga del instaladorun ejecutable.

Una vez descargado, vamos a instalar pgAdmin en nuestro equipo, veremos una pantalla como la que muestro a continuación.

Ya sabemos que hacer, pulsamos "Siguiente", seleccionando el directorio donde queremos realizar la instalación ( pordefecto C:\Program Files\PostgreSQL\13) y pulsamos "Siguiente" un par de veces más hasta que el proceso de instalación comience.

Al terminar, nos preguntará si queremos instalar Stack Builde r u otros compoenentes que viene npor defecto.

Puulsamos siguinte para contunuar la instalacion.

A continuacion ,es interesante saber la ubicacion donde se almacenara la BBDD propiamente que el asistente permite cambiar


Ahora nos pide la clave del administrador de la BBDD

Tambien es personalizable el puerto donde servira el interfaz de administracion ( por defecto es el puerto 5432)

Ya solo nos qeuda la configuracion regional y empezara la instalacion propiamente dicha hasta que veamos el mesaje de finalizacion de la instalacion y tras un rato habra concluido la instalacion de modo qeu desde este momento ya tendremos PostgreSQL instalado en nuestro equipo.

Primeros pasos con el gestor de PostgreSQL pgAdmin.

Una vez finalizado el proceso de instalación, ya podemos abrir nuestro programa. Al abrir por primera vez el gestor de bases de datos comprueba si existe una nueva versión ( en caso por ejemplo de haber instalado alguna version anterior,en cuyo caso pulsamos sobre el texto "here" y nos abrirá en otra ventana del gestor la página para actualizar nuestra versión.Una vez completada la descarga, podemos cerrar la ventana del gestor e ir donde hayamos descargado el ejecutable para lanzarlo. Aquí más de lo mismo, aceptamos las condiciones e instalamos el contenido donde deseemos. Para tenerlo todo bien organizado he hecho la instalación en el directorio raíz donde instalé PostgreSQL.

Al finalizar la instalación se abrirá automáticamente otra ventana del gestor de bases de datos pgAdmin donde ya no aparecerá la advertencia de actualización.

Trabajando con el gestor de PostgreSQL pgAdmin.

Para empezar a trabajar con pgAdmin tan solo tenemos que pulsar sobre el símbolo (+) correspondiente a "Servers" localizado en la parte superior izquierda. Y a continuación pulsaremos sobre el símbolo (+) correspondiente a "PostgreSQL 9.6". Veremos que el icono del aspa roja cambia por el logo del elefante, esto quiere decir que nuestro servidor está levantado.

Recordemos que el puerto utilizado por PostgreSQL es el 5432.

Creando perfil y nueva base de datos.

Pulsamos botón derecho en "Login/Group Roles"->"Create"->"Login/Group Role", y creamos el perfil deseado. Yo he creado un perfil llamado igual que mi usuario de windows ya que por defecto vamos a estar atacando a las bases de datos desde cmd con este perfil.

Ponemos en la casilla "General" el nombre, insertamos en la casilla "Definition" una contraseña para este nuevo perfil y ponemos en la casilla de "Privilegios" todo a YES. Bien pues si pulsamos sobre el botón "Guardar" ya disponemos de perfil para conectar a las bases de datos de PostgreSQL.

Ahora vamos a crear una base de datos de testeo para hacer nuestras pruebas. Para ello pulsamos botón derecho sobre "Database"->"Create"->"Database". En la pestaña "General"->"Database" ponemos el nombre de la base de datos, yo la he llamado "test" y le damos permisos sobre ella al usuario creado anteriormente, por lo tanto lo seleccionamos del desplegable.

Pulsamos sobre el botón "Save" y listo, ya tenemos los preparativos para poder trabajar.

Comprobando acceso desde cmd a las bases de datos de Postgresql.

Abrimos una ventana de consola con permisos de administrador y accedemos a la ruta donde tenemos nuestro binario de PostgreSQL y tecleamos lo siguiente: psql - h

D:\Program Files\PostgreSQL\9.6\bin>psql -- test
Contraseña:

Con esto le estamos diciendo a PostgreSQL que queremos acceder mediante consola a la base de datos test y para ello nos pide una contraseña. La contraseña que pide es la relacionada con el que estamos trabajando (en mi caso el de windows que fue el perfil que creamos en pgAdmin en el paso anterior).

Ahora ya podemos realizar cualquier tipo de consulta mediante cmd.

Creando nuestra primera tabla en PostgreSQL.

Ya que tenemos la interface gráfica pgAdmin, vamos a crear desde aquí nuestra primera tabla y campos. También utilizaremos alguna consulta que devuelva datos a modo gráfico.

Pulsamos sobre el símbolo (+) de la base de datos "test" -> símbolo (+) de Schemas -> símbolo (+) de public. ahora pulsamos con el botón derecho sobre "Tables"->Create->Table.
A continuación asignamos un nombre a la tabla y pulsamos el botón "Save". Llegados aquí pulsamos con el botón derecho sobre la tabla y seleccionamos Create->Column.

Ahora ya sabemos crear tablas y crear columnas. Tan solo queda hacer una simple select y el resultado que veremos será similar a la siguiente imagen.

Comandos de interes para ejecutar desde consola.

1 - psql \l :: Te muestra las bases de datos existentes.
2 - psql \d :: Te muestra las relaciones (tablas, secuencias, etc.) existentes en la base de datos.
3 - psql \d [nombre_tabla] :: Para ver la descripción (nombre de columnas, tipo de datos, etc.) de una tabla.
4 - psql \c [nombre_bd] :: Para conectarte a otra base de datos.
5 - psql SHOW search_path; :: Para ver la ruta de búsqueda actual.
6 - psql SET search_path TO [nombre_esquema]; :: Para actualizar la ruta de busqueda.
7 - psql \q :: Para salir de psql.