오늘부터 MongoDB라는 데이터베이스에 대해 하루에 20분씩 올인을 하겠습니다. ㅎ
데이터베이스는 우리가 만드는 애플리케이션의 중요한 정보를 저장하고 관리하는 아주 중요한 역할을 합니다.
MongoDB는 요즘 많은 개발자들이 사용하는 인기 있는 데이터베이스 중 하나입니다.
이번 시간에는 MongoDB가 무엇인지, 왜 등장했고 어떤 특징을 가지고 있는지 쉽고 재미있게 알아보겠습니다.
최근 웹 서비스나 앱을 만들 때 MongoDB를 사용하는 경우가 점점 늘어나고 있습니다.
왜 그럴까요?
우리가 사용하는 인터넷 서비스는 예전보다 훨씬 더 복잡해지고, 다루어야 하는 데이터의 양도 엄청나게 많아졌습니다.
사진, 동영상, 친구들의 소식, 상품 정보 등 정말 다양한 형태의 데이터가 실시간으로 쏟아져 나옵니다.
다양한 종류의 데이터 처리
MongoDB는 이렇게
다양하고 많은 양의 데이터
를 쉽고 빠르게 처리할 수 있도록 도와주는 특별한 데이터베이스입니다.
기존의 방식(관계형 데이터베이스)으로는 처리하기 어려웠던 문제들을 해결하는 데 도움을 주기 때문에 많은 주목을 받고 있습니다.
우리가 컴퓨터에서 문서를 작성할 때 보통 한글 파일(.hwp)이나 워드 파일(.docx)을 사용하죠? 하나의 파일 안에 제목, 내용, 그림 등 다양한 정보를 담을 수 있습니다.
MongoDB는 데이터를 저장할 때 마치 이런
문서
처럼 생긴 단위로 저장합니다.
이 문서는
JSON(JavaScript Object Notation)
이라는 특별한 형식과 비슷하게 생겼습니다. (정확히는 BSON이라는 형식을 사용하는데, JSON과 거의 비슷하다고 생각하시면 됩니다.)
예를 들어, 학생 정보를 저장한다고 생각해 봅시다.
관계형 데이터베이스에서는 학생 테이블, 과목 테이블 등을 따로 만들고 서로 연결해야 할 수 있습니다.
하지만 MongoDB에서는 한 명의 학생 정보를 하나의 문서 안에 모두 담을 수 있습니다.
MongoDB는 2007년, '10gen'이라는 회사(지금은 'MongoDB, Inc.'로 이름이 바뀌었습니다)에서 처음 개발하기 시작했습니다.
당시 개발자들은 기존의 관계형 데이터베이스가 가진 몇 가지 한계점, 특히 대규모 웹 애플리케이션을 만들 때 겪는 어려움을 해결하고 싶어 했습니다.
기존 관계형 데이터베이스는 데이터 구조를 미리 엄격하게 정해야 하고(스키마 정의), 데이터 양이 많아지거나 구조를 변경하려면 작업이 복잡하고 시간이 오래 걸리는 경우가 많았습니다.
개발 속도가 매우 중요한 현대 웹 환경에서는 이것이 큰 걸림돌이 될 수 있었습니다.
그래서 10gen의 개발자들은 다음과 같은 목표를 가지고 MongoDB를 만들었습니다.
개발자들이 더 쉽고 빠르게
개발할 수 있도록 하자.
데이터 구조 변경에
유연하게
대처할 수 있도록 하자.
데이터 양이 많아져도
쉽게 확장
할 수 있도록 하자(수평 확장).
이런 목표 덕분에 MongoDB는 특히 빠르게 변화하고 성장해야 하는 스타트업이나 대규모 인터넷 서비스에서 큰 인기를 얻게 되었습니다.
앞서 설명했듯이 MongoDB는 문서(Document) 단위로 데이터를 저장합니다.
같은 컬렉션 안에 있더라도 각 문서의 구조가 조금씩 달라도 괜찮습니다.
예를 들어, 어떤 학생 문서는 '동아리' 정보가 있지만, 다른 학생 문서는 없을 수도 있습니다.
또는 새로운 정보(예: '봉사활동 시간')가 생기면 기존 구조를 크게 바꾸지 않고도 쉽게 추가할 수 있습니다.
이런 유연성은 특히
MongoDB는 개발자들이 사용하는 프로그래밍 언어(JavaScript, Python, Java 등)의 데이터 구조와 매우 유사한 형태로 데이터를 저장합니다(JSON/BSON).
덕분에 데이터를 변환하는 복잡한 과정 없이 바로 사용할 수 있어서 개발 생산성이 높아집니다.
필요한 데이터를 가져오는 쿼리(Query) 문법도 직관적이고 배우기 쉬운 편입니다.
오늘은 MongoDB가 무엇인지, 왜 현대 애플리케이션 개발에서 중요하게 여겨지는지에 대해 알아보았습니다.
MongoDB는 유연한 문서 기반의 데이터 모델, 쉬운 확장성, 빠른 개발 속도 등의 장점을 가진 강력한 NoSQL 데이터베이스입니다.
기존의 관계형 데이터베이스와는 다른 특징들을 가지고 있어서, 다루는 데이터의 종류나 프로젝트의 성격에 따라 적합한 데이터베이스를 선택하는 것이 중요합니다.
다음 시간에는 MongoDB의 핵심 구조인
아키텍처
에 대해 좀 더 자세히 살펴보겠습니다.
문서와 컬렉션은 실제로 어떻게 구성되는지, 그리고 MongoDB의 안정성과 확장성을 책임지는 복제 세트(Replica Set)와 샤딩(Sharding)은 무엇인지 알아보는 시간을 갖겠습니다.