Precauciones al usar Firebird Embedded

4 comentarios

Como seguramente ya sabes, puedes usar Firebird con 4 arquitecturas diferentes:

  • Classic
  • SuperClassic
  • SuperServer
  • Embedded

Las tres primeras normalmente tienen al Servidor en una computadora y al Cliente en cada una de las computadoras que necesitan acceder a la/s base/s de dato/s. Una de esas tres primeras arquitecturas debemos usar cuando queremos que varios usuarios estén conectados al mismo tiempo a la misma Base de Datos, este es el caso más frecuente cuando usamos Firebird. Colocamos a las bases de datos en una carpeta no compartida que se encuentra en la misma computadora donde se encuentra el Servidor y éste es quien se encarga de acceder a esas bases de datos cuando los Clientes se lo soliciten. Eso está muy bien y funciona perfectamente.

La arquitectura Embedded en cambio la usaríamos cuando siempre será una sola persona quien se conectará a la Base de Datos, como sería en el caso de una aplicación monousuario.

¿Y qué ocurrirá si ponemos a la Base de Datos en una carpeta compartida y permitimos que accedan a ella desde varias computadoras de la red usando Embedded?

Que ocurrirá una catástrofe y se destrozará y volverá inservible a la Base de Datos.

¿Por qué eso?

 Porque Embedded puede manejar varias conexiones, pero con la condición de que todas esas conexiones correspondan a un mismo proceso. Siendo así, él administrará los cambios a las páginas correctamente, evitando que una conexión sobre-escriba los cambios hechos por otra conexión.

Sin embargo, si desde varias computadoras se está accediendo mediante Embedded a una Base de Datos que se encuentra en una carpeta compartida se terminará con esa Base de Datos destruida.

 Eso es debido a que cada Embedded cree que tiene acceso exclusivo a la Base de Datos y realiza en ella los cambios que necesita, pero otros Embedded pueden estar realizando otros cambios en las mismas páginas.

Ejemplo:

Un proceso Embedded necesita una nueva página para guardar en ella los datos de la tabla PRODUCTOS, esa nueva página tiene el número 5.000

Otro proceso Embedded necesita una nueva página para guardar en ella los índices de la tabla VENTAS, esa nueva página también tiene el número 5.000

No olvides que cada proceso cree que tiene acceso exclusivo a la Base de Datos y por lo tanto desconoce lo que otros procesos le están haciendo a esa Base de Datos. Un Embedded no tiene forma de saber que otro Embedded está accediendo a la misma Base de Datos.

En algún momento el problema se vuelve catastrófico, cuando una página TIP se convierte en una página de cualquier otra cosa y se perdió el acceso a todos los datos.

Desastre total.

Conclusión:

Si más de un usuario accederá a una Base de Datos de Firebird al mismo tiempo, entonces debemos usar una arquitectura Classic, SuperClassic, o SuperServer para ello.

Podemos usar Embedded cuando estamos 100% seguros de que solamente un usuario se conectará y jamás, por ningún motivo, se conectará más de un usuario.

Si ponemos a una Base de Datos en una carpeta compartida de la red y permitimos que accedan a ella usando Embedded es seguro que en algún momento esa Base de Datos se volverá totalmente inservible.

Artículos relacionados:

Entendiendo a las páginas de la Base de Datos

El índice del blog Firebird21

El foro del blog Firebird21

 

 

Anuncios

¿Se puede usar Dropbox con bases de datos?

9 comentarios

Probablemente conozcas un programa llamado Dropbox el cual te permite sincronizar los archivos que se encuentran en una computadora con los archivos que se encuentran en otras computadoras.

¿Cómo funciona Dropbox?

  1. Instalas el programa
  2. Determinas una carpeta que será compartida
  3. Copias o creas archivos en esa carpeta compartida
  4. Los archivos de tu carpeta compartida el Dropbox los copia en tu propia carpeta que se encuentra en la nube (cloud)
  5. Todas las computadoras que tengan acceso a tu carpeta compartida en la nube podrán acceder a esos archivos
  6. Y tu podrás acceder a los archivos que esas otras computadoras coloquen en tu carpeta compartida en la nube

Muy útil, muy fácil de usar, muy práctico.

Si por ejemplo deseas enviar un archivo grande no necesitas enviarlo por e-mail, lo colocas en tu carpeta compartida del Dropbox, él lo coloca en la carpeta de la nube y minutos después ya estará disponible para todas las demás computadoras que tengan acceso a dicha carpeta. Así podrías compartir fotografías, vídeos, planillas Excel, documentos Word, etc.

¿Pero se puede usar con bases de datos?

No, no es recomendable.

El motivo es que Dropbox cuando detecta un cambio en un archivo lo copia completo, no copia solamente la parte que cambió (porque no sabe cual parte es esa, recuerda que en la carpeta compartida se puede colocar cualquier tipo de archivo, de lo que sea)

Por lo tanto, cada vez que un usuario inserte/actualice/borre algo en la Base de Datos el Dropbox intentará copiarla a la carpeta compartida en la nube. Eso, en primer lugar consumirá todo tu ancho de banda (porque las bases de datos tipicamente ocupan muchos megabytes de espacio en el disco duro) y luego con toda seguridad corromperá a tu Base de Datos si varios usuarios están modificándola.

La única excepción es cuando una sola persona usará la Base de Datos, en este caso no debería haber problemas. Pero una Base de Datos que solamente sea accedida por una persona no es muy útil en la gran mayoría de los casos.

¿Y para qué podría usar Dropbox?

Para enviar los backups o para tenerlos en la nube, para eso sí que sería útil. Haces un backup con algunos de los métodos establecidos para ello y luego copias ese backup en tu carpeta del Dropbox. Entonces, si algo malo le llegara a pasar a tu Base de Datos tendrás de donde recuperarla.

https://firebird21.wordpress.com/2013/07/03/los-metodos-para-hacer-backup/

Recuerda: no hay problema en poner en la carpeta compartida del Dropbox los backups de tus bases de datos. Lo que no deberías hacer es poner las bases de datos allí y permitirles a los usuarios que se conecten a las bases de datos que están en la carpeta compartida, eso jamás hagas. O las corromperás gravemente.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

¿En cuál carpeta tener las bases de datos?

5 comentarios

Ya instalaste el Servidor del Firebird y ahora quieres crear bases de datos (o copiar las que ya tienes) en alguna carpeta de esa computadora. Así que podrías estar preguntándote: ¿dónde? ¿en cuál carpeta?

Las carpetas donde no se recomienda que estén tus bases de datos son las siguientes:

%SYSTEMROOT%
%PROGRAMFILES%
%PROGRAMFILES(X86)%
%PROGRAMDATA%
%USERPROFILE%

Eso significa que no deben estar en C:\WINDOWS ni en C:\WINNT ni en algo similar. Tampoco en “Archivos de Programa” y tampoco dentro de algún usuario como “Walter”, “Fátima”, “Yanine”, etc.

Además la carpeta donde estarán tus bases de datos no debe estar compartida, jamás, por ningún motivo.

Ejemplos de carpetas correctas:

D:\DATABASES\

D:\MISDATOS\

E:\DB\

D:\ARCHIVOS\

E:\MISISTEMA\MISDATOS\

Recuerda que esas carpetas no deben estar compartidas o estarás comprometiendo la seguridad de tus bases de datos.

Si tienes dos discos duros entonces lo recomendable es que el Sistema Operativo se encuentre en un disco duro y tus bases de datos en otro disco duro, se consigue un mejor rendimiento de esa manera.

Y si tienes tres discos duros entonces lo ideal es que los archivos temporales se encuentren en el tercer disco duro (eso lo estableces cambiando la entrada “TempDirectories” en el archivo FIREBIRD.CONF) porque eso mejora aún más el rendimiento.

 Artículo relacionado:

El índice del blog Firebird21