복붙노트

[MONGODB] 내가 / 내 편안하고 URL을에서 ObjectId가 사용하지 말아야 할 이유는 어떤 이유가있다

MONGODB

내가 / 내 편안하고 URL을에서 ObjectId가 사용하지 말아야 할 이유는 어떤 이유가있다

나는 RESTful 서비스에 처음으로 MongoDB를 사용하고 있습니다. 내 편안하고 엔드 포인트 같은 / 휴식 / objectType의 / 1 보일 것이다, 그래서 이전에 내 SQL 데이터베이스의 ID 열이 증가하는 정수이었다. 별도의 증가 정수 ID 열을 유지 및 URL이를 사용하는 난 그냥 같은 역할을하여 MongoDB의 ObjectId가의를 사용해서는 안하거나 현명 왜 어떤 이유가 있나요?

해결법

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

    1.편안하고 API를 여러 번에서 사용하며 Object를 갖는 가장 큰 단점은 깨끗한 URL을 갖는 점에서 매우 시끄러운 정말이다. 당신이 중 하나 HEX 번호로 떠나, 또는 매우 큰 정수, 다소 쌀쌀 URL 모두 결정으로 변환 할 수 있습니다 :

    편안하고 API를 여러 번에서 사용하며 Object를 갖는 가장 큰 단점은 깨끗한 URL을 갖는 점에서 매우 시끄러운 정말이다. 당신이 중 하나 HEX 번호로 떠나, 또는 매우 큰 정수, 다소 쌀쌀 URL 모두 결정으로 변환 할 수 있습니다 :

    /rest/resource/52435dbecb970072ec3a780f
    /rest/resource/25459211534898951476729247759
    

    (StackOverflow에가하는 것처럼) 나는 URL에 "제목"을 추가 한 그들에게 조금 더 친절하게합니다 :

        /rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName
    

    물론, "제목은"소프트웨어에서 무시하지만, 사용자가이를보고 정신적으로 미친 ID 세그먼트를 무시할 수있다.

    를 노출하여 인프라에서 배울 수있는 아주 작은 도움이있다 :

    잠재적으로 (일반적으로하며 Object를 생성하는 클라이언트의 수를 나타냅니다) 기계 ID를 수집 이외에,별로 거기에있다.

    보안을 위해 사용하지 수 있도록하며 Object는, 임의 수 없습니다. 당신은 항상 데이터를 보호해야합니다. 그들이 명백한 방법으로 증가하지 않을 수 있지만, 그것은 짐승의 힘을 통해 다른 자원을 쉽게 찾을 수있을 것이다. 이전에 자동 증가 ID를 사용한 경우, 이것은 당신을위한 새로운 문제가되지 않습니다.

    당신이 주어진 시간에 많은 새로운 문서를 생성하지 않는 알고 있다면, 그것은 단순한 ID를 만들려면 여기 패턴 중 하나를 사용하여 가치가있을 수도 있습니다. 내가 쓴 하나의 응용 프로그램에서, 나는 URL을에 나타내었다 문서 ID의 일부 자동 INC 기술을 사용하고 있었다 그 사람들을 위해 Ajax를 전용, 나는하며 Object를 사용했다. 정말 일부 URL 쉽게 "입력"싶었다. ObjectId가의 어떠한 형태로 쉽게 최종 사용자가 입력하지 않습니다. 당신은 당신이 원하는 _id 형식을 사용할 수 있습니다 - 즉 MongoDB를의 장점 중 하나입니다. :)

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

    2.그것은 증가하는 카운터를 유지하는 것은 병목이 될 수 있기 때문에하며 Object를 사용하는 것이 현명합니다. ObjectId가 타임 스탬프를 포함하고 단조 때문에, 그들은 쿼리를 최적화에 도움이 될 수 있습니다.

    그것은 증가하는 카운터를 유지하는 것은 병목이 될 수 있기 때문에하며 Object를 사용하는 것이 현명합니다. ObjectId가 타임 스탬프를 포함하고 단조 때문에, 그들은 쿼리를 최적화에 도움이 될 수 있습니다.

    하며 Object는 추측 할 수 있지만, 그 ID를 증가에 확실히 사실이기 때문에, 나는 당신을 위해 아무 문제 없다, 그래서 당신이 전에 무명 통해 보안에 의존하지 않았다 생각한다.

    단점은 작은 일이기는하지만, 사용자가 ObjectId가로서 식별 할 수있는 경우 사용자에게 서버 누출의 생성 시간, 즉, 그녀는 객체의 생성 시간을 리버스 엔지니어링 할 수 있다는 것입니다. 그게 내가 볼 수있는 유일한 잠재적 인 문제입니다.

  3. from https://stackoverflow.com/questions/19029174/are-there-any-reasons-why-i-should-shouldnt-use-objectids-in-my-restful-urls by cc-by-sa and MIT license