Problema para actualizar el servidor
El tema es el siguiente, tenemos un servidor (RX300) funcionando con Win 2003 server y nos gustaría actualizarlo a Ubuntu.
El problema es que tenemos un programa comercial y que tienen unos cuantos cientos de clientes por todo el mundo (conocido), al arrancar se conectan a nuestra base de datos y comprueban unos datos. Acceden de la forma "IP:C:/directorio/basededatos.FDB" y el cambiar el SO junto con lanzar la nueva versión con los paths modificados haría que muchos clientes con la versión anterior tuvieran problemas serios. ¿Alguna manera de gestionar las DBs independientemente del SO y del path? ¡Saludoses! PD: Encima tenemos que usar la versión 1.5 |
Hola, papulo, ¿te sirven los "alias"?
En el firebird tienes un ficherito llamado aliases.conf y en él creas un alias para la base de datos, por ejemplo: Código:
misdatos = 192.198.0.100:/mnt/datos/basedatos.fdb Esto te permite cambiar (redirigir) el alias a donde te interese en cualquier momento, por ejemplo, se te estropea el servidor y montas uno provisional en windows, entonces con cambiar esa línea en el "aliases.conf" tendrías suficiente, por ejemplo: Código:
misdatos = 192.198.0.88:c:\datos\basedatos.fdb Edito: en tu caso tampoco te valdrá porque tendrías que cambiarlo en tus clientes y sería lo mismo que si le cambias la dirección completa real a la base de datos :( |
Hola mister, gracias por la pronta respuesta.
Ahora sacaremos una nueva versión, por eso no es problema. El caso es que los alias no los podemos usar con Delphi 7, o al menos no sabemos como usarlos con los componentes estándar. ¿Alguna solución a ello? Gracias mil y me alegro de "verte". |
solo tienes que cambiar la cadena de conexion
en vez de poner la ip y la ruta , pones el nombre del alias y ya esta. Cita:
|
Si no es mucho pedir ¿me podrías poner un ejemplo ilustrativo?
A parte, no entiendo como puedes realizar una conexión si el programa se ejecuta desde otro ordenador fuera de tu dominio, hacía una IP publica. ¡Saludoses! |
Cita:
Una vez que ese punto esta logrado, es tan simple como te comentan los otros foristas. Saludos cordiales. |
Veamos, tenemos IP fija en el servidor y el router con el puerto 3050 abierto y apuntando a la IP correspondiente con el PC que tiene las bases de datos.
La infraestructura para permitir conexiones desde fuera de la empresa está perfecta. Lo que necesito, sabiendo por ejemplo, que la IP fuera 88.77.66.55 y el path a la base de datos "c:/Database/Current/MiBase.FDB", es como se haría la conexión por código, comparando la conexión tradicional con la conexión con álias. Saludos. |
Cita:
// Saludos |
Cita:
Saludos. |
Cita:
Primero te vas al archivo aliases.conf en la carpeta de firebird y agregas la siguiente linea: aliasnuevo = c:/Database/Current/MiBase.FDB Luego en tu componente servidor en tu aplicación cliente (que no aclaras cual usas) colocas como string 88.77.66.55:aliasnuevo. Listo. No puedo dejar de recomendarte que pruebes alguna librería de capas intermedias , como remobjects. El acceso a través de internet a servidores SQL no es la solución más adecuada a mi entender. Saludos. Editado, perdon, decis que vas a usar linux? Si usas linux el path deberia ser a un directorio linux , ejemplo aliasnuevo = /var/data/MiBase.FDB para windows , estan al reves los slash!!! deberia ser: aliasnuevo = c:\Database\Current\MiBase.FDB espero que te sirva. |
Para aclarar el tema.
Para ser exactos uso el componente IBDatabase de la pestaña InterBase. Entonces, si mal no he entendido, en el campo "DatabaseName" del elemento IBDatabase, con poner "88.77.66.55:ElAlias" ya tendría que hacer la conexión correctamente desde fuera. ¿Correcto? |
Hola
Hace unos dias en la reunión de Club Delphi que tuvimos hace poco en México vimos la funcionalidad de los WebServices y en mi blog desarrolle la forma como se crea, se publica y se consume un WebService. Sin embargo, viendo el potencial me pregunté si un WebService puede ser usado para crear aplicaciones web consumiendo un WebService que acceda a la base de datos por Internet pero el acceso a la base de datos seria local. En mis tiempos libres he hecho unas pruebas de un WebService con acceso a base de datos y si es posible; aún estoy verde en este asunto sobre todo por las concurrencias y por las transacciones, pero pienso que es una muy buena alternativa. Salud OS |
Hola Egostar,
primero de todo, gracias por la aportación, pero en este caso no estoy buscando una alternativa (que ahora estamos preparando la versión online del programa :P) sino una solución concreta a un problema acotado. Y si mal no he entendido al resto de compañeros, la duda que tenía se está disipando positivamente a marchas forzadas :) PD: Da gusto "encontrarse" con gente tan educada, un aplauso para todos. |
Cita:
Confirmado y probado. ;) |
Cita:
Si lo que quieres es explotar las virtudes de un modelo n-cap, con servicios remotos (tanto web services como otros basados en otras tecnologias) echale un vistazo a remobjects o a kbm. No tienen desperdicio, y te ahorraras muchas horas de trabajo con un resultado muy bueno sobre tus aplicaciones remotas. Saludos |
Cita:
Para no tener que modificar el codigo cada vez que cambia la IP o el nombre de servidor recupero los datos del registro de windows (algunos les gusta mas usar archivos INI, en todo caso el valido de ambas formas) En el evento OnCreate de la forma principal
Y en el evento OnCreate del DataModule
Espero te de una idea mas clara. Salud OS |
Gracias Egostar, ahora le pegaré un buen vistazo y mañana dejaré las impresiones.
Por otra parte, Donald, mi intención no es "probar", mas bien tenemos todo el programa desarrollado, la infraestructura montada y ahora, cuando hemos pensado en migrar el servidor de uno con Windows a uno con Ubuntu, hemos visto los problemas que había con el acceso a las bases de datos y el tema de los Alias, todo ello usando el componente antes nombrado. Saluditos. |
Cita:
P.D. Quizas a eso se deba que no puedas usarlo con la version mejorada de firebird 2.0x? Saludos. |
De hecho, lo usamos con la rama 1.5, y ya migraremos para la versión 2.5.
Por ahora es lo que hay, pero mi intención es ver como lo podremos cambiar. Cita:
Lo de que el IBDataSet sea incompatible, me resulta extraño, dado que siempre lo usé con Firebird y sin problemas de ningún tipo, y si lo tenemos funcionando sobre un Win 2003 es por decisión administrativa. Ahora es cuando comenzamos a mirar como migrar el asunto para tener el mejor rendimiento. PD: Si mis dudas son tan vagas, es porque llevo mas de un año sin tocar Delphi, no porque no sepa programar. |
Cita:
Saludos, |
Cita:
Yo no soy muy ducho con esto de las bases de datos dado que mis aplicaciones no habian requerido de una base de datos, ahora que comienzo estoy usando Firebird, mi segmento de mercado esta en Windows y uso los componente Interbase para conectarme a Firebird. He escuchado que algún dia los IBX ya no tendrán soporte a Firebird, pero de eso a que tengan muchos problemas es diferente, hasta el momento no he tenido problema alguno, claro que mis aplicaciones no son de gran escala, yo me manejo en digamos "el mercado olvidado" que es la pequeña empresa. Mi dudas puntuales son: ¿Que problemas tienen los componentes de Delphi? ¿Todos los de conexion a base de datos tienen problemas? ¿Que componentes son los que tú consideras los mejores? Perdon, pero son novato en esto de las bases de datos y quisiera saber mas al respecto. Salud OS |
Cita:
Cita:
Cita:
Cita:
OS : Zeos. Saludos. |
Cita:
Yo ahora uso los Unified Interbase... Saludos... |
Cita:
Puedo confirmar que con la versión 1.5 funciona correctamente. Aunque los FIBplus son una maravilla :) |
Cita:
Saludos. |
Hola,
Sigo con dudas, perdon. Cita:
Cita:
¿Que cantidad consideras que sea extenso para un dataset? Cita:
¿porque dices que no soportan, aun no me queda claro? Cita:
Salud OS |
Cita:
a) El desarrollador no ha probado los componentes con la base en cuestión, significa que cuando desarrolla NUNCA tiene en cuenta funcionalidades o ventajas que poseen las versiones en cuestión (en este caso de firebird) y que por lo tanto las operaciones internas para realizar una determina operación puede estar diseñada de manera incorrecta, y por tanto llegar a un resultado indeseado. b) Siginifica ademas que nadie en Embarcadero, codegear, Borland, lo que sea te contestara jamas una duda respecto a ese componente, ni aceptara un solo bug report donde menciones que usas firebird, porque justamente no esta soportado. c) El principal desarrollador (único?) de ibx se llama jeff overcash y las veces que probe IBX y tuve inconvenientes con Firebird ( en sus versiones originales) me dijo muy claramente que NUNCA IBX soportaria Firebird. Ahora, mis amigos, existiendo tantas versiones libres y algunas pagas, porque alguien se obnstinaria en usar algo no soportado, que como les cuento por experiencia propia tiene problemas de todo tipo (no me pidan un reporte completo, cuando probe y luche con estos componentes fue por delphi 7 si mal no recuerdo). No tiene sentido. Y justamente si tu rubro es la pequeña empresa estas escaso de desarrolladores, que mejor que usar algo que sabes que funciona o que al menos tiene soporte casi inmediato de gente que esta en la misma lucha que vos? Hablo de open source, por si acaso. Cita:
Si a ti te funciona, me alegro mucho. Solo no digas que no te avise.;) Cita:
|
Cita:
// Saludos |
Cita:
No doy el ejemplo porque no recuerdo el campo exacto. Pero si van a google y buscan foros de borland + firebird encuentran de lo que hablo. Como lo probe hace años y YA en ese momento tenia problemas, aun cuando firebird era CASI igual a interbase 6.0, imagino que ahora que ambos tomaron por rumbos muy diferentes se agravo el tema. Saludos. |
Cita:
Cita:
Cita:
Cita:
Salud OS |
Saludos,
De mi parte, siendo consciente que el autor de los IBX nunca consideró dar compatibilidad con FB, los he utilizado durante años con las versiones 1.x y 2.x sin problema alguno de soporte al motor ni de rendimiento. Lo más terrible de esta "separación", que haya podido darme cuenta que pueda afectar a un desarrollo, es que con los IBX no se pueden especificar constantes TPB propias de FB como isc_tpb_lock_timeout; pero me consideraría pésimo desarrollador si no puedo vivir con ello. Y me uno a Casimiro con que, los FIBPlus son una maravilla... así que, cuando tenga que cambiar los IBX, lo haría por ellos. |
Cita:
Saludos |
Cita:
Saludos. |
Cita:
Eso no puede ser tan malo, ¿o sí? Pues, es de esperar que no cometan los errores de su antecesor. |
Cita:
Saludos. |
Yo la verdad no se que tantos inconvenientes tenga. Hasta el momento no he tenido. Uso D6, con IBX y Firebird 1.5.3 sin problemas.
La mayor prueba que he realizado hasta el momento fue en una conexión red entre mi equipo y el de mi hermana. Mi PC no es demasiada potente que digamos: AMD Duron 1,16 Ghz con 512 de RAM, Windows XP y la de mi hermana es la segunda peor pesadilla que uno puede esperar: Pentium 333 Mhz con 128 RAM, Windows XP. (La primera peor pesadilla es 64 RAM y Windows Me:D). Puse a ejecutar el sistema cliente de prueba en el equipo de mi hermana y se comportó bastante bien. No me esperé que actuara tan rápido (en comparación con lo aceptable para lo que es la máquina) y que se moviera por los registros sin dificultad. Admito que en esa prueba no añadí campos BLOB. Tal vez allí si se note. ¿Donde está el problema de memoria? No he tenido problemas con los tipos de campos. Salvo en una ocasión que no supe tratar con BLOB, y que gracias a una búsqueda y una consultas aprendí. Fuera de ello, sin problemas. Tal vez oficialmente no se reconozca que IBX tenga cierta compatibilidad con Firebird 1.5 (no me animo a decir con 2.x puesto que no lo probé), pero de que puede usarse se puede. Donald, no es por atacar... solo expongo la poca experiencia que tengo en esto y la verdad es que no veo porqué alarmarse demasiado. Se que existen componentes de terceros, tanto los gratuitos con de pago, diseñados y mejor adaptados para Firebird. Firebird nació de Interbase, y en la versión 1.5, según tengo entendido, tiene cierto grado de compatibilidad. Y para mi me ha resultado bastante cómodo. Saludos, |
Bueno, yo creo que en resumen, la mejor opción siempre será la de utilizar componentes que hayan sido diseñados ex profeso, tal como dice Donald, pero que el uso de IBX no traerá mayores problemas, sobre todo en las versiones de FireBird más "cercanas" a IB.
// Saludos |
Gregory Deatz escribió FreeIBcomponents (licencia open source) para acceder a interbase. Cuando Borland buscó unos componentes para Delphi llegó a un acuerdo con Deatz y los renombró IBX (Interbase Express) y también son open source porque legalmente la licencia GPL obliga a ello.
A partir de FreeIBcomponents surgieron otras como FIBplus, MDO (Mercury Database Objects), etc y todas son open source porque provienen de unos componentes GPL. Aunque las FIBplus han cambiado a un tipo de licencia "extraño" y no entregan todas las fuentes a no ser que pagues, y eso CREO que es ilegal, no pueden hacerlo, aunque es otro asunto que no viene al caso). Las IBX han evolucionado para acceder a Interbase porque pertenecen a la misma empresa (Borland, Inprise, Codegear, Embarcadero) y no podía ser de otra forma. Evidentemente no se han preocupado de "afinar" IBX para Firebird porque es la competencia. Aunque, como todos sabemos, Firebird empezó cuando Borland liberó con licencia MPL (open source) a Interbase 6. Luego volvieron a cambiar las siguientes versiones a una licencia privativa y cerrada, pero la versión 6 quedó abierta y libre debido a la licencia escogida. A partir de ahí FIBplus, MDO y otras fueron adaptándose sobre todo a Firebird porque es libre y se puede acceder a su código. Y, naturalmente, IBX fue afinándose para Interbase. Con el tiempo, Interbase y Firebird han ido añadiendo pequeños cambios, poco a poco, que los ha ido separando, aunque en el fondo son muy parecidos. Igual ha ocurrido con IBX y FIBplus (y el resto). Así que hoy en día FIBplus está muy optimizada para Firebird y IBX lo está para Interbase. Pero, repito, en lo fundamental funcionan ambos correctamente. En mi trabajo tenemos un programa de gestión comercial que se inició con Interbase 6 y las IBX (1999), actualmente sigue con las IBX aunque cambiamos a Firebird cuando salió la versión 1.0 (básicamente era lo mismo que Interbase 6.0). Las bases de datos de nuestros clientes son de varios gigas en su mayoría y algunos sobrepasan con crecen los 10 gigas, sin problema alguno, todas con Firebird 1.5 y el resto de programas que hemos hecho después están con FIBplus y, la verdad, es que se nota la diferencia, se "sienten" más optimizados para Firebird y no corren, vuelan. Por supuesto que las IBX serán cada vez menos recomendables para Firebird. Las "incompatibilidades" , "desarreglos", "desafinamientos" de IBX con Firebird se notan a veces en algunos procesos "pesados" a los que hay ajustar mucho, hacer muchas pruebas, hasta dejarlos optimizados para que vayan bien. Sin embargo, esos casos, con FIBplus no suelen aparecer porque está más optimizado con Firebird. Pero, ciertamente, nos hemos encontrado con problemas, sobre todo, de mal manejo de la memoria por parte de IBX con Firebird en algunas situaciones muy, muy especiales y anormales trabajando con varias bases de datos al mismo tiempo y moviendo decenas de millones de registros entre ellas con sentencias muy enrevesadas. Pero en "la vida normal" no hay problema con ellos. Espero que a alguien le sirva mis comentarios. |
Cita:
|
Cita:
esta información no tiene desperdicio. Salud OS |
La franja horaria es GMT +2. Ahora son las 07:06:55. |
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