Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Diseño de la Base de Datos

Estimados compañeros del foro :

Después de la pregunta que hice ayer acerca de si se puede hacer un JOIN sobre dos tablas de bases de datos diferentes (recordatorio: utilizo InterBase 7.5) me surge la siguiente pregunta existencial :

Estoy programando una aplicación que va a trabajar en modo cliente/servidor, de gestión hotelera, en donde van a existir diferentes puntos de venta (hoteles), cada cual no debe de ver los datos del otro (ni le importan tampoco) (reservas), pero en donde van a existir una serie de ficheros maestros comunes para todos (Clientes, tarifas, agencias,etc.) y a los cuales todos van a acceder.

Inicialmente he pensado en utilizar una base de datos para los datos comunes, y bases de datos individuales para cada uno de los hoteles.

Ahora bien, si no puedo realizar las consultas posteriores con relativa comodidad (p.ej. mediante la utilización de JOIN), debería ser más adecuado tener una "mega"-base de datos que contenga no solo los ficheros maestros, sino también los datos individuales de cada hotel?

El número de registros que por ejemplo puede contener cada hotel puede llegar al millón o más. Eso significaría que si la base de datos fuera común podría tener un tamaño más que considerable.

Si trabajara con bases de datos individuales, qué comodidad tendría al ver por ejemplo habitaciones disponibles en todos los hoteles, o por regiones, o por tipo? Sería más fácil de nuevo teniendo todos los registros en la misma y única base de datos?

Quiero aclarar que procedo del Clipper y evidentemente era incocebible en el Clipper tener bases de datos de millones de registros, por lo cual trabajaba con diferentes estructuras de directorios y bases de datos particionadas e individuales.

Una vez más deseo agradeceros a todos la ayuda que prestais mediante este foro.

Un saludos a todos.
Responder Con Cita
  #2  
Antiguo 09-02-2005
Coco Coco is offline
Miembro
 
Registrado: jul 2004
Ubicación: Argentina
Posts: 83
Poder: 20
Coco Va por buen camino
Alguna vez tuve un problema similar al que cuentas y lo solucione agregando un campo mas en la base de datos central que indicaba para cada registro cual fue su ultima fecha de modificacion y opcionalmente quien la modifico.

Luego, cada cierto lapso de tiempo se replicaba la informacion a la base local de cada aplicacion, pero solo lo hacia con aquellos registros que habian sido modificados desde la ultima replicacion anterior.

En tu caso podrias guardar los datos de los clientes en la base centralizada, datos que por lo que pienso no se modifican continuamente, y por lo que la replicacion no demandaria mucho espacio. Luego replicas los registros modificados a tu base.

Espero que te sirva. 1Salu2.
__________________
Hice un trato con Dios... el no hace sistemas y yo hago milagros
Responder Con Cita
  #3  
Antiguo 09-02-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
No me gusta mucha esa solución, ya que evidentemente se incrementa el tráfico en la red de manera innecesaria para la replicación. Por eso precisamente me baso en un diseño cliente/servidor.

Pero una pregunta por ejemplo concreta : Quiero ver todas las habitaciones disponibles de todos los hoteles de España de una cadena. Si la cadena hotelera dispone de 50 hoteles en España, y tengo 50 bases de datos individuales (una para cada hotel), necesitaré hacer 50 consultas individualizadas para después uirlas en un solo resultado.

Si tuviera una única base de datos donde mediante un campo "NumHotel" diferenciara las reservas de cada hotel, con un único SQL podría fácilmente obtener el resultado de mi consulta, no?

La pregunta clave aquí es si esa "mega" base de datos que contenga toda la información de todos los hoteles es razonable, factible, mantenible, segura y eficiente ?

Insisto una vez más, en Clipper por supuesto que no lo era. No tenía ningún sentido (más bien era una irresponsabilidad por parte del programador) tener una base de datos (tabla en Delphi, claro ...) con varios Gigas de tamaño. La corrupción de índices podía ser frecuente y regenerar indices con esos tamaños se perfilaba como simplemente "imposible!".

De nuevo, saludos y gracias por vuestras ayudas.
Responder Con Cita
  #4  
Antiguo 09-02-2005
Coco Coco is offline
Miembro
 
Registrado: jul 2004
Ubicación: Argentina
Posts: 83
Poder: 20
Coco Va por buen camino
Desde ya que si utilizas una unica base central para todo el sistema y teniendo en cuenta la cantidad de registros que tienes que manejar el resultado puede no ser el mejor. O sea, creo que puede ser factible y segura, pero no creo que pueda ser eficiente y mantenible.

Ten en cuenta tambien que las consultas que ejecutes te pueden afectar el trafico de la red, y sobre todo el tiempo que puede demorarse en devolverte los resultados.

En cuanto a tener 50 bases diferentes creo que es la solucion menos factible, piensa que puede suceder si en el futuro quieres agregar un nuevo hotel, o lo que es mas probable, que la conexion con alguno de los hoteles se puede caer , ademas ni hablar del trafico en la red, no?

Saludos
__________________
Hice un trato con Dios... el no hace sistemas y yo hago milagros
Responder Con Cita
  #5  
Antiguo 09-02-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Pues si no es interesante ni tener 50 (o más), ni tampoco una única, entonces cual sería la opción más razonable ?

Respecto a añadir un nuevo hotel no sería problema alguno según tenía pensado. Si tengo una tabla centralizada con los códigos y nombres de los hoteles, en donde además se indica en qué lugar (directorio, servidor, direcciones IP, etcétera) están los datos particulares de ese hotel, pues bastaría que el administrador del sistema añada un registro a esa base de datos de hoteles y establezca la base de datos individual con sus tablas correspondientes en el hotel nuevo a instalar (bien en un servidor centralizado, regional, o incluso local)

Como la tabla de los hoteles que existen precisamente es única y centralizada, los demás hoteles estarán informados (si así se decide) de qué otros hoteles existen, y en caso de darle acceso a datos ajenos, donde se encuentran esos datos.

Toda esta cuestión se me plantea estando ya un poco avanzado en el diseño de la base de datos y sus tablas maestras, y precisamente ahora me encuentro con la duda de no saber cual es la mejor opción, y antes de continuar debería decidir.

Y también respecto a caerse la red, si cae uno de los hoteles, esto no afectará a los demás ya que los datos propios no están en la misma base de datos de los demás (independientemente del lugar donde decidamos "ubicar" esas bases de datos individuales).

Saludos

Última edición por gluglu fecha: 09-02-2005 a las 16:16:05.
Responder Con Cita
  #6  
Antiguo 09-02-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Nunca se puede generalizar, pero yo me inclino por una única Base de Datos. Depende en gran medida de lo que vayas a necesitar. Cuanta más compartición de datos exista entre las diferentes entidades (hoteles) más a cuenta te saldrá la solución de la Base de Datos única. Si hay poca cosa en común entre ellos tal vez la otra.

Piensa que no sólo es compartir determinadas tablas; En nuestro caso (que en diseño es similar) luego aparecen personas que deben tener acceso a diferentes Bases de Datos. Por decirte algo, hay un "Responsable de provincia" que tiene que tener acceso a todos los datos de los hoteles de su provincia. Luego hay una persona que debe acceder a datos estadísticos (de todas las entidades),... y así podría seguir y no acabaría.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 09-02-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Claro que sí !

No sólo van a existir usuarios que deben de acceder sólo a los datos propios, sino que siempre habrá usuarios "supervisores" (o como dices "responsables" de zona, etc) que tengan que tener acceso a todos los datos.

Incluso un recepcionista normal, en caso de que su propio hotel esté completo debe de poder ofertar al cliente que p.ej. llame por teléfono, la disponibilidad en otro hotel de la zona.

Esa es precisamente mi duda ! De nuevo digo que en Clipper era impensable tener todos esos datos en una única base de datos. Pero concretamente ahora cuando estoy avanzando en mi diseño, denoto que tener varias bases de datos separadas me produce más complicaciones que tenerlas juntas en una única.

Por supuesto, ahora mismo estoy utilizando InterBase que me parece bastante buena y potente, pero en cualquier momento se puede actualizar a bases de datos mucho más potentes (Oracle ...) que soporten mucha mayor cantidad de datos. Todo ello dependerá de la escala y tamaño del cliente (hotel(es)), y de la inversión económica que quieran hacer en los diferentes elementos.

A nivel de diseño me toca a mí decidir de momento como enfocar la estructura dentro del programa. Y estoy tendiendo a pensar que una única base de datos me ofrece mayores ventajas que no siendo única.

Saludos !
Responder Con Cita
  #8  
Antiguo 09-02-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por gluglu
...Pero concretamente ahora cuando estoy avanzando en mi diseño, denoto que tener varias bases de datos separadas me produce más complicaciones que tenerlas juntas en una única.

...pero en cualquier momento se puede actualizar a bases de datos mucho más potentes (Oracle ...) que soporten mucha mayor cantidad de datos...

...Y estoy tendiendo a pensar que una única base de datos me ofrece mayores ventajas que no siendo única...
Es justo lo que pienso yo y cómo lo hemos enfocado nosotros; En nuestro caso en el punto 2 ya hemos "saltado" a SQL Server.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:33:35.


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
Copyright 1996-2007 Club Delphi