MariaDb Portable

A estas alturas de la película, creo que todos conocemos, o por lo menos hemos oído hablar de MariaDB, la base de datos “clon” de Mysql y que en los últimos meses está demostrando su poder frente a un MySql que desde que fue adquirido por Oracle no ha levantado cabeza.

Pero hay dos cosas que seguramente muchos de vosotros no sabréis de este gestor de bases de datos:
La primera de ellas es que MariaDb debe su nombre a María Widenius, la hija menor Michael Widenius, desarrollador tanto de MySql como de MariaDB
La segunda es que MariaDb, a pesar de tratarse de una base de datos cliente-servidor, tiene un proceso de instalación y ejecución realmente sencillo. Tan sencillo que nos permite arrancarlo desde nuestros propios programas, por ejemplo, una memoria usb y finalizarlo cuando salimos de la aplicación. En otras palabras: Podemos ejecutar MariaDB de forma “pseudoportable” y sin necesidad de instalar nada que el ordenador en el que lo estamos ejecutando.

Esto convierte a MariaDB en una alternativa a tener muy en cuenta frente a otros sistemas sql ligeros, como Sqlite, ya que a pesar de su comportamiento portable, MariaDB aceptará conexiones remotas de otros ordenadores de la red de forma tan rápida y fiable como si estuviera realmente instalada en el equipo. Además, este sistema nos permitirá desarrollar programas portables que posteriormente podremos “elevar” a programas cliente-servidor sin necesidad de hacer absolutamente nada. Otra opción muy interesante de este plantemiento portable de MariaDB es la posibilidad que nos ofrece de crear “versiones demo” de programas basados en arquitectura Mysql sin necesidad de tener que instalar previamente un servidor. Así, podemos “colgar” nuestra aplicación en Internet para el cliente se descargue la demo, y si decide que le interesa, proceder entonces (y solo entonces) a instalar el servidor en sus ordenadores, etc, etc…

Bueno, si te he convencido, sigue leyendo y si no, vuelve a leerlo todo desde el principio, porque no has entendido de qué va este post.

Vamos al lío:

Primer paso: Aligerar la carpeta con los ejecutables de MariaDB

Para poder ejecutar MaríaDB de forma portable, lo primero que tenemos que conseguir es “deshacernos” de un montón de ficheros totalmente prescindibles que vienen con el paquete de MariaDB y dejar exclusivamente los imprescindibles.
En el fichero zip que adjunto al final del post tenéis una versión “limpia y reducida” de MariaDB en la carpeta MDB y que podéis usar en vuestras aplicaciones.
Básicamente he dejado 3 subdirectorios:

Data: En esta carpeta es donde MariaDB guarda los datos, tablas, estructuras, etc…
Bin: En esta he dejado 4 ficheros ejecutables:

  • mysql: El administrador de MariaDB, necesario para poder realizar ciertas operaciones básicas
  • mysqladmin: Necesario para poder, por ejemplo, terminar la ejecución de MariaDB
  • mysqldump: Necesario para poder realizar copias de seguridad
  • mysqld: El “alma” de MariaDB, bueno, realmente el “Demonio” que arranca el servidor. Para evitar confusiones en caso de que el usuario ya tenga Mysql o MariaDB instalados, lo he renombrado como mysqlPt.exe (de PorTable)

Share: Donde se guarda información adicional, como por ejemplo los mensajes del sistema. para aligerar más la instalación sólo he dejado el fichero errmsg.sys, correspondiente a los mensajes en inglés.

Se podrían quitar más cosas. Así, puestos a “aligerar” peso, si no queremos contemplar las copias de seguridad, podemos prescindir de mysqldump, aunque no os lo recomiendo (total son 3.4 Mb)
Seguramente se podría eliminar algún fichero más de la carpeta Data\mysql. Si localizáis algún fichero “prescindible”, por favór, indicármelo

Segundo Paso: Controlar MariaDB desde nuestros programas

Para facilitar el inicio y finalización del servidor MariaDB desde nuestros programas, lo que he hecho ha sido diseñar una clase específica para gestionar estos procesos, y que en un alarde de imaginación he dado en llamar TMariaDbPortable

Como en el caso anterior, tenéis el código fuente en el zip que hay al final de este artículo.

Vamos a ver un poco más detenidamente cómo funciona

Propiedades de la clase:

Métodos

Tercer paso: Incoporar TMariaDbPortable a nuestros programas.

Os dejo también un pequeño ejemplo de cómo utilizar todo lo visto hasta ahora en nuestros programas

El primer paso lo daremos en el método FormInitializate de nuestro formulario

En él lo que hacemos es crear un objeto correspondiente a la clase TMariaDbPortable. En este caso he utilizado un AppData, de forma que tengamos el objeto disponible a lo largo de toda la aplicación.
También establezco AppData:MdbPortable:oDataSource, para poder tenerlo accesible en otros formularios de la aplicación.

A continuación, vamos a ir viendo qué hace cada uno de los botones del ejemplo

Botón Conectar:

Básicamente llamamos al método MdbPortable:Cargar() que se encarga de ejecutar MariaDb en caso de que no se encuentre ya instalada en memoria
A continuación, conectamos con la base de datos y abrimos las tablas
Como detalle adicional, cambio la cabecera de la ventana para que me indique la versión de MariaDB que estoy utilizando

Botón: Desconectar

En este caso lo que hacemos es cerrar el demonio de MariaDB, descargándolo de la memoria del ordenador y dejando todo listo para desconectar la memoria usb en el caso de haberlo ejecutado desde este tipo de dispositivos.

Es importante tener en cuenta que el método Descargar() solo cerrará el demonio MariaDB en caso de que haya sido la propia aplicación la que lo arrancara. Esto es, si MariaDb ya esta en ejecución cuando hemos iniciado el programa, no lo descarga, dado que asume que tenemos otra aplicación que lo está ejecutando y en caso de cerrarlo, podría generar errores en la otra aplicación.

Botón: Kill

Este es mucho más radical que el anterior, “mata” el proceso MysqldPt.exe sí o sí, y le da igual si hay otra aplicación que lo está usando. Por lo tanto, sobra decir que hay que usarlo con mucho cuidado.

Botón: Consultar estado de conexión

Simplemente nos muestra información del estado de MariaDB, si está ya cargada, si hemos sido nosotros los que la hemos cargado, etc…

Botón: Generar error cerrando Mariadb

Lo que hacemos aquí es indicarle al sistema que queremos que trate de cerrar MariaDb en caso de que se genere un error de la aplicación, y a continuación forzar un error.
Es interesante tenerlo en cuenta, pues de lo contrario, puede darse el caso de que el programa “casque” y el usuario quite la memoria usb sin volver a entrar al programa, con lo cual el servicio de MariaDb se quedaría activo en una unidad de disco que ya no existe y podría dar problemas de consistencia en los datos.

Ojo: Para que funcione, es necesario modificar la función ShowError de Xailer e inyectarle

Como podéis ver, tengo algunas dudas en este punto. Si alguno tiene las respuestas, por favor, indicádmelas en la sección de comentarios

Botón: Generar error sin cerrar Mariadb

Si nos fijamos, el método es el mismo que en caso anterior (Button5Click), pero ahora como oSender es ::oButton6 y no ::oButton5, lDescargarOnError tomará el valor .f., con lo cual TMariaDbPortable dejará el MariaDb instalada en memoria.

Cuándo usar uno u otro caso, depende ya de vosotros.

Bueno, hasta aquí el artículo dedicado a MariaDB portable. Como veréis, se trata de una primera versión, totalmente abierta a críticas y comentarios.
Si alguno detecta algún fallo o hace alguna mejora, por favor, hacédmelas llegar para incorporarlas al fichero

Be the first to comment on "MariaDb Portable"

Deja un comentario.

Tu dirección de correo no será publicada.


*