programing

MongoDB - DBREF가 필요합니까?

bestprogram 2023. 7. 1. 09:05

MongoDB - DBREF가 필요합니까?

MongoDB에서 DBREF 데이터 유형을 사용하면 아래와 같이 문서가 표시될 수 있습니다.하지만 그것을 가지고 있는 것.$ref모든 행의 필드는 모든 행이 명백하게 다음을 가리키기 때문에 중복으로 느껴집니다.users수집.

다소 중복되지 않고 다른 문서를 참조할 수 있는 방법이 있습니까?$ref필드?

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

mongodb로 작업할 때, 적어도 확장성이 필요한 큰 시스템으로 작업할 때는 Dbref를 피해야 한다고 생각합니다.

모든 운전자가 DBef를 로드하기 위해 추가 요청을 하는 것으로 알고 있기 때문에 데이터베이스 에서 '가입'하지 않고 매우 비쌉니다.

다소 중복되는 $ref-field 없이 다른 문서를 참조할 수 있는 방법이 있습니까?

예, 참조를 염두에 두고 '외부 키'(예: RefUserId 또는 UserId)에 대한 명명 규칙을 만들고 참조된 문서의 ID만 저장합니다.필요할 때 참조 문서를 직접 로드합니다.또한 비정규화를 위해 눈을 크게 뜨고 작업을 수행할 수 있습니다. 일반적으로 성능이 크게 향상되기 때문입니다.

드라이버별 액세스 방법을 사용하지 않는 한dbref그것은 불필요해야 합니다.

가입을 수동으로 관리하는 경우(즉, "가입"할 다른 컬렉션을 알고 있는 경우) ObjectId만 저장하면 됩니다.

문서에서:

수동 참조가 대안이며 문서에서는 DBREF보다 수동 참조가 더 좋다고 합니다(이유는 모르겠지만). DBREF는 참조된 개체가 다른 데이터베이스에 있거나 컬렉션 이름이 명확하지 않은 곳에 있을 때 유용합니다.

모든 종류의 링크보다 정규화/임베딩이 더 좋습니다. 그러면 원자 업데이트를 받고 관련 데이터를 다시 쿼리할 필요가 없기 때문입니다.

언급URL : https://stackoverflow.com/questions/9412341/mongodb-is-dbref-necessary