복붙노트

[MONGODB] MongoDB를 복합 기본 키

MONGODB

MongoDB를 복합 기본 키

나는 몽고 DB에서 복합 기본 키에 대처하는 가장 좋은 방법을 결정하기 위해 노력하고있어. 이 시스템의 데이터와 상호 작용에 대한 주요 키를 2 UUID로 이루어진다. UUID를의 조합은 고유합니다, 그러나 어느 쪽도 개별 UUID를 중 하나입니다하지 않습니다.

나는이를 관리하는 몇 가지 방법을 참조하십시오

이러한 방법의 성능에 미치는 영향은 무엇입니까?

옵션 1, 나는 인해 비 순차적 인 키를 가진에 삽입 성능에 대해 걱정하고있다. 나는이 전통적인 RDBMS 시스템을 죽일 수 알고 나는이뿐만 아니라 MongoDB를에 사실 수 있다는 표시를 보았다.

옵션 2의 경우, 시스템이 사용되지 않을 것이다 기본 키가 조금 이상한 것 같다. 또한, 쿼리 성능 클러스터 된 인덱스가 최적의 쿼리 결과를 제공하는 전통적인 RDBMS에서 옵션 1과 좋은대로되지 않을 수도 있습니다 것 같다. 이 MongoDB를 얼마나 관련이?

옵션 3의 경우, 이것은 하나 개의 id 필드를 만들 것이다, 그러나 삽입 할 때 다시는 순차적하지 않을 것입니다. 이 방법의 다른 장점 / 단점이 있습니까?

옵션 4의 경우, 음 ... 옵션 4 무엇인가?

또한, 아마도 미래의 어떤 시점에 대신하여 MongoDB의 CouchDB를를 사용하는 몇 가지 논의가있다. CouchDB를 다른 솔루션을 제안하여겠습니까?

더 많은 정보 :이 문제에 대한 몇 가지 배경은 여기에서 찾을 수 있습니다

해결법

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

    1.당신은 옵션 1로 가야한다.

    당신은 옵션 1로 가야한다.

    항상 이미 고유의 두 번째 고유 인덱스를 유지하는 데 저장할 수있는 _id 인덱스를 사용하여 - 가장 큰 이유는 당신이 성능에 대해 걱정 말 것입니다.

    다른 옵션은 단지 보조 고유 인덱스에 _id 지수에서 그것을 이동,이 문제를 방지하지 않습니다 -하지만 그 오른쪽 균형 그리고 랜덤 액세스의 다른 하나는 일단 지금은, 두 개의 인덱스가 있습니다.

    이 질문 옵션 1 단 하나의 이유는 방금 한 장 또는 다른 UUID 값으로 문서에 액세스하려는 경우 즉. 만큼 당신이 항상 (이 부분은 매우 중요하다) 값 모두를 제공하고 당신은 항상 그들에게 모든 쿼리에서 동일한 방식으로 주문 후 _id 지수는 효율적으로 전체의 목적을 제공 할 것이다.

    당신이 확인해야하는 이유에 정교는 당신이 항상이 UUID가 같은 방식으로 값 순서와 하위 문서를 비교할 때, {A : 1, B : 2}와 같지 {B : 2, a는 1} - 당신은 할 수 있습니다 이 개 문서 _id를 위해 그 값을 가지고 있었다 모음. 이 필드 첫 번째로 _id 저장 그렇다면, 당신은 항상 당신의 문서 및 모든 쿼리의 순서를 유지해야합니다.

    1 쿼리에 사용할 수있을 것입니다 : 다른주의 _id 인덱스가 있다는 것입니다 :

    db.collection.find({_id:{a:1,b:2}}) 
    

    하지만 쿼리에 대해 사용할 수 없습니다

    db.collection.find({"_id.a":1, "_id.b":2})
    
  2. ==============================

    2.나는 당신을 위해 옵션 4를 가지고 :

    나는 당신을 위해 옵션 4를 가지고 :

    자동 _id 필드를 사용하는 대신 단일 지수 모두 UUID의 2 단일 필드 인덱스를 추가합니다.

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

    3.나는이 옵션에 갈 이유가있는 것

    나는이 옵션에 갈 이유가있는 것

  4. ==============================

    4.나는 당신은 여전히 ​​함께 일하는 훨씬 쉬울 것이다 제외하고 핸들을 모두 UUID 필드 및 성능, 복합 기본 키와 동일해야한다는 인덱스를 만들 수 있습니다 옵션 2로 갔어요 것입니다.

    나는 당신은 여전히 ​​함께 일하는 훨씬 쉬울 것이다 제외하고 핸들을 모두 UUID 필드 및 성능, 복합 기본 키와 동일해야한다는 인덱스를 만들 수 있습니다 옵션 2로 갔어요 것입니다.

    또한, 내 경험에서, 나는 그것이 엄격하게 필요하지 않은 경우에도, 뭔가에 고유 한 ID를 부여 후회 적이 없어요. 아마도 그것은 비록 인기가없는 의견입니다.

  5. from https://stackoverflow.com/questions/23164417/mongodb-and-composite-primary-keys by cc-by-sa and MIT license