MySQL - Consejo, ¿que hago? ¿Abrir y cerrar bd cada vez que accedo o siempre abierta?

 
Vista:
sin imagen de perfil

Consejo, ¿que hago? ¿Abrir y cerrar bd cada vez que accedo o siempre abierta?

Publicado por carlos (9 intervenciones) el 05/09/2014 21:44:45
Hola amigos.

Estoy haciendo un programa en Visual Basic.Net que se comunica con una base de datos remota MySQL que tengo en una página web. La aplicación es un punto de venta de accesorios de móviles. Cada vez que la dependienta vende un artículo, actualizo la base de datos restando 1 al Stock existente de ese artículo.

El programa en Visual Basic, al arrancar por las mañanas, abre la base de datos y lee el Stock que hay de cada artículo y lo indica para que la dependiente sepa cuanto stock queda de cada artículo. Y cada vez que un cliente entra al comercio y hace una compra, debo restar una unidad del Stock, entonces mi duda es como hacerlo:

1. Por la mañana a las 9 de la mañana abro la base de datos, me conecto y ¿la dejo todo el día abierta? De forma que cada que vez que haya una compra no tengo que volver a abrirla, solo hago un acceso con "Update" y resto "-1" del Stock de ese artículo.

2. Por la mañana abro la Base de Datos, leo el Stock y la cierro. En Visual Basic.Net hay una forma de traerte la base de datos en local y trabajar con sus datos sin estar conectado. Luego al final del día, cuando la dependienta vaya a cerrar el ordenador, justo antes me conecto de nuevo a la Base de Datos, hago un único "Update" y automáticamente se actualiza todos los movimientos que haya hecho durante el día.


¿Cuál sería la mejor forma? A mí me gusta más la primera porque así siempre tengo la Base de Datos actualizada pero,
¿Es incorrecto tener la base de datos todo el día conectada? ¿Puede haber algún problema? ¿algún punto negativo a esta opción?

¿Si elijo la segunda opción, que pasa si justo al final del día cuando voy a ir a actualizar mi Base de Datos, en ese momento me da un error o no puedo conectar...? ¿Pierdo todo?. Por otro lado con esta opción no hago continuos accesos a la Base de Datos, hago solo uno al final.

No sé como debería hacerlo, ¿alguien me puede aconsejar?

Muchas gracias por adelantado.
Un saludo,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Oscar

Consejo, ¿que hago? ¿Abrir y cerrar bd cada vez que accedo o siempre abierta?

Publicado por Oscar (9 intervenciones) el 07/09/2014 11:24:22
Puede haber movimientos del stock durante el día?? (reaprovisionamientos, bajas, etc)
Hay una única dependienta?

No hay ningún problema por tener la base de datos conectada todo el día y tener el stock online es lo más seguro. Dicho esto también cabe la posibilidad de que pierdas conexión por algún motivo y no puedas vender, todo depende de la fiabilidad del sistema.

Si quieres ir a lo seguro haz un sistema mixto, crea una copia en local de la BBDD y modifica ésta y la principal, si no puedes modificar la principal tendrás los datos en local para poder seguir trabajando (deberás almacenar las actualizaciones no ejecutadas) y cuando recuperes la conexión con la principal la actualizas.

Recuerda: (deberás almacenar las actualizaciones no ejecutadas) y no poner a nivel la bbdd principal con los datos de la copia en local ya que si ha habido alguna modificación en la principal por otro lado (entrada de stok p.e.) los perderías.

A menos que ese sea el único ordenador con acceso a modificar la BBDD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consejo, ¿que hago? ¿Abrir y cerrar bd cada vez que accedo o siempre abierta?

Publicado por carlos (9 intervenciones) el 07/09/2014 12:31:23
Hola Óscar, gracias por la contestación.

Mi idea es que la dependienta sepa en todo momento el Stock que hay y yo desde mi móvil (desde otro lugar) pueda acceder también a la Base de Datos para ver Stock y aprovisionar si es necesario. Desde 2 sitios distintos estaremos entrando a la BD. Yo desde móvil puedo modificar Stock si aprovisiono, y ella automáticamente irá quitando Stock con cada venta

¿Te refieres con el sistema mixto que debería tener una BD local y otra Remota? E ir actualizando las actualizaciones no ejecutadas en la principal. Entonces físicamente tengo 2 bases de datos ¿verdad? Esto no lo había contemplado, mi segunda opción era traerme lo datos de la BD remota en local y trabajar con ellos en memoria sin estar conectado. Y luego al final del día actualizar cambios. Aunque claro, ahora que lo pienso lo malo de esta opción mía es que si al final del día cuando la dependienta va a apagar el PC y se va a hacer la actualización de la principal no hay conexión o hay problemas... pierdo toda la info de ese día porque no hay base de datos local físicamente. Y si e PC se queda colgado y tengo que reiniciar? También pierdo datos sí.

Tengo que estudiar como se haría eso en Visual Basic.Net. Quizás hay algún método que te permite comparar 2 Bases de Datos y actualizar la remota con los cambios. Y otro método para saber si la actualización se hizo bien o no, para volverlo a intentar al día siguiente.

Os agradezco cualquier otro comentario para terminar de saber la forma mas segura.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar

Consejo, ¿que hago? ¿Abrir y cerrar bd cada vez que accedo o siempre abierta?

Publicado por Oscar (9 intervenciones) el 08/09/2014 09:28:32
Con un sistema de actualizaciones online sería suficiente, trabajando solo con la bbdd principal.

La opción de una segunda BBDD es para asegurar que la dependienta pueda trabajar aunque se caiga temporalmente la bbdd principal.

La idea es que al inicio del día (o por la noche) la bbdd principal se grabe entera en la bbdd local de la dependienta.
Durante el día el pc de la dependienta ira descontando en ambas bbdd cada compra o rotura baja etc...
Tu con tu movil trabajarias solo con la principal reaprovisionamientos etc..

En caso de que el pc de la dependienta pierda conexión con la bbdd principal ella actualizará la bbdd en local y almacenara las transacciones que no se hayan ejecutado sobre la bbdd principal. Luego en cuanto vuelva a tener conexión con la bbdd principal relanzara las transacciones encoladas.

Hay sistemas de bbdd preparados para trabajar de esta forma pero puedes programarlo tú para hacerlo con cualquier sistema de bbdd
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consejo, ¿que hago? ¿Abrir y cerrar bd cada vez que accedo o siempre abierta?

Publicado por carlos (9 intervenciones) el 08/09/2014 15:49:23
Gracias Oscar,

Si, así sería la forma más segura. Voy a mirar como hacer eso de las 2 bases de datos, ahora estoy bastante pez y no sé como hacerlo. Míraré si Visual Basic.Net tiene alguna herramientas que lo haga

Gracias por la solución
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar