PostgreSQL Teoria Basica

Hola a todos hoy comento sobre postgresql ya que es una de las opciones mas interesante en base de datos relacionales open source.

Historia Breve

Algo de historia Michael Stonebraker inicio el proyecto bajo el nombre de Post Ingres a mediados de lo 80's con la idea de solucionar problemas existentes en las bases de datos de esa época. Mysql fue por mucho tiempo el motor mas popular, pero hoy es prioridad de Oracle y esto limita su evolución. Por otro lado, PostgreSQL es gratuito y libre, ademas que nos ofrece un montón de opciones avanzadas.

MVCC (Multi Version Concurrency Control) una características interesante de PostgreSQL es el control de concurrencias multiversion, este método agrega una imagen del estado de la base de datos a cada transacción y esto nos permite hacer transacciones eventualmente consistentes asi ofrece grandes ventajas en el rendimiento.

Hot-Stanby este permite que los clientes realicen búsquedas de (solo lectura) en los servidores mientras estos están en modo de recuperación o espera. Y es así que de esta manera se puede realizar tareas de mantenimiento o recuperación sin bloquear completamente el sistema, por estas razones postgresql aporta mucha flexibilidad a nuestros proyectos y es así como por ejemplo nos permite definir funciones personalizadas por medio de varios lenguajes. Algunos son:
PL/pgSQL - PL/Tcl - PL/Perl - PL/Python - PL/PHP - PL/Ruby - PL/Java

Otra ventaja de PostgreSQL es que esta disponible para muchas plataformas y ofrece el codigo fuente desde su sitio oficial. Algunos de los builds oficiales son:
Mac OS X

Windows

Solaris

Red Hat

Debian

Ubuntu

Que es PostgreSQL ?

Postgres es un motor de bases de datos relacionales (RDBMS) que verifica integridad referencial con gran funcionalidad como base de datos.

Que es integridad de Datos ?

se refiere a la correctitud y completitud de la información de una base de datos.
Esto pasa cuando los contenidos se modifican con sentencias INSERT, DELETE o UPDATE, la integridad de los datos se puede perder de muchas maneras diferentes, un ejemplo seria el ingreso de datos no validos a la base de datos, si fuera una base de datos de un producto de perfumes y se ingresa un repelente esto seria un producto no existente.

Que es la transacción ?

La transacción es una conjunto de instrucciones la cual tiene que realizar todas sus instrucciones o ninguna de ellas, teniendo esta definición también se puede decir que la transacción es una unidad lógica de trabajo.

Cada transaccion debe tener la propiedad ACID

Cuales son estas propiedades ACID ?

Atomicidad La transacción es realizada completamente o no realiza ninguna acción. No puede realizar solamente mitad o parte de la transacción.

Consistencia Solo son ejecutadas aquellas transacciones que no tiene conflicto con las reglas y directrices de integridad de la base de datos.

AislamientoSi hay dos o más transacciones que en un mismo tiempo desean realizar cambio a una misma información, el sistema garantiza que cada transacción ignora al resto de las transacciones es decir que cada una se maneja de forma independiente para no generar errores.

DurabilidadCuando una transacción es exitosa los cambios hechos por la transacción permanecen en el sistema y no se pueden deshacer aunque falle el sistema.

Regularmente las transacciones comienzan con un BEGIN WORK y finalizan con un COMMIT/COMMIT WORK o ROLLBACK/ROLLBACK WORK.

Ventajas y Desventajas

Ventajas Licencia gratuita Ahorros considerables en costos de operación. PostgreSQL ha sido diseñado y creado para tener un mantenimiento y ajuste mucho menor que otros productos, conservando todas las características, estabilidad y rendimiento.

Desventajas Consume más recursos que MYSQL por lo que se necesitan mayores características de hardware para ejecutarlo. La sintaxis de algunos de sus comandos o sentencias no es nada intuitiva. Instalación Ilimitada. Las versiones actuales de PostgreSQL tienen un grave problema de seguridad que será arreglado en las próximas versiones del producto.

Problemas de Seguridad Detectados en PostgreSQL

Se han detectado un total de dos problemas de seguridad importantes, el primero de ellos tiene que ver con el parseo de expresiones regulares, este fallo de seguridad está catalogado como crítica ya que se podrían pasar expresiones regulares que incluyan caracteres no unicode, provocando problemas en el backend. Está catalogada como crítica debido a que se puede producir en casos de usuarios no confiables o en expresiones regulares basadas en la entrada de los usuarios. El identificador asignado a esta vulnerabilidad es CVE-2016-0773.

La segunda vulnerabilidad encontrada podría provocar una escalada de privilegios, ciertas configuraciones personalizadas (GUCS) ParaPL/Javaserían solo modificables por el superusuario de la base de datos. Esta vulnerabilidad tiene el identificador CVE-2016-0766.

Versiones de PostgreSQL afectadas por estos fallos

A continuación podéis ver las versiones afectadas por estos dos fallos de seguridad:

9.5.1 - 9.4.6 - 9.3.11 - 9.2.15 - 9.1.20


Página oficial