PromleeBlog
sitemapaboutMe

posting thumbnail
MongoDB 소개 및 배경 - MongoDB 올인 1일차
MongoDB Intro & Background - MongoDB All-in Day 1

📅

🚀

들어가기 전에🔗

오늘부터 MongoDB라는 데이터베이스에 대해 하루에 20분씩 올인을 하겠습니다. ㅎ
데이터베이스는 우리가 만드는 애플리케이션의 중요한 정보를 저장하고 관리하는 아주 중요한 역할을 합니다.
MongoDB는 요즘 많은 개발자들이 사용하는 인기 있는 데이터베이스 중 하나입니다.
이번 시간에는 MongoDB가 무엇인지, 왜 등장했고 어떤 특징을 가지고 있는지 쉽고 재미있게 알아보겠습니다.

🚀

MongoDB, 왜 요즘 많이 이야기할까요?🔗

최근 웹 서비스나 앱을 만들 때 MongoDB를 사용하는 경우가 점점 늘어나고 있습니다.
왜 그럴까요?
우리가 사용하는 인터넷 서비스는 예전보다 훨씬 더 복잡해지고, 다루어야 하는 데이터의 양도 엄청나게 많아졌습니다.
사진, 동영상, 친구들의 소식, 상품 정보 등 정말 다양한 형태의 데이터가 실시간으로 쏟아져 나옵니다.
다양한 종류의 데이터 처리
다양한 종류의 데이터 처리
MongoDB는 이렇게
다양하고 많은 양의 데이터
를 쉽고 빠르게 처리할 수 있도록 도와주는 특별한 데이터베이스입니다.
기존의 방식(관계형 데이터베이스)으로는 처리하기 어려웠던 문제들을 해결하는 데 도움을 주기 때문에 많은 주목을 받고 있습니다.

🚀

MongoDB란 무엇일까요?🔗

MongoDB는
NoSQL
데이터베이스의 한 종류입니다.
NoSQL은 "Not Only SQL"의 줄임말로, 기존의 관계형 데이터베이스(SQL을 사용하는 데이터베이스)와는 다른 방식으로 데이터를 저장하고 관리하는 데이터베이스들을 말합니다.
MongoDB는 그중에서도
문서 지향(Document-Oriented)
데이터베이스라고 불립니다.

문서 지향 데이터베이스🔗

우리가 컴퓨터에서 문서를 작성할 때 보통 한글 파일(.hwp)이나 워드 파일(.docx)을 사용하죠? 하나의 파일 안에 제목, 내용, 그림 등 다양한 정보를 담을 수 있습니다.
MongoDB는 데이터를 저장할 때 마치 이런
문서
처럼 생긴 단위로 저장합니다.
이 문서는
JSON(JavaScript Object Notation)
이라는 특별한 형식과 비슷하게 생겼습니다. (정확히는 BSON이라는 형식을 사용하는데, JSON과 거의 비슷하다고 생각하시면 됩니다.)
예를 들어, 학생 정보를 저장한다고 생각해 봅시다.
관계형 데이터베이스에서는 학생 테이블, 과목 테이블 등을 따로 만들고 서로 연결해야 할 수 있습니다.
하지만 MongoDB에서는 한 명의 학생 정보를 하나의 문서 안에 모두 담을 수 있습니다.
{
  "이름": "김철수",
  "나이": 17,
  "학년": 2,
  "수강과목": [
    { "과목명": "수학", "점수": 90 },
    { "과목명": "영어", "점수": 85 }
  ],
  "동아리": "농구부"
}
이렇게 하나의 문서 안에 관련된 정보를 모두 담을 수 있어서 데이터를 이해하고 사용하기가 더 직관적일 수 있습니다.
MongoDB의 핵심 개념은 다음과 같습니다.

🚀

MongoDB는 어떻게 탄생했을까요? (쉬어가기)🔗

MongoDB는 2007년, '10gen'이라는 회사(지금은 'MongoDB, Inc.'로 이름이 바뀌었습니다)에서 처음 개발하기 시작했습니다.
당시 개발자들은 기존의 관계형 데이터베이스가 가진 몇 가지 한계점, 특히 대규모 웹 애플리케이션을 만들 때 겪는 어려움을 해결하고 싶어 했습니다.
기존 관계형 데이터베이스는 데이터 구조를 미리 엄격하게 정해야 하고(스키마 정의), 데이터 양이 많아지거나 구조를 변경하려면 작업이 복잡하고 시간이 오래 걸리는 경우가 많았습니다.
개발 속도가 매우 중요한 현대 웹 환경에서는 이것이 큰 걸림돌이 될 수 있었습니다.
그래서 10gen의 개발자들은 다음과 같은 목표를 가지고 MongoDB를 만들었습니다.
이런 목표 덕분에 MongoDB는 특히 빠르게 변화하고 성장해야 하는 스타트업이나 대규모 인터넷 서비스에서 큰 인기를 얻게 되었습니다.

🚀

MongoDB를 선택하는 이유🔗

그렇다면 왜 많은 사람들이 관계형 데이터베이스 대신, 혹은 관계형 데이터베이스와 함께 MongoDB를 사용할까요? MongoDB만의 특별한 장점들을 살펴보겠습니다.

유연한 데이터 모델 (Flexible Schema)🔗

앞서 설명했듯이 MongoDB는 문서(Document) 단위로 데이터를 저장합니다.
같은 컬렉션 안에 있더라도 각 문서의 구조가 조금씩 달라도 괜찮습니다.
예를 들어, 어떤 학생 문서는 '동아리' 정보가 있지만, 다른 학생 문서는 없을 수도 있습니다.
또는 새로운 정보(예: '봉사활동 시간')가 생기면 기존 구조를 크게 바꾸지 않고도 쉽게 추가할 수 있습니다.
이런 유연성은 특히
개발 초기 단계
나 요구사항이
자주 바뀌는
프로젝트에서 매우 유용합니다.

쉬운 확장성 (Scalability)🔗

서비스가 성장해서 사용자와 데이터가 많아지면 데이터베이스 서버의 성능을 높여야 합니다.
관계형 데이터베이스는 보통 서버 자체의 성능을 높이는
수직 확장(Scale-up)
을 주로 사용합니다. 더 좋은 CPU, 더 많은 메모리를 가진 비싼 서버로 바꾸는 방식입니다. 하지만 이 방식은 비용이 많이 들고 한계가 있습니다.
MongoDB는 여러 대의 비교적 저렴한 서버에 데이터를 분산 저장하고 처리하는
수평 확장(Scale-out 또는 Sharding)
을 쉽게 할 수 있도록 설계되었습니다.
수직 확장과 수평 확장
수직 확장과 수평 확장

빠른 개발 속도🔗

MongoDB는 개발자들이 사용하는 프로그래밍 언어(JavaScript, Python, Java 등)의 데이터 구조와 매우 유사한 형태로 데이터를 저장합니다(JSON/BSON).
덕분에 데이터를 변환하는 복잡한 과정 없이 바로 사용할 수 있어서 개발 생산성이 높아집니다.
필요한 데이터를 가져오는 쿼리(Query) 문법도 직관적이고 배우기 쉬운 편입니다.

관계형 데이터베이스(RDB)와의 비교🔗

특징MongoDB (문서 지향 NoSQL)관계형 데이터베이스 (RDB, 예: MySQL, PostgreSQL)
데이터 구조문서(Document) 기반, 유연한 스키마(Schema-less)테이블(Table) 기반, 고정된 스키마
데이터 모델JSON/BSON과 유사한 계층 구조행(Row)과 열(Column)으로 구성된 표 구조
확장성수평 확장 (Sharding) 용이주로 수직 확장 (Scale-up)
데이터 일관성최종적 일관성 (Eventual Consistency) 보장강력한 일관성 (Strong Consistency, ACID) 보장
조인(Join)제한적 지원 (Lookup Aggregation 사용)강력한 조인 기능 지원
개발 편의성빠른 개발 속도, 쉬운 데이터 모델링데이터 모델링이 상대적으로 복잡할 수 있음
적합한 사용 사례비정형 데이터, 빠른 개발, 대용량 데이터 처리정형 데이터, 금융 거래 등 높은 일관성 요구

🚀

결론🔗

오늘은 MongoDB가 무엇인지, 왜 현대 애플리케이션 개발에서 중요하게 여겨지는지에 대해 알아보았습니다.
MongoDB는 유연한 문서 기반의 데이터 모델, 쉬운 확장성, 빠른 개발 속도 등의 장점을 가진 강력한 NoSQL 데이터베이스입니다.
기존의 관계형 데이터베이스와는 다른 특징들을 가지고 있어서, 다루는 데이터의 종류나 프로젝트의 성격에 따라 적합한 데이터베이스를 선택하는 것이 중요합니다.
다음 시간에는 MongoDB의 핵심 구조인
아키텍처
에 대해 좀 더 자세히 살펴보겠습니다.
문서와 컬렉션은 실제로 어떻게 구성되는지, 그리고 MongoDB의 안정성과 확장성을 책임지는 복제 세트(Replica Set)와 샤딩(Sharding)은 무엇인지 알아보는 시간을 갖겠습니다.

참고🔗