Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Dónde colocar la Base de Datos? (https://www.clubdelphi.com/foros/showthread.php?t=83131)

gluglu 15-05-2013 11:29:04

¿Dónde colocar la Base de Datos?
 
Hola a todos !

Puede ser que la pregunta resulte muy básica, pero realmente no se me había planteado esta cuestión hasta ahora.

Después de trabajar con mi aplicación durante años en clientes, por fin nos vamos a poner a realizar el instalador ! Hasta ahora la instalación siempre se hacía manual.

Utilizo Firebird (actualmente 2.5) y la aplicación es local y se instala en cada uno de los ordenadores que va a ejecutar la aplicación.

Ahora me surge donde y cómo grabar la base de datos. Hasta ahora siempre la había colocado en una carpeta de una unidad de disco duro (C:, D: o la que fuera), y en una carpeta Unidad:\MiAplicación\Data en el servidor que ejecutase Firebird. Compartía dicha carpeta y listo, desde los demás ordenadores (junto con un fichero INI) se localizaba y se accedía a dicha carpeta.

De la misma manera, en cada puesto de trabajo diferente (que no fuera el 'servidor' donde se ejecuta Firebird), creaba una carpeta Unidad:\MiAplicación y ahí grababa el EXE principal junto con todos los archivos adicionales (INI, DLL's, etc), y en el INI tenía puesta la ruta al nombre de servidor y carpeta correspondiente.

Ahora, (para hacerlo bien !!), quiero colocar la aplicación en \Archivos de Programas y no sé cuál es la mejor ubicación para los datos.

En principio, la base de datos puede crecer bastante (llegando a superar el Giga o más) y por la tanto tendría sentido que el usuario decidiera no colocarla necesariamente en C:

Si coloco la BBDD en %ProgramData% debería ser siempre la unidad principal donde está instalado Windows, lo cual, como indica antes, pudiera ser 'inconveniente'.

Por otro lado, si quiero en algún momento obtener alguna ruta de dónde se encuentra la base de datos, si fuera en una carpeta o localización diferente, si esa carpeta o localización no estuviera compartida, no podría acceder a dicha información desde otro ordenador. Por otro lado, tengo muchos clientes que tienen los ordenadores con códigos de acceso de usuarios y no siempre podré obtener la información que pido (no estoy hablando de acceder al propio contenido de la base de datos a través de Firebird) si no conociera ciertas credenciales de usuario.

Por ello es lo que os pido consejo de cuál sería la mejor ubicación para la base de datos y no tener que colocarla en una carpeta 'tan' visible o accesible como Unidad:\MiAplicación\Data

Gracias por adelantado y saludos.

Casimiro Notevi 15-05-2013 11:36:01

Creo que no te sirve mi caso, pero la BD siempre va en un servidor (linux) dedicado. Y no tiene nada compartido con nadie, sólo abierto el puerto 3050.

newtron 15-05-2013 11:59:50

Cita:

Empezado por Casimiro Notevi (Mensaje 460470)
Creo que no te sirve mi caso, pero la BD siempre va en un servidor (linux) dedicado. Y no tiene nada compartido con nadie, sólo abierto el puerto 3050.

¿Y por qué no?, no puede hacer exactamente lo mismo bajo un servidor de windows?.

Yo no uso firebird pero imagino que funcionará igual bajo windows que bajo linux, particularmente pienso que el instalador debería de pedir la ruta de la base de datos proponiendo una por defecto y los clientes no necesitan saber donde está la base de datos, ¿no?. Aunque creo que eso de tener un ejecutable en cada cliente es algo engorroso sobre todo para el tema de mantenimiento y actualizaciones.

¿No puedes compartir una carpeta donde se instala el ejecutable desde el que "tiran" los clientes y la base de datos ubicarla en una carpeta no compartida?.

Saludos

gluglu 15-05-2013 12:31:26

Precisamente la siguiente problemática que tenemos es el tema de actualizaciones, pero esa cuestión no es para plantearla en este hilo.

Ya estamos haciendo el proceso de actualizaciones y precisamente ahí es cuando nos hemos topado también con la ubicación. Pero el problema inicial ha de ser resuelto por supuesto en el programa de instalación.

Añado : Además precisamente si el EXE estuviera sólo en el servidor, tendríamos de nuevo problemas para la compartición de carpetas, sobre todo si queremos instalar la aplicación en %archivos de programas%

Casimiro Notevi 15-05-2013 12:57:06

Cita:

Empezado por newtron (Mensaje 460471)
¿Y por qué no?, no puede hacer exactamente lo mismo bajo un servidor de windows?.

Es que entiendo que quiere hacer un instalador automático, y en ese caso ni con linux ni con windows podrá instalar la BD en un servidor (ordenador distinto donde está haciendo la instalación del programa) en todos los casos, dependería mucho de cada caso particular, permisos, lo que esté compartido, etc.

newtron 15-05-2013 17:35:24

Cita:

Empezado por Casimiro Notevi (Mensaje 460476)
Es que entiendo que quiere hacer un instalador automático, y en ese caso ni con linux ni con windows podrá instalar la BD en un servidor (ordenador distinto donde está haciendo la instalación del programa) en todos los casos, dependería mucho de cada caso particular, permisos, lo que esté compartido, etc.

Ok, pero ¿es tontería que la instalación se haga desde el servidor?

Edito: Es que soltar tonterías es una especialidad mía.

gluglu 15-05-2013 17:59:10

El programa de instalación tendrá la opción de elegir si estoy instalando el servidor, o estoy instalando un cliente.

Pero insisto, esta es una cuestión diferente !!

Lo que me gustaría saber cuál es la mejor ubicación para la BBDD para evitar futuros 'inconvenientes' sobre todo por estos dos diferentes tipos de acceso, servidor y cliente.

Saludos

Casimiro Notevi 15-05-2013 18:16:48

Cita:

Empezado por newtron (Mensaje 460490)
Ok, pero ¿es tontería que la instalación se haga desde el servidor?

No, claro, de hecho en los últimos sitios que trabajé teníamos un instalador que daba elegir entre cliente y servidor.

Cita:

Empezado por gluglu (Mensaje 460495)
Lo que me gustaría saber cuál es la mejor ubicación para la BBDD para evitar futuros 'inconvenientes' sobre todo por estos dos diferentes tipos de acceso, servidor y cliente.

En cualquier directorio "no protegido" ni del sistema.
Algo así como:
/home/un-usuario-firebird/datos/labasedatos.fdb

Y en cliente puede estar en un subdirectorio de tu programa, suponiendo que no necesite algún permiso o privilegio especial para acceder al mismo.

olbeup 16-05-2013 09:35:35

Yo trabajo con SQL Server y la base de datos esta en: C:\<TuAplicación>\Databases del servidor.

Es independiente si es un servidor o cliente, sólo tienes que decir donde se ubica la base de datos mediante la IP y el puerto del equipo.

Un saludo.

mamcx 16-05-2013 16:23:47

Cada OS tiene sus "buenas practicas" de como se hacen las cosas, incluyendo como y donde se instalan los programas. Si se siguen, no solo es posible automatizar al 100% las cosas sin fallos, sino que se evitan dolores de cabezas.

En el caso de windows:

http://msdn.microsoft.com/en-us/libr.../gg487403.aspx

Y luego estan las practicas recomendadas para cada BD. Que normalmente cubren estas ideas universales:

1- Un engine de BD preferiblemente deberia estar en un servidor dedicado, "cerrado" en seguridad (osea, solo exponer el puerto pa las comunicaciones, en una zona protegida por firewall y todo eso, no expuesto a internet ni en una subred expuesta a internet) que solo escucha de una(s) IPs y puerto(s) especificos, que solo responden a un usuario/apps especificos.
2- Deberia tener su *propio* disco(s), solo para esa BD
3- Esos disco, no estan compartidos con nadie mas. Repito lo anterior. Osea, no se instala en donde este el OS. (Pero si no hay mas discos, entonces seguir las recomendaciones para ese OS en particular de donde van las cosas, a menos que haya una razon para desvariar)

En el caso de lo que comentas, lo ideal es que la BD este por fuera de la unidad de sistema. Porque el OS se deberia poder reinstalar tan rapido como sea posible, sin afectar los datos. De hecho, es muy popular -en los servicios de hosting- usar un NAS o similar como disco de las BD, para poder desconectar el disco, moverlo a otro servidor y seguir andando. Basicamente, los datos son mas importantes que los programas.

Y con lo que sea visible y todo eso? La carpeta donde este la BD deberia estar protegida con su propio usuario y todas las medidas de seguridad del caso. "Esconderla" en un directorio "raro" es idiota (http://en.wikipedia.org/wiki/Security_through_obscurity). Lo que no me suena es compartir por RED la carpeta de la BD. Eso es casi lo peor a nivel de seguridad.

Ademas, no es necesario saber las credenciales de cada usuario/equipo. Lo correcto es que crees un usuario solo para esa BD (que es lo normal con sql server, postgress) o uses un usuario de bajos privilegios (lo mas comun en sql server es usar "Network Service Account" que es un usuario que esta en todos los windows, de bajo perfil y privilegios) junto con autenticacion integrada de windows (http://msdn.microsoft.com/en-us/library/ff647396.aspx).


Osea, es todo saber realmente como se manejan las practicas correctas de cada OS, en vez de inventarselas. Con windows tambien es posible tener un OS estable/seguro, el problema es que todos se pasan por la galleta los pasos correctos.

nlsgarcia 16-05-2013 19:04:57

mamcx,

Cita:

Empezado por mamcx
...Con windows tambien es posible tener un OS estable/seguro...

^\||/ :)

Nelson.

Casimiro Notevi 16-05-2013 20:48:44

Cita:

Empezado por mamcx (Mensaje 460548)
Con windows tambien es posible tener un OS estable/seguro

Cita:

Bill Gates muere en accidente de coche y se encuentra con Dios en el purgatorio:

Dios: Bien Bill, bien, realmente estoy confuso con tu caso, no estoy seguro de si debo enviarte al cielo o al infierno. Después de todo, tú has ayudado enormemente a la sociedad colocando un ordenador en casi cada hogar del mundo y encima creaste Windows 95. Voy a hacer algo que nunca antes se ha hecho. En tu caso te dejaré decidir dónde quieres ir.
Bill: Gracias Señor, ¿Cual es la diferencia entre los dos sitios?
Dios: Te mostraré ambos lugares y ello te ayudará a tomar una decisión.
Bill: Ok, entonces muéstrame primero el infierno.

Ya allí, era una fantástica playa de arenas blancas, aguas azules y cristalinas con miles de muchachas corriendo, jugando en el agua, riendo y divirtiéndose, el sol brillante y una temperatura perfecta.
Bill (gratamente impresionado): ¡This is great!, si esto es el infierno, realmente quiero ver el cielo!

El cielo era un lugar por encima de las nubes, con ángeles tocando arpas y cantando dulces canciones, realmente bello pero no tan excitante como el infierno.

Bill se tomo un momento para reflexionar su decisión y dijo: Creo que prefiero el infierno.
Dios: Bien, sea como deseas, (y le mandó al infierno).
Dos semanas mas tarde, Dios decidió hacer una visita al infierno a ver como le iba al millonario, cuando llego, encontró a Bill encadenado a un muro, lamido por el fuego en una oscura cueva, siendo torturado y quemado por los demonios: ¿Cómo va todo Bill?, preguntó.
Bill (con una voz llena de angustia y desaprobación): Esto es horrible, no es lo que yo esperaba. ¿Dónde está aquella hermosa playa, las bellas chicas jugando, el agua cristalina?.

Dios: ¡Ahhh!, Aquello... ¡era el salvapantallas!
:D:D:D
........

newtron 17-05-2013 10:06:03

jejejejejeje... ^\||/


La franja horaria es GMT +2. Ahora son las 09:16:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi