2012-04-03 56 views
5

我正在嘗試將大量數據(Twitter流大約20-25次推文)導入RavenDB進行測試和大規模數據測試。我有一些代碼,寫數據不錯,但過了一段時間我得到一個錯誤:使用RavenDB進行大容量數據插入

Error while trying to add lots of data to RavenDB

我不會在所有的代碼填寫,但這裏是它的要點:

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. 

我還沒有嘗試過它的建議,因爲它說要查看不同的方式來做到這一點。我應該每隔200次殺死一次會話嗎?有沒有辦法用Raven DB插入一個對象數組?我完全錯了嗎?

+0

您可以在「將項目添加到RavenDB?」的位置顯示代碼嗎? – 2012-04-03 18:29:59

+0

這真的只是session.store(item)...沒有代碼靠近手,但沒有做任何奇怪的事情...正如我所提到的,當對面接近25的倍數時,我執行savechanges()。 。 – TiernanO 2012-04-03 21:11:47

回答

5

兩個選項:

  • 創造一個適當的值
一個新的會話berefore達到上限(每節25個請求是一個很好的價值)
  • 增加DocumentSession.Advanced.MaxNumberOfRequests

    無論哪種方式都會起作用,雖然第二種方法是略快

    編輯:根據下面的Orens評論,它實際上是第一種更快的方法。

  • +0

    感謝您的回答。將玩弄,看看哪一個最適合我... – TiernanO 2012-04-03 21:12:31

    +1

    增加MaxNumberOfRequests會導致一個會議,有很多的實體,這不會表現良好。新會話更好。 – 2012-04-04 08:04:38

    +0

    感謝提示@Ayende。會話多久會被殺死並重新創建? 100? 200?更多?減?謝謝! – TiernanO 2012-04-04 08:28:10