Cambio en el sistema de datos

02/20/2011

He tomado la decisión de volver a MySQL como sistema para la base de datos del Servidor. Esto es debido a que no había tenido en cuenta la concurrencia en SQLite, que hasta ahora era el sistema para manejar los datos. La concurrencia me estaba dando problemas a la hora de escribir en la base de datos porque, aunque sólo escribía un proceso al mismo tiempo en ella, dicho tiempo de escritura bloqueaba cualquier intento de acceso de lectura (y además, por bastante tiempo) de otro proceso, lo que cual era inaceptable ya que la base de datos tiene que estar disponible para su lectura a través del servicio web del Servidor. El cambio de sistema está ya implementado.

El Servidor no sólo podrá usar MySQL, en el futuro podrá usar más tipos de servidores de bases de datos, como PostgreSQL u Oracle. Esto es debido a que estoy usando una biblioteca “genérica” para acceder a sistemas de gestión de bases de datos (SQLAlchemy). El Servidor, a priori, no dependerá de ningún sistema en concreto al instalarse pero después, el usuario configurará el Servidor por medio de una órden en una terminal donde especificará, entre otras cosas, los detalles de la base de datos donde grabará sus datos (tipo de servidor, dirección del servidor, nombre de la base de datos, nombre de usuario y contraseña de usuario). Después de la configuración, por medio de otra órden en la terminal, el usuario grabará las tablas y los datos iniciales en la base de datos especificada anteriormente. Así, el Servidor ya estaría listo para su uso.

Esto permitirá usar bastantes tipos de servidores de bases de datos, aunque de momento, sólo estará disponible MySQL, ya que, aunque la biblioteca SQLAlchemy permite acceder a cualquiera, el código SQL empleado para crear tablas y restricciones difiere un poco según que servidor se esté usando y sólo he creado el código SQL inicial para MySQL. Supongo que en la segunda versión del Servidor añadiré más opciones de servidores.

Podría parecer que he perdido mucho tiempo usando SQLite, pero no lo siento así. El tiempo que he empleado con SQLite me ha hecho descubrirlo y aprenderlo suficientemente bien. Ahora sé que puedo usarlo para otros proyectos y conozco el ámbito idóneo para emplearlo: SQLite es ideal para 1 sólo cliente/usuario de una base de datos, como un programa que necesite guardar datos pero sólo él tenga que acceder a ellos.

Al final, me está llevando más tiempo de lo que pensaba arreglar los problemas del Servidor, que ha necesitado cambios drásticos como éste, pero merece la pena esperar un poco más con tal de que el Servidor sea más robusto y esté más probado.

Para terminar, quiero agradecer a mis compañeros participantes del concurso su ayuda con mis dudas sobre la concurrencia de SQLite por medio de la lista de distribución de correo del concurso. Saben muchísimo y, después de haber barajado sus opciones (sobre si mantener SQLite como sistema o cambiar a MySQL), he tomado la decisión de cambiar a MySQL y esta decisión la he tomado más rápidamente gracias a su ayuda (por mí mismo, habría tardado mucho tiempo en darme cuenta de que no me valía SQLite).

Anuncios

La base de datos será de tipo SQLite

01/04/2011

He estado investigando un poco acerca de SQLite y al final he decidido sustituir MySQL por SQLite como sistema de gestión de la base de datos del Servidor de Predesys. Los motivos que me han llevado a tomar esta decisión es la sencillez de instalación de la base de datos, ya que ésta se almacenará en un único archivo sin la necesidad de tener un servidor de datos, ya que SQLite es tan sólo una biblioteca (no un servidor) para manejar bases de datos alojadas en archivos, al igual que hace Microsoft Access.