Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Creo que windows no hace uso de esos procesadores. Instala un Linux, verás la diferencia.
Responder Con Cita
  #2  
Antiguo 15-05-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Además que la versión superserver es para un procesador.
Con la versión classic sí puedes hacer uso de varios procesadores, pero el problema es que windows no es muy bueno gestionando eso.
Clientes nuestros (en mi trabajo) tienen servidores de 8 y 16 cpus con firebird y todos los servidores que montamos van con linux.
Responder Con Cita
  #3  
Antiguo 16-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

¿ Cuales son los sistemas operativos ?, y ¿ cual es el tamaño de la base de datos ?.

NOTA: Si pones la Unit Midas en el Uses del formulario principal, te ahorrás el tener que distribuir la Midas.dll en la carpeta de tu aplicación (esta librería es muy incómoda tener que distribuirla porqué hay que registrarla en el sistema con el regsvr32.exe).

Prueba a poner temporalmente la base de datos en otro equipo. Así sabrás si el problema está en la base de datos o en algún otro conflicto que se dé en ese equipo.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 17-05-2010
jmcf jmcf is offline
Registrado
 
Registrado: feb 2009
Posts: 5
Poder: 0
jmcf Va por buen camino
Instalarlo en Linux es un problema. Ya me gustaria a mi poder hacerlo.

En cuanto al midas lo tengo en todos los programas puestos ,pero ademas la
distribuyo y registro , ya que tengo que registrar y distribuir unos cuantos ocx, dll y codecs de video, registrar uno más que más da?

Yo el servidor si lo podría instalar en Linux. Mi problema es que el 98% de las ocasiones la misma maquina será el servidor y el cliente, y las SDK que recibo de los fabricantes no están hechas para linux , algunos me dan componentes que usan muchísimas librerias de windows, este es el problema de no hacerlo para linux.

y montar una maquina solo para el servidor de datos en linux(costo adicional para el cliente), cuando las bases de datos son muy pequeñas, hablamos de 10-20 megas, y de estos 20 megas 19'5 son de logs generados por las alarmas y sucesos de los programas que se van generando. El ususario siempre tiene visible los log del dia actual , si quiere ver otro día lo selecciona en un datetimepiker y el acceso es instantaneo.

Con lo que no me queda más remedio que seguir con Windows, y lo peor es que ahora ya no venden el XP , este último que estoy probando ahora para instalarlo la semana que viene en Sevilla , he tenido que comprar un windows7.

Conclusión : lo monto como superserver en multiprocesador y que use solo un procesador (aunque Casimiro diga que el superserver solo usa un procesador yo le puse en el CPUAffinityMask= 224 y los procesadores 6 7 y 8 tienen activadad por el Firebird 2.1.3) , pero como tampoco necesito tanta cpu para mover los pocos datos que necesito lo dejaré sólo en uno, pa, por si acaso.

También os puedo asegurar que no tengo mucha idea de lo que estoy haciendo, me puse con este mega proyecto el año pasado porque monte una empresa con otro socio y sabía que en plena crisis mundial nos costaría mucho salir adelante y como tenía tiempo (no teniamos trabajo ) me dió por hacer este super programa (ya llevaré facilmente más de 150.000 líneas de código) en delphi7, porque hace muchos años estuve cacharreando con el primer delphi, al final con saber un poco de ingles , haces código en pascal.

Cuando yo ejecute por primera vez el delphi7 y VI UNA PALETA DE COMPONENTES QUE SE SALIA DE LA VENTANA CON UNOS NOMBRES RARISIMOS, ME ASUSTE. Y OJO, la primera version del programa la hice con paradox, hasta que un día encontre este club y me enteré que paradox ya se dejo de desarrollar hace tiempo y que tenía problemas de vez en cuando........y es cierto se me colgaba, y se rompian los indices. Se hablaba en este foro mucho de Firebird, a sin que tomé la decisión de cambiar a Firebird, me tiré dos semanas intentando entenderlo y que podía hacer, y dí el salto.

Por cierto, ya que os estoy soltando este rollo de mi historia , tengo otra duda , que lo mismo lo estoy haciendo fatal el código o el planteamiento del programa(ahora son 150000 lineas pero llegerá al millón seguro) y la consulta es esta..

Yo uso Firebird, los componentes Interbase(un IBtable conexión con la base de datos y luego por cada tabla que uso lo hago con un IBdataset , un IBtransacction y un datasetprovider ,uno por cada tabla (en los servidores de aplicaciones, que conectan con firebird), no he tenido problemas y me funciona, realmente lo único que hacen es grabar, borrar y servirme los datos cuando se los pido. Por otro lado en las aplicaciones uso los sockectconnection y el connectionbroker para establecer las comunicaciones con los diferentes servidores de aplicación y establecer una autopista de comunicacion. Y siempre uso los clientDataset por ejemplo :

Código Delphi [-]
 
 if not CamicoTabla.IsEmpty then
    begin
     i_icono:=camicotablaID_ICO.Value;
     Camtabla.close;
     Camtabla.CommandText:='select * from CAMARAS where ID_CAMARA = '+inttostr(camicotablaID_CAMARA.Value);
     Camtabla.open;
     if not camtabla.IsEmpty then
       begin
        if camtablaptz.Value='SI' then preset:='1' //para que no de error cuando se activa un domo
        else preset:=' ';
        valores:=camtablanombre.Value+'\'+camtablaentradaalarma.Value+'\'+timetostr(time)+'\'+inttostr(camta  blanumcamara.Value)+'\'+preset+'\'+datetostr(date)+'\';
        if camtablaid_modelo.Value=1 then //geovision
        createprocess(pchar('alarmasvideo.exe'),pchar(valores),nil,nil,false,HIGH_PRIORITY_CLASS,nil,pchar(d  irl),startinfo,procinfo);
o buscando con locate así:
Código Delphi [-]
 //busco en la tabla  el camicotablaID_CAMARA.Value
        if  camtabla.Locate('ID_CAMARA',vararrayof([camicotablaID_CAMARA.Value]),[loCaseInsensitive]) then
          //si lo encuentra comprobamos de que grabador es
          begin
           if camtablaID_MODELO.Value=1 then //si es geovision
           begin
           // buscamos en ioconet el estado del grabador conectado-desconectado
           if iotabla.Locate('ID_GRABADOR',vararrayof([camtablaID_GRABADOR.Value]),[loCaseInsensitive]) then
            begin
              //si conectado lo ponemos de verde
             if iotablaestado.Value='conectado' then
               begin
                if assigned(comp) then
                   begin
                   if camicotablatimage.Value='Imgcam' then
                     begin
                     img:=Timage(comp);
                     img.picture:=imgverde.picture;
                     img.Hint := camicotablahint.value;
                     end;
                   end;
               end
               //si desconectado lo ponemos gris
y la conexión con los servidores de aplicación las hago así
Código Delphi [-]
 
    try
          if valor_serv='NOMBRE_SERV' then
            firebirdconnection1.Host:=nombreserv;
          if valor_serv='IP_SERV' then
             firebirdconnection1.Address:=ip_serv;
            //si la receptora es operativa conectamos con la base de datos
          if serveroperativa='SI' then
           begin
            if serverreceptoravalor='SERVER_RECEPTORA' THEN
              receptoraconnection.Host:=serverreceptora;
            if serverreceptoravalor='SERVER_RECEPTORA_IP' THEN
              receptoraconnection.Address:=serverreceptoraIP;
           if not broker2.Connected then broker2.Connected:=true; //receptora
           end;
          //si la receptora GALAXY es operativa conectamos con la base de datos
          if galaxyoperativa='SI' then
           begin
            if servergalaxyvalor='SERVER_GALAXY' THEN
              galaxysocket.Host:=servergalaxy;
            if servergalaxyvalor='SERVER_GALAXY_IP' THEN
              galaxysocket.Address:=servergalaxyIP;
            if not galaxybroker.Connected then galaxybroker.Connected:=true;
           END;
         //despues de arrancar las receptoras arrancamos el principal
         if not broker1.Connected then broker1.Connected:=true; //integracion
 
         except
         on e:exception do
          showmessage(e.Message);
         end;
       end;
¿LO ESTOY HACIENDO MAL O PUEDO SEGUIR ASÍ?
porque os puedo asegurar que estoy programando a base de ostias, y gracias a las aportaciones que haceis en el foro he ido solventando muchos probemas.

Saludos y gracias a todos

Última edición por Casimiro Noteví fecha: 17-05-2010 a las 22:21:08.
Responder Con Cita
  #5  
Antiguo 17-05-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Te aconsejo que pongas el código entre etiquetas para que pueda leerse mejor [code ]tu código[/code ], echa un vistazo a esto.

¿Y exite algún motivo para no instalar la versión classic?
Responder Con Cita
  #6  
Antiguo 17-05-2010
jmcf jmcf is offline
Registrado
 
Registrado: feb 2009
Posts: 5
Poder: 0
jmcf Va por buen camino
No em principio ninguno, solo que he leido mucho que bajo windos mejor el superserver, yo probé ayer el clasic y el funcionamiento es el mismo . Ten en cuanta que las difernecias se vrrían con bases de datos pesadas y muchas conexiones clientes, y en mi caso la base de datos no pesa y solo suele haber un cliente. Supongo que me daría igual uno que otro.

Lo que tengo claro es que el día que tenga que montar esta apliacación para unos cuantos clientes sobre el mismo servidor ,montaré el servidor independiente a las apliacaciones y en linux.

la proxima vez que ponga código, intentaré hacerlo mejor, saludos
Responder Con Cita
  #7  
Antiguo 17-05-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Sí, en esas condiciones es cierto que lo mismo da montar uno que otro.

Te he puesto las etiquetas [delphi ] tu código [/delphi ], ahora se lee mejor
Responder Con Cita
  #8  
Antiguo 17-05-2010
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 19
donald shimoda Va por buen camino
Cita:
Empezado por jmcf Ver Mensaje
Lo que tengo claro es que el día que tenga que montar esta apliacación para unos cuantos clientes sobre el mismo servidor ,montaré el servidor independiente a las apliacaciones y en linux.
Concejo, dado que estas en un super projecto, hay algo que estas haciendo mal: usar componentes diseñados para interbase cuando tu base es firebird (parecido pero no igual). Cosas que yo revisaría:

1) Version de firebird (usa la última estable).
2) Prueba componentes específicos, caso FIB+ de devrace (excelentes) o IBO. Si quieres ir por open source prueba ZEOS, muy recomendables tambien.

Espero que te sirva.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #9  
Antiguo 17-05-2010
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 19
donald shimoda Va por buen camino
Cita:
Empezado por guillotmarc Ver Mensaje
NOTA: Si pones la Unit Midas en el Uses del formulario principal, te ahorrás el tener que distribuir la Midas.dll en la carpeta de tu aplicación (esta librería es muy incómoda tener que distribuirla porqué hay que registrarla en el sistema con el regsvr32.exe).
No es necesario si la colocas en la misma carpeta donde esta tu aplicación.

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #10  
Antiguo 18-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por donald shimoda Ver Mensaje
No es necesario si la colocas en la misma carpeta donde esta tu aplicación.
Creo que te equivocas, la Midas.dll siempre hay que registrarla, aunque esté en la carpeta de la aplicación.

Además ponerla en la carpeta de la aplicación puede ser un problema, puesto que si su primera ejecución es en esa carpeta, queda registrada allí, y si después la mueves a otro sitio o la ejecutas desde otra carpeta, vas a tener problemas. Esta librería en concreto parece mejor tenerla en una carpeta del sistema.

Es una librería problemática (por la necesidad de registro, y el hecho de que queda registro en una ubicación específica, a diferencia de todas las otras librerías necesarias para trabajar con Firebird), y por eso es mejor enlazarla estáticamente en tu aplicación (incluyéndola en el Uses de algún módulo del programa).

Para jmcf no es mucho problema porqué ya tiene que registrar otras librerías (ocx y demás), pero el resto de programadores, que normalmente hacemos aplicaciones que no necesitan librerías que deban ser registradas, deberíamos evitarla.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #11  
Antiguo 18-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Jmcf,

Te hice la sugerencia de que utilizaras otro Servidor, temporalmente, solo para probar si el problema está realmente en el Servidor de Firebird.

Es decir, en tu estación de desarrollo, la aplicación arranca en 2-3 segundos. En cambio en el equipo de producción arranca en 14-15 segundos.

Bien, yo probaría a modificar la cadena de conexión para arrancar la aplicación en el equipo de producción, pero utilizando la base de datos de la estación de desarrollo.

Si la aplicación arranca en 2-3 segundos, entonces claramente tienes un problema de algún conflicto en el Firebird instalado en el equipo de producción.

Si la aplicación arranca en 14-15 segundos, entonces el problema no está en el Servidor de Firebird sino en algún otro proceso del arranque de la aplicación.

Cuando hayas hecho está prueba tendrás mejor aislado el problema, y será más fácil intentar encontrar una solución.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #12  
Antiguo 18-05-2010
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 19
donald shimoda Va por buen camino
Cita:
Empezado por guillotmarc Ver Mensaje
Hola.
Creo que te equivocas, la Midas.dll siempre hay que registrarla, aunque esté en la carpeta de la aplicación.
Sin registrarla funciona, como cualquier DLL.

Cita:
Empezado por guillotmarc Ver Mensaje
Además ponerla en la carpeta de la aplicación puede ser un problema, puesto que si su primera ejecución es en esa carpeta, queda registrada allí, y si después la mueves a otro sitio o la ejecutas desde otra carpeta, vas a tener problemas. Esta librería en concreto parece mejor tenerla en una carpeta del sistema.
Entonces funciona o no funciona? Me mareaste.

Cita:
Empezado por guillotmarc Ver Mensaje
Es una librería problemática (por la necesidad de registro, y el hecho de que queda registro en una ubicación específica, a diferencia de todas las otras librerías necesarias para trabajar con Firebird), y por eso es mejor enlazarla estáticamente en tu aplicación (incluyéndola en el Uses de algún módulo del programa).
Desde que existe la posibilidad de ser enlazada estaticamente (creo que desde D5) no utilizo la dll. De hecho no utilizo ni una sola DLL
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #13  
Antiguo 18-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Cita:
Empezado por donald shimoda Ver Mensaje
Entonces funciona o no funciona? Me mareaste.
Puede funcionar, pero te va a dar problemas. Si no recuerdo mal, si no la registras manualmente, se registra automáticamente en la carpeta donde se encuentre durante su primera llamada (si está en el path).

Pero como después cambies la carpeta de la aplicación, o elimines esa aplicación y utilices otra aplicación que también necesite la Midas.dll, entonces la irá a buscar en la carpeta donde quedó registrada inicialmente, y como ya no la encontrará allí, el programa fallará incluso aunque la tengas en la misma carpeta de la nueva aplicación.

Además del conflicto de dll's que puedes tener, ya que no solo tus aplicaciones la van a usar, sino que tu cliente también se puede instalar otras aplicaciones que usan la Midas. Y como se va a enlazar con la librería que se encuentre en la carpeta de registro, es fácil de que otra aplicación instale una versión anticuada que haga fallar a la tuya.

En fin, haces bien en enlazarla estáticamente.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Error al usar mi aplicación en otra maquina este es :EDBEngineError ? Master23 Conexión con bases de datos 9 06-07-2010 03:52:08
mi proyecto en otra maquina Cañones Varios 4 06-08-2007 13:28:51
como ejecutar una aplicacion desde otra maquina valera API de Windows 5 18-05-2007 21:47:34
Cómo conectar un qry a una BD en otra maquina en una aplicación en Paradox con BDE? Anabel Conexión con bases de datos 1 20-07-2005 19:13:13
instalar aplicacion en otra maquina con delphi y firebird 1.5 ale21alito Firebird e Interbase 5 05-04-2005 16:03:23


La franja horaria es GMT +2. Ahora son las 21:56:05.


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