Ho un'applicazione web che ho sviluppato per un piccolo gruppo all'interno della mia azienda negli ultimi anni, utilizzando Pipeline Pilot (oltre a jQuery e Python scripting) per lo sviluppo web e il calcolo back-end, e Oracle 10g per il mio RDBMS. Gli utenti caricano i dati genomici sperimentali, che vengono analizzati in un database e resi disponibili per l'interrogazione, la trasformazione e il reporting.
I set di dati sperimentali sono grandi e hanno molti livelli di metadati. Un determinato record di dati sperimentali potrebbe avere una relazione di chiave esterna con una tabella che descrive il dosaggio di questo punto di dati. I test possono riguardare più geni, che possono avere più trascritti, che possono avere più mutazioni, che possono influenzare più vie di segnalazione, ecc. Gli utenti devono avvicinarsi a questi dati da qualsiasi punto in quei livelli nei metadati. Poiché tutti i set di dati per un determinato tipo di dati possono essere eseguiti su un miliardo di righe, ciò comporta alcune query dinamiche di grandi dimensioni difficili da prevedere.
Nuovi set di dati vengono aggiunti su base settimanale (~ 1 GB per set). I dati sperimentali non vengono mai aggiornati, ma i metadati associati possono essere aggiornati settimanalmente per alcuni record e annualmente per la maggior parte degli altri. Per ogni set di dati inserito dal sistema, verranno eseguiti da 10 a 100 selezioni e dati associati. Va bene se gli aggiornamenti e gli inserimenti sono lenti, a condizione che le query vengano eseguite rapidamente e siano quanto più aggiornate possibile.
L'applicazione continua a crescere in dimensioni e portata e sta già iniziando a funzionare più lentamente di quanto mi piaccia. Sono preoccupato per il fatto che abbiamo circa Pipeline Pilot troppo cresciuto, e forse Oracle (come unico database). Un database NoSQL o un sistema OLAP sarebbe appropriato qui? Quali framework di applicazioni web funzionano bene con sistemi come questo? Mi piacerebbe che la soluzione fosse qualcosa di scalabile, trasportabile e portabile X-years lungo la strada.
Ecco lo stato attuale dell'applicazione:
- Server Web / elaborazione dati: Pipeline Pilot su Windows Server + IIS
- Database: Oracle 10g, ~ 1 TB di dati, ~ 180 tabelle con più miliardi di tabelle di righe
- Archiviazione di rete: Isilon, ~ 50 TB di dati grezzi con priorità bassa