Foros del Web » Programación para mayores de 30 ;) » .NET »

Actualizar, eliminar solo los cambios en BD Mysql y C#

Estas en el tema de Actualizar, eliminar solo los cambios en BD Mysql y C# en el foro de .NET en Foros del Web. Hola, Soy novato en c#, pido perdon y paciencia por si no se explicarme con los terminos correctos, aprendo a base de cabezazos. estoy con ...
  #1 (permalink)  
Antiguo 07/07/2016, 18:29
Avatar de raid_  
Fecha de Ingreso: diciembre-2010
Mensajes: 132
Antigüedad: 13 años, 4 meses
Puntos: 12
Actualizar, eliminar solo los cambios en BD Mysql y C#

Hola,
Soy novato en c#, pido perdon y paciencia por si no se explicarme con los terminos correctos, aprendo a base de cabezazos.

estoy con una aplicacion cliente / servidor, (un juego simple, para perderle el miedo a este lenguaje) el guardado a la base de datos lo realizo cada 2 minutos, y actualmente el guardado es completo, borra todo y lo vuelve a guardar, no seria problema si fueran pocos datos los que tengo que guardar, pero cuando son muchos, no da tiempo a terminar un guardado, cuando ya esta empezando el siguiente. y es hay donde tengo el problema.

pongo un ejemplo de lo que hago

Tengo un list
Código C:
Ver original
  1. lista [0]
  2.              par1
  3.              par2
  4.              par3
  5.              ..........
  6.              SubLista [0]
  7.                                par1
  8.                                par2
  9.                                par3
  10.                                ..........
  11.                            [1]
  12.                                par1
  13.                                par2
  14.                                par3
  15.                                ..........
  16.                           [2]
  17.                                par1
  18.                                par2
  19.                                par3
  20.                                ..........
  21.  
  22.         [1]
  23.              par1
  24.              par2
  25.              par3
  26.              ..........
  27.              SubLista [0]
  28.                                par1
  29.                                par2
  30.                                par3
  31.                                ..........
  32.                            [1]
  33.                                par1
  34.                                par2
  35.                                par3
  36.                                ..........
  37.                           [2]
  38.                                par1
  39.                                par2
  40.                                par3
  41.                                ..........

Los recorro con un bucle for, Borro los datos de Lista[0] en la BD y luego los inserto. ese proceso lo voy realizando segun va recorriendo el bucle, no borro la Bd completa, para no eliminar datos de cuentas que no esten conectadas. espero se entienda.

Como esta ahora mismo es una burrada, en las pruebas mas brutas que he realizado se pueden llegar a guardar 4000 raw con 30 columnas, eso en una tabla, y utilizo bastantes tablas.

¿como puedo guardar solo los cambios? necesitaria hacer insert, update y delete pero solo en lo necesario, no en todo.

Habia pensado crear una view en Mysql y que hay realizara las consultas, ¿pero si las tablas son muy grandes no ocupara mucha memoria?

Y la verdad es que no tengo ni idea de como hacerlo, y tampoco soy capaz de sacar una logica en el proceso que me convenza.

Agradeceria cualquier ayuda, algun ejemplo, nombre que reciba este tipo de procesos para poder buscar informacion, una logica que pueda seguir, algo, cualquier cosa que me ayude a salir de este embrollo que me he metido.

Gracias por dedicarme su tiempo.
  #2 (permalink)  
Antiguo 08/07/2016, 16:32
Avatar de Namiwis  
Fecha de Ingreso: mayo-2013
Ubicación: Crustaceo Cascarudo
Mensajes: 162
Antigüedad: 10 años, 11 meses
Puntos: 10
Respuesta: Actualizar, eliminar solo los cambios en BD Mysql y C#

Hola raid_

Podrías explicar un poco mejor que intentas hacer? osea cual es la idea???? (no te la vamos a robar).. solo para darnos una idea, de si el camino es el correcto o existe algo mas optimo.

Saludos
__________________
http://binarysuns.com.mx/
  #3 (permalink)  
Antiguo 08/07/2016, 18:03
Avatar de raid_  
Fecha de Ingreso: diciembre-2010
Mensajes: 132
Antigüedad: 13 años, 4 meses
Puntos: 12
Respuesta: Actualizar, eliminar solo los cambios en BD Mysql y C#

Ni mucho menos pienso en que me roben la idea, mas que nada porque no estoy inventando nada nuevo, solo pretendo aprender, crei que asi se entenderia mejor.

La idea es crear un juego multiplayer, como tantos que hay, un usuario se crea una cuenta, con los datos del usuario, y algunas opciones como creditos, oro, un almacen asociado a la cuenta, dentro de la cuenta creara un pj, que tendra su nombre, su almacen independiente de la cuenta, equipo, etc, los item que coja tambien podran tener stats que se podran mejorar independientemente de la configuracion inial que tenga ese item, si un iten da 5 de fuerza, se podra mejora y cnseguir 8 de fuera, por ejmplo, pero esa mejora solo seria para ese objeto de ese char.
Para todo eso he creado un list donde estan las cuentas, dentro de las cuenta tiene varios list, para personajes y para los iten del almacen general, dento de los personajes otro list, donde estaran los peronajes, con sus opciones y sus list de almacen.

Basicamente, tengo un list, dentro de un list, dentro de un list, de varios niveles

Esto es lo basico, y donde realmente tengo los problemas.

Los datos de la cuenta no suelen cambiar, exepto oro creditos, y almacen,
con los pj si hay mas cambio, cambia la posicion en el mapa, los item, el nivel, etc

Pero el pj no cambiara todos sus objetos del almacen todo el tiempo,, o abra pj que se queden sin hacer nada, por lo que no necesitaran actualizar nada.

Si jugamos mi primo y yo, (que con total seguridad es lo que ocurrira) no hay problema, pero que ocurriria si por ejemplo tuviera 10000 cuentas, y 200 usuarios activos, como manejo esa cantidad de datos? no puedo borrar y volver a guardar a esos 200 usuarios, tengo que actualizar solo lo que sea necesario, y sin que afecte al rendimiento.

El caso que te pongo de ejmplo nunca se dara, pero quiero aprender como gestinar eso, ya sean 200 usuarios, 20, 2 o los que sean, quiero aprender ha realizar esa gestion de datos de la manera optima

gracias
  #4 (permalink)  
Antiguo 08/07/2016, 20:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Actualizar, eliminar solo los cambios en BD Mysql y C#

Te has creado un modelo relacional para el almacenamiento de tus caracteres, items, puntos, oro, etc ???, porque no creo que se tarde tanto salvar esa información. Si es un ambiente web, esa información la puedes enviar y recibir en formato JSON y es muy liviano.
Piénsatelo de esta manera:
- El usuario (bajo el rol de un caracter), obtiene un item nuevo, lo agrega a su bolsa (un simple insert en el momento de obtener el item).
- el usuario (bajo el rol de un caracter) obtiene una actualización para un item de los de su staff, un simple update en el momento de alcanzar la mejora. Es posible que tengas que realizar algunos updates como una única operación, pero imagínate que cambiarías para el id del item 25 en tu staff, la columna poder de 7 par 8 como nuevo valor; eso no es nada.
- N usuarios (con sus caracteres), se enfrentan en una pelea descomunal, imagínate la mantanza y la degradación de sus armas y el aumento en la experincia de algunos de los caracteres y todo lo demás que se te ocurra; básicamente, define operaciones concretas, y en el momento de su realiación actualiza los registros asociados.
  #5 (permalink)  
Antiguo 08/07/2016, 21:13
Avatar de raid_  
Fecha de Ingreso: diciembre-2010
Mensajes: 132
Antigüedad: 13 años, 4 meses
Puntos: 12
Respuesta: Actualizar, eliminar solo los cambios en BD Mysql y C#

Gracias por la respuesta.

No afectaria eso al rendimiento?
200 personajes realizando acciones simultaneas con su respectiva llamada la la DB.
  #6 (permalink)  
Antiguo 09/07/2016, 16:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Actualizar, eliminar solo los cambios en BD Mysql y C#

Se trata de un SGBD, no de humanos sumando con un ábaco.

Etiquetas: bd, cambios, dato, form, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:04.