PDA

Ver la Versión Completa : Consejos varios sobre como iniciar proyecto desde cero


julioccz84
25-09-2011, 04:38:26
Hola que tal compañeros de club delphi, antes que nada gracias por tomarse la molestia de entrar a este hilo y bueno a lo que vamos:

He programado en delphi desde hace algunos años aplicaciones de bases de datos sencillas, no me considero avanzado en la materia pero si conozco un poco y sobre todo este pequeño proyecto lo hago para recordar viejos tiempos, buscando aprender un poco mas, asi que las sugerencias son totalmente bienvenidas.

La idea es la siguiente: Necesito una aplicacion que pueda manejar gran cantidad de datos y sobre todo incrustar fotografias en la base de datos, por lo que la misma debera manejar gran cantidad de gb de informacion, estamos hablando que tan solo las fotografias que debera manejar son de un promedio de 5gb por mes, los demas datos son texto, algunas tablas vinculadas y poco mas sencillo. Ahora la cuestion es que debera haber varios puntos (por llamar de alguna manera a una especie de sucursal), donde habra conectadas al menos dos computadoras en cada punto, y se debe planear que pueda manejar por lo menos 5 puntos diferentes. No es necesario que un punto pueda ver la informacion de otro punto diferente, pero debera haber un punto "maestro" que debera poder revisar la informacion de todos los demas puntos aunque no es necesario que pueda modificar nada, solo leer la informacion.

Ahora bien, me gustaria que la separacion de "puntos" no se de por la ubicacion fisica de cada uno, sino que en cualquier computadora con la aplicacion instalada pueda loguearse cualquier usuario de cada punto y poder acceder a sus modulos de trabajo independientemente de la maquina que use o donde se encuentre ubicada.

---SOLUCIONES---
1.- Creo que deberia haber una sola base de datos centralizada en algun servidor donde todos los clientes se conecten, pero tengo la duda ¿la base de datos por si misma se encargara de prevenir posibles errores porque dos usuarios diferentes de un mismo punto se encuentren modificando el mismo registro de alguna tabla? Tengo pensado utilizar mysql, pero no me importaria si me recomiendan algo mas, como dije al inicio me interesa aprender cosas nuevas.

2.- De verdad la mejor solucion es delphi? o deberia ir pensando en algo en la nube? me agrada la idea de poder entrar a la aplicacion sin necesidad de instalar nada, pero tampoco me gustaria que si en algun punto no hay servicio de internet se quede el usuario sin poder acceder a la aplicacion, estuve leyendo y compilando algunas cosas sencillas con unigui como posible alternativa pero de nuevo, agradeceria sus comentarios.

3.- Despues del punto 2 se va al traste el punto 1, de verdad que es mejor? apliacion instalable para usarla manejando una base de datos distribuida o algo como unigui para que se pueda manejar desde mi querido firefox y una sola base de datos, que me recomiendan?


--------

Esto es lo que he pensado en el momento, entre mas pienso mas dudas me vienen a la mente, agradeceria si me puden indicar el rumbo correcto porque la verdad me siento perdido entre tantas formas de abordar el mismo problema para encontrar la solucion.

Antes de que lo piensen, esta aplicacion no es con fines comerciales ni mucho menos, hace tiempo hice la sugerencia en la empresa donde trabajo de implementar algo asi, pero el departamento de sistemas no lo considera viable asi que he decidido poco a poco realizarlo por mi mismo como dije con fines educativos, he pensado entrar y pedirles su apoyo, aunque me tome tiempo lo hare y me comprometo a ir haciendo crecer el hilo con las soluciones que vaya tomando para resolver a futuros desorientados como yo.


Desde ya muchas gracias por cualquier aporte que puedan hacer...

mamcx
25-09-2011, 19:56:29
Es la aplicacion privada o publica?

Una opcion es usar un API de un servicio de fotos. Este es el que tengo entendido el mejor (es comercial, tiene buen api, bue servicio, Probablemente lo voy usar en una aplicacion que arranco pronto si el servicio de iCloud de Apple no me da ciertas caracterisiticas que necesito).

http://www.smugmug.com/


La ventaja de ir por este camino es que te ahorras mucho tiempo de desarrollo, tienes las fotos en un servidor aparte que se responsabiliza por ellas y tu aplicacion opera sobre el. Se paga una mensualidad pero creo que lo vale.

Un factor que debes tener en cuenta es que debes analizar si quieres o no cargar con la responsabilidad de administrar servidores, darles seguridad, backups y todo eso o si puedes o no confiar con que el cliente lo haga por medio de un tercero.

Hacerlo nativo o no depende de muchas cosas. La gracia de ser nativo es que todo puede ser mas fluido, rapido, dinamico, etc. Tambien que puedes seguir con lo que ya sabes.

El que este en delhi no es enemigo de que el servidor sea un servidor web. El protocolo HTTP es universal, y es muy normal ahora (y se ha popularizado con las aplicaciones para el iPhone) tener un cliente nativo que se alimenta por HTTP.

La gracia de ser web es la accesibilidad global. Solo luego de pensar como es la experiencia del usuario final y estimar como quedara satisfecho podras ver que es mejor. No es cuestion de tecnologia, sino de satisfaccion y expectativa para el usuario.

De hecho, estoy por arrancar un proyecto para el iPad y tambien para la web , de un catalogo de productos multimedia. Es una aplicacion doble, con interfaze doble porque luego de hablar con el cliente se vio que habia dos tipos de usuarios con necesidades diferentes y que solo iPad o solo Web no bastaba para darle la mejor interace.

Asi que hare un servicio web centralizado del cual se alimentan ambas.

julioccz84
26-09-2011, 03:54:52
Que tal mamcx gracias por contestar, en cuanto al servidor habia pensado que corriera en una vps, mas que nada por que como mencione habia pensado inicialmente en unigui y como uno de los requisitos es que corra bajo un servidor con windows...

De la base de datos en si es lo que mas me intriga, la verdad me llama la atencion crear mas la aplicacion pero no tengo experiencia la verdad en este tipo de diseños, me gustaria trabajar con mysql pero de ser necesario usaria sql por su servidor y como en lo personal no se si funcione mediante http pues crear incluso una vpn, y asi dotar incluso de mayor seguridad al programa.

Pero volviendo a la aplicacion corriendo sobre un navegador web, la verdad el hecho de poder acceder desde cualquier lugar atrae tambien mucho mi atencion, solo que algunos de los "puntos" tienen conexion a internet mediante 3g mas que nada por la ubicacion y la verdad es que para estar transfiriendo esa gran cantidad de datos pagina tras pagina web...

Como veras son grandes mis dudas, que me aconsejarias mas? incluso habia pensado en una base de datos para la informacion mas "liviana" y una base de datos local para cada "punto" para guardar los elementos pesados que serian las fotografias, pero incluso pensando a futuro en video. Lo de el costo por la api de algun servicio de fotos no me limita creo yo, pero como dije algunos de estos puntos se conectan mediante 3g y eso si seria una limitante.

Sobre si la aplicacion es publica o privada no entiendo bien a que te refieres, es sobre liberar el codigo? eso lo pienso hacer aqui mismo si puedo desarrollarlo. Sobre todo hay algo sobre lo que nunca he trabajado y tambien me gustaria experimentar aunque suene a loca idea: gps y google maps, como dije pienso hacerlo aunque sea lento, no hay prisa. He manejado delphi pero tambien me llama la atencion pasar a .net, creo que lo que mas me gustaria seria desarrollar bajo delphi y despues comenzar a experimentar lo mismo con otros lenguajes.


Saludos y gracias por el comentario

Osorio
27-09-2011, 01:00:48
Yo estoy pensando en algo parecido pero a menor escala ya que es un negocio pequeño trabajaría sobre una red LAN. (Aunque mi cliente tiene tiendas en otras poblaciones y tal vez algun dia quiera internet, no sé).

Por ahora no me parece buena idea tener las imagenes dentro de la base de datos ya que esta creceria mucho.

Se me ocurre guardar solo la ruta de la imagen en la bd (una cadena de texto) y las imagenes en una unidad virtual tipo TrueCrypt. Asi estan todas contenidas dentro de un archivo al que le puedo hacer copia de seguridad facilmente.

Solo son ideas, realmente no he empezado el proyecto...

mamcx
27-09-2011, 18:43:10
Puedes ver muchas preguntas y respuestas sobre el tema en:

http://stackoverflow.com/search?q=database+photos

Basicamente, la recomendacion general es las imagenes fuera de la BD y usar un campo que solo guarda la ruta.


Casi cualquier motor de datos te va a servir. Ya que MySql tiene sus lios ultimamente seria bueno que mires Postgress y/o firebird.

D-MO
27-09-2011, 18:48:50
...Basicamente, la recomendacion general es las imagenes fuera de la BD y usar un campo que solo guarda la ruta....
Completamente de acuerdo, sea cual sea el motor de base de datos, mi recomendación también es guardar solo la ruta.

juan1987
27-09-2011, 19:57:19
Completamente de acuerdo, sea cual sea el motor de base de datos, mi recomendación también es guardar solo la ruta.

Totalmente de acuerdo.

julioccz84
27-09-2011, 23:16:22
Que tal, gracias a todos por comentar. Pues he estado instalando varias cosas en mi computadora para comenzar a experimentar siguiendo sobre todos sus consejos, espero este fin de semana poder subir aqui mis primeros progresos y sobre que me decidi y porque.
En especial los dificil seran las imagenes, ya que como ustedes mismos comentan lo ideal es no meterlas a la base de datos pero la cuestion es que toda la informacion que se alimente en un dia debera ser revisada o supervisada en otra oficina ubicada en otra ciudad, por lo que complica bastante las cosas.
He estado pensando alguien sabe como realizar una redimension de imagenes? personalmente en windows XP utilizaba el Image Resizer, y no se, se me ocurre de pronto insertar imagenes en la base de datos pero si pudiera redimencionarlas automaticamente y mover los archivos originales a una carpeta del disco duro, asi tendria las imagenes en alta resolucion en local pero cualquiera podria acceder a una version ligera desde otra computadora, que opinan? alguien sabe algo de eso?

mamcx
27-09-2011, 23:23:50
Pues tenes muchas dudas, y es mejor hacer un hilo por cada tema...

Casimiro Notevi
27-09-2011, 23:30:22
Por lo que he leído, pienso que lo que mejor te viene es una web donde todos puedan acceder y donde esté la base de datos.
Las imágenes puedes almacenarlas en sitios como flickr (por dar un nombre) y otros, que además te guardan distintos tamaños de cada foto que subes.
Haces un backup cada x tiempo, por si acaso. Y te despreocupas de guardar tú las fotos en la BD o en un directorio.
Lee este enlace (http://www.clubdelphi.com/foros/showthread.php?t=67677), por si acaso te sirve de algo.