PDA

Ver la Versión Completa : Duda sobre InterBase


Luzma
05-04-2006, 21:56:50
Estoy iniciando un programa y decidí utilizar InterBase y no sé qué es mejor:

Opción 1 - En .gdb pongo todas las tablas que el programa necesita.

Opción 2 - Creo distintos .gdb con tablas relacionadas( es decir O2.gdb con datos de clientes, compras | O2_2.gdb con con información de productos, marcas y todo eso | 02_3.gdb ...)

No sé cuáles sean las desventajas (y ventajas) de cada opción o si hay mejores opciones, espero que me puedan ayudar.

alapaco
05-04-2006, 22:05:56
Yo tengo todas las tablas en un solo .GDB.
La máxima cantidad de tablas que he usado en un solo GDB son 40 aproximadamente, aunque por lo que leí no creo que pase nada, es un motor bastante robusto IB.

Ademas para despues relacionar las tablas es mas sencillo tener todo en un solo GDB.

Luzma
06-04-2006, 02:43:33
Gracias por responder, yo también tendré entre 30 o 40 tablas y lo de ponerlas en un solo gdb me parece una buena idea (de hecho es mi primera opción y al parecer es la que usaré) pero tengo algunas dudas:


Si pongo todas las tablas en un .gdb y por alguna situación una tabla X se daña,¿se dañarían tadas las tablas o sólo la X?.
Mi programa estará en red y no todas las computadoras estarán trabajando sobre la misma tabla, ¿si separo las tablas en direntes gdb tendré mayor rendimiento en red o es el mismo que si estubieran todas juntas?.
¿Se pueden relacionar tablas de diferentes .gdb? (porque si separo las tablas tendré que relacionarlas)Gracias de nuevo por sus respuestas...

Neftali [Germán.Estévez]
06-04-2006, 09:20:56
Opción 1 - En .gdb pongo todas las tablas que el programa necesita.

Opción 2 - Creo distintos .gdb con tablas relacionadas( es decir O2.gdb con datos de clientes, compras | O2_2.gdb con con información de productos, marcas y todo eso | 02_3.gdb ...)

Piensa en cambiar a FireBird, que es gratuito.
En cuanto a la distribución de tablas, IB es un SGBD y está diseñado para tener todas las Tablas/SP/... en una única Base de Datos. No dudes en hacerlo así.

alapaco
06-04-2006, 14:59:00
Gracias por responder, yo también tendré entre 30 o 40 tablas y lo de ponerlas en un solo gdb me parece una buena idea (de hecho es mi primera opción y al parecer es la que usaré) pero tengo algunas dudas:


Si pongo todas las tablas en un .gdb y por alguna situación una tabla X se daña,¿se dañarían tadas las tablas o sólo la X?.
Mi programa estará en red y no todas las computadoras estarán trabajando sobre la misma tabla, ¿si separo las tablas en direntes gdb tendré mayor rendimiento en red o es el mismo que si estubieran todas juntas?.
¿Se pueden relacionar tablas de diferentes .gdb? (porque si separo las tablas tendré que relacionarlas)Gracias de nuevo por sus respuestas...

1) Como ya te dijeron está todo en un archivo .GDB, asi que lo que se puede dañar es el archivo por consecuente se pueden dañar 1, varias o todas las tablas, aunque debo decir que en 5 años que uso IB nunca me pasó nada así. Y he trabajado con tablas de mas 3.000.000 de registros sin problemas.

2) No lo sé a ciencia cierta, pero si vos haces un query lo que viaja por la red, es el requerimiento y la respuesta te devuelve las filas. Si la cantidad de información que te devuelve el query es igual ya sea todo en un GDB o las tablas en distintintos GDB, no creo que varie mucho el rendimiento de la red salvo por alguna que otra cabecera de mas.

3) Nunca lo he probado...pero si tengo que arriesgar una respuesta me inclino por que si se puede.

EDIT: Como dice Neftalí, muchos mas dicen que FireBird es mejor y encima gratuito.

Neftali [Germán.Estévez]
06-04-2006, 15:22:59
Si pongo todas las tablas en un .gdb y por alguna situación una tabla X se daña,¿se dañarían tadas las tablas o sólo la X?.


Se daña la Base de Datos en General; De todas formas existen herrameintas de recuperación, existen las copias de seguridad (que si estuvieran separadas también deberías hacerlas por separado) y en SGBDs la probabilidad de que se dañe un fichero es mucho más baja que en las BD de escritorio.


Mi programa estará en red y no todas las computadoras estarán trabajando sobre la misma tabla, ¿si separo las tablas en direntes gdb tendré mayor rendimiento en red o es el mismo que si estubieran todas juntas?.


Es lo mismo, ya que los datos que viajarán serán los mismos que si las pusieras por separado.


¿Se pueden relacionar tablas de diferentes .gdb? (porque si separo las tablas tendré que relacionarlas)

Poder como poder si se puede, pero la eficiencia no será comparable.

Vuelvo a repetir que no es aconsejable e incluso dudo que se pueda sacar adelante un programa seriamente estable y fiable poniendo una tabla en cada GDB.

Es que símplemente está mal diseñado el hacerlo así, no es una cuestión de gustos, es que no es una opción aceptable.

Se me ocurre:

* Lo dicho de las copias de seguridad y restauraciones
* Relaciones entre tablas.
* Stored procedures y Triggers que tengan que trabajar sobre otras tablas.
* Número de conexiones que tendrás que tener activas con el correspondiente consumo de recursos.
* Transacciones, tratamiento, aislamiento,...
* Configuración de seguridad para los usuarios, roles,...

Sé que se pueden hacer consultas entre Base de Datos diferentes, pero hay otras muchas operaciones que afectan a varias tablas que ni siquiera se si están soportadas.

Luzma
07-04-2006, 02:12:38
Muchas gracias a todos por aclarar mis dudas.

Utilizaré un solo gdb (ya que como dice Neftali está mal diseñado hacerlo en varios ya que InterBase se diseñó para que todo esté en una sola base de datos) y sí, la cantidad de datos que viaja es la misma.

Sobre lo de FireBird pues creo que también me cambiaré.

:)