Como puedo compartir una misma base o fichero de datos por internet?

Started by Coptroner, June 26, 2013, 05:46:32 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Coptroner

Hola de nuevo!

Estoy creando un sencillo programa de control de socios de una tienda de fotocopias y guardo todos los datos referentes a los socios en una Struct que a su vez se guarda en un archivo del disco.

La cuestión es que la empresa tiene 3 tiendas en 3 lugares diferentes de la ciudad y me han solicitado la posibilidad de poder usar el mismo programa en las 3 tiendas pero usando la misma base de datos.

Asi que mi cuestion es... ¿como puedo compartir la struct que contiene los datos de los socios para que desde cualquiera de las 3 tiendas se pueda trabajar con la misma base de datos? ???

Gracias majetes!


FreeYourMind

Eso es bennu ? menuda pinta.
Puedes hacerlo usando una base de datos en un servidor, tienes varias posibilidades, subir el fichero al servidor y usando las dll's de red, acceder a la misma, tambien creo que hay un modulo de sql por el foro, a lo mejor tambien permite usarlo en un servidor (realmente estoy olvidado jejeje, pero ahí esta el buscador, suerte)

Erkosone

La respuesta puede depender de tus opciones e infraestructura y al mismo tiempo del tipo de seguridad que quieras darle al sistema.


Tus opciones mas viables son:
- cURL.
- PlayNET.


Con cURL tienes estas opciones:
- Crear un formulario con base de datos online y acceder desde tu aplicación "la mas recomendada pero la que mas conocimientos requiere".
- Crear un servidor FTP en la nube y acceder a el desde tu aplicación, descargar la base de datos y trabajar con ella, una vez modificada hacer un PUT y volverla a subir al FTP. "simple pero el sistema de sincronismo de archivos entre clientes es bastante delicado".
- Crear un servidor TELNET en la nube, disponer de cualquiera de los motores existentes para bases de datos interactivas conocidos como "BBS" o similar y acceder desde tu aplicación a el.


Con PlayNET tienes:
- Crear un servidor dedicado que maneje la base de datos y de acceso a los clientes.




La mejor opción? La del formulario web con php y acceder a el mediante cURL.
La mas sencilla? PlayNET siempre y cuando sepas programar en red y tengas algún conocimiento sobre la PlayNET y sepas implementarle un sistema de CRC, de esto no se ha hablado por el foro pero para aplicaciones medianamente serias es necesario, es un sistema que detecta posibles datos corruptos y los rechaza mediante estadística básica.


La que yo te recomiendo?  FTP. Simplemente por que es sencillo trabajar con esto, y el sistema de sincronismo para varios usuarios es realmente sencillo de montar, te explico un ejemplo:


1 - Cada registro es un archivo en el ftp.
2 - Para cargar la base de datos al iniciar el programa simplemente conectas al ftp, descargas todo lo que tenga y desconectas, lo cargas en tu estructura del programa en local y listo.
2- Para añadir un registro creas un nuevo archivo y le añades la info del registro, conectas al servidor y lo subes.


los registros en el servidor pueden tener el formato:
000001.txt
000002.txt
000003.txt
etc..

Coptroner

Bastante interesante, si.

Lo que yo necesito es una opcion muy simple y es la de compartir el fichero "socios.gbd" subido a un FTP y el acceso solo es para los empleados que gestionan la base de socios.

Asi que seria tener el fichero en el FTP, leerlo o descargarlo al abrir el programa desde cualquiera de las 3 tiendas y subir al FTP el archivo cada vez que se modifique desde cualquiera de los 3 puntos... Lo que requiere un refresco del archivo cada vez que uno quiera actualizarlo para no chafar los datos que haya podido meter otra tienda entre un acceso y otro...

Creo que parece simple, si.

Ahora me queda ojear como se accede a un archivo alojado en un FTP para lectura/escritura del mismo.

Gracias ;)

Arcontus

Pues desde mi punto de vista, la idea que me he hecho de tu programa es que maneja datos privados y posiblemente puedan tener (o llegar a tener) datos sensibles. Para estos casos, lo que yo haría es crear una VPN entre las 3 sedes y destinar 1 nodo (servidor) con la BBDD a donde consultarían los distintos clientes del programa.
De esta manera aseguras privacidad y seguridad y no tienes que programarla tu.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

Coptroner

Quote from: Arcontus on June 28, 2013, 07:18:38 AM
Pues desde mi punto de vista, la idea que me he hecho de tu programa es que maneja datos privados y posiblemente puedan tener (o llegar a tener) datos sensibles. Para estos casos, lo que yo haría es crear una VPN entre las 3 sedes y destinar 1 nodo (servidor) con la BBDD a donde consultarían los distintos clientes del programa.
De esta manera aseguras privacidad y seguridad y no tienes que programarla tu.

Eso seria genial  :)

¿como implemento eso a mi aplicacion en Bennu?

PD:Bueno, los datos que se guardan son un nombre y un e-mail asociado a un numero para asignarle los puntos acumulados. No hay DNI, ni Dirección Postal, ni codigos PIN, ni otros datos personales sensibles...

FreeYourMind

En general si es una struct sl fsave ya los guarda en binario, tambien se puede encryprar los datos y salvarlos encriptados, o hasta crear un un zip protegido, etc

KeoH

Yo todo esto lo veo mas sencillo de hacer con Ruby on Rails sinceramente xDD. Habia una libreria de red no oficial creo .. q te podria servir para hacer peticiones a un servidor, y podrias controlar la respuesta .. aunq no tengo idea de como hacerlo pero en teoria se deberia de poder ... fsock puede que fuera la libreria?? no recuerdo

Erkosone

Si te creas la VPN entre las máquinas montar un servidor es muy sencillo, que es lo que necesitas? plantear como estructurar el servidor y los clientes? o esto ya lo tienes claro? para dejar un recurso dinámico en manos de varios usuarios has de programar una capa de eventos y una cola para los mismos, los clientes hacen peticiones al servidor y el servidor añade la petición a la cola, entonces simplemente si quedan eventos en la cola pues se ejecutan y ale.


En realidad es bastante simple, has usado la PlayNet alguna vez? si necesitas algún tutorial yo tengo un curso en vídeo sobre PlayNet en youtube.

gecko

Torres Baldi Studio
http://torresbaldi.com

Arcontus

Quote from: Coptroner on June 28, 2013, 04:19:19 PM
Quote from: Arcontus on June 28, 2013, 07:18:38 AM
Pues desde mi punto de vista, la idea que me he hecho de tu programa es que maneja datos privados y posiblemente puedan tener (o llegar a tener) datos sensibles. Para estos casos, lo que yo haría es crear una VPN entre las 3 sedes y destinar 1 nodo (servidor) con la BBDD a donde consultarían los distintos clientes del programa.
De esta manera aseguras privacidad y seguridad y no tienes que programarla tu.

Eso seria genial  :)

¿como implemento eso a mi aplicacion en Bennu?

PD:Bueno, los datos que se guardan son un nombre y un e-mail asociado a un numero para asignarle los puntos acumulados. No hay DNI, ni Dirección Postal, ni codigos PIN, ni otros datos personales sensibles...

Bueno la gracia de este método es que no tienes que implementar la VPN, ya que es un "standard". Necesitas algo que haga de terminador VPN que puede ser un router que tenga esa funcionalidad o un servidor accesible desde internet y una IP fija o un DYNDNS (dynamicDNS) aun que con IP dínamica todo es más artesanal. Y en el lado del cliente necesitas un cliente de VPN para que pueda conectarse.

Un saludo!
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

hardyx

Pedazo de interfaz que has hecho en Bennu para la aplicación. Te mereces una medalla. :D

Sobre la base de datos, la solución más sencilla sería una opción de actualización de la BBDD que recibiera el fichero actualizado de un servidor. Puede ser cualquiera de los tres pcs que haga de servidor. Por ejemplo, esto se podría hacer a diario al final o al principio de la jornada. El ordenador central (uno de lo tres) con el servidor recibiría los ficheros de los otros dos a diario también y añadiría los cambios a la base de datos central.

La otra opción sería montar una red entre las tres sedes y trabajar con el mismo fichero, pero puede dar problemas en el acceso simultáneo según la base de datos con la que se use. No sé las BBDD que se pueden usar en Bennu, pero si es un fichero sencillo de texto o binario vas a tener problemas si por ejemplo dos pcs están grabando datos en él. Para eso están las BBDD como MySQL, SQL Server, Oracle, etc, que gestionan el acceso concurrente y sus problemas. De ahí que te recomiende la primera solución como más sencilla.

P.D. Yo pondría el envío y recepción del fichero como una opción en el programa, porque con FTP si lo hacen manual pueden machacar datos válidos sin saberlo. De la otra manera puedes recorrer el fichero recibido buscando cambios y mezclarlos con los datos que haya en el servidor.

Erkosone

No sale mas a cuenta si una de las máquinas va a ser el servidor que directamente aloje la base de datos en una de ellas y se comuniquen entre si usando la PlayNet?
Todo sería en tiempo real, incluso las modificaciones ser harían centralizadas en el que haga de servidor.

Drumpi

Yo ando haciéndome una pequeña aplicación con su base de datos en java+MySQL, y hasta donde he leido, los datos se pueden guardar en un fichero (encriptado o no, y con cuentas de usuario), que incluso puede estar en una ubicación de red.

¿Qué quiero decir? Que lo puedes hacer sencillo en Java (con lo bueno que eso conlleva (port a android) y lo malo (pelearse con swing)), o que si la librería de MySQL que hay para Bennu tiene las mismas capacidades, puedes usar bennu con un fichero en red fácilmente, y símplemente le dejas el manejo de datos a la librería.

La verdad, no sé si es más sencillo hacer una interfaz gráfica con Swing o con Bennu :D :D :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)