Utilizzo della finestra mobile come RAM temporanea

1

Scenario : sto progettando un sistema in cui l'utente carica un file di dati strutturato con dimensioni ~ 0-5 GB. Devo permettere all'utente di analizzare questo file ed eseguire alcune trasformazioni sul file che essenzialmente significano l'esecuzione di funzioni che estraggono le informazioni da questo file e / o cambiano struttura / dati nel file. L'utente può eseguire queste operazioni in qualsiasi ordine il maggior numero di volte possibile. Per cominciare sto valutando se è possibile dare all'utente un'esperienza in tempo reale (eccellente come) nel senso che le azioni stanno accadendo istantaneamente.

Opzione 1 : una semplice opzione consiste nel memorizzare questi dati in un database e convertire le azioni degli utenti in query ed eseguirle contro il database. Ha diversi problemi (1) alcune operazioni non saranno direttamente disponibili nel database (2) I / O costo per operazioni db (3) per operazioni non-db, dovranno portare i dati in memoria, eseguire operazioni, riscrivere . Tutto ciò rimuoverà l'esperienza utente istantanea che sto prendendo di mira.

Opzione 2 : esiste un database in memoria, ad es. memsql, vale la pena considerare in questo caso? L'idea è che tutti i dati siano in memoria e le operazioni sarebbero molto più veloci. Il rovescio della medaglia è che avrò bisogno di un'enorme memoria, se ci sono anche 5-10 clienti puoi immaginare i requisiti di RAM.

Opzione 3 e Domanda : non ho molta esperienza con i docker ma seguo il percorso che vale la pena esplorare: non appena inizia una sessione utente, creo un container mobile (su alcuni IAAS gestiti) con abbastanza RAM e porta i dati dell'utente nella RAM del contenitore. Tutte le operazioni dell'utente avvengono nella RAM (tramite codice) e una volta che l'utente si disconnette, scaricare i dati nel datastore. ha senso? Il tempo di spawn della docker è abbastanza piccolo per un caso come questo?

    
posta Haris Hasan 16.09.2017 - 14:12
fonte

1 risposta

-2

Quello che puoi usare è AWS Lambda. Ciò ti consente di eseguire il codice senza pensare ai server. Paghi solo il tempo di elaborazione che consumi. Questi ragazzi hanno fatto un buon lavoro semplificando la simulazione dell'ambiente Lambda utilizzando Docker, dai un'occhiata a link . Sono supportate diverse lingue di runtime.

Alcune persone hanno dimostrato che è possibile eseguire container Docker su AWS Lambda → link .

Hai citato un file ovunque tra 0 e 5 GB. Lambda supporta fino a (appena sotto) 3 Gbs. Controlla la documentazione sui progetti per la dimensione del file. Non l'ho provato personalmente sui miei dati.

Dai un'occhiata ai due progetti per test e considerazioni sui prodotti.

    
risposta data 30.12.2017 - 17:30
fonte

Leggi altre domande sui tag