2014-04-15 2 views
0

집계 함수를 사용하여 일부 데이터를 검색하는 매우 간단한 코드가 있습니다. 나는 그것이 올바른 숫자를 반환 로컬 호스트 프로젝트를 실행하지만 appharbor에 배포 할 때 항상 0을 반환 할 때 내가를 실행할 때 여기 Ravendb가 올바른 숫자를 반환하지 않습니다.

내 코드

 var document = new DocumentStore 
     { 
      ConnectionStringName = "RAVENHQ_CONNECTION_STRING" 
     }; 
     document.Initialize(); 
     var session = document.OpenSession(); 
     int start = 0; 
     long x = 0, y = 0, z = 0, l = 0; 
     while (true) 
     { 
      var data = session.Query<DailyStat>().Take(1024).Skip(start).ToList(); 
      if (data.Count == 0) 
       break; 
      x += data.Sum(x => x.a); 
      y += data.Sum(x => x.b); 
      start += data.Count; 
      z += data.Sum(x => x.c); 
      l += data.Sum(x => x.d); 
     } 
     x /= 1000; 
     y /= 1000; 
     model.x = x.ToString(); 
     model.y = y.ToString(); 
     model.z = z.ToString(); 
     model.l = l.ToString(); 

을의 스냅 샷입니다 뭔가 이상한있다 프로젝트에서 로컬로, 까마귀는 항상 올바른 숫자를 반환하지만 appharbor에 프로젝트를 배포하면 숫자가 0으로 표시됩니다.

답변

1

이 코드는 여러 가지 이유로 좋지 않습니다. 시작하려면 루프를 그렇게해서는 안됩니다. RavenDB는 이유 때문에 서버에서 가져온 항목의 수를 제한합니다. 루프에서 물건을 읽음으로써 문제를 해결하려고 시도하는 것은 문제가 없는지를 묻는 것입니다. 특히 데이터 크기가 충분히 커지면 할당량을 넘었 기 때문에 RavenDB에서 오류가 발생합니다.

그런 다음 합계를 얻기 위해 모든 값을로드하고 있습니다. 그러나 그것이 우리가지도/축소해야하는 이유입니다.

관련 문제