2016-11-12 1 views
0

사용자가 10K 명이 넘는 시나리오가 있으며 각 사용자마다 활동 로그를 저장해야합니다.MongoDB에 여러 사용자의 로그 저장

로그는 검색 가능하고 영구적이어야합니다 (랩 어라운드 버퍼 없음 등).

사용자 당 최대 50,000 개의 항목이 있어야합니다. 이 사용자 개체

{ 
    User : "my user", 
    Log : [ ..., ..., ...] 
} 

또는 사용자 당 테이블이 내부 컬렉션으로 로그 항목을 저장하는 의미가있는 경우

궁금?

{ 
    User : "my user", 
    LogTableID : "my table id" 
} 

이 테이블의 각 항목은 로그입니다.

+0

특정 사용자의 로그를 받고 페이지 매김을 수행하는 것과 같은 검색은 더 느리지 않습니까? – Thomas

답변

0

아니요, 아무 의미가 없습니다. 모든 사용자에 대한 로그를 저장하는 컬렉션을 하나만 만듭니다.

user_id으로 색인을 생성하면 (사용자가 원하는대로) 사용자별로 조회가 빨라집니다. 사용자간에 누계 쿼리를 수행 할 수 있습니다 (보고서 작성시기를 알 수 없음).

+0

컬렉션은 인덱스를 저장하는 데 문제가되지 않을 500M 항목까지 커집니다. 로그를 검토하는 것은 사용자가 매일 몇 차례 수행하는 일반적인 작업이므로이 DB의 대부분의 작업은 사용자가 로그를 탐색하게됩니다. – Thomas

+0

@ 토마스 : 작업 세트를 지원할 수있는 램이 충분하면 단일 컬렉션에 아무런 문제가 없습니다. 충분한 양의 숫양을 가지고 있지 않다면, 당신이 선택한 방법에 관계없이 문제가 발생할 것입니다. –

+0

그게 좋은 지적이다. 좋아, 나는 이것을 시험해보고 벤치마킹 할 것이다. – Thomas