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

2votos

sugerencia java y mysql online

Buenas Nohes a todos.
quiero una sugerencia: tengo q hacer un programa en java que pueda ser usado en varias sucursarles, estaba pensando usar mysql cono bd, pero tengo un problema, demora en mostrar los datos cuando se hace la consulta.
no importa la velocidad siempre demora.
habra otra forma de relacionar los datos de las sucursales o interconectarlas?

0voto

Leonardo-Tadei comentado

Y mediste si la demora es en la conexión o en el tiempo que tarda la DB en responder?

Según dónde sea la demora hay diferentes soluciones posibles...

0voto

leog.1992 comentado

cuando hago una consulta desde el mysql workbrench al servidor me muestra los datos a una velocidad sorpredente. pero cuando las hago desde el propio sistema en java demora en cargar la ventana. y mostrar los datos.

0voto

Leonardo-Tadei comentado

Asumo por tu respuesta que estás probando con MySQL Workbench y tu aplicación Java en la misma PC, verdad?

De ser así, podrá ser que tu aplicación Java se esté conectando vía ODBC??? Si usás un conector nativo, cuál usás?

0voto

leog.1992 comentado

uso el jdbc 5. algo, ayer hice una prueba en MySQL WorkBrench con un select + inner join y demoro solo 0.83 segundos y en la aplicacion java 2 minutos.
Tenia dos consultas lo que hice fue hacerla una sola.
Ejem.

Statement st = con.conexion();
String query = "select a.columna, a.columna2, c.columna, d.columna, a.columna3 from Tabl1 as a inner join tabl2 as c on a.id=c.id inner join tabl3 as d on a.id=d.id order by a.columna"
ResultSet rs = con.consulta(st, query);
while (rs.next()) { 
 Object fila[] = new Object[5];
fila[0] = rs.getString("a.conlumna");
etc. etc.
try {
Statement st1 = con.conexion;
String ver_suma = "select sum (x * y) as sumap from Detalle_Tabl1 where id = '"+rs.getString("a.conlumna")+"'";
ResultSet rs1 = con.consulta(st1, ver_suma);
if (rs1.next(){
     fila[4] = rs1.getString("sumap");
}
} catch () {
}
}
// aqui demora 02 minutos

**lo uni por** 
Statement st = con.conexion();
String query = "select a.columna, a.columna2, c.columna, d.columna, a.columna3, sum(t.x * t.y) as sumap from Tabl1 as a inner join tabl2 as c on a.id=c.id inner join tabl3 as d on a.id=d.id inner join Detalle_Tbl1 as t on c.id=t.id group by a.id order by a.columna"
ResultSet rs = con.consulta(st, query);

se demoro solamente 06 seguntos en la aplicacion java

si se pudiera hacer algo mas rapido, sugerencias por favor.

NOTA: se hace la consulta a un hosting web de pago.

0voto

leog.1992 comentado

por favor alguien podria ayudarme, el proyecto trata de hacer un sistema de ventas a nivel nacional, conociendo desde cualquier local la cantidad de instrumentos de otro local, la base de datos esta en mysql y el codigo fuente en java.
como puedo usar hibernate, soap, rest, etc.
quiero mejorar el tiempo de respuesta de una consulta con java y mysql.

2 Respuestas

2votos

Leonardo-Tadei Puntos227320

Hola @leog.1992

por las pruebas que comentás y los tiempos de respuesta, lo que parece que te está pasando es que el driver JDBC (qué supongo usa ODBC más abajo) está usando una versión del protocolo distinta o simplemente tiene la lentitud ampliamente reconocida del ODBC.

MySQL Workbench funciona más rápido porque se conecta con una biblioteca nativa al servidor, con lo que se gana mucho en eficiencia.

Si cambiás el mecanismo de conexión de tu aplicación a uno nativo como Conector/J http://dev.mysql.com/downloads/connector/j/3.0.html o si hacés como dice @carlossevi un webservices para que las querys se resuelvan en el servidor y tu app solo dialogue con él vía SOAP o REST, ganarás mucha velocidad.

Saludos!

2votos

carlossevi Puntos63580

Yo veo varios enfoques para solucionar esa problemática.

Desde el punto de vista del desarrollador:

  1. Tener un único almacén de datos (MySQL en tu caso) y publicar servicios para lectura/escritura de ese almacén desde tus aplicaciones. No publicaría directamente la BBDD sino que implementaría algún servicio web que pueda ser consumido por tus aplicaciones.

  2. Tener varios almacenes de datos, uno en cada sucursal, y ver la forma en que se sincronicen y/o repliquen entre ellos. Es bastante complejo de administrar pero solucionaría problema de pérdida de conexión.

Desde el punto de vista del administrador de sistemas:

  1. Estudiar la forma de enlazar las sucursales mediante VPN para que conformen una única red virtual. De esa manera, todos los esquipos podrían comportarse como si se tratara de una única sucursal, aunque también sufrirás los problemas de la conexión.

0voto

leog.1992 comentado

Yo estoy optando por la primera opción tengo MySQL online desde un hosting, conecto mi aplicación a la base de datos. Pero cuando hago clic en ver compras digamos, demora en cargar el resultado del forma por lo menos 20 segundos.
Yo estoy usando java swing y MySQL.
Explicame un poco mas del servidor web y que corran las aplicaciones desde allí??

0voto

dairon comentado

Puedes hacer el servidor como menciona @carlossevi y hacerle llamadas por REST utilizando formato JSON que es muy como y compatible. Saludos Dairon

0voto

leog.1992 comentado

se puede hacer json y java, disculpen mi ignorancia, pero hasta ahorita no me sale ni el hibernate.

0voto

dairon comentado

@leog.1992 mira este link JSON in Java

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

Otras Preguntas y Respuestas


...

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

Conecta