복붙노트

[MONGODB] MongoDB를 - DBREF이 필요하다?

MONGODB

MongoDB를 - DBREF이 필요하다?

MongoDB의에서 DBREF의 데이터 유형을 사용하여 문서는 다음과 같이처럼 보일 수 있습니다. 그러나 모든 행의 $ 심판 필드를 가진 것은 분명 포인트 사용자의 컬렉션에 모든 행으로 중복 느낀다.

다소 중복 $ 심판 필드를하지 않고 다른 문서를 참조하는 방법이 있나요?

{
    $id: {$oid : "4f4603820e25f4c515000001"},
    title:   "User group",
    users: [ 
        {_id: {$ref: "users", $id: { $oid: "4f44af6a024342300e000002"}}, isAdmin: true }
    ]
],

해결법

  1. ==============================

    1.내 의견 Dbref는 확장 성을 필요로 큰 시스템 작동 적어도 경우, MongoDB를 가진 경우 일을 피해야한다.

    내 의견 Dbref는 확장 성을 필요로 큰 시스템 작동 적어도 경우, MongoDB를 가진 경우 일을 피해야한다.

    내가 그것을하지 그래서 모든 드라이버가, DBRef를로드하기 위해 추가 요청을 아시는 바와 같이 데이터베이스 내에서, 그것은 매우 비싼 '가입'.

    예, (RefUserId하거나 사용자 아이디 같은) 및 저장 참조 문서의 단지 ID '외래 키'에 대한 명명 규칙을 염두에 대한 참조를 만들 유지. 필요한 경우 참고 문헌 자신을로드합니다. 그것은 일반적으로 성능을 크게 향상 있기 때문에 또한, 당신이 할 수있는 내장, 어떤 비정규 대한 눈을 뜨고.

  2. ==============================

    2.당신이 dbref에 액세스하기위한 드라이버 특정 방법을 사용하지 않는 불필요한해야합니다.

    당신이 dbref에 액세스하기위한 드라이버 특정 방법을 사용하지 않는 불필요한해야합니다.

    당신은 수동으로 가입 관리하는 경우에 단지 ObjectId가 충분 저장 (즉, 당신이 "가입"다른 어떤 수집을 알고).

  3. ==============================

    3.워드 프로세서 :

    워드 프로세서 :

    설명서 참조 대안, 그리고 워드 프로세서 (이유를 잘 모르겠어요하지만) 설명서를 참조 DBREFS에 바람직하다 말한다. 참조 된 개체가 다른 데이터베이스 또는 위치를 컬렉션 이름이 달리 명확하지 않을 것입니다에 살고 때 DBREFS이 도움이됩니다.

    비정규은 / 내장하는 것은 다음 원자 업데이트를하고 관련 데이터를 다시 쿼리 할 필요가 없기 때문에 연결의 종류에 바람직하다.

  4. from https://stackoverflow.com/questions/9412341/mongodb-is-dbref-necessary by cc-by-sa and MIT license