MongoDB는 BSON 문서를 컬렉션에 저장하는 데이터베이스이다. 문서는 중첩 객체와 배열을 포함할 수 있으며, 같은 컬렉션의 문서가 반드시 동일한 필드를 가질 필요는 없다. 이러한 유연성은 스키마 설계가 불필요하다는 뜻이 아니다.
분야 | 문서형 데이터베이스 |
|---|
문서와 접근 패턴
자주 함께 읽는 데이터를 함께 저장하면 필요한 정보를 적은 접근으로 가져올 수 있다. 반면 함께 바뀌지 않거나 크기가 계속 커지는 데이터는 별도 문서와 참조로 나눌 수 있다. 임베딩과 참조의 선택은 실제 조회·갱신 패턴에 따라 달라진다.
상품 문서 예시
서점의 책과 전자기기의 상세 속성은 서로 다르다. 공통 필드로 상품 번호·이름·가격을 두고 유형별 속성을 다르게 구성할 수 있다. 그러나 가격의 자료형이 문서마다 제각각이면 정렬과 계산이 예상대로 동작하지 않을 수 있으므로 필요한 항목에는 검증 규칙을 둔다.
중복과 갱신 경계
주문 시점의 배송 주소를 주문 문서에 남기는 것은 당시 사실을 보존하는 설계가 될 수 있다. 반대로 최신 사용자 주소를 모든 주문에 중복 저장한 뒤 일괄 갱신하려 하면 유지 비용이 커진다. 어떤 값이 역사적 기록이고 어떤 값이 최신 참조인지 먼저 구별한다.
인덱스와 운영
문서 모델도 인덱스와 질의 계획이 중요하다. 필드가 유연하다는 이유로 모든 조건을 빠르게 검색할 수 있는 것은 아니다. 데이터의 성장, 문서 크기, 중복 갱신 비용을 검토하고 운영 규모 이전에 대표 조회로 모델을 확인한다.
참고 자료
관련 기술 비교
데이터베이스 | |
|---|---|
관계형 | MySQL · PostgreSQL · MariaDB · SQLite |
NoSQL | |
스토리지 엔진 | |