Ciao a tutti,
mi trovo qui per via della leggendaria potenza di Perl in ambito di manipolazione di dati. Le mie conoscenze di Perl - in una scala che va da 0 a 10 - assumono un livello di... si, diciamo 0. Mi è stata proposta una sfida, che consiste nel caricare ~80 GB di dati in 60 minuti in un DB, ad una media quindi ~20 MB al secondo. Assumendo che i dati sorgenti necessitano di pulizia ed aggregazione, e che questo già di per se inibisce il raggiungimento dei livelli prestazionali sopra citati, devo comunque studiare il metodo più veloce per svolgere questo sporco lavoro.
Pensate alla situazione peggiore dei dati:
- Record con strutture differenti in uno stesso file
- Date prive dell'informazione sul secolo, espresse come DDMMYY
- Stringhe NULL valorizzare con sequenza di blanks
- Date NULL valorizzate con sequenza di zeri
- Cifre NULL valorizzate con sequenza di zeri
e avrete un'idea vaga di quello che mi aspetta. La pulizia che devo effettuare
- Separare i record in file diversi per struttura
- Dare per scontato che le date siano comprese tra l'anno 2000 e il 2099
- Indicare i valori NULL in modo cristiano
- Effettuare qualche tipo di aggregazione
consiste nel rendere digeribili i dati da una routine di caricamento che può essere la DB2 Load (per DB2) o la SQLLoader (per Oracle) - ancora non è stato deciso quale DB verrà utilizzato.
Mi ero messo a sviluppare un parser in Java, quando su più forum mi hanno consigliato di utilizzare Perl oppure Awk, che per questo tipo di lavori sono i più indicati.
1. Siete anche voi della stessa idea? (Perl > Java)
2. Esiste un qualche tutorial che mi permetta di capire quali sono le potenzialità di Perl nella manipolazione dei dati?
3. Perl (essendo un linguaggio di scripting) è un interpretato? Se si, quindi, è al 100% portabile? (da Windows ad AIX per esempio...)
4. Essendo un interpretato, non dovrebbe essere più lento di Java che può produrre semicompilati o compilati?
Grazie mille in anticipo per l'aiuto
Jo