Mongo DB란?

Mongo DB는 강력하고 확장 가능하며 무료 오픈소시 NoSQL 데이터 베이스입니다.
Mongo DB는 2009년 2월달에 처음 출시되었으며 이후 최고의 NoSQL 데이터베이스의 위치를 차지했습니다.
MongoDB는 널리 사용되는 확장 가능한 데이터베이스 옵션이 되었으며 현재 IBM, Twitter, Zendesk, Forbes, Facebook, Google 및 기타 수백만 곳과 같은 많은 유명 조직의 백엔드 데이터 저장소로 사용되고 있습니다.MongoDB는 오픈소스 개발자 커뮤니티에서도 주목을 받고 있으며, 많은 개발자들이 MongoDB를 기반으로 한 다양한 오픈소스 프로젝트를 진행하고 있습니다.
Mongo DB 애플리케이션
MongoDB는 다양한 웹 애플리케이션에서 기본 데이터 저장소로 널리 사용됩니다.
Mongo DB를 언제 어떻게 사용할까?
MongoDB는 문서 기반 데이터 저장소 입니다.
즉, MySQL이나 PostgreSQL과 같은 구조화된 테이블에 비해 상당히 구조화되지 않은 형태로 정보를 저장합니다.
본질적으로 MongoDB에 저장된 데이터에 스키마가 포함되어 있지 않음을 의미합니다.
따라서 MongoDB는 빠르고 확장 가능한 스토리지 서비스를 제공하므로 성능이 중요한 애플리케이션에서 널리 사용됩니다.
추가로 MongoDB는 C++로 작성되었기 때문에 다른 많은 데이터베이서에 비해 속도가 훨씬 빠릅니다.
MongoDB는 Join을 지원하지 않기 때문에 Table Join이 필요한 애플리케이션에 사용하면 안됩니다.
이는 MongoDB에 저장된 데이터가 구조화되지 않았기 때문에 Join을 만드는 데 시간이 많이
걸리고 성능이 저하될 수 있기 때문입니다.
MongoDB의 장점
MongoDB는 하나의 문서에 저장됩니다.
이렇게 하면 데이터 검색 프로세스 속도가 빨라집니다.
그래서 Facebook과 같은 대부분의 대규모 응용 프로그램은 수십억 명의 사용자가 프로그램을 사용한다는 사실 때문에 약간의 성능 향상이 필요하므로 성능이 조금만 향상되더라도 전체적으로 큰 영향을 미칠 수 있습니다.
이게 MongoDB를 사용하는 가장 중요한 이점 입니다.
이 외에도 다양한 이점이 있습니다.
- 클러스터링 : MongoDB를 사용하면 클러스터 노드 전체에 데이터를 분산하여 데이터베이스 서버에 단일 장애 지점이 없도록 할 수 있습니다.
- 보조 인덱스 지원 : MongoDB를 사용하면 기본 인덱스 뿐만 아니라 많은 애플리케이션에서 중요한 보조 인덱스도 생성할 수 있습니다.
- 캐싱 : MongoDB는 쿼리 결과를 더 빠르게 검색할 수 있도록 많은 양의 데이터를 캐시합니다.
- 기능세트 : MongoDB는 매우 사용자 친화적인 데이터베이스를 만드는 다양한 기능임시쿼리,인덱싱,복제,로그밸런싱,파일저장,집계,서버측JavaScript실행,제한된컬렉션등 을 갖추고 있습니다.
그럼 언제 MongoDB를 사용하지 말이야 할까?
MongoDB는 NoSQL 데이터베이스 이므로 ACID원자성,일관성,격리,내구성 요구 사항을 충족하지 않습니다.
결과적으로 ACID 준수가 필요한 애플리케이션ex:데이터베이스수준트랜잭션이필요한애플리케이션은 MongoDB를 사용할 수 없습니다.
예를 들어 은행의 핵심 뱅킹 시스템을 개발할 때 MongoDB를 사용할 필요가 없을 수도 있습니다.
또한 많은 데이터베이스와 달리 MongoDB에는 저장 프로시저에 대한 규정이 없습니다.
MongoDB 성능
MongoDB의 성능은 데이터 베이스의 정확한 성능은 다양한 요인에 따라 달라집니다.
- 사용예시 : 응용 프로그램에는 데이터 구조화가 필요합니다. 이러한 상황에서는 SQL 기반 데이터베이스를 사용하는 것이 좋습니다. 다른 애플리케이션에서는 데이터를 구조화하는 것이 거의 불가능합니다
- 저장 : 당연히 성능 초당읽기및쓰기은 기본 스토리지 엔진에 따라 크게 달라집니다.
예를 들어 SSD는 확실히 일반 HDD보다 빠르므로 SSD 성능도 더 높습니다. - 램 : 데이터베어스 성능은 캐싱에 크게 좌우되며, 캐시할 수 있는 정보의 양은 데이터 베이스에 제공되는 RAM의 양에 따라 달리집니다.
- 클러스터링 : MongoDB를 사용하면 고가용성 및 성능을 갖춘 데이터베이스 클러스터를 쉽게 설정할 수 있습니다.
이는 일반적으로 SQL 기반 데이터베이스에서는 어렵습니다.
사용자들이 서로의 게시물을 공유하고, 서로의 게시물에 좋아요를 누르고, 댓글을 달 수 있는 소셜 네트워크 사이트입니다.
예를 들어 다양한 MapReduce 애플리케이션, 빅 데이터 시스템, 소셜 네트워킹 애플리케이션, 뉴스 포럼 등이 있습니다.
이러한 사용 사례에서는 데이터를 테이블로 구성하기가 어렵습니다.
데이터를 테이블로 구조화 하는 것이 가능하더라도 데이터베이스 Join이 필요한 쿼리는 데이터베이스 성능을 크게 저하시키기 때문에 이것이 항상 바람직한 것은 아닙니다.
감사합니다.
NoSQL이란?
관계형 데이터베이스인 RDB 는 하나의 공통된 특성 아래 데이터베이스의 특성에 따라 분류되는 반면, NoSQL에 속한 데이터베이스들은 관계형 데이터모델을 사용하지 않는다는 공통점만 같으면 몽
balang.tistory.com
'Data Engineer' 카테고리의 다른 글
Spark SQL과 데이터 처리 0 | 2025.03.20 |
---|---|
Oracle VM VirtualBox를 활용해서 Linux OS 설치방법 0 | 2023.11.02 |
Flask란? Flask설치방법 0 | 2023.09.21 |
Kubernetes란? 0 | 2023.09.16 |
데이터 웨어하우스DataWarehouse와 데이터 레이크DataLake의 차이점 0 | 2023.09.15 |