Tôi đã tìm kiếm một cơ sở dữ liệu NoSQL tốt cho một số dự án của chúng tôi trong một thời gian và gần đây tôi đã phát hiện ra RavenDB trông khá tuyệt vời từ góc nhìn hỗ trợ .NET, vì vậy tôi quyết định thử và viết một chút điểm chuẩn. Đơn hàng đầu tiên của doanh nghiệp đã được thử nghiệm tốc độ chèn, sử dụng đoạn mã sau:Tôi nên mong đợi mức độ hiệu suất nào từ RavenDB?
class Program
{
private const int TEST_COUNT = 10000;
static void Main(string[] args)
{
var store = new DocumentStore();
store.Url = "http://localhost:8117";
store.Initialize();
var timer = Stopwatch.StartNew();
var session = store.OpenSession();
for (var i = 0; i < TEST_COUNT; i++)
{
session.Store(new TestEntity()
{
Name = "Test Entity"
});
if (i % 127 == 0)
{
session.SaveChanges();
session.Dispose();
session = store.OpenSession();
}
}
session.SaveChanges();
session.Dispose();
timer.Stop();
Console.WriteLine("Processed {0:n0} records", TEST_COUNT);
Console.WriteLine("Time elapsed: {0:n0} ms", timer.ElapsedMilliseconds);
Console.WriteLine("Records/sec: {0:n0}", TEST_COUNT/(timer.ElapsedMilliseconds/1000d));
}
}
class TestEntity
{
public string Name { get; set; }
public DateTime Created { get; set; }
public TestEntity()
{
Created = DateTime.UtcNow;
}
}
Kết quả như sau:
Processed 10,000 records
Time elapsed: 9,531 ms
Records/sec: 1,049
Press any key to continue . . .
Đây là trên một máy tương đối nhanh (3GHz, 2GB ram chạy Windows 7)
Gọi cho tôi là điên rồ, nhưng 1000 lần chèn/giây chậm chạp, đặc biệt đối với các tài liệu chỉ chứa hai trường. có phải cái này đã được chờ đợi? Tôi biết RavenDB được tối ưu hóa cho đọc, không viết, nhưng điều này là khá xấu.
Bạn có cho phép thời gian khởi động, chẳng hạn như JIT và các hoạt động khởi động khác đã được tính toán không? –