Twitter 使用RavenDB批量插入数据

Twitter 使用RavenDB批量插入数据,twitter,ravendb,large-data,bigdata,Twitter,Ravendb,Large Data,Bigdata,我正在尝试将大量数据(推特流速度约为每秒20-25条推特)导入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 i

我正在尝试将大量数据(推特流速度约为每秒20-25条推特)导入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插入对象数组?我这样做完全错了吗?

有两种选择:

  • 在达到限制之前创建一个新会话(每个会话25个请求是一个不错的值)
  • 将DocumentSession.Advanced.MaxNumberOfRequests增加到适当的值
尽管第二种方法稍微快一点,但两种方法都能奏效


编辑:根据下面的Orens评论,这实际上是第一种更快的方法。

你能在“向RavenDB添加项目”的地方显示你的代码吗?实际上只是会话。存储(项目)。。。不要把代码放在手边,但不要做任何奇怪的事情。。。正如我所提到的,当计数器设置为25的倍数时,我会执行一个savechanges()…增加MaxNumberOfRequests会导致会话有很多实体,这将不会很好地执行。新课程更好。谢谢你的提示@Ayende。应该多长时间终止和重新创建一次会话?100? 200? 更多较少的谢谢@TierNo,只需确保在达到请求限制(默认为30)之前处理/重新创建会话即可。