akngs/ecogwiki — pull request #86 by jangxyz (2014-02-14 09:07:50+00:00)
Title: [제안] ADD cache for cardinalities

저장 시 너무 오래 걸려서 성능 개선을 위한 작업을 해보았습니다.
하나의 PUT request를 처리하는데 보통 4초 정도 걸리던걸 1초 대까지 떨어뜨려줍디다.

PUT 요청을 처리하는 동안 구석구석 걸리는 시간을 찍어보았는데,
가장 많이 걸리는 애가 `schema.py`에 있는 `get_cardinalities` 였습니다.

기본인 `Articles` type이 50개 정도의 properties를 들고 있는데, 각각은 캐싱이 돼 있어서 금방 가져오지만
50개를 일일히 가져오는 작업을 하면 1.5s 정도 소요되더라구요.

그래서 get_properties를 통채로 caching에 넣었습니다.
기본은 ProcessRequestCache로 in-memory이기에 쿨하게 memcache에 저장.
PUT 반응 속도가 1.7s 까지 떨어지네요.

layered cache라 아마 `caching.set_schema`나 `caching.set_property`를 할 때 저것도 invalidate를 시켜줘야 할지도 모르겠습니다만..
일단 의견이 어떨지 궁금해서 PR 날려봅니다.