2012-04-03 40 views
5

Tôi đang cố gắng nhập một lượng lớn dữ liệu (luồng Twitter vào khoảng 20-25 tweet một giây) vào RavenDB để kiểm tra và thử nghiệm dữ liệu quy mô lớn. Tôi có một số mã được ghi dữ liệu khá tốt, nhưng sau một thời gian tôi nhận được một lỗi:sử dụng RavenDB để chèn số lượng lớn dữ liệu

Error while trying to add lots of data to RavenDB

tôi sẽ không điền vào tất cả các mã, nhưng đây là ý chính của nó:

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. 

Tôi đã không thử những gì nó đã gợi ý, bởi vì nó nói để xem xét các cách khác nhau để làm điều này. Tôi có nên giết phiên của mình sau mỗi lần chèn 200 lần không? Có cách nào để chèn một mảng các đối tượng với Raven DB? Tôi làm điều này hoàn toàn sai?

+0

Bạn có thể hiển thị mã nơi bạn "thêm mục vào RavenDB không?" –

+0

Nó thực sự chỉ session.store (mục) ... Không có mã gần tay, nhưng không làm bất cứ điều gì kỳ lạ ... Như tôi đã đề cập, khi gặp phải một bội số của 25, tôi làm một savechanges() .. – TiernanO

Trả lời

5

Hai tùy chọn:

  • tạo ra một phiên mới berefore đã đạt giới hạn (25 yêu cầu mỗi phiên là một giá trị tốt)
  • tăng DocumentSession.Advanced.MaxNumberOfRequests đến một giá trị thích hợp

Dù bằng cách nào cũng sẽ hoạt động, mặc dù cách tiếp cận thứ hai là hơi nhanh hơn.

Chỉnh sửa: Theo chú thích của Orens bên dưới, đây thực sự là cách tiếp cận đầu tiên nhanh hơn.

+0

Cảm ơn câu trả lời. Sẽ chơi xung quanh và xem cái nào hoạt động tốt nhất cho tôi ... – TiernanO

+1

Tăng MaxNumberOfRequests sẽ dẫn đến một phiên có nhiều thực thể, điều đó sẽ không hoạt động tốt. Một phiên mới tốt hơn. –

+0

Cảm ơn mẹo @Ayende. Bao lâu nên phiên bị giết và tái tạo? 100? 200? Hơn? Ít hơn? cảm ơn! – TiernanO

Các vấn đề liên quan