Introducción

PostgreSQL es un sistema de administración de bases de datos relacionales orientadas a objetos (ORDBMS, object-relational database management system) basado en POSTGRES, Version 4.2, desarrollado en el Departamento de Ciencias Computacionales de la Universidad de California, Berkeley. POSTGRES fue pionero en muchos conceptos que solo llegaron a aparecer en algunos sistemas de bases de datos comerciales mucho tiempo después. PostgreSQL es un descendiente libre del código original de Berkeley.

Características

  • Bases de datos de nivel empresarial.
  • Multiplataforma: corre en los sistemas operativos más populares, incluyendo GNU/Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) y Windows.
  • Altamente escalable tanto en la cantidad de datos que puede administrar como en el número de usuarios concurrentes que puede manejar. Existen sistemas PostgreSQL en ambientes de producción que manejan más de 4 terabytes de datos [1].
  • Cumplimiento completo de ACID (atomicity, consistency, isolation, durability).
  • Claves foráneas (foreign keys).
  • Uniones (joins).
  • Vistas (views).
  • Disparadores (triggers).
  • Procedimientos almacenados (en diferentes lenguajes).
  • Incluye la mayoría de tipos de datos de SQL:2008, como INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL y TIMESTAMP.
  • Almacenamiento de objetos binarios grandes, incluyendo imágenes, sonido y video.
  • Disponibilidad de interfaces de programación nativas para C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, entre otros.
  • Documentación excepcional.
  • Multi-Version Concurrency Control (MVCC).
  • Point in Time Recovery (PITR).
  • Tablespaces.
  • Replicación asincrónica.
  • Transacciones anidadas (savepoints).
  • Copias de respaldo en línea o en caliente (Online/hot backups).
  • Optimizador/Planificador de consultas sofisticado.
  • Conjuntos de caracteres internacionales.
  • Unicode.

Y por su licencia libre, cualquier persona puede usar, modificar y distribuir PostgreSQL de manera libre y gratuita para cualquier propósito, sea privado, comercial o académico.

Límites generales de PostgreSQL

Límite Valor
Tamaño máximo de base de datos Ilimitado
Tamaño máximo de tabla 32 TB
Tamaño máximo de fila 1,6 TB
Tamaño máximo de campo 1 GB
Máximo de filas por tabla Ilimitado
Máximo de columnas por tabla 250 - 1600 (dependiendo del tipo de columnas)
Máximo de índices por tabla Ilimitado

Arquitectura

Antes de empezar, es necesario comprender la arquitectura básica del sistema PostgreSQL. Entender cómo interactúan las partes de PostgreSQL hará que las siguientes páginas sean más fáciles de entender.

En la jerga de bases de datos, PostgreSQL usa un modelo cliente/servidor. Una sesión de PostgreSQL se compone de los siguientes procesos cooperativos (programas):

  • El servidor, que administra los archivos de las bases de datos, acepta conexiones a las bases de datos de parte de aplicaciones clientes y ejecuta acciones sobre las bases de datos en representación de ellos. El programa servidor de bases de datos se llama postgres.
  • La aplicación cliente (frontend) que desea ejecutar operaciones en las bases de datos. Las aplicaciones cliente pueden ser muy diversas por naturaleza: podría ser una herramienta con interfaz de texto, una aplicación gráfica, un servidor Web que accede a las bases de datos para mostrar páginas Web, o una herramienta especializada para el mantenimiento de bases de datos. La distribución de PostgreSQL viene con algunas aplicaciones cliente; la mayoría es desarrollada por usuarios.

Como es típico en las aplicaciones cliente/servidor, el cliente y el servidor pueden estar en diferentes máquinas. En tal caso, ambos se comunican por medio de una conexión de red TCP/IP. Esto debe tenerse presente porque los archivos a los que se puede acceder desde una máquina cliente podrían no ser accesibles para la máquina con el servidor de bases de datos.

El servidor de PostgreSQL puede manejar muchas conexiones concurrentes de diferentes clientes. Para lograrlo, inicia (“ramifica”) un proceso nuevo para cada conexión. A partir de ese punto, el cliente y el nuevo proceso del servidor se comunican sin la intervención del proceso original de postgres. De esta manera, el proceso maestro del servidor siempre está corriendo, esperando conexiones de clientes, mientras que los clientes y sus procesos de servidor asociados vienen y van. (Todo esto, claro está, es invisible para el usuario. Solo se menciona aquí para propósitos ilustrativos).

Notas

[1]Usuarios destacados. PostgreSQL.org.. The PostgreSQL Global Development Group, 2011.

Contenidos

Tema anterior

Parte I: Primero lo primero

Próximo tema

Instalación

Esta página