![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
De Paradox a Firebird 1.5
Primero os cuento lo que me pasa:
Tengo una aplicacion en delphi 6 que usa tablas paradox en red. Con los años (2 ó 3 ) esta aplicación ya esta manejando unos 40 millones de registros y con las 20 maquinas que acceden a las tablas, ya es para llorar de lo lento que va. Despues de leer muchos post he decidido utilizar Firebird 1.5 (que parece que es la mas estable) superserver para correr sobre windows server 2003. Ahora bien, como nunca he utilizado firebird me surgen una serie de preguntas las cuales espero que me ayudeis a resolverlas. 1º.- Con el firebird, qué hay que instalar en el servidor y qué hay que instalar en los clientes (lo desconozco totalmente). 2º.- Que componentes me recomendais (pero que sean fiables) para tocar lo menos posible el codigo del programa. 3º.- Con que programa se crean las tablas (en bde era con el database desktop) para que firebird pueda manejarlas. 4º.- Que programa me recomendais para pasar los datos del formato .db (con sus indices) al formato .gdb (creo que es el que utiliza firebird). 5º.- Que tengo que poner en el programa para configurarlo en red y que los clientes accedan a las tablas ubicadas en el servidor ( En el bde era \\servidor\aplicacion\datos y \\servidor\Aplicacion\carpetaNET y \\servidor\Privatedir). 6º.- No se si estaré equivocado, pero el programa supongo que solo estaría ubicado en el servidor y los clientes accederian a el con un acceso directo a traves del entorno de red. Si no es asi, me explicais que es lo que hay que instalar en el servidor y en los clientes. A los que os atrevais a contestar a esto, como estoy verde verde en firebird, os rogaria que me lo explicaseis lo mas claro posible. Gracias y saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#2
|
||||
|
||||
1º.- Con el firebird, qué hay que instalar en el servidor y qué hay que instalar en los clientes (lo desconozco totalmente).
En el servidor necesita instalar el firebird Super Server o Clasic Server. en el cliente necesita ya sea la fbclient.dll o la gds32.dll, segun el componente de coneccion. 2º.- Que componentes me recomendais (pero que sean fiables) para tocar lo menos posible el codigo del programa. en las paletas se encuentra una llamada ibx (o Interbase pero es trasparente) o pude descargar las mdolibs son muy parecidas a las ibx 4º.- Que programa me recomendais para pasar los datos del formato .db (con sus indices) al formato .gdb (creo que es el que utiliza firebird). ibpump 5º.- Que tengo que poner en el programa para configurarlo en red y que los clientes accedan a las tablas ubicadas en el servidor ( En el bde era \\servidor\aplicacion\datos y \\servidor\Aplicacion\carpetaNET y \\servidor\Privatedir). Tanto en los ibx como en los mdolibs existe un componente llamado DataBase, ahi debe de poner algo como esto si hay firewall en el equipo servidro necesita agregar el programa fbServer.exe y el purto 3050 para que permita que los clientes se puedan conectar 6º.- No se si estaré equivocado, pero el programa supongo que solo estaría ubicado en el servidor y los clientes accederian a el con un acceso directo a traves del entorno de red. Si no es asi, me explicais que es lo que hay que instalar en el servidor y en los clientes. En cada equipo se pone un cliente (con la dll arriba descrita) y en el servidor se istala firebird |
#3
|
|||
|
|||
Gracias por tu respuesta.
Me falta la 3ª cuestion por responder y la 6ª que no le entiendo yo bien. Me explico: La aplicacion (el programa delphi, ya sea de gestion o de lo que sea), hay que instalarlo en todas las maquinas? Y en cuanto al código, habría que tocarlo mucho?, perdona por mi ignorancia pero ya he comentado que con firebird estoy verde, verde. Gracias y saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#4
|
||||
|
||||
Sobre el tercer punto hay varios programas para administrar la BD, personalmente yo prefiero IBExpert. Y sobre el 6to punto tal cual dijo RONPABLO
|
#5
|
|||
|
|||
Cita:
La forma de acceso es la siguiente: aplicacion <---> cliente Firebird <---> Servidor Firebird <---> base de datos Jamás la aplicación toca los datos directamente (Arquitectura Cliente/Servidor) Cita:
Saludos TJose Última edición por TJose fecha: 06-03-2007 a las 19:02:55. |
#6
|
|||
|
|||
y para que se me quede mas claro, alguien sabe de algun ejemplo de alguna aplicación c/s con firebird que pueda ojear para hacerme una idea?
Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#7
|
||||
|
||||
Yo no estoy muy seguro de este punto:
Cita:
Ya puestos se necesitaría ver los puntos negros de la aplicación y hacer uso de Stores Procedures (parecidos a los TQuerys) que sí pueden dar bastante velocidad. Aquí tienes documentación para empezar. La guía rápida es el primer documento. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
||||
|
||||
Yo usaba las IBTable cuando pase de paradox a firebird y la verdad era muy lento, me toco que emepesar a pasar a querys, aunq al final se me ocurrio algo que me dio buen resultado:
Antes: Una tabla maestra muy muy muy pesada y varias tablas detalle, como resultado una aplicacion lenta, pesada y cada vez que crecia era peor. Despues: Un query con todos los id de la tabla maestra, la tabla Maestra con un filtro el cual es algo como lo siguiente
y de ahi en adeltante todo mejoro y segui con mis "queridas" tablas Nota: lo de queridas tablas es sarcasmo, pero era un proyecto muy grande y muy poco tiempo para cambiar todo por querys de inserts, updates, delte y selects |
#9
|
|||
|
|||
Bueno, ya he leido bastante sobre el tema y voy a empezar a ponerlo en practica, pero me surgen una serie de dudas.
Primero decir que utilizo el EMS SQL Manager 2005 que me ha parecido bastante bueno para crear BD's y tablas y manejar estas (he de decir que la consulta que antes tardaba 15 segundos sobre una tabla paradox de 500.000 registros en red, ahora y segun la SP que he creado, me tarda 0,06 seg), y me he decantado por los MDO componentes (Mercury). 1.- Como se le dice a una SP, qué indice (de todos los que tenga una BD) deseo utilizar para la consulta. 2.- En el "for select ..... do" de una SP se supone que me recoje una serie de registros, pues bien, esos registros ¿como los muestro en un grid o en una stringlist o en dbgrid (esto creo que va a ser que no si no quiero usar MDOTable)? ya que no deseo utilizar el componente MDOTable (porque supongo que tendria el mismo problema de lentitud que con paradox). 3.- Perdonad por mi ignorancia pero.... ¿se puede manejar el resultado de la consulta de una SP (con su for select...do) en un MDOTQuery?. 4.- Si la aplicacion que voy a hacer tiene que correr tanto en monopuesto o en red (al usuario se le da la opcion de elegir una de las dos, nunca las dos a la vez) ¿como tengo que crear la BD con el EMS o con el IBExpert, en local o en remote?. 5.- Al hacer el traspaso de las tablas paradox a firebird con el InterbaseDataPump me dice que la BD está en "ForceWrite" y que el proceso tardará 3 veces más. Eso ¿qué es?, ¿Influirá esa caracteristica en la velocidad o lentitud de la aplicación?. ¿Cómo se puede cambiar esa caracteristica?. 6.- Vuelvo a insistir, perdonad por mi ignorancia, pero ahora mismo tengo un cacao de nuevos conceptos y adecuar mi forma de pensar (en programacion) a esos nuevos conceptos que a muchos no llego. He visto que en algunas SP hay al final unas lineas GRANT, ¿eso que es?, ¿Cual es su finalidad?. ¿No basta con llamarlas desde las MDOStoredProc sin esas lineas al final?. 7.- ¿Debo utilizar firebird 1.5 o 2.0 ? 8.- No os canseis más que por ahora vais bien servidos con estas consultas, proximamente... más (cuando el cacao mental vaya "increchendo"). Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#10
|
|||||
|
|||||
Cita:
Cita:
el caso anterior es para cuando necesitas mostrar algo, recuerda que los parametros :c1, :c2, :c3 deben de ser parametros de salida, y el siguiente para hacer una modificacion... en este no debe de ir suspend y los parametros pueden ser variables internas o parametros de salida, pero solo tendran el valor del ultimo registro del for select;
3.- Perdonad por mi ignorancia pero.... ¿se puede manejar el resultado de la consulta de una SP (con su for select...do) en un MDOTQuery?. si se puede de la siguiente forma:
y el resultado seria un dataSet con los parametros de salida (en mi ejemplo anterior :c1, :c2, :c3) Cita:
Cita:
Cita:
Recuerda que si vas a ejecutar un sp que inserte, modifique o borre debes de usar los MDOStoredProc o MDOQuery.Execute y si quieres que te traigan resultados se debe de hacer por medio de un MDOQuery |
#11
|
|||
|
|||
Vamos a ver si me explico mejor para los puntos que no se han quedado claros o no los he entendido.
Punto 1.- En una BD yo puedo tener varios indices de una misma tabla para que en el tema de consultas sea mas rapido. Si consulto una cosa me interesaria utilizar un indice y si consulto otra, pues me interesaria utilizar otro indice. Pues bien, como se le puede indicar eso (si es posible) en una SP?. Punto 2.- Ya tenia mas o menos claro lo de el for select...do y el suspend, mi pregunta era (para no utilizar MDOTtable) que una vez hecha la consulta con una MDOStoredProc, como recorro el conjunto de registros resultante y con que componente se pueden mostrar graficamente. Por ahora esas son mis dudas, seguiremos informando. Ah, por cierto, con el Firebird vienen unos ejemplos, pero son muy basicos, alguien sabe de alguna aplicacion con sus fuentes algo mas elaborada que utilice los MDO para estudiarla? (creo que es la mejor manera de aprender). Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. Última edición por llonigualker fecha: 19-03-2007 a las 08:31:08. |
#12
|
||||
|
||||
Cita:
digamos hay una tabla llamada tabla con los campos c1, c2, c3 y c4 de los cuales los campos c1 y c2 están indexados.
como tal en el ejemplo anterior es buscar por un indice y/o por el otro, en es ejemplo la idea es que :c1, :c2 son parámetros de entrada y :c3, :c4 parámetros de salida, con los parámetros de entra yo puedo decidir por cual de los dos buscar, por decir algo si quiero solo buscar lo que hay en el campo indexado c1 mando un valor que se debe encontrar en dicho campo por medio del parámetro :c1 y mando un null en el parámetro :c2 y al revés si quiero buscar por el campo indexado c2 (espero sea esto lo que busques) Cita:
y si esta bien enlazado a un dbGrid se vera los campos c3 y c4 en el dbGrid |
#13
|
|||
|
|||
Gracias, seguiré probando e investigando.
Otro dia, mas. Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#14
|
|||
|
|||
He tardado poco.
Me ha surgido una duda, estoy definiendo en una tabla un campo blob de texto (subtipe 1) pero no se que juego de caracteres asignarle, si el win1252 o el iso8859_1. Es para pasar el contenido de un campo memo de texto (con sus acentos y todo) de una tabla paradox a esta nueva tabla. ¿Cual debo de utilizar? Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#15
|
||||
|
||||
En España, yo estoy usando el ISO con COLLATE ES_ES, así permite eñes y acentos sin problemas en la BD.
Por lo visto en Firebird 2.0 hay un collate (cotejamiento) que permite hacer búsquedas independientemente de los acentos y mayúsculas, tendrías que mirar la documentación. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#16
|
||||
|
||||
con respecto a las eñes... yo trabajo con chartSet y collate en none y siempre que hago consultas no me pone problema, solo me da error en locates pero eso es por el IBX, ya que cuando pruebo desde donde creo la bd o desde el isql si me encuentra las ñ y los acentos, es mas en los dbGrids o dbEdits o DbComboBox salen bien. Solo me da error en loquetes.
|
#17
|
|||
|
|||
Mañana comienzo la migracion de paradox a firebird (rehacer la aplicación), pero he instalado la 2.0 en vez de la 1.5, ya les contaré como va el tema y casi seguro, me surgirán dudas. Ah! Utilizo Delphi 6.
Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#18
|
|||
|
|||
Ya me ha surgido la primera duda.
En esta aplicacion cada x segundos se tiene que hacer una consulta a una tabla de la bd la cual tiene cientos de miles de registros y cada x segundos va aumentando (si no existe el registro consultado se añade "insert", si existe se modifica "update"). Lo pregunto por el tema de la agilidad y la rapidez (en red), ¿Que es mejor, utilizar una SP a traves de un MDOStoredProc y que me devuelva un parametro para saber si existe un solo registro que atienda a una serie de parametros o condiciones, o, usar un MDOTquery para que me devuelva lo mismo? (pensad que necesito velocidad y agilidad). Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. Última edición por llonigualker fecha: 21-03-2007 a las 13:36:23. |
#19
|
|||
|
|||
Otra duda que no se como resolver.
En una tabla paradox, uno de los campos lo tengo definido como BYTE en el cual almaceno una palabra encriptada. En la BD de firebird, en la tabla correspondiente, he definido este campo como blob en sus tres modalidades y como varchar tambien, pero al hacer el datapump no cuela. ¿Como tengo que definir ese campo en firebird para que el paso de informacion se realice sin incidencias? Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#20
|
|||
|
|||
Despues de leer muchos manuales (que me entere o no es otra cosa) y post de este foro he llegado a la siguiente conclusion:
Para no darme el batacazo y equivocarme como ya me he equivocado anteriormente con paradox, cuando se diseña una aplicacion de base de datos se tiene que hacer pensando en que la van a utilizar muchisima gente, esto quiere decir que tendremos que reducir el trafico de red como sea y.... atendiendo a lo anteriormente dicho (leer bastante informacion) he decidido utilizar SP ya sea de consulta o de ejecucion a traves de querys ya que el trafico de red seria menor (el servidor que sea eso, servidor, potente y seguro) y las maquinas clientes no tendrian que ser nada sofisticadas, con pocos requerimientos de hardware seria suficiente para una mas que aceptable agilidad en el uso diario de la aplicacion. Si estoy equivocado me corregis, que equivocarse es de humanos. Gracias a todos por vuestras respuestas. Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TRANSFORMAR PROGRAMA paradox a firebird | rickymarti | Firebird e Interbase | 11 | 10-02-2008 11:56:17 |
Paradox a Firebird | Vlady | Conexión con bases de datos | 2 | 22-11-2006 21:05:19 |
De Paradox a Firebird | morta71 | Firebird e Interbase | 5 | 05-10-2006 20:31:24 |
Pasar Tabla de Paradox a Firebird | JoanKa | Firebird e Interbase | 4 | 12-02-2005 02:57:54 |
exportar una tabla de oracle 9i a paradox o firebird | ARCON | Oracle | 1 | 28-10-2004 10:38:22 |
![]() |
|