Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: NextByte en 24 Abril 2019, 04:38 am



Título: Implementación de una base de datos en un programa local.
Publicado por: NextByte en 24 Abril 2019, 04:38 am
Buenas a todos, estoy empezando con bases de datos y he comenzando a crear un sistema pequeño que me permita crear un tipo agenda-directorio por usuarios con su respectivo login etc... Mi planteamiento es primero hacerlo totalmente local, es decir, solo quiero que la cuenta y toda su información sea utilizada dentro de la computadora donde fue creada. Hasta el momento no he visto mucho sobre como se implementan las bases de datos en los programas cotidianos , solo he visto sobre consultas,tablas,etc... Mi principal duda es si en este tipo de programas vale la pena cada vez que agrego/elimino/actualizo un dato de un contacto/cita/etc... ¿ debo hacer la consulta respectiva a la base de datos inmediatamente? o se suele tener un objeto en memoria dinamica que es aquel que se carga al principio del inicio de sesión con una consulta a la bases de datos y que es el que recibe todas las modificaciones para finalmente al final de la sesión o cada cierto periodo tiempo actualiza los datos mediante una consulta a la base de datos. Imagino que si el programa estuviera emergido en un sistema distribuido estaría obligado a manejar mas detalles y todo cambio hacerlo directamente a la base de datos pero en este tipo de programas que suele hacer?. Intuyó que utilizar siempre consultas es un gasto de recursos innecesario pero tal vez no estoy viendo algún detalle importante.

En el caso que por lo general se trabaje con objetos en memoria para los cambios entonces cual seria la mejor forma de por ejemplo verificar que elementos fueron borrados.. yo tendria mi estructura de datos de los datos que tiene el usuario al final de su sesión pero que suele hacer para saber que datos pudieron haber sido eliminado? ,simplemente deberia tener por ejemplo un array que me guarde los id de aquellos elementos que fueron eliminados para al final de la sesión saber que debo eliminarlos?.Supongo que la parte de que se modifico/anadio un nuevo objeto/registro tambien deberia ser analizada con respecto a la esctuctura de datos que tengo verificando al final de la sesión si un dato ya se encuentra en la base de datos.. En dado caso ver si se modifico durante la sesion o en caso de que el elemento no se encuentre en la base de datos hacer un insert


Título: Re: Implementación de una base de datos en un programa local.
Publicado por: srWhiteSkull en 24 Abril 2019, 13:09 pm
Depende, cual es la magnitud? Son millones de registros? Cada cuanto tiempo rondan las operaciones? Pues en base a un previo estudio de las necesidades del programa usarás esto o aquello, desde el sencillo CSV en texto plano, pasando por Access, DB2 basada en XML, motores SQL, etc..


Título: Re: Implementación de una base de datos en un programa local.
Publicado por: NextByte en 24 Abril 2019, 17:29 pm
Planteando que en esta aplicación es de uso personal y no creo que sea necesario más de 1,000 consultas por usuario en una sesión se recomendaría hacer todo directamente a la base de datos? O hacer uso de objetos que me creen un tipo buffet que guarda los datos durante la sesión y los sube finalmente a la base de datos al final de la sesión. Al menos en este programa no sé si llegue a tener alguna ventaja el hacer las consultas  directamente a las bases de datos debido a que el programa es local y nunca va tenerte problemas de concurrencia. El gestor que utilizo es MySQL pero más que nada estoy desarrollando el programa con fines de aprendizaje que como algo como formal pero sin embargo me interesa ir pensando en cómo se implementa todo esto de forma correcta


Título: Re: Implementación de una base de datos en un programa local.
Publicado por: srWhiteSkull en 24 Abril 2019, 19:25 pm
Bueno, el caso es que puedes probar implementarlo mediante CSV si no es muy ambiciosa, y por otro lado si usas programación orientada a objetos crearte una clase, que si en un futuro se desea implementar otro tipo de base de datos pues simplemente te pones a ello.

Aplicación -> Clase DATOS -> Clase CSV, Clase MySQL, Clase Access

Yo lo haría así. Pero si hay algo escrito en el manual del buen programador no lo se.

Suerte.