Consulta teorica MySql

Consulta teorica MySql

Postby JoseAlvarez » Fri Dec 09, 2022 5:22 pm

Saludos a todos.

Mi consulta en esta oportunidad trata de lo siguiente:
La persona que me enseñó a usar MySql en la Nube (ya fallecida lamentablemente) me sugirió usar la técnica de CONECTAR-HACER-DESCONECTAR , es decir, conectarme a la base de datos en la nube, actualizar las tablas que deba actualizar y cerrar la conexión hasta la próxima vez que se necesite.

De esta manera, el sistema conecta y desconecta infinitas veces durante cada sesión por parte del usuario. No he tenido problemas con esta forma de trabajar. Funciona perfecto. Pero…

Para ahorrar código y tomando en cuenta lo que leo aquí en el foro, estoy adoptando en un sistema nuevo que estoy desarrollando, la modalidad de hacer una sola conexión al inicio y desconectar al salir.

Se que en servidores locales no hay problema, pero en la nube es otra cosa, ya que por lo menos en el servicio que tengo contratado, el tiempo máximo de inactividad para operaciones en bases de datos es de 30 segundos, y el tiempo máximo de conexión continua de un usuario MySql es de 20 minutos.

Creé un (01) solo usuario mysql para acceder las bases de datos, ese mismo usuario lo usa la configuración de todas las licencias de mi software, es decir, que si tengo 20 clientes, el software internamente entra con el mismo usuario (para evitarme crear 1 usuario mysql por cada licencia) .

Probando la modalidad de usar solo una conexión y dejarla “viva” me encuentro que debo hacer un ping a la base de datos cada 25 seg para evitar la desconexion por parte del servidor por inactividad.

En fin, la pregunta es: ¿se puede trabajar asi sin problemas con el administrador de sesiones de los servidores en la nube? ¿Qué pasa si se tienen varias conexiones con el mismo usuario permanentemente abiertas?
Le puse un timer que cierra el sistema a los 15 minutos de inactividad. Con eso me evito varias conexiones simultaneas con el usuario mysql, pero en el caso de que no ocurra ninguna inactividad?

Tambien he leído que el numero máximo de conexiones simultaneas de un usuario es de 28. Eso podria arreglarse creando mas usuarios, pero lo que me preocupa es que el servidor desconecte mi aplicación cuando el mismo usuario supere los 20 minutos conectado por parte de varias propietarios de licencia.

Espero haberme explicado bien.

Gracias adelantadas por sus orientaciones.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Consulta teorica MySql

Postby Antonio Linares » Sat Dec 10, 2022 3:57 pm

Estimado José,

Mira lo que te responde chatGPT: https://chat.openai.com/chat :-)
Entiendo que estás preguntando sobre las mejores prácticas para la conexión y desconexión de una base de datos en la nube. La respuesta a esta pregunta dependerá en gran medida del proveedor de servicios en la nube que estés utilizando, así como de la configuración de la base de datos en cuestión.

En general, es recomendable evitar mantener una conexión a una base de datos abierta de manera permanente, ya que esto puede consumir recursos innecesarios en el servidor y en la aplicación cliente. En su lugar, es mejor conectar a la base de datos solo cuando se necesite, realizar las operaciones necesarias y luego cerrar la conexión. Esto se conoce como la técnica de "CONECTAR-HACER-DESCONECTAR" y es la forma en que se suele trabajar con bases de datos en la nube.

Si deseas mantener una conexión abierta de manera permanente, es importante tener en cuenta que esto puede causar problemas si el servidor en la nube desconecta tu aplicación después de un cierto tiempo de inactividad. En este caso, es posible que necesites implementar un mecanismo para "ping" la base de datos periódicamente para evitar que se desconecte. Sin embargo, esto puede ser una solución ineficiente y no es recomendable si se puede evitar.

En cuanto al número máximo de conexiones simultáneas que puede tener un usuario, esto también dependerá del proveedor de servicios en la nube y de la configuración de la base de datos. En general, es posible que puedas aumentar el número de conexiones simultáneas creando múltiples usuarios en la base de datos, pero es importante tener en cuenta que esto puede consumir más recursos en el servidor y puede aumentar el costo del servicio.

En resumen, la mejor práctica para trabajar con bases de datos en la nube es utilizar la técnica de "CONECTAR-HACER-DESCONECTAR" y evitar mantener una conexión abierta de manera permanente. Si necesitas mantener una conexión abierta, debes tener en cuenta las limitaciones impuestas por el proveedor de servicios en la nube y asegurarte de que tu aplicación no se desconecte debido a la inactividad.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Consulta teorica MySql

Postby JoseAlvarez » Sat Dec 10, 2022 5:09 pm

Saludos MASTER Linares,

gracias por la atención a mi pregunta.

Ciertamente, tenia rázon nuestro colega y amigo Giancarlo Sabattino (q.e.p.d.) quien fue la persona que me enseñó ese método.

Lo mantendré, ya que queda confirmado que es la mejor manera.

Agradecido, un abrazo.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Consulta teorica MySql

Postby JoseAlvarez » Sat Dec 10, 2022 5:12 pm

este "sr" de chatGPT se las trae !
increible la AI :D
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 108 guests