2012-01-25 2 views
6

내가 ID를 가진 사용자를 가지고 있고 매일이 사용자에 역사적 기록 (문서)를 저장할 가정, 무엇이 더 :MongoDB 내역 데이터 저장소 - 모범 사례?

  • 는 각 레코드에 대해 새 문서를 생성하고 사용자를 검색 신분증; 또는
  • 계속해서 시간이 지남에 따라 계속 증가하는 하나의 사용자 문서에 해당 데이터를 업데이트하고 포함 시키시겠습니까?

대부분 사용자의 현재 문서 만 검색하려고하지만 모든 레코드는 초고속 검색/쿼리없이 언제든지 액세스 할 수 있어야합니다.

+0

대부분의 경우 당신은 현재 문서를 원한다는 것을 알고 싶습니다. * "매우 긴 검색/쿼리없이"* * "검색 할 수있는 것에 관심을 가져야합니다." – APC

+0

예. 그게 내가 생각하고 있었지만 확실하게하고 싶었던 것입니다. 이것은 실제로 올바른 접근법입니다 (편집에도 감사드립니다) –

답변

3

이러한 결정에 영향을 줄 수있는 많은 변수가 있습니다. 1 개의 큰 문서가 비현실적으로 커지거나 심지어는 허용되지 않는 크기로 성장하지 않는다면 가장 큰 문서가 가장 분명하게 보입니다 (문서의 크기는 최대 16MB 일 수 있습니다). 항목 당

사용하여 문서는 완벽하게 실용적이고 적절한 인덱스가 느린 쿼리 결과는 안 만들어 제공합니다.

4

문서의 크기에 제한이 있습니다. 그것은 (v1.8에서) 16 MB입니다. 따라서 & 임베드를 업데이트하면 방을 완전히 소모 할 수 있습니다. 또한 mongo는 평균 문서 크기를 기반으로 문서 공간을 모음에 할당합니다. 조정/크기 조정을 계속하면 성능에 부정적인 영향을 줄 수 있습니다.

나는 그것이 각 레코드에 대한 새 문서를 만들 훨씬 더 안전하다고 생각하고 해당 데이터를 대조 할 때 /, 당신은/작업을 줄일지도에 그것을 할.

+3

크기 제한은 1.8에서 16MB입니다.) –

+0

업데이트되었습니다. 감사. – z5h

+0

답변 해 주셔서 감사합니다. 두 답장이 동등한 품질 (IMHO)이기 때문에 Remont 하나를 올바른 것으로 표시 할 예정입니다. 지금은 하나 이상의 upvote가 있고 그도 적은 점수를 가지고 있기 때문에 마음에 들지 않기를 바랍니다. 당신의 대답은 아직도 많이 감사합니다. –