Bases de Datos Relacionales: SQLite, MySQL y PostgreSQL

Sobre los SGBD, cabe destacar, entre los que son libres, estos tres motores, de los cuales, dos de ellos son sistemas servidores y gestores de base de datos relacionales (MySQL y PostgreSQL) y otro es tan solo un motor embebido para aplicaciones monousuario o de muy baja carga (SQLite).

Los sistemas libres han hecho gala del uso de LAMP (Linux, Apache, MySQL y PHP) para el desarrollo rápido de webs. Estos sistemas son fáciles, rápidos y cómodos para usuarios nóveles, dan mucho control sobre el desarrollo y permiten, gracias a la cantidad de proyectos ya desarrollados, tener a disposición Foros, Bitácoras, CMS, ERP, CRM y muchos más tipos de webs.

La elección de estos elementos es algo que se suele dejar al administrador de la máquina. No solo hay que instalarlos, eso tan solo se hará una vez, sino que hay que mantenerlos, y eso se debe de hacer de una forma reiterada. Por lo que la elección del sistema operativo: Windows, Linux, BSD, Solaris…; es algo que debe de decidir quien lo vaya a administrar, al igual que el servidor propio web, ya que si se usa solo para servir páginas HTML y PHP, puede emplearse cualquier servidor web: Apache, Cherokee, Lighttpd, Caudium, Yaws, etc.

El empleo del lenguaje de programación viene determinado por lo que se vaya a emplear. Como es lógico, sino sé programar y quiero usar WordPress, es normal que instale PHP, ya que sino es completamente imposible. Pero si sé programar en Java, C#, Ruby, Python, Perl, o cualquier lenguaje de scripting actual, es muy posible hacerlo, con los módulos correspondientes o sistemas de CGI.

Entonces, después de esto, nos centramos en la base de datos. Elegir un SGBD es algo que no se debe de considerar trivial, puesto que de su elección derivarán los problemas o virtudes que podamos tener a la hora de administrar el sistema, hacer copias de seguridad, etc.

SQLite

Por ejemplo, para una web a la que solo tenemos acceso para escribir artículos nosotros, los comentarios son moderados y no hay mucho tráfico, se puede configurar, sin ningún tipo de problemas, para usar SQLite. Usar este sistema nos asegura mayor facilidad a la hora de realizar copias de seguridad y nos quita un punto único de fallo, puesto que sino hay conexión con la base de datos, no hay posibilidad de que falle.

Lo mejor de todo es la cantidad de integración de SQL que tiene el motor, ya que permite una integridad referencial bastante buena, procedimientos almacenados, triggers y otras bondades muy deseables en un SGBD.

Lo peor es que si el tráfico de nuestro sitio web sube, y/o la información a guardar comienza a subir demasiado, como todo se guarda en un único fichero, el sistema podría verse ralentizado.

MySQL

Para sistemas web de alto número de visitas, con gran cantidad de datos en modificación, inserción y consulta, se desarrollo este SGBD: MySQL.

MySQL destaca de la mayoría de SGBD en su velocidad cuando se emplean las tablas MyISAM, puesto que, para su aceleración, hace omisión de uso de muchas características típicas en SGBD, como es el caso de la integridad referencial, la cual solo está disponible si se usa el engine de InnoDB.

Con una máquina de un solo procesador, tablas MyISAM y las acciones básicas de consulta, inserción, borrado y actualización, MySQL ha demostrado que es de los SGBD más rápidos del mercado, incluidos los SGBD privativos. Por lo que para el uso de webs de estas características, principalmente bitácoras, algunos tipos de CMS, foros y similares, este SGBD está muy indicado.

El punto débil, no obstante, es precisamente su libertad, la falta de integridad referencial controlada por el SGBD y su escalabilidad. MySQL dispone de un engine específico para montar clústers, pero su uso es aún un poco básico y con muchos flecos que remendar.

Otro punto positivo de MySQL es su gran cantidad de documentación, tanto en inglés como en castellano y otros idiomas que está en su propia página web.

PostgreSQL

Para altas cargas y sistemas de gran actividad concerniente a la base de datos, ya sea por consultas complejas, integridad referencial o gran cantidad de consultas, está mejor indicado PostgreSQL.

Este SGBD tiene una gran cantidad de mejoras con respecto a la concurrencia, escalabilidad y alta carga, que da un nivel de confiabilidad mucho mayor que los dos sistemas mencionados anteriormente. En principio, el hecho de que una consulta de gran tamaño no bloquee una tabla, sino que se vayan acumulando operaciones de lectura y escritura como si commits de un sistema de control de versiones se tratara, da un gran nivel de concurrencia, al mismo tiempo que permite procesar consultas mucho más eficientemente y rápidamente.

Por otro lado, la gran cantidad de proyectos que giran entorno al sistema, han hecho que dispongan de herramientas que le permitan estar configurado en forma de clúster y reaccione de la misma forma, pero con mucha más capacidad, haciendo su rendimiento creciente de forma logarítmica, ha demostrado que, en varias máquinas con varios procesadores, reacciona de una forma más eficiente y rápida incluso que MySQL.

El punto negativo de este SGBD es que no está tan facilitada su instalación y configuración, ya que se basa en unos principios que hay que conocer previamente. Lo bueno, a este respecto, es que dispone de gran cantidad de documentación, incluso en castellano.

Conclusiones

Para sistemas pequeños, de poca carga, sin duda, yo empleo siempre que puedo SQLite. En caso de desbordar, extraer una copia y ponerla en un sistema como MySQL o PostgreSQL no es nada complicado.

Para sistemas CMS, Bitácoras, Foros y sitios simples en Internet que tengan previsión de carga, siempre es mejor montar un SGBD y, si se quiere hacer simple, lo mejor es usar MySQL.

Cuando ya intervienen factores como que la base de datos tiene muchas tablas, está muy normalizada y tiene riesgos de que se pierda su integridad referencial, así como es el caso de la programación de un CRM, ERP o programa orientado a la empresa o red social, en ese caso es mejor emplear PostgreSQL, ya que dará mayor seguridad, al mismo tiempo que mayores prestaciones en caso de necesitar escalar.