Ich muss eine Offline-Anwendung mit folgenden Funktionalitäten entwickeln:
Meine Fragen:
Absolut. Während alle Datenbanken eine Art Volltextsuche ermöglichen, ist dies Ihr Hauptmerkmal (soweit ich es verstanden habe), also sollten Sie das Beste der Rasse verwenden. Gute Erfahrungen habe ich mit ElasticSearch und elasticsearch-mapper-attachments gemacht .
Was den Backend-Speicher betrifft: Der Elasticsearch-mongodb-river unterstützt Anhänge, die im GridFS von MongoDB gespeichert sind.
Ich verstehe Sie hier nicht, da Sie zuerst schreiben, dass Sie eine Offline-Anwendung entwickeln müssen, und dann nach einem Web-MVC fragen. Ich gebe Ihnen einige Notizen für beide.
Im Allgemeinen würde ich ein 3-Tier-Server-Backend vorschlagen, wobei MongoDB Tier 3, ElasticSearch in Tier 2 und eine REST/XMLRPC/SOAP-API als Frontend aufbaut, wodurch Sie diesen Dienst aus einer Vielzahl von Anwendungen nutzen können. Nicht, dass Sie hier eine Authentifizierung und Autorisierung implementieren sollten. Um dies in einer angemessen schnellen Zeit zum Laufen zu bringen, würde ich Spring Data ElasticSearch zusammen mit spring-security verwenden. Zusammen mit Spring Data REST sollte Ihnen dies ermöglichen, dieses Setup ziemlich schnell durchzuführen, vorausgesetzt, Sie haben etwas Erfahrung mit Spring.
Nachdem Sie dies eingerichtet haben, können Sie entweder eine Webanwendung erstellen, die API-Aufrufe für Ihre Such-API ausführt, oder eine Art Swing-Anwendung erstellen, die dieselbe verwendet. Oder beide bauen. Was die Webanwendung betrifft, hängt es von Ihren funktionalen und nicht-funktionalen Anforderungen ab, die ich einfach nicht kenne – und dies kann nicht einfach beantwortet werden und erfordert normalerweise eine ausführliche Analyse. Darauf gibt es keine „one-size-fits-all“-Antwort.
Was die zu verwendende Technologie betrifft: Da die Such-API für eine Web-Fronted in Java entwickelt wurde, würde ich dabei bleiben. Wenn Sie meinen Vorschlägen mit der Such-API gefolgt sind: Bleiben Sie bei den gleichen Tools, verwenden Sie Spring Web-MVC oder Spring Boot. Eine Alternative könnte je nach Ihren Fähigkeiten eine Node-Anwendung sein. Der Vorteil, die eigentliche Suche von der Anwendung zu entkoppeln, ist, dass Sie im Grunde alles auswählen können, was Sie wollen: Django, Rails, Sails, was auch immer.
Hadoop ist per Definition vernetzt. Ich verstehe einfach nicht wirklich, was Sie mit dieser Frage meinen, aber ich denke, sie ist mit dem oben Gesagten beantwortet.
unoder
Naou
unoder