Tengo que desarrollar una aplicación offline con las siguientes funcionalidades:
Mis preguntas:
Absolutamente. Si bien todas las bases de datos permiten algún tipo de búsqueda de texto completo, es su característica clave (hasta donde yo la tengo), por lo que debe usar la mejor de su clase. He tenido buenas experiencias con ElasticSearch y elasticsearch -mapper-attachments .
En cuanto al almacenamiento de back-end: elasticsearch-mongodb-river admite archivos adjuntos almacenados en GridFS de MongoDB.
No te entiendo aquí, ya que primero escribes que tienes que desarrollar una aplicación offline y luego pides un Web-MVC. Te daré algunas notas para ambos.
En general, sugeriría un backend de servidor de 3 niveles, con MongoDB construyendo el nivel 3, ElasticSearch en el nivel 2 y una API REST/XMLRPC/SOAP construyendo el frontend, lo que le permite usar este servicio desde una variedad de aplicaciones. No es que deba implementar alguna autenticación y autorización aquí. Para poner esto en funcionamiento en un tiempo razonablemente rápido, usaría Spring Data ElasticSearch junto con Spring-Security. Junto con Spring Data REST, esto debería permitirle realizar esta configuración bastante rápido, siempre que tenga algo de experiencia con Spring.
Una vez que haya configurado esto, puede crear una aplicación web que realice llamadas API en su API de búsqueda o crear algún tipo de aplicación Swing, que utilice lo mismo. O construir ambos. En cuanto a la aplicación web, depende de sus requisitos funcionales y no funcionales, que simplemente no sé, y esto no se puede responder fácilmente y, por lo general, requiere un análisis extenso. No hay una respuesta "única para todos" a eso.
En cuanto a la tecnología a usar: para una web, ya que la API de búsqueda está desarrollada en Java, me quedaría con ella. Si siguió mis sugerencias con la API de búsqueda: use las mismas herramientas, use Spring Web-MVC o Spring Boot. Una alternativa podría ser una aplicación Node, según sus habilidades. La ventaja de desacoplar la búsqueda real de la aplicación es que básicamente puedes elegir lo que quieras: Django, Rails, Sails, lo que sea.
Hadoop está, por definición, en red. Simplemente no entiendo lo que quiere decir con esta pregunta, pero creo que se responde con lo anterior.
unor
naou
unor