2012-04-03 8 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?»? –

+0

Это действительно просто session.store (item) ... Не нужно иметь код рядом с собой, но не делать ничего странного ... Как я уже говорил, когда thecounter получает несколько из 25, я делаю savechanges(). – TiernanO

ответ

5

Две опции:

  • создать новый сеанс berefore предел достигнут (25 запросов в сессии является хорошее значение)
  • увеличение DocumentSession.Advanced.MaxNumberOfRequests на соответствующее значение

В любом случае это будет работать, хотя второй подход немного быстрее.

Редактировать: Согласно комментарию Orens ниже, это на самом деле первый подход, который выполняется быстрее.

+0

Спасибо за ответ. Поиграет и посмотрит, какой из них лучше всего подходит для меня ... – TiernanO

+1

Увеличение MaxNumberOfRequests приведет к сеансу с множеством объектов, который не будет работать хорошо. Новый сеанс лучше. –

+0

Спасибо за подсказку @Ayende. Как часто сессия должна быть убита и воссоздана? 100? 200? Больше? Меньше? благодаря! – TiernanO