michele.c93 ha scritto:
In questa applicazione un utente deve poter caricare dei file su un server e ad ogni accesso,accedendo a questi file deve poter effettuare delle analisi che andrò a salvare in un database,che risiederà ovviamente su un server esterno.
Vediamo innanzitutto di chiarire il contesto: si tratterebbe di una applicazione "desktop" o di una
web application (fruibile solitamente e principalmente dai browser)? Mi parrebbe più la seconda.
Se anche fosse una applicazione desktop e tu volessi salvare qualcosa su un host remoto, ci dovrebbe comunque essere una controparte server, cioè una applicazione lato server, non necessariamente Java.
michele.c93 ha scritto:
1) Potrei salvare questo file(.wav o mp3) nel database e quindi effettuare upload e dowload dello stesso direttamente dal database?
2) Oppure potrei salvare nel database solamente i dati delle analisi e salvare il file in una cartella sul server?
I DBMS relazionali offrono solitamente un tipo di dato definito "BLOB" per salvare uno stream di byte arbitrario. La dimensione massima dello stream dipende dalla variante del BLOB e dal DBMS ma può raggiungere anche i 4 GByte se non di più.
Quindi sì, tecnicamente è possibile salvare un file arbitrario in un campo di una tabella. Bisognerebbe però vedere bene di quali file si tratta, di quanti sono, quale lunghezza e soprattutto quanto è frequente doverli accedere e/o modificare.
Generalmente si tende a NON salvare interi file su un database ma di tenerli sul file-system. In pratica la tua opzione 2). Sia per motivi di performance, sia per praticità (se un file è sul file-system, lo puoi vedere, leggere, copiare, backuppare ecc..; se invece è su una tabella è meno facile).
michele.c93 ha scritto:
3) Nel caso 2 è possibile in java accedere a una cartella del server esterno e scrivere,leggere file su/da questa cartella i vari file?
Tutto dipende di nuovo dal contesto e da
cosa si intende per "server". Un server HTTP? Su HTTP, non essendo un file-system, non si "scrive" nulla, si fanno delle request ad un url, che possono essere gestite da una applicazione server-side (in PHP, Perl, .NET, Java ecc...) che poi farà quello che vuole sul file-system
locale del server (o comunque qualcosa sulla sua rete locale).
Se fosse un server FTP, chiaramente è più orientato al trasferimento di file ma di norma non si espongono server FTP in modo arbitrario e usabili da chiunque ... tantomeno su internet.