Domanda

Ho un certo numero di piuttosto file binario di grandi dimensioni (record di lunghezza fissa, il layout dei quali è descritto in un altro - testo - file). I file di dati possono ottenere grande come 6 GB. file di layout (quaderni COBOL) sono di piccole dimensioni, di solito meno di 5 KB.

Tutti i file di dati sono concentrate in un server GNU / Linux (anche se sono stati generati in un mainframe).

Ho bisogno di fornire i tester con i mezzi per modificare tali file binari. C'è un prodotto gratuito chiamato RecordEdit ( http://record-editor.sourceforge.net/ ) , ma ha due gravi inconvenienti:

  1. E 'costringe i tester per scaricare i file di grandi dimensioni tramite SFTP, solo per caricarle nuovamente ogni volta una leggera il cambiamento è stato fatto. Molto inefficiente.

  2. Si carica l'intero file nella memoria di lavoro, rendendo inutile per tutti, ma relativamente piccola i file di dati.

Quello che ho in mente è un'architettura client / server basato su Java:

  • Il server sarebbe in esecuzione un permanente elaborare, ascoltando richieste edizione orientata provenienti da il cliente. Tali richieste sarebbero includere cose come

    • restituisce la lista dei file disponibili

    • Blocco determinato file per l'edizione

    • modificare questi dati in quel record

    • riportare il n-esimo pagina di record

    e così via ...

  • Il cliente potrebbe assumere qualsiasi forma (RCP-based in un desktop -che è il mio primo candidate-, ncurses nella stessa server, un web centrale applicazione ...) fintanto che è in grado di inviare richieste al server.

Ho esplorato NIO (a causa dei suoi buffer) e Mina (a causa di trasparenza protocollo) al fine di attuare il programma. Tuttavia, prima di ogni ulteriore avanzamento di questo sforzo, vorrei raccogliere i pareri di esperti.

è mio un modo ragionevole per inquadrare il problema?

E 'fattibile a farlo utilizzando la lingua e quadri sto pensando? E 'conveniente?

Sei a conoscenza di eventuali modelli, stampe blu, casi di successo o progetti aperti che assomigliano o hanno a che fare con quello che sto cercando di fare?

È stato utile?

Soluzione

  

è mio un modo ragionevole per inquadrare il problema?

IMO, sì.

  

E 'fattibile a farlo utilizzando la lingua e quadri sto pensando?

Credo di sì. Ma ci sono altre alternative. Ad esempio:

  • Mettere i record in un database, e l'accesso da una chiave costituita da un nome di file un numero record +. Potrebbe essere un RDBMS completo, o una soluzione più leggera.

  • Implementare un servizio Web RESTful con un'interfaccia utente implementato in HTML + JavaScript.

  • Implementare utilizzando un file system scalabile distribuita.

Inoltre, dalla tua descrizione non sembra essere un pressante bisogno di utilizzare un trasporto / strato altamente scalabile indipendente ... a meno che non hai bisogno di centinaia di supporto di utenti simultanei.

  

E 'conveniente?

Comodo per chi? Se si sta parlando di te lo sviluppatore, dipende se sei già familiarità con tali quadri.

Altri suggerimenti

Come la vedo io, la cosa difficile qui sta decodificando i file sul server. Una volta che hai scritto che, dovrebbe essere abbastanza facile.

I suggerirebbe che, qualunque sia la cosa che si usa sul lato client è, dovrebbe fondamentalmente Carica 'diff' di cambiamenti della persona.

Potrebbe dare un senso di fare qualcosa che si comporta come un database (o utilizzare un database esistente) per questi dati? O c'è semplicemente troppo gran parte di essa?

A seconda di quante persone hanno bisogno di fare questo, la soluzione rapida-and-dirty è quello di eseguire il programma tramite l'inoltro X - che elimina un numero di problemi .. fintanto che server ha un bel po 'di RAM gratuito.

Hai pensato di usare un file system distribuito come OpenAFS ? Questo dovrebbe essere in grado di gestire file di grandi dimensioni. Quindi è possibile scrivere un'applicazione sul lato client per la modifica dei file come se fossero locali.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top