2012-04-03 22 views
5

Estoy tratando de importar grandes cantidades de datos (transmisión de Twitter a unos 20-25 tweets por segundo) en RavenDB para pruebas y pruebas de datos a gran escala. Tengo algo de código que está escribiendo datos bastante bien, pero después de un tiempo me da un error:utilizando RavenDB para inserciones masivas de datos

Error while trying to add lots of data to RavenDB

No voy a rellenar todo el código, pero aquí está el quid de la cuestión:

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. 

No he intentado lo que ha sugerido, porque dice que debe buscar formas diferentes de hacerlo. ¿Debería matar mi sesión cada 200 inserciones? ¿Hay alguna manera de insertar una matriz de objetos con Raven DB? ¿Estoy haciendo esto completamente mal?

+0

¿Puedes mostrar tu código donde "agregas elementos a RavenDB?" –

+0

Es realmente solo session.store (item) ... No tiene el código a mano, pero no está haciendo nada raro ... Como mencioné, cuando el encuentro alcanza un múltiplo de 25, hago un savechanges() .. – TiernanO

Respuesta

5

dos opciones:

  • crear una nueva sesión berefore se alcanza el límite (25 solicitudes por sesión es un buen valor)
  • aumentar DocumentSession.Advanced.MaxNumberOfRequests a un valor apropiado

De cualquier forma funcionará, aunque el segundo enfoque es ligeramente más rápido.

Editar: Según el comentario de Orens a continuación, en realidad es el primer enfoque que es más rápido.

+0

Gracias por la respuesta. Voy a jugar y ver cuál funciona mejor para mí ... – TiernanO

+1

Aumentar MaxNumberOfRequests daría como resultado una sesión que tiene muchas entidades y que no funcionará bien. Una nueva sesión es mejor. –

+0

Gracias por el consejo @Ayende. ¿Con qué frecuencia debe matarse y recrearse la sesión? 100? 200? ¿Más? ¿Menos? ¡Gracias! – TiernanO

Cuestiones relacionadas