entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

-Consulta sobre mysql y javaee

Hola, antes que nada quiero aclarar que mas que pregunta es una especie de consulta.

Actualmente desarrollo una aplicación web con la tecnología de JavaEE (debo decir que soy nuevo) y me he topado con un requerimiento que le dado vueltas y no lo he podido resolver...

El problema es que estoy realizando un app que depende de una base de datos el cual es consultada desde la matriz de la empresa y la aplicación se desplegara en las sucursales (Sera app desktop), pero el problema que si se cae la red, no podrá consultar datos y se quiere evitar eso tratando de poner un servidor local (Base de datos) el cual esta disponible para la app desktop. Sin embargo, en la matriz quieren tener concentrado estos datos, es decir que si cambio un valor en la base de datos matriz, se refleje en las sucursales. Lo que se intenta es que si se cae la red, la aplicación no deje de funcionar (No se si me explico)

  • He pensado en hacer las transacciones en la sucursal y en la noche automático haga una copia de seguridad diferencial (No se si MySQL tenga soporte) y agregarlo a la bd matriz, y luego de tener de todas las sucursales, regresarles a las sucursales el conjunto de diferenciales... Demasiado complicado..
    • También he pensado tener un servidor master y los pequeños servidores de base de datos de las sucursales sea replicas, la app desktop usa la replica local y asi.. [(Tampoco se si MySQL tenga soporte, pero en la escuela recuerdo que si) ¿se puede?]

Entiendo que mas que problemática de software, es de hardware y de infraestructura y se compensa con 2 o mas proveedores de red sin embargo estoy en una empresa que esta iniciando por lo que no hay mucho presupuesto...

Utilizo JPA - Hibernate, (No se si puede ayudar en algo..)

1 Respuesta

2votos

Leonardo-Tadei Puntos207790

Hola @ItIsJAPO,

tal y como decís, es un problema más de infraestructura que de software. Te podrías apañar con alguna sincronización por software o cosas similares, pero la mejor solución, porque es transparente al software, es tener varios servidores MySQL con esquema master-slave, con tantos esclavos como sucursales tengas.

Te dejo un enlace sobre cómo se implementa esto: https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql

Lo que sí tenés que tener en cuenta desde el software es plantear el almacenamiento para que sea multisucursal. De otra manera podrás pisar los datos de una tabla con las transacciones generadas en distintas sucursales. En otras palabras, que cada registro tenga su indentificar de sucursal para evitar que se pisen.

MySQL no es un servidor que requera demasiados recursos, sobre todo para el nivel de consultas que deberías tener desde solo una sucursal, por lo que se podría poner en el equipo en dónde correría tu aplicación local para la sucursal, para no agregar costos de infraestructura.

Saludos cordiales!

ItIsJAPO comentado Ago 20, 2016

Me gusta tu respuesta y te agradezco por responder, ya por último y seleccionar como respuesta tengo estas dudas:
En la aplicación desktop de la sucursal se comunicará con la base de datos local (incluyendo escritura) tomando en cuenta que se copiará a la bd master o como funciona?

Leonardo-Tadei comentado Ago 21, 2016

Sí, la aplicación de cada sucursal se conecta al servidor local.

Luego, el mecanismo de sincronización master-slave de MySQL es el que se encarga de mover los datos y funciona para escenarios en que la conexión no es permanente, ya que sincroniza por ráfagas y solo cuando la conexión esté disponible.

Saludos cordiales!

ItIsJAPO comentado Ago 21, 2016

Hola, he investigado sobre "replication mysql master slave" y hace énfasis que no es bidirecional pero que hay dos opciones una es master to master y la otra que es cluster que es mas de lo que necesito... Conviene hacer master a todos para tener una sicronizacion trasparente o si es posible con el modelo master to slave sincronizar lo que hace el slave al manster.. Saludos

Leonardo-Tadei comentado Ago 21, 2016

Para el escenario que describís, yo creo que lo que más te conviene es un master-slave.

La cuestión es que si tuvieras por ejemplo una aplicación web, esta debería conectarse también a su propio slave, es decir, nadie tiene que usar directamente el master. Así cumplís con la premisa de "en la matriz quieren tener concentrado estos datos".

Los datos se concentran ahí, pero nadie debe escribir datos nuevos en el master.

Un esquema master-master haría que en todos los servidores tengan la misma información, incluso la que ellos no han generado, pero el tráfico de datos requerido se dispara exponencialmente con cada nodo conectado... esto te serviría para pocas sucursales en un ambiente en dónde estás asumiendo que se cortará la conexión periódicamente.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta