Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB 필드 이름의 최대 길이는 얼마일까?

MongoDB 필드 이름에 길이 제한이 있을까?

MongoDB는 내부적으로 BSON(Binary JSON) 형식으로 데이터를 저장합니다. BSON은 각 문자열 앞에 해당 문자열의 길이 정보를 함께 기록하는 구조를 사용하기 때문에, 필드 이름 자체에는 별도의 최대 길이 제한이 없습니다.

즉, 이론상 아주 긴 필드 이름도 문제없이 저장할 수 있습니다. 실제로 매우 긴 필드 이름을 가진 문서를 컬렉션에 삽입하는 예제를 통해 확인해 보겠습니다.

긴 필드 이름을 가진 문서 삽입하기

아래는 insertOne() 메서드를 사용해 수백 글자에 달하는 필드 이름을 가진 문서를 생성하는 예제입니다.

> db.maxLengthDemo.insertOne({
  "maxLengthhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
  ... (수백 글자 반복) ...
  hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" : "This is demo"
});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ce97ac978f00858fb12e926")
}

실행 결과 acknowledged 값이 true로 반환되었으며, 이는 극단적으로 긴 필드 이름을 가진 문서가 오류 없이 정상적으로 삽입되었음을 의미합니다.

find() 메서드로 문서 조회하기

이제 find() 메서드를 사용해 컬렉션에 저장된 모든 문서를 조회해 보겠습니다.

> db.maxLengthDemo.find();

위 명령을 실행하면 다음과 같이 아주 긴 필드 이름이 그대로 유지된 채 문서가 출력됩니다.

{ 
  "_id" : ObjectId("5ce97ac978f00858fb12e926"), 
  "maxLengthhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
  ... (수백 글자 반복) ...
  hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" : "This is demo" 
}

조회 결과에서 확인할 수 있듯이, MongoDB는 길이에 상관없이 필드 이름을 그대로 저장하고 반환합니다.

실무에서 알아두면 좋은 점

필드 이름의 길이에 기술적인 제한은 없지만, 실무에서는 다음 사항들을 고려하는 것이 좋습니다.

  • 저장 공간 낭비: 필드 이름은 모든 문서마다 반복해서 저장되므로, 이름이 길어질수록 전체 데이터 크기가 불필요하게 커집니다.
  • 네트워크 및 메모리 부담: 문서 크기가 커지면 쿼리 시 전송되는 데이터 양과 메모리 사용량도 함께 증가합니다.
  • 인덱스 키 길이 제한: 필드 이름 자체에는 제한이 없지만, 해당 필드에 인덱스를 생성할 경우 인덱스 키의 최대 길이 제한(기본적으로 1024바이트)에 걸릴 수 있습니다.
  • 가독성과 유지보수: 코드의 가독성과 협업 효율을 위해 짧고 의미가 분명한 필드 이름을 사용하는 것이 권장됩니다.

결론적으로 MongoDB의 BSON 구조 특성상 필드 이름에는 최대 길이 제한이 없지만, 성능과 관리 측면에서는 적절한 길이의 필드 이름을 사용하는 것이 바람직합니다.