Il caricamento di dati di testo sul server da SQLite è più veloce o file di testo?

0

La mia applicazione riceve molti dati ogni millisecondo (nome, id, valore, .. di un segnale da un dispositivo di simulazione). e dovrei caricare questi dati sul server MySQL. Per prima cosa ho bisogno di salvarli in un database e caricarli sul server tramite la rete GSM. La ragione per cui salvando i dati nel dispositivo mobile è che la connessione è così lenta e l'app riceve un numero piuttosto elevato di dati alla volta e non può caricarli contemporaneamente, inoltre potrebbe verificarsi un problema di disconnessione. In effetti, ho solo bisogno di una memoria temporanea e non voglio fare alcuna manipolazione dei dati in SQLite. Attualmente sto scrivendo i dati nel file di testo semplice (CSV) e poi caricare ogni 20 righe sul server usando coppie nome / valore in HttpPost Android, ma che dire di SQLite? È più veloce inserire i dati in SQLite e poi caricarli? Quale approccio è preferibile?

Ecco i dati di esempio che ricevo dal dispositivo del simulatore:

time,id,name,value
143125738713,id1,name1,8.000077
143125738714,id1,name1,8.000004
143125738714,id1,name1,8.000008
143125738715,id2,name2,0.0
143125738716,id2,name2,0.0
    
posta sara 11.05.2015 - 09:44
fonte

2 risposte

1

Per una risposta definitiva, si dovrebbe misurare, e sono sicuro che sarà possibile creare uno CSV writer mal implementato che è più lento di uno scrittore SQLite ben scritto.

Tuttavia, quando si tratta di scrivere record di dati sequenziali in un file, non c'è molto di fuori che può battere usando in un flusso di file semplice in velocità. Ogni ulteriore strato di astrazione su questo probabilmente rallenterà il tuo programma. Quindi non mi piacerebbe aspettare di scrivere su un file di testo più lento di scrivere su qualsiasi tipo di database, anche se è leggero come SQLlite, purché non ci siano "bug di prestazioni" nel programma .

Se la velocità è la tua preoccupazione principale e la connessione di rete è il collo di bottiglia, puoi prendere in considerazione l'applicazione di una sorta di compressione dei dati prima di inviare i file sulla linea e decomprimerla sul server prima di inserirla.

    
risposta data 11.05.2015 - 13:23
fonte
0

SQLite è fantastico ma è "non ottimizzato" per la velocità di inserimento (ma tieni presente che puoi eseguirlo in significativamente più veloce modalità "asincrona" che non protegge i tuoi dati se qualcosa va in crash - questo può essere accettabile per il tuo caso d'uso se non ti dispiace perdere alcuni di quei punti dati)

Farai meglio ad accodare a un filestream.

    
risposta data 11.05.2015 - 16:12
fonte

Leggi altre domande sui tag