2009-08-15 4 views
8

페이지에 대한 고유 뷰의 수를 추적하는 사용자 지향 뷰 카운터 (질문 뷰에 대해 SO와 유사)를 구현하려고합니다. 여기에 두 similar 질문이 있지만 아무도 내 질문에 완전히 대답하는 것.고유 한 페이지 뷰 카운터를 구현 하시겠습니까?

(데이터베이스 테이블 등에서) 가장 적합한 설정은 무엇입니까? 'questions'테이블에 'views'열을 추가하고 모든 페이지 뷰에서이 값을 증가시키는 것이 좋을까요? 보기를 고유하게하려면 조회 ID 및 IP 주소가있는 다른 테이블을 가질 수 있으며 현재 IP가있는 항목이없는 경우 '보기'열만 증가시킵니다. 그러나이 'ip-view'테이블은 정말 빨리 익숙해 질 것입니다. 주로 모든 페이지 뷰와 모든 IP를 테이블에 저장해야하는 오버 헤드가 걱정됩니다.

성능 병목 현상이 발생하지 않도록 어떻게 최적화 할 수 있습니까? 제가 설명한 것보다 더 나은 접근법이 있습니까? 고유 조회수 만 계산된다는 것은 매우 중요합니다.

업데이트 : 구현 방법을 제안 이외에, 나는 또한 성능 문제는 단순히 IP가 존재하는지 확인하고 모든의 '보기'열을 업데이트하는 순진한 접근 방식을 가정 플레이에 와서 어디에 더 이해하고 싶습니다 페이지보기. 주요 문제는 방대한 양의 삽입이 발생하는지 (과도한 트래픽을 가정 함) 또는 객체 대 IP 매핑 테이블의 크기가 더 큰지 (새 고유 방문자마다 질문 당 새 행이 삽입되기 때문에 엄청날 수 있음) 레이스 조건을 고려해야합니까 (저는 업데이트/증가 SQL 문이 원자 적이라고 가정했습니다)? 모든 질문에 대해 유감스럽게 생각하지만이 문제에 어떻게 접근해야하는지에 관해서는 분실했습니다.

+0

아마도 내 대답을 확인하십시오. http://stackoverflow.com/questions/1269968/incremented-db-field/1269973#1269973 –

답변

0

내 머리 꼭대기에있는 혁명적 인 접근법이있는 것 같습니다. 나는 이것이 확장 성 또는 실현 가능성에 대해 아직 확신 할 수 없습니다.

실제로 IP를 DB에 저장하고 ur DB가 막히지 않도록하려면 계층 적 순서로 저장하는 것이 좋습니다. 사용자가 IP 212.121.139.54에서 UR 웹 사이트를 방문 할 때

<ID, IP_PART, LEVEL, PARENT_PART, VIEWS> 

그래서, UR 테이블의 행들이있을 것이다 :

< 1, 212, 1, 0, 0> < 2 121, 2, 1, 0> < 3, 139, 3, 2, 0> < 4, 54, 4, 3, 1>

포인트 참고 :

,617,
  1. LEVEL 값이 4 인 행만 조회수를 갖습니다.
  2. VIEWS val = 0을 저장하는 중복을 피하려면 LEVEL val = 1,2,3; 그것들을 다른 테이블에 저장하는 것을 생각할 수 있습니다.
  3. 아이디어는 생각한 것처럼 작은 IP 집합에는 적합하지 않은 것으로 보입니다.
  4. 이것은 공용 프록시 IP가 하나 이상의 상자에서 ur 웹 사이트에 액세스하는 사설 네트워크 앞에 앉아 있다는 사실을 무시했을 지 모르지만. 하지만 그것은 우울한 것 같지 않습니다. 맞아.

그래서 chao, 내가 무엇을 구현했는지 알려주시겠습니까?

6

고유 한보기를 구체적으로 추적해야하는 경우 식별 할 수있는 내부 사용자로 작업하지 않는 한이 방법은 두 가지 방법이 있습니다. 이제이 작업을 수행하려면 페이지를 방문한 모든 사용자를 추적해야합니다.

추적은 서버 측 또는 클라이언트 측 중 하나에서 수행 할 수 있습니다.

식별 할 수있는 내부 사용자를 다루지 않는 한 서버 쪽은 IP 주소 여야합니다. IP 주소를 다룰 때마다 사람들을 식별하는 데 사용하는 모든 일반적인주의 사항 (IP 당 여러 명의 사용자 또는 사용자 당 여러 개의 IP가있을 수 있음)에 대해 아무 것도 할 수 없습니다.

"죽음의 거대한 IP 테이블"은 솔루션에 좋지 않다고 생각해야합니다. 물론 수십만 명의 사용자가있는 경우에만 성능이 문제가 될 것입니다. 물론 인덱스가 제대로 지정되었다고 가정하십시오.

클라이언트 측에는 "내가 방문했습니다!"라는 메시지가 표시 될 수 있습니다. 쿠키. 쿠키가 없으면 사용자 수를 늘립니다. 쿠키를 만들 수없는 경우에는 사용자보기가 부풀려 야합니다. 그리고 쿠키를 다루는 것에 관한 모든 경고는 적용됩니다 ... 말하자면, 그들은 결국 나빠질 것이고 사라질 것입니다.

관련 문제