MongoDB에서 ObjectId와 해당 문자열 형식의 저장 차이
Mongo DB에서 ObjectIds를 사용하는 것이 조금 혼란스럽습니다.물론 다른 클라이언트 측에서 생성된 ID와 거의 충돌하지 않는 클라이언트 측 ID를 생성하는 데 유용합니다.하지만 몽고는 특별한 방법으로 그것들을 보관하는 것 같습니다.ID의 문자열 표현을 저장하는 것은 개체 ID를 개체로 저장하는 것과 다릅니다.왜 이러한가?
문자열 형식은 객체 형식과 동일한 정보를 모두 가지고 있지 않습니까?왜 몽고는 그 두 가지 형태를 구별하기 위해 그렇게 멀리까지 갑니까?예를 들어 프런트 엔드에서 보낸 _ids를 비교하려고 하면 짜증이 납니다.제 데이터베이스는 문자열 형식 ID를 저장하든 객체 형식 ID를 저장하든 전혀 일치하지 않습니다. 그리고 제 코드는 확실히 부분적으로 책임이 있습니다. 저는 대부분 몽고가 이것을 너무 이상하게 만든 것을 비난합니다.
이게 이상하다는 게 제 말이 맞나요?mongo는 왜 이런 식으로 합니까?
나는 비교하기 위해 코드에서 문자열로 변환하고 나는 그것처럼 보이는 모든 것을 보장합니다.ObjectId
는 실로사용다니로 됩니다.ObjectId
.
그 사이에 주목하는 것이 좋습니다.ObjectId
(http://docs.mongodb.org/manual/reference/object-id/) 그리고 그것은 16진수 표현입니다. 실제로 12바이트의 차이가 있습니다.ObjectId
은 2412인치 16인치 24인치입니다.
도 더 입니다. 크기가 더 작기 때문만이 아니라 이전부터ObjectId
인덱스의 일부만 로드되고 사용되는 부분만 로드되도록 특수한 방식으로 사용할 수 있습니다.이는 고유성을 보장하기 위해 해당 인덱스의 최신 부분만 로드하면 되는 삽입 시 가장 두드러집니다.16진수 표현으로는 이러한 동작을 보장할 수 없습니다.
저는 당신이 그것을 사용하지 않는 것을 강력히 추천합니다.ObjectId
의 16진수 표현.만약 당신이 "당신의 삶을 더 쉽게 만들고" 싶다면, 당신은 다른 것을 만드는 것이 더 나을 것입니다._id
그것은 작지만 왠지 독특하고 색인 친화적입니다.
ObjectId
내부에 저장할 때는 12바이트로, 16진수 문자열 표현보다 더 작습니다.그 둘은 다른 것입니다.
한 DB를 할 수 ._id
필드에서 이 문제를 해결하고 코드가 동일한 형식으로 저장되는지 확인합니다. ObjectId
MongoDB에서 생성하는 속도가 빠르기 때문에 새 문서를 만들 때 사용합니다.
언급URL : https://stackoverflow.com/questions/27896979/difference-between-storing-an-objectid-and-its-string-form-in-mongodb
'programing' 카테고리의 다른 글
C#의 대량 업데이트 (0) | 2023.06.24 |
---|---|
레일 숨겨진 필드 정의되지 않은 메서드 '합병' 오류 (0) | 2023.06.24 |
Oracle의 ALL_TAB_COLUMNS 테이블에 있는 BIN$... 테이블은 무엇입니까? (0) | 2023.06.24 |
스파크 데이터 프레임에 새 열을 추가하려면 어떻게 해야 합니까(PySpark 사용)? (0) | 2023.06.24 |
'id'는 Python에서 잘못된 변수 이름입니다. (0) | 2023.06.24 |