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 16-04-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo pienses como lo pienses, está claro que del BDE tienes que olvidarte, yo los probé en 1998 y me dije "esto no sirve para algo serio", así que imagínate hoy en día, 21 años después.
Responder Con Cita
  #2  
Antiguo 16-04-2019
Javierus Javierus is offline
Miembro
 
Registrado: jun 2017
Posts: 88
Poder: 7
Javierus Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Lo pienses como lo pienses, está claro que del BDE tienes que olvidarte, yo los probé en 1998 y me dije "esto no sirve para algo serio", así que imagínate hoy en día, 21 años después.
Sí, quiero cambiar a otra BD y quizás a Río, y por eso me planteo cambiar primero a Río y luego a SQL

Gracias de todos modos
Responder Con Cita
  #3  
Antiguo 17-04-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Creo que estas tomando una medida DEMASIADO conservadora. Hacer un upgrade por pasos esta bien y en general es recomendado. Pero en este caso, es una perdida total de tiempo. Un exceso de cautela!

En especial, migrar un driver de acceso a BD es de lo mas trivial que hay, máxime en Delphi donde hay una interface que todos siguen...

Hay muchas otras opciones que te permiten acceder a formatos de BD viejos, como ADO o ODBC.

----

No te digo esto por ser denso. Yo trabajo, concurrentemente, con sqlite, postgresql, mysql, SQL Server, oracle, firebird formatos de bd a base de texto inventados a "como sea". Y ademas, todo esto desde Delphi, .NET, Python, Swift, y próximamente rust. No podría contar el numero de drivers y APIs que he manejado, ADEMAS de los que hago personalmente.

Osea: Yo migro y paso todo el tiempo. Aun si es tu primera vez, no debería tomarte mas que unos cuantos días y eso, solo pensando en falta de experiencia.

En resumen: Deja BDE atras sin miedo. Hasta te diría que pasarse a Firebird (mas poder) o Sqlite (mas simple) conjuntamente no te suma gran cosa. Pasa datos a texto, rehaces estructura y carga datos. Haciendo a PELO eso toma horas. Con herramientas??? segundos.
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 17-04-2019
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.474
Poder: 21
newtron Va camino a la fama
Hola a tod@s.


Estando de acuerdo en que el BDE es "caca" y hay que quitarselo de encima lo antes posible también creo que, dependiendo del código del programa, el cambio a un motor de base de datos SQL puede ser bastante laborioso.


Lo digo porque las operaciones manejando tablas son distintas a las que se hacen con instrucciones SQL, p.e.:


no es lo mismo:



Código Delphi [-]
Tabla.edit;
Tabla.fieldbyname('CAMPO').AsString:='EJEMPLO';
Tabla.Post;


que:


Código Delphi [-]
...UPDATE TABLA
...SET CAMPO='EJEMPLO' WHERE...;


a no ser que consigas unos componentes para la base de datos que decidas usar que te permitan cierta compatibilidad con el código que manejes la migración puede ser bastante dura.


Yo ya pasé por esto y fue un tema complicado porque la primera intención era migrar a firebird y me encontré con ese problema, que alrededor del 40% del código que tenía no me servía. Encontré un componente que simulaba el "ttable" para firebird pero, una vez hecha la migración, me di cuenta de que lo que hacía realmente era un "SELECT * FROM..." cada vez que abría una tabla y al probarlo con cierta cantidad de datos se hacía inviable.


Igual hay alguna forma que desconozco pero no le vi una solución razonable a este tema y al final acabé por migrar a ElevateDB que si que tiene componentes "ttable" nativos y me servía casi todo el código que tenía para BDE.


Por otro lado comentarte que yo he estado usando BDE con Delphi 2007 sin grandes problemas, no sé si con 2010 será igual pero imagino que si.



Saludos
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 17-04-2019
Javierus Javierus is offline
Miembro
 
Registrado: jun 2017
Posts: 88
Poder: 7
Javierus Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Estando de acuerdo en que el BDE es "caca" y hay que quitarselo de encima lo antes posible también creo que, dependiendo del código del programa, el cambio a un motor de base de datos SQL puede ser bastante laborioso.
Lo digo porque las operaciones manejando tablas son distintas a las que se hacen con instrucciones SQL
Cita:
Empezado por newtron Ver Mensaje
al final acabé por migrar a ElevateDB que si que tiene componentes "ttable" nativos y me servía casi todo el código que tenía para BDE.
Eso es lo que necesito.
¿¿¿No recordarás con qué tipo de problemas te encontraste??? Eso me ayudaría muchísimo


Cita:
Empezado por newtron Ver Mensaje
Por otro lado comentarte que yo he estado usando BDE con Delphi 2007 sin grandes problemas
En esa situación estoy yo en este momento: terminando la migración a 2007, con un puñado de clientes ya trabajando sólo con esa versión, mientras el resto están aún con Delphi 5

Lo que no he indicado es que mi empresa tiene exclusivamente 1 aplicación, que nos da de comer desde hace 30 años (Turbo Pascal->Borland Pascal->Delphi 3->Delphi 5->Delphi 2007), y se desarrolla en ella todos los días, por lo que no se puede hacer una "parada técnica" de, p.ej., un mes
Responder Con Cita
  #6  
Antiguo 17-04-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Javierus, por lo que conozco de tu caso, te diría que no le tengas miedo a cambiar a Firebird+IBX, por ejemplo, ya que pasando a SQL estarías abierto a usar otros en cualquer momento que decidas cambiar.
Conozco también el caso del compañero newtron y no es que sea mala su elección, es bastante buena (salvo que no es software libre y no se tiene acceso al fuente), pero son elecciones tomadas por diversos motivos en momentos determinados y también influenciados por motivos externos como clientes que se deben continuar asistiendo, continuidad con el código, etc.
El tema de las "TTable" es fácilmente solucionable limitando los registros cuando se conectan a ellas a ninguno o a un número determinado. Está el código fuente del mismo, por lo que no hay problema, se cambia el predeterminado "select * from tabla" por "select * from tabla limit 1" o "select * from tabla where codigo=0", etc.

De todas formas, tomes la solución que sea, aquí estaremos para intentar ayudarte.

Y, obviamente, es necesario desarrollar los cambios sin tocar lo que está funcionando, para poder seguir asistiendo a tus clientes, así que sería una "nueva rama" (o copia/pega ) del proyecto, donde irías haciendo los cambios, para no tocar "el original". Y si se toca algo, eso se pasa al nuevo también.
Responder Con Cita
  #7  
Antiguo 17-04-2019
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.474
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Javierus Ver Mensaje
Eso es lo que necesito.
¿¿¿No recordarás con qué tipo de problemas te encontraste??? Eso me ayudaría muchísimo

Ya lo he comentado. El principal problema es que el código del programa estaba diseñado para trabajar con objetos Ttable y ese código no funciona con bases de datos SQL. Me hice de unos componentes "Ttable" para firebird (no recuerdo el nombre) que eran totalmente compatibles con el código que tenía pero cuando hacía el "open" de la tabla para después poder operar con ella lo que internamente realmente hacía es un "SELECT * FROM..." para cargarla en memoria y después poder hacer "findkey", "edit", etc... y eso se volvía totalmente inoperativo con tablas grandes tuviendo que desechar esa vía.


Mi consejo es que si quieres conservar el código migrando a una base de datos SQL eches un vistazo a la web de ElevateDB que te puede resolver el problema, no lo vas a hacer en un "pispas" pero es factible y te permitirá migrar a una base de datos bastante robusta y cambiando el código fuente lo mínimo. Si es cierto que tiene un coste pero, a mi forma de entender, asumible para las contrapartidas que da.



Cualquier duda me comentas.


Saludos

Edito: Se me olvidaba comentar que el costo que tiene esta base de datos no es por cada instalación de la misma, lo que se pagan son los componentes que instalas en tu Delphi siendo gratuita la instalación en los clientes del motor de base de datos.
__________________
Be water my friend.

Última edición por newtron fecha: 17-04-2019 a las 14:03:01.
Responder Con Cita
  #8  
Antiguo 17-04-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Puede que tenga la memoria desactualizada, pero el problema de la velocidad con ttables no era tan desastroso:

http://edn.embarcadero.com/article/27790

En el caso de ADO, es posible optimizar muy fácilmente la cosa. Como te digo, he usado tantos motores y lenguajes, que no veo como puedes realmente estar en un problema que haga que valga la pena seguir con BDE.

En general, si usas una solución y optienes un desempeño ABISMAL, entonces algo esta faltando. Yo use mucho ADO en Delphi y no recuerdo haber tenido problemas de desempeño. Hay algunos parámetros que hay que setear para que el componente funcione al estilo TTable...

Pero no tengo Delphi a la mano pa chequear...
__________________
El malabarista.
Responder Con Cita
  #9  
Antiguo 17-04-2019
Javierus Javierus is offline
Miembro
 
Registrado: jun 2017
Posts: 88
Poder: 7
Javierus Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Creo que estas tomando una medida DEMASIADO conservadora
migrar un driver de acceso a BD es de lo mas trivial que hay, máxime en Delphi donde hay una interface que todos siguen...
Gracias por tu aporte; pero no me parece trivial: no se usa ni una sola Query en todo el código; todo se basa en descendientes de TTable, por lo que el Locate es el estándar, y para operar sobre un subconjunto de datos, el SetRange o el FindNearest con un bucle por condición.

He probado con dos o tres conjuntos de componentes que sustituyen el TTable por una versión propia, y los resultados han sido desalentadores: desde el peaor (que la aplicación se parase un ratazo al abrir un formulario), hasta el mejor (que la aplicación fuese 10 veces más lenta)

Modificar todo el código de golpe no es una opción: Actualmente funciona, no tiene errores y tiene buen rendimiento. Cuanto más modifiques de golpe, más errores incorporarás.

Así que tengo que migrar a un conjunto de componentes que me permita mantener el paradigma de funcionamiento de TTable, y después de eso ir adaptando datamodule a datamodule
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi Community Edition WHILENOTEOF Noticias 92 26-03-2024 17:31:02
Delphi Community Edition Bootcamp WHILENOTEOF Noticias 4 31-08-2018 22:22:16
Resurgimiento Delphi (Community) Componentes brakaman Varios 2 23-07-2018 19:43:59
Consulta sobre Delphi XE10 o Delphi 10 Seattle Edition rmendoza83 Varios 1 11-12-2016 06:44:14
Delphi 7 second edition Willo Varios 6 22-05-2007 00:55:24


La franja horaria es GMT +2. Ahora son las 16:09:29.


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