코딩항해기

[DBMS] MongoDB 이해 (NoSQL) 본문

DBMS

[DBMS] MongoDB 이해 (NoSQL)

miniBcake 2024. 11. 22. 08:57

 

MongoDB

오픈소스 비관계형 데이터베이스 관리시스템으로, 테이블과 행 대신 유연한 문서를 활용해 다양한 데이터 형식을 처리하고 저장한다. RDBMS를 필요로 하지 않으므로, 사용자가 다변량 데이터 유형을 손쉽게 저장하고 쿼리할 수 있는 탄력적인 데이터 저장 모델을 사용할 수 있다. 이 점은 개발자의 데이터베이스 관리를 간소화하고 확장성을 갖춘 크로스 플랫폼 및 서비스 환경을 구축한다.

 

MongoDB는 문서 또는 문서 컬렉션이 기본 단위로, 이진 JSON형식으로 지정되어 다양한 데이터를 저장하고 분산처리할 수 있다. 동적 스키마 설계를 활용하기 때문에 유연성을 확보해 데이터 레코드를 생성하고 집계를 통해 문서 컬렉션을 쿼리하며, 대량의 정보를 분석한다.

 

MongoDB는 C++로 작성된 오픈소스 문서지향(Document-Oriented) 적 Cross-platform 데이터베이스이며, NoSQL의 대표적인 DBMS로 모바일 애플리케이션, 실시간 분석, 컨텐츠 관리 시스템, 엔터프라이즈 데이터 웨어하우스 등에 사용된다.

 

NoSQL (Not only SQL)
데이터베이스 내에서 비정형 데이터와 반정형 데이터를 수집, 저장, 조회하는데 사용되는 데이터베이스 관리 시스템 접근방식이다. (SQL만을 사용하지 않는 데이터베이스 관리 시스템, 비관계형 데이터베이스)

관계형데이터베이스를 사용하지 않는다는 의미가 아닌 여러 유형의 데이터베이스를 사용하는 비관계형 데이터 베이스이다.
테이블, 컬럼과 같은 스키마를 가지지 않고, 대규모 확대가 가능하도록 수평적 확장성을 가지고 있다. 집합, 지향 모델을 사용한 분산환경으로 지연과 처리율이 우수하다. 빅데이터 처리에 특화되어 있다.

 

 

MongoDB 장점

로드 밸런싱

MongoDB의 로드 밸런싱 공유 프로세스는 승인된 읽기 쓰기 처리량을 유지하면서 여러 가상 머신에 대규모 데이터 세트를 한 번에 배포한다. 샤딩이라고 불리는 수평적 확장은 클라우드에 기반한 배포 용량을 확장하는 동시에 조직이 하드웨어를 수직적으로 확장하는 비용을 방지할 수 있다.

 

임시 데이터베이스 쿼리

타사 데이터베이스와 차별화되는 MongoDB의 최대 장점 중 하나는 바로 임시 쿼리를 처리하는 데 사전 정의된 스키마가 필요하지 않다는 점이다. MongoDB 데이터베이스는 SQL 데이터베이스와 유사한 쿼리 언어를 사용하므로 초보 개발자나 고급 개발자 모두에게 매우 용이한 접근성을 제공해 이러한 접근성 덕분에 일반적인 지원 방법과 간단한 셸 명령만으로 손쉽게 데이터 푸시, 쿼리, 정렬, 업데이트, 내보내기 기능을 수행할 수 있다.


다중 언어 지원

MongoDB의 탁월한 특징 중 하나는 바로 다중 언어를 지원하는 기능이다. MongoDB는 이미 여러 버전으로 출시된 바 있으며 Python, PHP, Ruby, Node.js, C++, Scala, JavaScript 등 대중적인 프로그래밍 언어에 대한 드라이버 지원을 통해 지속적인 개발을 수행할 수 있다.

 

 

설치

 

Try MongoDB Enterprise Advanced

Try MongoDB Enterprise Advanced on premise non-relational database including the Enterprise Server, Ops Manager, and Enterprise Kubernetes Operator!

www.mongodb.com

 

 

MongoDB 샘플 Document

{
    "_id": ObjectId("5099803df3f4948bd2f98391"),
    "username": "velopert",
    "name": { first: "M.J.", last: "Kim" }
}

 

RDBMS라면 이러한 테이블 구조를 갖는다.

NoSQL에서는 하나의 Document에 넣는다.

{
 _id: POST_ID,
 title: POST_TITLE,
 content: POST_CONTENT,
 username: POST_WRITER,
 tags: [ TAG1, TAG2, TAG3 ],
 time: POST_TIME
 comments: [
      { 
             username: COMMENT_WRITER,
             mesage: COMMENT_MESSAGE,
             time: COMMENT_TIME
       },
       { 
             username: COMMENT_WRITER,
             mesage: COMMENT_MESSAGE,
             time: COMMENT_TIME
       }
 ]
}

 

참고사이트 : https://velopert.com/436

 

'DBMS' 카테고리의 다른 글

[DBMS] ORM (Object-Relational Mapping)  (0) 2024.12.17
[DBMS] PostgreSQL 이해 (ORDBMS)  (0) 2024.11.23
[DBMS] Oracle에서 MySQL로 데이터 이관 (CSV/DBeaver)  (0) 2024.10.03
[DBMS/XML] CDATA  (0) 2024.09.05
[DBMS] 정규화 Normalization  (0) 2024.08.16