SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
Introducción
Común es la pregunta entre las personas que se adentran por primera vez en el mundo de las bases de datos
libres: ¿MySQL o PostGreSQL? En realidad no es una pregunta asociada específicamente a los "novatos", ya
que incluso los profesionales dedicados a este campo se realizan muchas veces esta misma pregunta. La verdad
es que no es una pregunta fácil de responder, y no carente de grandes controversias.

El objetivo de este documento será introducir las características de estos dos magníficos sistemas de gestión de
bases de datos, haciendo una pequeña comparativa entre ellas, con el fin de conducir a la elección más
adecuada para cada situación.


a. PostGreSQL
a.1. ¿Qué es PostGreSQL?
PostGreSQL es un sistema de gestión de bases de datos objeto-relacional (ORDBMS) basado en el proyecto
POSTGRES, de la universidad de Berkeley. El director de este proyecto es el profesor Michael Stonebraker, y
fue patrocinado por Defense Advanced Research Projects Agency (DARPA), el Army Research Office (ARO),
el National Science Foundation (NSF), y ESL, Inc.

PostGreSQL es una derivación libre (OpenSource) de este proyecto, y utiliza el lenguaje SQL92/SQL99, así
como otras características que comentaremos más adelante.

Fue el pionero en muchos de los conceptos existentes en el sistema objeto-relacional actual, incluido, más tarde
en otros sistemas de gestión comerciales. PostGreSQL es un sistema objeto-relacional, ya que incluye
características de la orientación a objetos, como puede ser la herencia, tipos de datos, funciones, restricciones,
disparadores, reglas e integridad transaccional. A pesar de esto, PostGreSQL no es un sistema de gestión de
bases de datos puramente orientado a objetos.

a.2. Historia de PostGreSQL
PostGreSQL (llamado también Postgres95) fue derivado del proyecto Postgres, como ya se ha comentado. A
sus espaldas, este proyecto lleva más de una década de desarrollo, siendo hoy en día, el sistema libre más
avanzado con diferencia, soportando la gran mayoría de las transacciones SQL, control concurrente, teniendo a
su disposición varios "language bindings" como por ejemplo C, C++, Java, Python, PHP y muchos más.

La implementación de Postgres DBMS comenzó en 1986, y no hubo una versión operativa hasta 1987. La
versión 1.0 fue liberada en Junio de 1989 a unos pocos usuarios, tras la cual se liberó la versión 2.0 en Junio de
1990 debido a unas críticas sobre el sistema de reglas, que obligó a su reimplementación. La versión 3.0
apareció en el año 1991, e incluyó una serie de mejoras como una mayor eficiencia en el ejecutor de peticiones.
El resto de versiones liberadas a partir de entonces, se centraron en la portabilidad del sistema. El proyecto se
dio por finalizado en con la versión 4.2, debido al gran auge que estaba teniendo, lo cual causó la imposibilidad
de mantenimiento por parte de los desarrolladores.

En 1994, Andrew Yu y Jolly Chen añadieron un intérprete de SQL a este gestor. Postgres95, como así se llamó
fue liberado a Internet como un proyecto libre (OpenSource). Estaba escrito totalmente en C, y la primera
versión fue un 25% más pequeña que Postgres, y entre un 30 y un 50% más rápida. A parte de la corrección de
algunos bugs, se mejoró el motor interno, se añadió un nuevo programa monitor, y se compiló usando la
utilidad GNU Make y el compilador gcc sin necesidad de parchearlo (como había hecho falta en versiones
anteriores).
En 1996, los desarrolladores decidieron cambiar el nombre a al DBMS, y lo llamaron PostGreSQL (versión
6.0) para reflejar la relación entre Postgres y las versiones recientes de SQL. Se crearon nuevas mejoras y
modificaciones, que repercutieron en un 20-40% más de eficiencia, así como la incorporación del estándar
SQL92.

La versión que se ofrece a fechas de este escrito, es la versión 7.2.1. Se puede encontrar más información
acerca de las características e historia en [PostGreSQL_Manual].

a.3. Características de PostGreSQL
A continuación se enumeran las principales características de este gestor de bases de datos:

   1. Implementación del estándar SQL92/SQL99.
   2. Soporta distintos tipos de datos: además del soporte para los tipos base, también soporta datos de tipo
      fecha, monetarios, elementos gráficos, datos sobre redes (MAC, IP ...), cadenas de bits, etc. También
      permite la creación de tipos propios.
   3. Incorpora una estructura de datos array.
   4. Incorpora funciones de diversa índole: manejo de fechas, geométricas, orientadas a operaciones con
      redes, etc.
   5. Permite la declaración de funciones propias, así como la definición de disparadores.
   6. Soporta el uso de índices, reglas y vistas.
   7. Incluye herencia entre tablas (aunque no entre objetos, ya que no existen), por lo que a este gestor de
      bases de datos se le incluye entre los gestores objeto-relacionales.
   8. Permite la gestión de diferentes usuarios, como también los permisos asignados a cada uno de ellos.

a.4. ¿Qué es lo que le falta?
PostGreSQL es un magnífico gestor de bases de datos, capaz de competir con muchos gestores comerciales,
aunque carezca de alguna característica casi imprescindible. Ésta es, bajo mi punto de vista, un conjunto de
herramientas que permitan una fácil gestión de los usuarios y de las bases de datos que contenga el sistema. Por
otro lado, la velocidad de respuesta que ofrece este gestor con bases de datos relativamente pequeñas puede
parecer un poco deficiente, aunque esta misma velocidad la mantiene al gestionar bases de datos realmente
grandes, cosa que resulta loable.


b. MySQL
b.1. ¿Qué es MySQL?
MySQL es un sistema de gestión de bases de datos relacional, licenciado bajo la GPL de la GNU. Su diseño
multihilo le permite soportar una gran carga de forma muy eficiente. MySQL fue creada por la empresa sueca
MySQL AB, que mantiene el copyright del código fuente del servidor SQL, así como también de la marca.

Aunque MySQL es software libre, MySQL AB distribuye una versión comercial de MySQL, que no se
diferencia de la versión libre más que en el soporte técnico que se ofrece, y la posibilidad de integrar este gestor
en un software propietario, ya que de no ser así, se vulneraría la licencia GPL.

Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a
su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías
y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su
fácil instalación y configuración.

b.2. Historia de MySQL

MySQL surgió como un intento de conectar el gestor mSQL a las tablas propias de MySQL AB, usando sus
propias rutinas a bajo nivel. Tras unas primeras pruebas, vieron que mSQL no era lo bastante flexible para lo
que necesitaban, por lo que tuvieron que desarrollar nuevas funciones. Esto resultó en una interfaz SQL a su
base de datos, con una interfaz totalmente compatible a mSQL.

Se comenta en el manual [MySQL_Manual] que no se sabe con certeza de donde proviene su nombre. Por un
lado dicen que sus librerías han llevado el prefijo 'my' durante los diez últimos años. Por otro lado, la hija de
uno de los desarrolladores se llama My. No saben cuál de estas dos causas (aunque bien podrían tratarse de la
misma), han dado lugar al nombre de este conocido gestor de bases de datos.

La versión estable de este gestor a días de hoy es la 3.23.49. Se puede encontrar más información sobre este
gestor en el manual [MySQL_Manual].

b.3. Características de MySQL
Las principales características de este gestor de bases de datos son las siguientes:

   1.   Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo.
   2.   Soporta gran cantidad de tipos de datos para las columnas.
   3.   Dispone de API's en gran cantidad de lenguajes (C, C++, Java, PHP, etc).
   4.   Gran portabilidad entre sistemas.
   5.   Soporta hasta 32 índices por tabla.
   6.   Gestión de usuarios y passwords, manteniendo un muy buen nivel de seguridad en los datos.

b.4. ¿Qué es lo que le falta?
MySQL surgió cómo una necesidad de un grupo de personas sobre un gestor de bases de datos rápido, por lo
que sus desarrolladores fueron implementando únicamente lo que precisaban, intentando hacerlo funcionar de
forma óptima. Es por ello que, aunque MySQL se incluye en el grupo de sistemas de bases de datos
relacionales, carece de algunas de sus principales características:

   1. Subconsultas: tal vez ésta sea una de las características que más se echan en falta, aunque gran parte de
      las veces que se necesitan, es posible reescribirlas de manera que no sean necesarias.
   2. SELECT INTO TABLE: Esta característica propia de Oracle, todavía no está implementada.
   3. Triggers y Procedures: Se tiene pensado incluir el uso de procedures almacenados en la base de datos,
      pero no el de triggers, ya que los triggers reducen de forma significativa el rendimiento de la base de
      datos, incluso en aquellas consultas que no los activan.
   4. Transacciones: a partir de las últimas versiones ya hay soporte para transacciones, aunque no por
      defecto (se ha de activar un modo especial).
   5. Integridad referencial: aunque sí que admite la declaración de claves ajenas en la creación tablas,
      internamente no las trata de forma diferente al resto de campos.

Los desarrolladores comentan en la documentación que todas estas carencias no les resultaban un problema, ya
que era lo que ellos necesitaban. De hecho, MySQL fue diseñada con estas características, debido a que lo que
buscaban era un gestor de bases de datos con una gran rapidez de respuesta. Pero ha sido con la distribución de
MySQL por Internet, cuando más y más gente les están pidiendo estas funcionalidades, por lo que serán
incluidas en futuras versiones del gestor.


c. Comparativa
c.1. Introducción
Son muchos los benchmarks que se han publicado sobre estos gestores de bases de datos, aunque muchos de
ellos tienen una clara tendencia hacia uno de los dos bandos. Es por esto que hay que saber extraer bien las
conclusiones a partir de un benchmark. Por ejemplo, es importante que las comparaciones entre los dos gestores
se realicen en igualdad de condiciones, cosa que por otra parte, muchas veces resulta complicado debido a las
distintas implementaciones que poseen estos gestores.
Además, resulta muy complicado diseñar un buen benchmark, que tenga en cuenta todas las posibles mejoras
de rendimiento que pueda aplicar cada uno de estos gestores. Es lógico pues, que haya algunas pruebas que se
le apliquen a un gestor, y que no tenga ningún sentido realizarselas al otro.

A continuación se resumen las conclusiones obtenidas a partir de diversos benchmark's, intentando hacer un
descarte de los que tenían una clara tendencia hacia uno de los bandos.

c.2. PostGreSQL ...
Las características positivas que posee este gestor según las opiniones más comunes en Internet, son:

   1. Posee una gran escalabilidad. Es capaz de ajustarse al número de CPUs y a la cantidad de memoria que
      posee el sistema de forma óptima, haciéndole capaz de soportar una mayor cantidad de peticiones
      simultáneas de manera correcta (en algunos benchmarks se dice que ha llegado a soportar el triple de
      carga de lo que soporta MySQL).
   2. Implementa el uso de rollback's, subconsultas y transacciones, haciendo su funcionamiento mucho más
      eficaz, y ofreciendo soluciones en campos en las que MySQL no podría.
   3. Tiene la capacidad de comprobar la integridad referencial, así como también la de almacenar
      procedimientos en la propia base de datos, equiparándolo con los gestores de bases de datos de alto
      nivel, como puede ser Oracle.

c.3.
Por contra, los mayores inconvenientes que se pueden encontrar a este gestor son:

   1. Consume gran cantidad de recursos.
   2. Tiene un límite de 8K por fila, aunque se puede aumentar a 32K, con una disminución considerable del
      rendimiento.
   3. Es de 2 a 3 veces más lento que MySQL.

c.4. Lo mejor de MySQL ...
Es evidente que la gran mayoría de gente usa este gestor en Internet, por lo que encontrar opiniones favorables
no ha resultado en absoluto complicado:

   1. Sin lugar a duda, lo mejor de MySQL es su velocidad a la hora de realizar las operaciones, lo que le
      hace uno de los gestores que ofrecen mayor rendimiento.
   2. Su bajo consumo lo hacen apto para ser ejecutado en una máquina con escasos recursos sin ningún
      problema.
   3. Las utilidades de administración de este gestor son envidiables para muchos de los gestores comerciales
      existentes, debido a su gran facilidad de configuración e instalación.
   4. Tiene una probabilidad muy reducida de corromper los datos, incluso en los casos en los que los errores
      no se produzcan en el propio gestor, sino en el sistema en el que está.
   5. El conjunto de aplicaciones Apache-PHP-MySQL es uno de los más utilizados en Internet en servicios
      de foro (Barrapunto.com) y de buscadores de aplicaciones (Freshmeat.net).

c.5. ...
Debido a esta mayor aceptación en Internet, gran parte de los inconvenientes se exponen a continuación, han
sido extraídos de comparativas con otras bases de datos:

   1. Carece de soporte para transacciones, rollback's y subconsultas.
   2. El hecho de que no maneje la integridad referencial, hace de este gestor una solución pobre para muchos
      campos de aplicación, sobre todo para aquellos programadores que provienen de otros gestores que sí
      que poseen esta característica.
3. No es viable para su uso con grandes bases de datos, a las que se acceda continuamente, ya que no
        implementa una buena escalabilidad.

Muchas gracias por compartir tus conocimientos. La segunda parte es responsabilidad del usuario que tenga interes en saber mas del tema.

Este documento fue extraido de la pagina de Daniel Pecos. Todos los derechos le pertenecen. http://www.danielpecos.com/docs/mysql_postgres/index.html

Contenu connexe

Tendances

Instalación de sgbd en diferentes plataformas de windows
Instalación de sgbd en diferentes plataformas de windowsInstalación de sgbd en diferentes plataformas de windows
Instalación de sgbd en diferentes plataformas de windowsDaniel Huerta Cruz
 
Reporte servicios web
Reporte servicios webReporte servicios web
Reporte servicios webFacebook
 
Versiones Microsoft SQL
Versiones Microsoft SQLVersiones Microsoft SQL
Versiones Microsoft SQLLuis Vázquez
 
Análisis comparativo de bases de datos
Análisis comparativo  de bases de datosAnálisis comparativo  de bases de datos
Análisis comparativo de bases de datosJorge Mengelle
 
Ventajas vs desventajas de los gestores de bases
Ventajas  vs desventajas de los gestores de basesVentajas  vs desventajas de los gestores de bases
Ventajas vs desventajas de los gestores de basesMiluska Guerra Guerra
 
Comparación entre Oracle y Mysql
Comparación entre Oracle y MysqlComparación entre Oracle y Mysql
Comparación entre Oracle y Mysqlstefakoka
 
Sistemas gestores de base de datos gabriela escobar
Sistemas gestores de base de datos gabriela escobarSistemas gestores de base de datos gabriela escobar
Sistemas gestores de base de datos gabriela escobarGabriela Escobar
 
Programación Modular con Java 9
Programación Modular con Java 9Programación Modular con Java 9
Programación Modular con Java 9Software Guru
 
Principales características de PostgreSQL
Principales características de PostgreSQLPrincipales características de PostgreSQL
Principales características de PostgreSQLDavid M. Martín García
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracletriana25
 
Administracion de un servidor web
Administracion de un servidor webAdministracion de un servidor web
Administracion de un servidor webCristian Fory
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDBliras loca
 
Las 10 gestores de base de datos
Las 10 gestores de base de datosLas 10 gestores de base de datos
Las 10 gestores de base de datosKatherine VM
 
Ventajas del Por Qué usar MySQL como Sistema Gestor de Bases de Datos
Ventajas del Por Qué usar MySQL como Sistema Gestor de Bases de DatosVentajas del Por Qué usar MySQL como Sistema Gestor de Bases de Datos
Ventajas del Por Qué usar MySQL como Sistema Gestor de Bases de DatosIng-D-SW-TorresKhano--ME
 

Tendances (20)

Postgresql
PostgresqlPostgresql
Postgresql
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 
SQLite
SQLiteSQLite
SQLite
 
Sq lite
Sq liteSq lite
Sq lite
 
Instalación de sgbd en diferentes plataformas de windows
Instalación de sgbd en diferentes plataformas de windowsInstalación de sgbd en diferentes plataformas de windows
Instalación de sgbd en diferentes plataformas de windows
 
Sqlite
SqliteSqlite
Sqlite
 
Reporte servicios web
Reporte servicios webReporte servicios web
Reporte servicios web
 
Versiones Microsoft SQL
Versiones Microsoft SQLVersiones Microsoft SQL
Versiones Microsoft SQL
 
Análisis comparativo de bases de datos
Análisis comparativo  de bases de datosAnálisis comparativo  de bases de datos
Análisis comparativo de bases de datos
 
Ventajas vs desventajas de los gestores de bases
Ventajas  vs desventajas de los gestores de basesVentajas  vs desventajas de los gestores de bases
Ventajas vs desventajas de los gestores de bases
 
Comparación entre Oracle y Mysql
Comparación entre Oracle y MysqlComparación entre Oracle y Mysql
Comparación entre Oracle y Mysql
 
Sistemas gestores de base de datos gabriela escobar
Sistemas gestores de base de datos gabriela escobarSistemas gestores de base de datos gabriela escobar
Sistemas gestores de base de datos gabriela escobar
 
Programación Modular con Java 9
Programación Modular con Java 9Programación Modular con Java 9
Programación Modular con Java 9
 
Gestores de bases de datos cuadros comparativos
Gestores de bases de datos cuadros comparativosGestores de bases de datos cuadros comparativos
Gestores de bases de datos cuadros comparativos
 
Principales características de PostgreSQL
Principales características de PostgreSQLPrincipales características de PostgreSQL
Principales características de PostgreSQL
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
Administracion de un servidor web
Administracion de un servidor webAdministracion de un servidor web
Administracion de un servidor web
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
 
Las 10 gestores de base de datos
Las 10 gestores de base de datosLas 10 gestores de base de datos
Las 10 gestores de base de datos
 
Ventajas del Por Qué usar MySQL como Sistema Gestor de Bases de Datos
Ventajas del Por Qué usar MySQL como Sistema Gestor de Bases de DatosVentajas del Por Qué usar MySQL como Sistema Gestor de Bases de Datos
Ventajas del Por Qué usar MySQL como Sistema Gestor de Bases de Datos
 

Similaire à MySQL vs PostGreSQL: Características y diferencias

Dbms más utilizados
Dbms más utilizadosDbms más utilizados
Dbms más utilizadosjro1007
 
Base de datos mysql
Base de datos mysqlBase de datos mysql
Base de datos mysqlAlStarPk
 
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)Andres del Valle
 
Sistemas de gestores de base de datos
Sistemas de gestores de base de datosSistemas de gestores de base de datos
Sistemas de gestores de base de datosHernan Okamura
 
Tarea bases de datos asp.net
Tarea bases de datos asp.netTarea bases de datos asp.net
Tarea bases de datos asp.netmerck20
 
Sistema.inventario@hotmail.com
Sistema.inventario@hotmail.comSistema.inventario@hotmail.com
Sistema.inventario@hotmail.comsimeon
 
Taller de base de datos postgre sql
Taller de base de datos postgre sqlTaller de base de datos postgre sql
Taller de base de datos postgre sql500y
 
Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Henry Cumbicus Rivera
 
Gestores de Base de Datos
Gestores de Base de DatosGestores de Base de Datos
Gestores de Base de DatosRedrobanA
 
Sistemas de gestores de base de datos
Sistemas de gestores de base de datosSistemas de gestores de base de datos
Sistemas de gestores de base de datosHernan Okamura
 
Perspectiva practica de la administracion de base de datos
Perspectiva practica de la administracion de base de datosPerspectiva practica de la administracion de base de datos
Perspectiva practica de la administracion de base de datosDiana Vélez
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datosGusttavo Nipas
 
Smbd equipo 2
Smbd equipo 2Smbd equipo 2
Smbd equipo 2rttvip
 

Similaire à MySQL vs PostGreSQL: Características y diferencias (20)

Base datos f06
Base datos f06Base datos f06
Base datos f06
 
Dbms más utilizados
Dbms más utilizadosDbms más utilizados
Dbms más utilizados
 
Base de datos mysql
Base de datos mysqlBase de datos mysql
Base de datos mysql
 
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
 
Sistemas de gestores de base de datos
Sistemas de gestores de base de datosSistemas de gestores de base de datos
Sistemas de gestores de base de datos
 
Tarea bases de datos asp.net
Tarea bases de datos asp.netTarea bases de datos asp.net
Tarea bases de datos asp.net
 
Sistema.inventario@hotmail.com
Sistema.inventario@hotmail.comSistema.inventario@hotmail.com
Sistema.inventario@hotmail.com
 
Base de datos sql
Base de datos sqlBase de datos sql
Base de datos sql
 
Taller de base de datos postgre sql
Taller de base de datos postgre sqlTaller de base de datos postgre sql
Taller de base de datos postgre sql
 
Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)
 
Gestores de Base de Datos
Gestores de Base de DatosGestores de Base de Datos
Gestores de Base de Datos
 
Sistemas de gestores de base de datos
Sistemas de gestores de base de datosSistemas de gestores de base de datos
Sistemas de gestores de base de datos
 
Comparativa SGBDR
Comparativa SGBDRComparativa SGBDR
Comparativa SGBDR
 
Perspectiva practica de la administracion de base de datos
Perspectiva practica de la administracion de base de datosPerspectiva practica de la administracion de base de datos
Perspectiva practica de la administracion de base de datos
 
Mysql
MysqlMysql
Mysql
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datos
 
SGBD Postgresql
SGBD PostgresqlSGBD Postgresql
SGBD Postgresql
 
Sistemas gestoresdebasededatos
Sistemas gestoresdebasededatosSistemas gestoresdebasededatos
Sistemas gestoresdebasededatos
 
Smbd equipo 2
Smbd equipo 2Smbd equipo 2
Smbd equipo 2
 
Gestor de base de datos
Gestor de base de datosGestor de base de datos
Gestor de base de datos
 

Dernier

Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 

Dernier (20)

Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 

MySQL vs PostGreSQL: Características y diferencias

  • 1. Introducción Común es la pregunta entre las personas que se adentran por primera vez en el mundo de las bases de datos libres: ¿MySQL o PostGreSQL? En realidad no es una pregunta asociada específicamente a los "novatos", ya que incluso los profesionales dedicados a este campo se realizan muchas veces esta misma pregunta. La verdad es que no es una pregunta fácil de responder, y no carente de grandes controversias. El objetivo de este documento será introducir las características de estos dos magníficos sistemas de gestión de bases de datos, haciendo una pequeña comparativa entre ellas, con el fin de conducir a la elección más adecuada para cada situación. a. PostGreSQL a.1. ¿Qué es PostGreSQL? PostGreSQL es un sistema de gestión de bases de datos objeto-relacional (ORDBMS) basado en el proyecto POSTGRES, de la universidad de Berkeley. El director de este proyecto es el profesor Michael Stonebraker, y fue patrocinado por Defense Advanced Research Projects Agency (DARPA), el Army Research Office (ARO), el National Science Foundation (NSF), y ESL, Inc. PostGreSQL es una derivación libre (OpenSource) de este proyecto, y utiliza el lenguaje SQL92/SQL99, así como otras características que comentaremos más adelante. Fue el pionero en muchos de los conceptos existentes en el sistema objeto-relacional actual, incluido, más tarde en otros sistemas de gestión comerciales. PostGreSQL es un sistema objeto-relacional, ya que incluye características de la orientación a objetos, como puede ser la herencia, tipos de datos, funciones, restricciones, disparadores, reglas e integridad transaccional. A pesar de esto, PostGreSQL no es un sistema de gestión de bases de datos puramente orientado a objetos. a.2. Historia de PostGreSQL PostGreSQL (llamado también Postgres95) fue derivado del proyecto Postgres, como ya se ha comentado. A sus espaldas, este proyecto lleva más de una década de desarrollo, siendo hoy en día, el sistema libre más avanzado con diferencia, soportando la gran mayoría de las transacciones SQL, control concurrente, teniendo a su disposición varios "language bindings" como por ejemplo C, C++, Java, Python, PHP y muchos más. La implementación de Postgres DBMS comenzó en 1986, y no hubo una versión operativa hasta 1987. La versión 1.0 fue liberada en Junio de 1989 a unos pocos usuarios, tras la cual se liberó la versión 2.0 en Junio de 1990 debido a unas críticas sobre el sistema de reglas, que obligó a su reimplementación. La versión 3.0 apareció en el año 1991, e incluyó una serie de mejoras como una mayor eficiencia en el ejecutor de peticiones. El resto de versiones liberadas a partir de entonces, se centraron en la portabilidad del sistema. El proyecto se dio por finalizado en con la versión 4.2, debido al gran auge que estaba teniendo, lo cual causó la imposibilidad de mantenimiento por parte de los desarrolladores. En 1994, Andrew Yu y Jolly Chen añadieron un intérprete de SQL a este gestor. Postgres95, como así se llamó fue liberado a Internet como un proyecto libre (OpenSource). Estaba escrito totalmente en C, y la primera versión fue un 25% más pequeña que Postgres, y entre un 30 y un 50% más rápida. A parte de la corrección de algunos bugs, se mejoró el motor interno, se añadió un nuevo programa monitor, y se compiló usando la utilidad GNU Make y el compilador gcc sin necesidad de parchearlo (como había hecho falta en versiones anteriores).
  • 2. En 1996, los desarrolladores decidieron cambiar el nombre a al DBMS, y lo llamaron PostGreSQL (versión 6.0) para reflejar la relación entre Postgres y las versiones recientes de SQL. Se crearon nuevas mejoras y modificaciones, que repercutieron en un 20-40% más de eficiencia, así como la incorporación del estándar SQL92. La versión que se ofrece a fechas de este escrito, es la versión 7.2.1. Se puede encontrar más información acerca de las características e historia en [PostGreSQL_Manual]. a.3. Características de PostGreSQL A continuación se enumeran las principales características de este gestor de bases de datos: 1. Implementación del estándar SQL92/SQL99. 2. Soporta distintos tipos de datos: además del soporte para los tipos base, también soporta datos de tipo fecha, monetarios, elementos gráficos, datos sobre redes (MAC, IP ...), cadenas de bits, etc. También permite la creación de tipos propios. 3. Incorpora una estructura de datos array. 4. Incorpora funciones de diversa índole: manejo de fechas, geométricas, orientadas a operaciones con redes, etc. 5. Permite la declaración de funciones propias, así como la definición de disparadores. 6. Soporta el uso de índices, reglas y vistas. 7. Incluye herencia entre tablas (aunque no entre objetos, ya que no existen), por lo que a este gestor de bases de datos se le incluye entre los gestores objeto-relacionales. 8. Permite la gestión de diferentes usuarios, como también los permisos asignados a cada uno de ellos. a.4. ¿Qué es lo que le falta? PostGreSQL es un magnífico gestor de bases de datos, capaz de competir con muchos gestores comerciales, aunque carezca de alguna característica casi imprescindible. Ésta es, bajo mi punto de vista, un conjunto de herramientas que permitan una fácil gestión de los usuarios y de las bases de datos que contenga el sistema. Por otro lado, la velocidad de respuesta que ofrece este gestor con bases de datos relativamente pequeñas puede parecer un poco deficiente, aunque esta misma velocidad la mantiene al gestionar bases de datos realmente grandes, cosa que resulta loable. b. MySQL b.1. ¿Qué es MySQL? MySQL es un sistema de gestión de bases de datos relacional, licenciado bajo la GPL de la GNU. Su diseño multihilo le permite soportar una gran carga de forma muy eficiente. MySQL fue creada por la empresa sueca MySQL AB, que mantiene el copyright del código fuente del servidor SQL, así como también de la marca. Aunque MySQL es software libre, MySQL AB distribuye una versión comercial de MySQL, que no se diferencia de la versión libre más que en el soporte técnico que se ofrece, y la posibilidad de integrar este gestor en un software propietario, ya que de no ser así, se vulneraría la licencia GPL. Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración. b.2. Historia de MySQL MySQL surgió como un intento de conectar el gestor mSQL a las tablas propias de MySQL AB, usando sus propias rutinas a bajo nivel. Tras unas primeras pruebas, vieron que mSQL no era lo bastante flexible para lo
  • 3. que necesitaban, por lo que tuvieron que desarrollar nuevas funciones. Esto resultó en una interfaz SQL a su base de datos, con una interfaz totalmente compatible a mSQL. Se comenta en el manual [MySQL_Manual] que no se sabe con certeza de donde proviene su nombre. Por un lado dicen que sus librerías han llevado el prefijo 'my' durante los diez últimos años. Por otro lado, la hija de uno de los desarrolladores se llama My. No saben cuál de estas dos causas (aunque bien podrían tratarse de la misma), han dado lugar al nombre de este conocido gestor de bases de datos. La versión estable de este gestor a días de hoy es la 3.23.49. Se puede encontrar más información sobre este gestor en el manual [MySQL_Manual]. b.3. Características de MySQL Las principales características de este gestor de bases de datos son las siguientes: 1. Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo. 2. Soporta gran cantidad de tipos de datos para las columnas. 3. Dispone de API's en gran cantidad de lenguajes (C, C++, Java, PHP, etc). 4. Gran portabilidad entre sistemas. 5. Soporta hasta 32 índices por tabla. 6. Gestión de usuarios y passwords, manteniendo un muy buen nivel de seguridad en los datos. b.4. ¿Qué es lo que le falta? MySQL surgió cómo una necesidad de un grupo de personas sobre un gestor de bases de datos rápido, por lo que sus desarrolladores fueron implementando únicamente lo que precisaban, intentando hacerlo funcionar de forma óptima. Es por ello que, aunque MySQL se incluye en el grupo de sistemas de bases de datos relacionales, carece de algunas de sus principales características: 1. Subconsultas: tal vez ésta sea una de las características que más se echan en falta, aunque gran parte de las veces que se necesitan, es posible reescribirlas de manera que no sean necesarias. 2. SELECT INTO TABLE: Esta característica propia de Oracle, todavía no está implementada. 3. Triggers y Procedures: Se tiene pensado incluir el uso de procedures almacenados en la base de datos, pero no el de triggers, ya que los triggers reducen de forma significativa el rendimiento de la base de datos, incluso en aquellas consultas que no los activan. 4. Transacciones: a partir de las últimas versiones ya hay soporte para transacciones, aunque no por defecto (se ha de activar un modo especial). 5. Integridad referencial: aunque sí que admite la declaración de claves ajenas en la creación tablas, internamente no las trata de forma diferente al resto de campos. Los desarrolladores comentan en la documentación que todas estas carencias no les resultaban un problema, ya que era lo que ellos necesitaban. De hecho, MySQL fue diseñada con estas características, debido a que lo que buscaban era un gestor de bases de datos con una gran rapidez de respuesta. Pero ha sido con la distribución de MySQL por Internet, cuando más y más gente les están pidiendo estas funcionalidades, por lo que serán incluidas en futuras versiones del gestor. c. Comparativa c.1. Introducción Son muchos los benchmarks que se han publicado sobre estos gestores de bases de datos, aunque muchos de ellos tienen una clara tendencia hacia uno de los dos bandos. Es por esto que hay que saber extraer bien las conclusiones a partir de un benchmark. Por ejemplo, es importante que las comparaciones entre los dos gestores se realicen en igualdad de condiciones, cosa que por otra parte, muchas veces resulta complicado debido a las distintas implementaciones que poseen estos gestores.
  • 4. Además, resulta muy complicado diseñar un buen benchmark, que tenga en cuenta todas las posibles mejoras de rendimiento que pueda aplicar cada uno de estos gestores. Es lógico pues, que haya algunas pruebas que se le apliquen a un gestor, y que no tenga ningún sentido realizarselas al otro. A continuación se resumen las conclusiones obtenidas a partir de diversos benchmark's, intentando hacer un descarte de los que tenían una clara tendencia hacia uno de los bandos. c.2. PostGreSQL ... Las características positivas que posee este gestor según las opiniones más comunes en Internet, son: 1. Posee una gran escalabilidad. Es capaz de ajustarse al número de CPUs y a la cantidad de memoria que posee el sistema de forma óptima, haciéndole capaz de soportar una mayor cantidad de peticiones simultáneas de manera correcta (en algunos benchmarks se dice que ha llegado a soportar el triple de carga de lo que soporta MySQL). 2. Implementa el uso de rollback's, subconsultas y transacciones, haciendo su funcionamiento mucho más eficaz, y ofreciendo soluciones en campos en las que MySQL no podría. 3. Tiene la capacidad de comprobar la integridad referencial, así como también la de almacenar procedimientos en la propia base de datos, equiparándolo con los gestores de bases de datos de alto nivel, como puede ser Oracle. c.3. Por contra, los mayores inconvenientes que se pueden encontrar a este gestor son: 1. Consume gran cantidad de recursos. 2. Tiene un límite de 8K por fila, aunque se puede aumentar a 32K, con una disminución considerable del rendimiento. 3. Es de 2 a 3 veces más lento que MySQL. c.4. Lo mejor de MySQL ... Es evidente que la gran mayoría de gente usa este gestor en Internet, por lo que encontrar opiniones favorables no ha resultado en absoluto complicado: 1. Sin lugar a duda, lo mejor de MySQL es su velocidad a la hora de realizar las operaciones, lo que le hace uno de los gestores que ofrecen mayor rendimiento. 2. Su bajo consumo lo hacen apto para ser ejecutado en una máquina con escasos recursos sin ningún problema. 3. Las utilidades de administración de este gestor son envidiables para muchos de los gestores comerciales existentes, debido a su gran facilidad de configuración e instalación. 4. Tiene una probabilidad muy reducida de corromper los datos, incluso en los casos en los que los errores no se produzcan en el propio gestor, sino en el sistema en el que está. 5. El conjunto de aplicaciones Apache-PHP-MySQL es uno de los más utilizados en Internet en servicios de foro (Barrapunto.com) y de buscadores de aplicaciones (Freshmeat.net). c.5. ... Debido a esta mayor aceptación en Internet, gran parte de los inconvenientes se exponen a continuación, han sido extraídos de comparativas con otras bases de datos: 1. Carece de soporte para transacciones, rollback's y subconsultas. 2. El hecho de que no maneje la integridad referencial, hace de este gestor una solución pobre para muchos campos de aplicación, sobre todo para aquellos programadores que provienen de otros gestores que sí que poseen esta característica.
  • 5. 3. No es viable para su uso con grandes bases de datos, a las que se acceda continuamente, ya que no implementa una buena escalabilidad. Muchas gracias por compartir tus conocimientos. La segunda parte es responsabilidad del usuario que tenga interes en saber mas del tema. Este documento fue extraido de la pagina de Daniel Pecos. Todos los derechos le pertenecen. http://www.danielpecos.com/docs/mysql_postgres/index.html