2011-09-27 5 views
3

현재 MySQL에서 Google App Engine/Java로 일부 작업을 이식 중입니다. 나는 JDO를 사용하고 있으며, 필요하면 하위 자바 API도 사용하고있다. 난 아직도 내 응용 프로그램의 기초를 짓고 있어요 http://code.google.com/appengine/articles/sharding_counters.html파편하려면? GAE/java/jdo

:

나는 샤딩 카운터에 대한 최적화 가이드를 읽어 보시기 바랍니다. 나는 조숙 한 최적화가 모든 악의 뿌리임을 압니다. 그러나 이것은 논쟁을 피하기 위해 명확하게 문서화되어있다. 그래서 나는 편향된 편향을해야 할지를 결정하는데 어려움을 겪고있다.

기본적으로 샤딩 카운터 (및 기타 가능한 더 높은 빈도 쓰기 작업 개체)를 사용해야합니까, 아니면 샤딩없이 진행하고 필요에 따라 구현해야합니까?

+0

그 카운터로 무엇을 할 예정입니까? 엔티티의 자동 증가 ID와 같은 용도로 사용하지 않기를 바랍니다. – cherouvim

+0

걱정 해 주셔서 감사합니다. 걱정할 필요가 없습니다. 나는 페이지 뷰와 사용자 행동 같은 것들을 계산할 것이다. – Dave

+0

좋은 소리. 어쩌면 memcache를 사용하고 db로 5 분마다 cron으로 퍼지합니까? – cherouvim

답변

4

"조기"의 현저한 의미는 "적절한시기 이전"입니다. 제한을 피하기위한 설계는 한계가 잘 이해 될 때 조기에 이루어지지 않습니다.

카운터를 분할하십시오.

3

효과적인 샤딩을 사용하더라도 집계를 유지하면 응용 프로그램에 상당한 부하가 발생할 수 있습니다. 이 필요하면 근사값을 제시 할 수 없습니다. 다음 shireded 집합을 사용 아니 조기 최적화; 차선책은 없습니다. 실제로 카운터가 필요하지 않은 경우 카운터를 구현하는 데 걸리는 시간이 다른 곳에서 더 잘 소비 될 수 있습니다.