Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cual es la mejor forma de conectar mi aplicacion a la nube (https://www.clubdelphi.com/foros/showthread.php?t=94296)

darkbits 08-11-2019 14:02:57

cual es la mejor forma de conectar mi aplicacion a la nube
 
un saludo al club

tengo una aplicacion que funciona bien de escritorio a MySql por LAN me pidieron llevar la DB a la WAN o NUBE como le llaman ahora.
ahi comienza mis problemas tarda en extraer modificar o se cuelga la aplicación.
no debe ser la forma correcta de conectarme o hacer las sql.

por favor si alguien puede enviarme un ejemplo de como trabajar con DB en la nube de la forma correcta porque no tengo la mínima idea lo único que quiero es ver la conexion hacer un select o modificar y de ahi yo le continuo.

mamcx 08-11-2019 15:08:01

Hacer una conexión por red local o a la nube es la MISMA COSA. Ambas usan el mismo protocolo (TCP/IP). Mientras requiere mas cuidado el exponer la BD en un servidor de internet, tampoco es descabellado de hacer y los RDBMS tienen todos los medios para hacerlo de forma segura* (junto con un firewall al frente de la BD).

Si tienes problemas de desempeño es porque tenias ese problema desde siempre. Solo que al poner la BD "mas lejos" se hace mas evidente. Como resolverlo es lo mismo:
  • Revisa que tu arquitectura/lógica sea correcta
  • Solo transfiere los datos mínimos necesarios
  • Intenta agrupar multiples pasos ("batchs") en vez de mandar muy poquito muy seguido
  • Haz mediciones de desempeño para saber donde, verdaderamente, tienes los problemas y los corriges
  • Implementa monitoreo (minimo: Logging)

Todo esto? Es EXACTAMENTE lo que se hace en una app "en la nube" de una u otra forma. Hay quienes creen que es obligatorio de hacer todo un traspaso a protocolos REST, JSON, y todo eso. La realidad es que eso hace todo mas lento que una conexión directa (obviamente!) y se debe hacer por otras buenas razones, pero no hay NADA que diga que TIENES QUE. Solo si tus requerimientos lo ameritan.

P.D 1*: Los RDBMS modernos admiten conexiones cifradas y tienen controles de seguridad que son muy desaprovechados...
P.D 2: Un problema puede surgir si usas tecnología obsoleta, como tablas paradox, o componentes/software nada óptimos, pero eso es tangencial...

darkbits 08-11-2019 15:31:05

estoy trabajando con una base de datos de MariaDB y en Delphi estoy utilizando FireDac y UniDac de trabajar llega a trabajar solo quiero mejorar el tiempo de respuesta.

vi una aplicación delphi que extrae 2000 lineas en un grid en 5 segundos. el mio tarda mas de 1 minuto o mas o se cuelga.
entonces dije debe haber alguna forma de mejorarlo

gatosoft 08-11-2019 15:54:19

Tiene que ser asi, como dice mamcx tu servidor está mas lejos y ahora influyen mas variables...

Auqnue mamcx dice que no es necesario pensar en servicios, creo que eso se lo que debes ir haciendo, "poner tu aplicación en la nube con Delphi", no es solo poner mas lejos el servidor de datos, es un cambio de paradigma y arquitectura...

Uno de los grandes problemasque tiene delphi es que nos hace dependientes de los datatsets y sus eventos, la facilidad de hacer un CRUD con insert, edit, delete... y con esto se nos hace mas facil aun mezclar la logica del negocio con la GUI... el problema viene cuando tenemos que separar estos elementos para llevarlos a servidores distintos.

Una opción relativamente sencilla es implementar paginación en tus programas... una consulta puede traer 2000 registros pero tu le das al usuario la opción de revisarlos por grupos (de a 10 o 20), filtrarlos o hacer una busqueda específica.

Saludo,

Casimiro Notevi 08-11-2019 16:54:17

Cita:

Empezado por darkbits (Mensaje 534362)
estoy trabajando con una base de datos de MariaDB y en Delphi estoy utilizando FireDac y UniDac de trabajar llega a trabajar solo quiero mejorar el tiempo de respuesta.
vi una aplicación delphi que extrae 2000 lineas en un grid en 5 segundos. el mio tarda mas de 1 minuto o mas o se cuelga.
entonces dije debe haber alguna forma de mejorarlo

También he usado en algún proyecto esos controladores con esa base de datos y funcionaba normal, no había diferencia con una local.
De primera hora se tuvo en cuenta no hacer burradas como traerse todos los registros para que el usuaro escoja uno, ni hacer select *, etc.
Así que cuando lo conectamos a un BD en un hosting externo, iba igual que con el servidor local.

mamcx 08-11-2019 17:16:36

Cita:

Empezado por darkbits (Mensaje 534362)
vi una aplicación delphi que extrae 2000 lineas en un grid en 5 segundos.

2000 lineas no me parece mucho. Hay algo mas que influye pa que se tarde un minuto.

Nota: Uno puede hacer un calculo somero muy simple: Mira que tan rapida es la tasa de transferencia de la conexion de internet, y eso es lo que puedes transferir en un solo "golpe" de forma eficiente. Comprimiendo puedes pasar aun mas datos.

IVAND 09-11-2019 22:51:44

Companero mamcx

Haz mediciones de desempeño para saber donde, verdaderamente, tienes los problemas y los corriges
Implementa monitoreo (minimo: Logging)

me podrias explicar como puedo aplicar estas 2 rexomendaciones para revisar mi aplicacion en delphi y firebird

Gracias por tu tiempo

IVAND 10-11-2019 02:08:26

Si eres tan amable disculpa si el msm anterior sonaba un poco grosero muchas gracias

mamcx 10-11-2019 02:09:39

Usa un componente de logging como https://github.com/danieleteti/loggerpro.

Con respecto a las mediciones, la mas simple es poner timers alrededor de donde parece lento. O usas los logs (que te muestran la fecha/hora) para derivar esa info.

La forma sofisticada es un profiler:

https://stackoverflow.com/questions/...rofiling-tools

orodriguezca 12-11-2019 19:49:24

¿y si utilizas un cliente MariaDB o similar para hacer el Select a tu base de datos en la nube también demora 1 minuto?. Si al utilizar un cliente también toma bastante tiempo entonces el problema no es la aplicación sino el servidor o la base de datos. Es posible que falten indices o que el servidor donde se está ejecutando la base de datos está subdimensionado.


La franja horaria es GMT +2. Ahora son las 01:24:37.

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