2012-04-03 8 views
5

Ich versuche, große Datenmengen (Twitter Stream bei etwa 20-25 Tweets pro Sekunde) in RavenDB für Tests und große Datentests zu importieren. Ich habe einig Code, die Daten recht gut zu schreiben, aber nach einer Weile bekomme ich einen Fehler:mit RavenDB für Masseneinfügungen von Daten

Error while trying to add lots of data to RavenDB

Ich werde nicht in dem gesamten Code füllen, aber hier ist der Kern von ihm:

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. 

Ich habe nicht versucht, was es vorgeschlagen hat, weil es heißt, verschiedene Wege zu sehen, dies zu tun. Sollte ich meine Session alle 200 oder so einfügen? Gibt es eine Möglichkeit, ein Array von Objekten mit Raven DB einzufügen? Mache ich das völlig falsch?

+0

Können Sie Ihren Code anzeigen, wo Sie "Artikel zu RavenDB hinzufügen?" –

+0

Es ist wirklich nur session.store (item) ... Haben Sie den Code nicht in der Nähe, aber nicht etwas komisch ... Wie ich bereits erwähnt, wenn die counterteraches ein Vielfaches von 25, mache ich eine savechanges() .. – TiernanO

Antwort

5

Zwei Option:

  • eine neue Sitzungen erstellen berefore die Grenze (25 Anfragen pro Sitzung einen guten Wert ist)
  • Erhöhung DocumentSession.Advanced.MaxNumberOfRequests auf einen geeigneten Wert erreicht ist

Jeder Weg wird funktionieren, obwohl der zweite Ansatz etwas schneller ist.

Bearbeiten: Nach Orens Kommentar unten ist es eigentlich der erste Ansatz, der schneller ist.

+0

Danke für die Antwort. Will rumspielen und sehen, welche am besten für mich funktioniert ... – TiernanO

+1

Erhöhung MaxNumberOfRequests würde zu einer Sitzung mit einer Menge von Entitäten führen, die nicht gut funktionieren wird. Eine neue Sitzung ist besser. –

+0

Danke für den Tipp @Ayende. Wie oft sollte die Sitzung beendet und neu erstellt werden? 100? 200? Mehr? Weniger? Vielen Dank! – TiernanO