2010-03-10 4 views
6

Google은 로그 기록을 실행할 때 어디에서 로그를 저장합니까? 로깅 문은 꽤 빠르기 때문에 데이터 저장소에 저장되는 것처럼 보이지 않습니다.Google App Engine 로그는 정확히 어떻게 작동합니까?

로그의 신뢰성은 어느 정도입니까? 로깅 성명서를 작성하고 성공하면 로그에 표시된다는 보장이 있습니까?

로그의 과거 기록은 얼마나 저장되어 있습니까?

내가이 질문에 대답하는 이유는 질문 및 답변 웹 사이트를 만들고 각 질문에 로그인 한 각 사용자별로보기를 추적하고 질문에 대한보기 수를 표시하기 위해서입니다. 페이지. 따라서 10 명의 사용자가 질문 페이지를 100 번 방문하면 10 개의 고유 한보기로 계산됩니다.

내 응용 프로그램의 백그라운드 처리를 수행하는 오프 사이트 컴퓨터가 있습니다. 이 오프 사이트 컴퓨터에서 매 30 분마다 로그를 다운로드하고 로그를 기반으로 각 질문에 대한 조회수를 계산해야합니다. 이렇게하면 각 사용자가 보는 각기 다른 질문마다 데이터 저장소 엔터티를 만들 필요가 없습니다.

너희들은 어떻게 생각하니? 누구든지이 문제를 보지 않습니까?

편집 : 내 주요 관심사는 로그의 신뢰성입니다.

답변

5

이 질문에 대한 답변이 아닙니다. 오히려 해결하려는 문제에 대한 답변입니다.

Bloom Filters에 익숙하고 Memcached's incr (또는 sharded datastore counter)을 사용하는 경우 "충분히 좋은"솔루션을 만들 수 있습니다. 블룸 필터를 사용하여 값이 집합에 있는지 (이 경우 사용자 ID) 테스트하고, 그렇지 않은 경우 카운터를 증가시키고 값을 필터에 추가 할 수 있습니다. Bloom Filters의 속성 중 하나는 포함 체크 대상이 될 세트에 값을 추가하는 것이 일정한 시간 작업이라는 것입니다. 마찬가지로 잠재적 인 필터를 저장하기 위해 약간의 공간이 필요 하겠지만, 이것은 이미 유니크를 위해 주기적으로 grep하기 위해 코드를 작성하는 것보다 덜 복잡한 순서로 보인다. Here's a Python implementation.

아무 것도 무료가 아니지만 - "충분 함"이 중요하다고했습니다. 블룸 필터를 사용하면 항상 거짓 긍정의 기회가 있습니다. 즉, 질문 당 해시의 크기에 따라 사용자 ID가 이미 계산되었는지 확인하고 사용자가 질문을 처음 볼 때 "예스 트가 있음"을 확인할 수있는 작은 기회가 있습니다 . 합리적인 위양성을 위해 필요한 크기를 계산할 수 있지만 그렇게하기위한 공간 상충 관계가 있습니다.

+0

감사합니다 Ikai, 나는 memcache를 사용하여 고려하고 이것에 대해 질문 : http://stackoverflow.com/questions/2422131/google-app-engine-memcache-how-likely-am-i-to-lose-lose- 데이터 - 인 -이 - 시나리오. 내가받은 모든 응답은 임시 데이터 저장을 위해 memcache에 의존하지 않아야한다고 말했고 캐시로만 사용해야합니다. 실제로 요청 로그를 사용하여 필요한 데이터를 찾아내는 멋진 솔루션을 생각해 냈습니다. :) – Kyle

+0

또한 데이터 저장소 (http://stackoverflow.com/questions/2427442/google-app-engine-about-how-much-quota-does-a-single-datastore-put-use)를 사용해 보았습니다. 너무 비싸다. 특히 내가 필요한 데이터가 요청 로그에 이미 저장되어 있다고 생각하면된다. – Kyle