필자는 몇 가지 프로젝트를 위해 좋은 NoSQL 데이터베이스를 꽤 오랫동안 찾고 있었으며 .NET 지원 관점에서 보면 정말 멋진 RavenDB를 발견했습니다. 그래서 그것을 시험해보고 약간의 벤치 마크를 작성하기로 결정했습니다.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;
}
}
출력은 다음과 같다 : 사업의 첫 번째 순서는 다음 코드를 사용하여 삽입 속도를 테스트했다
Processed 10,000 records
Time elapsed: 9,531 ms
Records/sec: 1,049
Press any key to continue . . .
이 (3GHz로는, 2 기가 바이트 램은 윈도우 7을 실행하는) 상대적으로 빠른 컴퓨터에
나에게 전화를해라. 그러나 초당 1000의 인서트는 끔찍하게 느리다. 특히 단순한 2 개의 들판을 포함하고있는 문서의 경우 특히 그렇다. 예상 되나요? 나는 RavenDB가 쓰기가 아닌 읽기에 최적화되어 있다는 것을 알고있다. 그러나 이것은 꽤 나쁘다.
JIT 및 기타 시작 작업을 고려하여 예열 시간을 허용 했습니까? –