miércoles, 21 de octubre de 2015

PostgreSQL

Introducción

PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su código fuente disponible libremente. Es el sistema de gestión de bases de datos de código abierto más potente del mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases de datos comerciales.
PostgreSQL utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilospara garantizar la estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará funcionando.



A continuación teneis un gráfico que ilustra de manera general los componentes más importantes en un sistema PostgreSQL.
  • Aplicación cliente: Esta es la aplicación cliente que utiliza PostgreSQL como administrador de bases de datos. La conexión puede ocurrir via TCP/IP ó sockets locales.
  • Demonio postmaster: Este es el proceso principal de PostgreSQL. Es el encargado de escuchar por un puerto/socket por conexiones entrantes de clientes. Tambien es el encargado de crear los procesos hijos que se encargaran de autentificar estas peticiones, gestionar las consultas y mandar los resultados a las aplicaciones clientes
  • Ficheros de configuracion: Los 3 ficheros principales de configuración utilizados por PostgreSQL, postgresql.conf, pg_hba.conf y pg_ident.conf
  • Procesos hijos postgres: Procesos hijos que se encargan de autentificar a los clientes, de gestionar las consultas y mandar los resultados a las aplicaciones clientes
  • PostgreSQL share buffer cache: Memoria compartida usada por POstgreSQL para almacenar datos en caché.
  • Write-Ahead Log (WAL): Componente del sistema encargado de asegurar la integridad de los datos (recuperación de tipo REDO)
  • Kernel disk buffer cache: Caché de disco del sistema operativo
  • Disco: Disco físico donde se almacenan los datos y toda la información necesaria para que PostgreSQL funcione

Características

La última serie de producción es la 9.3. Sus características técnicas la hacen una de las bases de datos más potentes y robustas del mercado. Su desarrollo comenzo hace más de 16 años, y durante este tiempo, estabilidad, potencia, robustez, facilidad de administración e implementación de estándares han sido las características que más se han tenido en cuenta durante su desarrollo. PostgreSQL funciona muy bien con grandes cantidades de datos y una alta concurrencia de usuarios accediendo a la vez a el sistema.
A continuación teneis algunas de las características más importantes y soportadas por PostgreSQL:

Generales

  • Es una base de datos 100% ACID
  • Integridad referencial
  • Tablespaces
  • Nested transactions (savepoints)
  • Replicación asincrónica/sincrónica / Streaming replication - Hot Standby
  • Two-phase commit
  • PITR - point in time recovery
  • Copias de seguridad en caliente (Online/hot backups)
  • Unicode
  • Juegos de caracteres internacionales
  • Regionalización por columna
  • Multi-Version Concurrency Control (MVCC)
  • Multiples métodos de autentificación
  • Acceso encriptado via SSL
  • Actualización in-situ integrada (pg_upgrade)
  • SE-postgres
  • Completa documentación
  • Licencia BSD
  • Disponible para Linux y UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) y Windows 32/64bit.

Programación / Desarrollo

  • Funciones/procedimientos almacenados (stored procedures) en numerosos lenguajes de programacion, entre otros PL/pgSQL (similar al PL/SQL de oracle), PL/Perl, PL/Python y PL/Tcl
  • Bloques anónimos de código de procedimientos (sentencias DO)
  • Numerosos tipos de datos y posibilidad de definir nuevos tipos. Además de los tipos estándares en cualquier base de datos, tenemos disponibles, entre otros, tipos geométricos, de direcciones de red, de cadenas binarias, UUID, XML, matrices, etc
  • Soporta el almacenamiento de objetos binarios grandes (gráficos, videos, sonido, ...)
  • APIs para programar en C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, PHP, Lisp, Scheme, Qt y muchos otros.

SQL

  • SQL92,SQL99,SQL2003,SQL2008
  • Llaves primarias (primary keys) y foráneas (foreign keys)
  • Check, Unique y Not null constraints
  • Restricciones de unicidad postergables (deferrable constraints)
  • Columnas auto-incrementales
  • Indices compuestos, únicos, parciales y funcionales en cualquiera de los metodos de almacenamiento disponibles, B-tree, R-tree, hash ó GiST
  • Sub-selects
  • Consultas recursivas
  • Funciones 'Windows'
  • Joins
  • Vistas (views)
  • Disparadores (triggers) comunes, por columna, condicionales.
  • Reglas (Rules)
  • Herencia de tablas (Inheritance)
  • Eventos LISTEN/NOTIFY
Puedes consultar la lista completa en ingles de características disponibles en todas las versiones en la dirección http://www.postgresql.org/about/featurematrix
Algunos de los limites de PostgreSQL son:


LímiteValor
Máximo tamaño base de datoIlimitado (Depende de tu sistema de almacenamiento)
Máximo tamaño de tabla32 TB
Máximo tamaño de fila1.6 TB
Máximo tamaño de campo1 GB
Máximo numero de filas por tablaIlimitado
Máximo numero de columnas por tabla250 - 1600 (dependiendo del tipo)
Máximo numero de indices por tablaIlimitado
---------------------------------------------------------------------------------
Otras entradas:

Modelo vista controlador (MVC).

Programación orientada a objetos.

No hay comentarios:

Publicar un comentario