2014-04-21 2 views
0

사용자라고하는 엔티티가 있고 사용자에 대한 통계 (예 : 몇 페이지를 보았는지)를 저장하려고합니다. 내 딜레마는 "pageviews"라는 속성으로 사용자 엔티티의 통계를 저장해야합니까, 아니면 모든 통계를 저장하고 단일 사용자에게 링크 될 UserStatistics라는 새 엔티티를 만들어야합니까?GAE/Datastore : 자주 업데이트되는 통계에 대한 데이터를 모델링하는 방법은 무엇입니까?

통계를 위해 새로운 엔티티를 만드는 것이 더 나을 것이라고 생각한 이유는 그렇지 않으면 매우 작고 거의 전체적으로 읽기 전용 인 엔티티와 관련된 통계를 업데이트하기 위해 많은 트랜잭션을 사용해야하기 때문입니다. 그리고 (memcached) 많이 액세스해야 할 필요가 있습니다 ... 원래의 엔티티에 이러한 통계를 저장하면 오버 헤드가 많이 발생합니까? 그렇지 않은가? 단일 엔티티에서 많은 트랜잭션을 수행하면 읽는 속도가 느려 집니까?

답변

1

자주 업데이트되는 데이터는 별도의 엔티티에 저장해야합니다. 엔티티를 업데이트 할 때마다 이러한 속성이 변경되지 않더라도 각 인덱싱 된 속성에 대한 쓰기 비용이 발생합니다.

0

나는 항상 사용자 호출자 프로필에 대해 별도의 엔터티를 만듭니다. 프로파일은 다른 모든 사용자 데이터를 저장합니다.

독서 시간을 늦추지는 않지만 비용이 조금 더들 것입니다. '페이지 뷰'를 세션에 저장하고 세션이 닫힐 때만 데이터 저장소에 기록 할 수 있습니다.

관련 문제