POSTGRESQL

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 multihilos para garantizar la estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará funcionando.

Los componentes más importantes en un sistema PostgreSQL son:

Aplicación cliente: Esta es la aplicación cliente que utiliza PostgreSQL como administrador de bases de datos. La conexión puede ocurrir vía TCP/IP o 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. También 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 configuración: Los 3 ficheros principales de configuración utilizados por PostgreSQL, postgresql.conf, pg_hba.conf y pg_ident.conf.

Procesos hijos PostgreSQL: 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.

La versión 9.4 posee las siguientes características:

 Flexibilidad: Con el nuevo tipo de datos JSONB para PostgreSQL, los usuarios ya no tienen que escoger entre almacenes de datos relacionales y no-relacionales: pueden tener los dos al mismo tiempo. JSONB soporta búsquedas rápidas y consultas de búsqueda con expresiones simples usando Generalized Inverted Indexes (GIN). Varias nuevas funciones de apoyo les permiten a los usuarios extraer y manipular datos JSON, con un rendimiento que iguala o supera las bases de datos documentales más populares. Con JSONB, los datos de tablas pueden ser fácilmente integrados con los datos documentales, obteniendo un entorno de base de datos completamente integrado.

Escalabilidad: En 9.4, la Decodificación Lógica (Logical Decoding) provee una nueva API para leer, filtrar y manipular el flujo de replicación de PostgreSQL. Esta interfaz es la base para nuevas herramientas de replicación, como la Replicación Bi-Direccional, la cual soporta la creación de clústeres de PostgreSQL multi-maestros. Otras mejoras en el sistema de replicación, como las ranuras de replicación y réplicas temporizadas, mejoran la gestión y utilidad de los servidores réplica.

Rendimiento: La versión 9.4 también introduce varias mejoras de rendimientos que les permitirán a los usuarios sacar aún más provecho de cada servidor PostgreSQL. Estas incluyen:

  • Mejoras a los índices GIN, haciéndolos hasta 50% más pequeños y hasta 3 veces más rápidos.
  • Vistas Materializadas actualizables de forma concurrente, para reportes más rápidos y actualizados.
  • Recarga rápida del caché de la base de datos en un reinicio usando pg_prewarm.
  • Escritura paralela más rápida en el log transaccional de PostgreSQL.

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 de lo último a lo que se le hizo commit. Esta estrategia es superior al uso de bloqueos por tabla o por filas común en otras bases, eliminando la necesidad del uso de bloqueos explícitos.

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

Los límites de una base de datos PostgreSQL son:

Límite Valor
Máximo tamaño base de dato Ilimitado (Depende de la capacidad del sistema de almacenamiento)
Máximo tamaño de tabla 32 TB
Máximo tamaño de fila 1.6 TB
Máximo tamaño de campo 1 GB
Máximo número de filas por tabla Ilimitado
Máximo número de columnas por tabla 250 – 1600 (dependiendo del tipo)
Máximo número de índices por tabla Ilimitado

La interfaz gráfica PgAdmin también conocida como PgAdmin III o PgAdmin 3, es las más utilizada comúnmente para administrar las instancias de PostgreSQL, es bastante aceptada como la interfaz gráfica oficial de PostgreSQL y viene incluida muchas veces en los binarios de instalación.

D.png

Características más relevantes de PgAdmin:

EXPLAIN gráfico para consultas: Ofrece una forma más visual de analizar lo que el planificador SQL está realizando cuando se ejecuta una consulta, de esta forma facilita el trabajo de optimizar las consultas.

 Panel SQL: PgAdmin se comunica con PostgreSQL primariamente con lenguaje SQL; en el panel SQL se pueden ver las instrucciones SQL generadas cuando utilizamos alguna de las funcionalidades de la interfaz.

Edición directa de los archivos de configuración como postgresql.conf y pg_hba.conf: De esta forma ya es necesario estar abriendo los archivos con un editor de texto plano, ya que se puede hacer directamente desde un solo entorno.

Exportación de Data: pgAdmin permite exportar fácilmente los resultados en CSV o en otros formatos delimitados.

Asistente de Restauración y Backups: Ayuda a hacer estos procesos de forma más sencilla, tiene una buena interfaz que permite seleccionar las bases de datos, esquemas, tablas, etc., que se necesiten respaldar o restaurar, adicional a esto la pestaña de mensajes muestra la línea de comandos donde se aprecia que comandos se están ejecutando con cada acción.

Grant Wizard: Esta funcionalidad permite modificar los permisos en las bases de datos y tablas de forma simplificada.

Arquitectura de Plugin: Nuevas características recientemente desarrolladas están disponibles a un click de distancia. Inclusive podemos instalar los plugins propios que desarrollemos.

LIBRO RECOMENDADO: FUNDAMENTOS DE BASES DE DATOS 4 ED (SILBERSCHATZ, KORTH Y SUDARSHAN)

Contenido

  • Capítulo 1: Introducción.
  • Capítulo 2: Modelos entidad-relación.
  • Capítulo 3: Modelo relacional.
  • Capítulo 4: SQL.
  • Capítulo 5: Otros lenguajes relacionales.
  • Capítulo 6: Integridad y seguridad.
  • Capítulo 7: Diseño de bases de datos relacionales.
  • Capítulo 8: Bases de datos orientadas a objetos.
  • Capítulo 9: Bases de datos relacionales orientadas a objetos.
  • Capítulo 10: XML.
  • Capítulo 11: Almacenamiento y estructura de archivos.
  • Capítulo 12: Indexación y asociación.
  • Capítulo 13: Procesamiento de consultas.
  • Capítulo 14: Optimización de consultas.
  • Capítulo 15: Transacciones.
  • Capítulo 16: Control de concurrencia.
  • Capítulo 16: Sistemas de recuperación.
  • Capítulo 18: Arquitecturas de los sistemas de bases de datos.
  • Capítulo 19: Bases de datos distribuidas.
  • Capítulo 20: Bases de datos paralelas.
  • Capítulo 21: Desarrollo de aplicaciones y administración.
  • Capítulo 22: Consultas avanzadas y recuperación de información.
  • Capítulo 23: Tipos de datos avanzados y nuevas aplicaciones.
  • Capítulo 24: Procesamiento avanzado de transacciones.
  • Capítulo 25: Oracle.
  • Capítulo 26: DB2 de IBM.
  • Capítulo 27: SQL Server de Microsoft.

https://drive.google.com/open?id=0B4AoAxhlob6VSS04X290LWVzd0U

fundamentos-bases-datos-silberschatz-4ta-ed.jpg

LIBRO RECOMENDADO: FUNDAMENTOS DE SQL (ANDY OPPEL, ROBERT SHELDON)

Las bases de datos relacionales se han convertido en el mecanismo de almacenamiento de datos más común para las aplicaciones computacionales modernas. Los lenguajes de programación como Java, C y COBOL, y los lenguajes interpretados de programación como Perl, VBScript y JavaScript muy a menudo acceden a las fuentes de datos para poder recuperar o modificar los datos.

Muchas de estas fuentes de datos son administradas a través de un sistema de administración de bases de datos relacionales (RDBMS), como Oracle, Microsoft SQL Server, MySQL y DB2, que tiene como base el Lenguaje de Consulta Estructurado (SQL) para crear y alterar los objetos de la base de datos, agregar datos y eliminarlos de la base de datos, modificar datos que han sido agregados a esa base de datos y, por supuesto, recuperar datos almacenados en la base de datos para su desplegado y procesamiento. SQL es el lenguaje más ampliamente implementado para las bases de datos relacionales. De la misma manera que las matemáticas son el lenguaje de la ciencia, SQL es el lenguaje de las bases de datos relacionales. SQL no solamente permite administrar los datos dentro de la base de datos, sino también manejar la base de datos en sí

CONTENIDO:

  • Parte I Bases de datos relacionales y SQL
  • Parte II Acceso y modificación de datos
  • Parte III Acceso avanzado a los datos

https://drive.google.com/open?id=0B4AoAxhlob6VYzNyeWdZcFdmWDA

s_MLV_v_O_f_4672340942_072013.jpg

LIBRO RECOMENDADO: ADMINISTRACIÓN DE BASE DE DATOS (MICHAEL V. MANNINO)

Este libro de texto ofrece los fundamentos para comprender la tecnología de bases de datos que da apoyo a cuestiones empresariales de cómputo tales como las que enfrenta Paul Hong. Como nuevo alumno de la administración de bases de datos, es necesario que usted comprenda primero los conceptos fundamentales de la administración de bases de datos y del modelo relacional de datos. Después, necesita dominar sus habilidades en el diseño de bases de datos y en el desarrollo de aplicaciones para bases de datos. Este libro de texto le proporciona las herramientas para ayudarle a comprender las bases de datos relacionales y adquirir las habilidades necesarias para resolver los problemas básicos y avanzados en la formulación de consultas, modelado de datos, normalización y requerimientos de los datos de las aplicaciones, además de la personalización de las aplicaciones de bases de datos.

Después de establecer dichas habilidades, usted estará listo para estudiar la función que tienen los especialistas de bases de datos y los ambientes de procesamiento en los que se utilizan las bases de datos. Este libro presenta las tecnologías fundamentales de las bases de datos en cada ambiente de procesamiento y relaciona estas tecnologías con los avances más recientes del comercio electrónico y el cómputo empresarial.

CONTENIDO:

  • PARTE UNO: Introducción a los ambientes de base de datos
  • PARTE DOS: Comprendiendo las bases de datos relacionales
  • PARTE TRES: Modelado de datos
  • PARTE CUATRO: Diseño de bases de datos relacionales
  • PARTE CINCO: Desarrollo de aplicaciones con bases de datos relacionales
  • PARTE SEIS: Desarrollo avanzado de bases de datos
  • PARTE SIETE: Administración de entornos de bases de datos

https://drive.google.com/open?id=0B4AoAxhlob6VRUNEN044QXhRZUU

descarga.jpg