2013-05-23 2 views
0

나는 email_id_id을 고유하게 보유한 사용자 콜렉션을 보유하고 있습니다. 다양한 컬렉션에 사용자 데이터를 저장하려고합니다. 해당 컬렉션에서 identifier로 email_id를 사용하고 싶습니다. 복잡한 ObjectId 대신 email_id를 사용하여 해당 콜렉션에 대해 셸에서 쿼리하기 쉽기 때문입니다.MongoDB - 컬렉션에서 식별자로 이메일 ID를 사용합니다.

이게 맞나요? 큰 emailIds로 색인을 생성하는 동안 성능 문제가 발생합니까?

또한 향후 이메일 주소 변경 옵션을 사용하려는 경우이 옵션을 고려하지 마십시오.

답변

0

관계형 데이터베이스는 데이터를 표준화하고 여러 테이블에 분산하는 것이 좋습니다. 일반적으로이 방법은 MongoDB에 적합하지 않습니다. MongoDB는 여러 콜렉션에 대한 JOIN 또는 동일한 콜렉션의 여러 문서조차 지원하지 않습니다. 따라서 단일 문서를 검색하여 각 쿼리를 통계 할 수있는 방식으로 데이터베이스 문서를 디자인해야합니다. 즉, 한 문서에 사용자에 대한 모든 정보를 저장하는 것이 좋습니다.

예외는 사용자의 특정 데이터 지점이 무한정 커지는 경우입니다 (예 : 포럼에서 사용자가 게시 한 게시물). 첫째, MongoDB 문서의 크기 제한이 있으며 둘째, 문서 크기가 커지면 데이터베이스에서 하드 드라이브 공간을 자주 다시 할당해야합니다. 이렇게하면 쓰기 속도가 느려지고 데이터베이스에서 조각화가 발생합니다. 이 경우 각 엔티티를 다른 콜렉션에 넣는 것이 좋습니다.

색인으로 덮여있는 필드의 크기는 동일성 검색시 중요하지 않습니다. email_id에 고유 색인이있는 경우 _id로 검색하는 것만 큼 빠르게해야합니다.

관련 문제