몽고DB를 사용하는 첫 번째 단계는 몽고DB의 기본 개념과 데이터 모델(데이터 구조)을 이해하고, 데이터가 어떻게 저장되는지를 파악하는 것입니다. 실제로 몽고DB는 MySQL과 매우 유사하기 때문에 MySQL을 알고 있는 사람은 몽고DB를 배우는 데 어려움을 겪지 않을 것입니다.
몽고DB의 기본 개념
데이터베이스
몽고DB 데이터베이스는 MySQL 데이터베이스와 동일합니다.
컬렉션
몽고DB 컬렉션은 문서 데이터의 모음을 나타내며, MySQL의 테이블 개념과 유사합니다.
문서
MySQL 테이블의 데이터 행과 유사한 몽고DB 문서는 여러 필드로 구성된 JSON 구조의 데이터로, 몽고DB의 문서 구조는 매우 유연합니다.
필드
MySQL 테이블의 필드 개념과 유사한 몽고DB 문서 필드는 각 필드가 자체 데이터 유형을 가지고 저장될 구체적인 데이터를 나타냅니다.
인덱스
몽고DB 인덱스는 MySQL 인덱스와 유사하여 쿼리 효율을 향상시키는 데 사용됩니다.
집계
몽고DB 집계 개념은 MySQL의 Group by/Count/Sum 집계 분석과 유사하며, 데이터 통계 분석에 사용됩니다.
몽고DB와 MySQL의 개념 비교
MySQL | MongoDB |
---|---|
데이터베이스 | 데이터베이스 |
테이블 | 컬렉션 |
행 | 문서 |
열 | 문서 필드 |
인덱스 | 인덱스 |
집계 (예: group by) | 집계 |
기본적으로 몽고DB의 개념은 MySQL과 대응되므로, 몽고DB는 관계형 데이터베이스(NoSQL)에 가장 유사합니다.
몽고DB 문서 데이터
문서는 간단히 말해 여러 필드로 구성된 JSON 구조입니다. 몽고DB로 개발할 때, 중점은 주로 문서 구조를 어떻게 디자인할지에 대해 생각하는 것인데, 이는 MySQL을 사용할 때 테이블 구조를 디자인하는 것과 유사합니다.
몽고DB 문서 데이터의 예:
{
"_id": "5cf0029caff5056591b0ce7d",
"firstname": "Jane",
"lastname": "Wu",
"address": {
"street": "1 Circle Rd",
"city": "Los Angeles",
"state": "CA",
"zip": "90404"
},
"hobbies": ["surfing", "coding"]
}
이는 MySQL 테이블 구조가 달성할 수 없는 임의로 중첩된 JSON 구조일 수 있습니다. _id
필드는 문서의 주 키로 작용하며, 특정 값을 지정하지 않으면 몽고DB가 무작위로 고유한 값을 생성합니다.
몽고DB의 데이터 구조와 MySQL 테이블의 가장 큰 차이점은 몽고DB가 문서 구조를 미리 정의하지 않아도 된다는 것입니다. 몽고DB를 사용하면 미리 정의된 스키마가 필요 없이 직접 JSON 데이터를 컬렉션에 삽입할 수 있습니다. 몽고DB 컬렉션에 JSON 데이터를 쓸 때마다 형식이 다를 수 있어 필드를 마음대로 추가하거나 제거할 수 있습니다.
참고: 몽고DB의 문서 구조는 매우 유연하며 각 항목의 형식이 컬렉션 내에서 다양할 수 있지만, 실제 응용 프로그램에서는 보통 컬렉션 내의 데이터 구조가 일관되기 때문에 유지하는 것이 악몽이 되지 않도록 주의해야 합니다.