- Published on
MongoDB에 대해서 feat. RDBMS (MySQL)
- Authors
- Name
- piano cat
MongoDB
MongoDB는 NoSQL 데이터베이스 관리 시스템(Nosql Database Management System) 중 하나로, 문서 지향(Document-Oriented) 데이터베이스입니다. 이는 데이터를 테이블로 구성하는 전통적인 SQL 기반 데이터베이스와는 다르게, 문서(document) 형태로 저장하며, 이러한 문서들을 모아서 컬렉션(collection)으로 구성합니다. 문서는 BSON(Binary JSON) 형식으로 저장되며, 이는 JSON과 유사하나 바이너리 형태로 인코딩된 데이터입니다.
MongoDB의 특징 중 하나는 확장성입니다. MongoDB는 수평적 확장(horizontal scaling)이 가능하며, 데이터베이스 서버에 새로운 머신을 추가하여 성능을 향상시킬 수 있습니다. 이러한 확장성은 대규모 데이터 처리에 유용합니다.
MySQL
MySQL은 SQL(Structured Query Language)을 사용하는 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL은 전통적인 SQL 데이터베이스의 형태를 가지며, 데이터는 정해진 스키마(schema)에 따라 테이블(table) 형태로 구성됩니다.
MongoDB와 MySQL의 차이
MySQL과 MongoDB의 가장 큰 차이점 중 하나는 데이터의 구조입니다. MySQL은 데이터를 테이블로 구성하며, 각 테이블은 행(row)과 열(column)의 구조를 가집니다. 반면 MongoDB는 데이터를 문서(document)로 구성하며, 이러한 문서는 필드(field)와 값(value)의 쌍으로 이루어진 데이터 구조를 가집니다.
MongoDB와 MySQL의 데이터베이스 저장 및 처리 방식
또한 MySQL은 데이터가 관계를 가질 수 있습니다. 이는 여러 테이블 간의 관계를 설정하여 데이터를 구성할 수 있음을 의미합니다. MongoDB는 이러한 관계를 가질 수 없습니다. 대신 MongoDB는 임베디드(embedded) 문서나 배열(array)*을 사용하여 데이터를 구성합니다.
데이터의 저장 방식과 처리 방식에서 차이가 있기 때문에, MySQL과 MongoDB는 서로 다른 사용 사례에 적합합니다. MySQL은 관계형 데이터의 저장과 처리에 특화되어 있으며, MongoDB는 비정형 데이터의 저장과 처리에 특화되어 있습니다.
+ RDBMS or NoSQL 사용적합한 경우 예시
RDBMS:
- 관계를 가진 정형 데이터를 저장하고 처리해야 하는 경우 (예: 금융 거래, 주문 정보)
- 데이터 일관성이 중요한 경우 (예: 금융 거래, 의료 기록)
- 높은 수준의 데이터 정합성이 필요한 경우 (예: 유저 정보, 회원 정보)
- 다양한 타입의 쿼리를 사용해야 하는 경우 (예: 다양한 필드 조건을 활용한 검색, 복잡한 집계 처리)
NoSQL:
- 대규모 비정형 데이터를 저장하고 처리해야 하는 경우 (예: 로그 데이터, 소셜 미디어 데이터)
- 확장성이 중요한 경우 (예: 웹 어플리케이션, 빅데이터 처리)
- 데이터 스키마가 자주 변하는 경우 (예: 개발 초기 단계, 프로토타입)
- 다양한 형태의 데이터를 저장하고 처리해야 하는 경우 (예: 이미지, 동영상, 텍스트)
- 위의 예시는 일반적인 경우이며, 실제 사용 사례에 따라 RDBMS와 NoSQL 데이터베이스가 더 적합한 경우가 서로 다를 수 있습니다. 따라서 사용자가 데이터베이스를 선택할 때는 사용 사례와 요구사항을 고려하여 적합한 데이터베이스를 선택해야 합니다.
* 임베디드 문서나 배열
MongoDB에서는 임베디드 문서(embedded document)나 배열(array)을 사용하여 데이터를 구성할 수 있습니다. 이러한 데이터 구조는 NoSQL 데이터베이스의 장점 중 하나로, 데이터를 보다 유연하게 구성할 수 있게 해줍니다.
임베디드 문서는 다른 문서 내에 포함될 수 있는 문서입니다. 예를 들어, 만약 온라인 상점의 데이터를 다룬다고 가정하면, 각 제품의 상세 정보를 표시하는 문서를 별도로 만들지 않고 제품 문서에 포함시킬 수 있습니다. 이를 통해 제품 정보를 더 효율적으로 저장하고 조회할 수 있습니다.
배열은 여러 개의 값을 담을 수 있는 데이터 구조입니다. MongoDB에서는 배열을 문서 내에 포함시킬 수 있습니다. 예를 들어, 만약 회원 정보를 다룬다고 가정하면, 각 회원이 가입한 취미나 관심 분야를 배열 형태로 저장할 수 있습니다. 이를 통해 검색 및 분석 작업에서 더 효율적으로 데이터를 활용할 수 있습니다.
이러한 임베디드 문서와 배열을 사용하여 MongoDB는 관계형 데이터베이스에서는 어려웠던 유연성과 확장성을 제공하며, 비정형 데이터를 보다 쉽게 다룰 수 있습니다.