2012-12-02 2 views
0

웹 클라이언트뿐 아니라 모바일 클라이언트 (2 단계)에 데이터/정보를 제공하는 서버를 설계하고 있습니다. 데이터는 그래프를 채 웁니다. 매일 5 년간의 주식 가격 (최소/최대/평균 표시)을 묘사하는 이미징.그래프 용 AJAX를 사용하여 대용량 데이터 검색

1] 3000 데이터 포인트를 클라이언트에 보내면 전송할 데이터의 양이 많아지고 플롯됩니다. 서버에서 그래픽을 만들면 클라이언트에 PNG를 보낼 수 있습니다. 어떤게 더 좋아?

2] 5 년 동안 모든 점을 플로팅하는 것은 나쁜 습관입니까? MySQL이 한 번에 평균 5 데이터 포인트 (일)를 반환 할 수있는 방법이 있습니까?

아직 디자인 단계에 있지만,이 결정이 앱 성능에 실제로 영향을 줄 것이라는 것을 알고 있습니다.

답변

0

보내려는 데이터의 양을 예측할 수 있습니까? 3000 데이터 포인트는 12K (float 당 4 바이트)와 100K (텍스트 형식의 타임 스탬프 + 값) 사이의 값이 될 수 있습니다. 12K는 아무 것도 아니지만 특히 모바일 장치의 경우 100K가 중요합니다.

처리 시간 또한 중요합니다. 일부 하위 레벨 언어를 사용하여 서버에서 데이터를 생성하고 PNG를 반환하면 캔버스에서 차트를 생성하는 것보다 훨씬 효율적입니다.

하지만 차트의 해상도를 고려해야합니다. 3000 포인트를 플롯하려면 최소 3000 픽셀을 수평으로 필요로합니다. 요즘 가장 큰 화면은 2560 pixels width이며 모든 데이터를 표시 할 수 없으므로 일부 지점을 숨겨야합니다. 그것은 모바일에서 훨씬 더 나쁩니다. 200 ~ 300 픽셀 너비와 적어도 2 배 적은 데이터 포인트를 사용하십시오. 말했다되고 그건

, 나는 다음과 같은 방법 제안 :

  • 컴퓨팅 평균 및 평균 일부를 느슨하게하지 않도록 현명하게하는 (브라우저에 더 이상의 100-200 데이터 포인트를 반환하지 흥미로운 극단).

  • 사용하면 더 자세한 정보가 필요하면 브라우저

  • 에 라이브러리를 차트 자바 스크립트 수십 중 하나는 사용자가 높은 해상도에서 데이터를 서버에 요청합니다 차트에서 확대 할 수 있습니다.

+0

저는 그래픽을 반환하는쪽으로 기울어 져 있지만 평균을 계산하거나 평균 5 데이터 포인트마다 평균을 계산하기 위해 부담을 백엔드로 옮깁니다. 매 5 점마다 평균을 내고 그 대신에 리턴하는 MySQL 명령이 있습니까? – TSG

관련 문제