2012-04-03 13 views
5

Sto cercando di importare grandi quantità di dati (flusso Twitter a circa 20-25 tweet al secondo) in RavenDB per test e test di dati su larga scala. Ho qualche codice che sta scrivendo i dati abbastanza bene, ma dopo un po 'ho un errore:utilizzando RavenDB per inserimenti Bulk di dati

Error while trying to add lots of data to RavenDB

non voglio compilare tutto il codice, ma qui è l'essenza di esso:

Open RavenDB Session 
Start reading data from Twitter Stream 
For each line, parse JSON into known C# object 
add item to RavenDB 
increment counter 
if counter % 25 = 0, save changes to RavenDB. 

Non ho provato quello che ha suggerito, perché dice di guardare modi diversi per farlo. Dovrei uccidere la mia sessione ogni 200 circa? C'è un modo per inserire una matrice di oggetti con Raven DB? Sto sbagliando tutto questo?

+0

Puoi mostrare il tuo codice dove "aggiungi elementi a RavenDB?" –

+0

E 'davvero solo session.store (item) ... Non avere il codice a portata di mano, ma non fare nulla di strano ... Come ho già detto, quando il server esplora un multiplo di 25, faccio un savechanges() .. – TiernanO

risposta

5

Due opzione:

  • creare una nuova sessione berefore raggiunto il limite (25 richieste per ogni sessione è un buon valore)
  • aumento DocumentSession.Advanced.MaxNumberOfRequests su un valore appropriato

In entrambi i casi funzionerà, sebbene il secondo approccio sia leggermente più veloce.

Modifica: Secondo il commento di Orens di seguito, in realtà è il primo approccio che è più veloce.

+0

Grazie per la risposta. Giocherò e vedremo quale funziona meglio per me ... – TiernanO

+1

Aumentare MaxNumberOfRequests si tradurrebbe in una sessione che ha un sacco di entità, che non andrà a buon fine. Una nuova sessione è migliore. –

+0

Grazie per il suggerimento @Ayende. Quante volte la sessione dovrebbe essere uccisa e ricreata? 100? 200? Di Più? Di meno? Grazie! – TiernanO