2012-04-03 8 views
5

Próbuję importować duże ilości danych (strumień Twittera około 20-25 tweetów na sekundę) do RavenDB w celu testowania i testowania danych na dużą skalę. Mam niektóre kodu, który zapisuje dane całkiem dobrze, ale po jakimś czasie pojawia się błąd:używanie RavenDB do zbiorczych wstawień danych

Error while trying to add lots of data to RavenDB

nie wypełni cały kod, ale tutaj jest sedno to:

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. 

Nie próbowałem tego, co zasugerował, ponieważ mówi, aby spojrzeć na różne sposoby robienia tego. Czy powinienem zabijać moją sesję co 200 wstawek? Czy istnieje sposób na wstawienie tablicy obiektów za pomocą Raven DB? Czy robię to zupełnie źle?

+0

Czy możesz pokazać kod, w którym "dodajesz przedmiot do RavenDB?" –

+0

To naprawdę po prostu sesja.store (element) ... Nie ma kodu w pobliżu, ale nie robi nic dziwnego ... Jak już wspomniałem, kiedy licznik zawiera wielokrotność 25, robię savechanges() .. . – TiernanO

Odpowiedz

5

Dwa opcja:

  • utworzyć nowe sesje berefore przekroczeniu limitu (25 żądań na sesji jest dobrą wartość)
  • zwiększyć DocumentSession.Advanced.MaxNumberOfRequests do odpowiedniej wartości

Oba sposoby będą działać, chociaż drugie podejście to nieznacznie szybciej.

Edytuj: Według poniższego komentarza Orensa, jest to pierwsze podejście, które jest szybsze.

+0

Dzięki za odpowiedź. Pobawię się i zobaczę, który z nich działa najlepiej dla mnie ... – TiernanO

+1

Zwiększenie MaxNumberOfRequests spowodowałoby sesję z wieloma jednostkami, która nie będzie dobrze działać. Nowa sesja jest lepsza. –

+0

Dzięki za podpowiedź @Ayende. Jak często sesja powinna zostać zabita i odtworzona? 100? 200? Jeszcze? Mniej? dzięki! – TiernanO

Powiązane problemy