복붙노트

[MONGODB] 그것은 정수로하여 MongoDB의 _id 유형을 변경하는 것이 나쁜가요?

MONGODB

그것은 정수로하여 MongoDB의 _id 유형을 변경하는 것이 나쁜가요?

MongoDB를이 _id에 대한 ObjectId가 형식을 사용합니다.

내가 증가 정수를 _ID 한 경우 나쁜 것인가?

(이 보석으로, 당신이 관심이 있다면)

해결법

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

    1.당신은 당신이 더 나은 당신이 무엇에 _id 필드의 기본값을 변경하는 것이 더 환영보다 뭔가를 생각하면 아니, 전혀 사실 ObjectId가 내장에 나쁘지 않다 그래서 인덱스 내에서 매우 상당한입니다.

    당신은 당신이 더 나은 당신이 무엇에 _id 필드의 기본값을 변경하는 것이 더 환영보다 뭔가를 생각하면 아니, 전혀 사실 ObjectId가 내장에 나쁘지 않다 그래서 인덱스 내에서 매우 상당한입니다.

    그러나, 이것은 다음과 같이 _ids를 증가 자동을 사용하는 경우 특히, ObjectId가 공식화 기본에서 멀리 이동하기로 결정 몇 가지 고려가 큰이지만 : http://docs.mongodb.org/manual/tutorial/create -an-자동 증가 필드 / # 자동 증가 카운터 수집

    findAndModify 및 원자 잠금 실제로 돌볼 수 있지만, 당신은 당신의 첫 번째 문제로 공격 때문에 멀티 스레딩은 큰 문제가되지 않습니다. findAndModify 가장 빠른 기능도 정기적으로 사용하는 경우 가장 밝은 부분과이 있었다 상당한 성능이 발견 방울 없습니다.

    또한도 findAndModify없이, 어쨌든 자신이 일의 오버 헤드를 고려 가지고있다. 모든 삽입을 위해 당신은 당신이 여분의 쿼리를 수행해야합니다 있습니다. 당신은 삽입하고 싶어 할 때마다의 고유성을 조회해야하는 고유 ID를 가진 이미지는 결국 삽입 속도는 크롤 링을 드롭하고 잠금이 구축됩니다.

    물론 ObjectId가, 따라서는 이러한 오버 헤드를 가지고 있지 않습니다 확인하거나 삽입하기 전에 데이터베이스를 터치하여 자신의 고유성을 공식화 할 필요없이 고유의 것을 정말 좋다.

    그 존재는 세계에서 가장 나쁜 생각이 아니다 당신이 생각하는 경우는 시나리오가 다음에 갈하지만 자동 증가 ID를 필요로하지 않는 경우에 당신에게 부담이 될 수 있다는 것을 염두에 베어 제품군 말했다.

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

    2.당신은 그것을 할 수 있지만 반드시 정수가 고유한지 확인 할 책임이있다.

    당신은 그것을 할 수 있지만 반드시 정수가 고유한지 확인 할 책임이있다.

    MongoDB를 대부분의 SQL 데이터베이스와 같은 자동 증가 필드를 지원하지 않습니다. 여러 프로세스 및 / 또는 새 데이터베이스 항목을 만들 스레드가 분산 또는 다중 스레드 응용 프로그램이있을 때, 당신은 확실히 그들이 같은 카운터를 사용할 수 있는지 확인해야합니다. 그렇지 않으면 두 개의 스레드가 데이터베이스에서 같은 _id로 문서를 저장하려고 할 일이 발생할 수 있습니다.

    그렇게되면, 그 중 하나가 실패합니다. 데이터베이스가 (GetLastError를 호출하거나 인정에 쓰기 문제 설정)을 더 오래 단지 전송 데이터보다 소요, 성공 또는 오류를 반환 할 때까지 기다릴 필요가 수단 방법을 화재 - 및 - 잊어.

  3. from https://stackoverflow.com/questions/14054384/is-it-bad-to-change-id-type-in-mongodb-to-integer by cc-by-sa and MIT license