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
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.
Aislamiento
Si 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.
Durabilidad
Cuando 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/Java
serí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
Comentarios: