MongoDB는 2000년대 중반부터 빅 데이터 애플리케이션에 사용된 수많은 비관계형 데이터베이스 기술입니다.
1. NoSQL 데이터베이스란?
MongoDB는 NoSQL 데이터베이스를 사용합니다. 일반적으로 "Not Only SQL"이라고 하는 NoSQL 데이터베이스는 기존의 관계형 데이터베이스 패러다임에서 벗어나 방대한 양의 비정형, 반정형 또는 정형 데이터를 효과적으로 관리하는 데이터베이스 시스템의 하위 집합입니다. NoSQL 데이터베이스는 스키마 유연성을 제공하여 동일한 데이터베이스 내에 많은 데이터 유형을 저장할 수 있고 사전 설정된 형식을 따르지 않고도 데이터를 저장할 수 있습니다.
방대한 양의 데이터를 처리하고 증가하는 데이터 요구 사항에 맞게 조정하기 위해 수평적 확장성을 위해 구축되어 여러 노드 또는 서버에 데이터를 분산합니다. 이러한 데이터베이스는 고속 데이터 액세스 및 검색에 탁월하기 때문에 실시간 애플리케이션과 트래픽이 많은 상황에 이상적입니다.
관계형 데이터베이스와 달리 NoSQL 데이터베이스는 복잡한 조인을 피하고 비정규화 또는 임베딩과 같은 다양한 방법을 사용하여 데이터 관계를 유지하는 경우가 많습니다. NoSQL 데이터베이스는 문서 데이터베이스, 키-값 저장소, 열 패밀리 저장소 및 그래프 데이터베이스와 같은 특정 데이터 형식에 각각 적합한 다양한 형태로 제공됩니다.
다양한 데이터 유형을 처리할 수 있는 다양성, 수평적 확장성 및 기존 관계형 데이터베이스에 비해 우수한 성능으로 인해 웹 애플리케이션, 소셜 미디어 플랫폼, IoT 시스템, 실시간 분석 및 빅 데이터 처리와 같은 최신 애플리케이션에서 널리 채택되었습니다.
2. MongoDB란?
MongoDB는 C++로 작성된 오픈 소스 플랫폼이며 매우 쉬운 설정 환경을 가지고 있습니다. 크로스 플랫폼, 문서 지향 및 비정형 데이터베이스입니다. MongoDB는 고성능, 고가용성 및 자동 크기 조정 기능을 제공합니다.
NoSQL 데이터베이스이며 쿼리 및 인덱싱에 유연성이 있습니다. MongoDB는 매우 풍부한 쿼리 언어를 사용하여 고성능을 제공합니다.
3. MongoDB 기능
MongoDB의 주요 기능은 다음과 같습니다.
1) 임시 쿼리
MongoDB는 인덱싱을 통해 임시 쿼리를 지원합니다.
2) 스키마 없는 데이터베이스
구조화된 데이터베이스보다 매우 유연합니다. 매핑을 입력할 필요가 없습니다.
3) 문서 지향
데이터베이스와 같은 문서 지향적인 JSON입니다.
4) 인덱싱
모든 문서는 기본 및 보조 인덱스로 색인화할 수 있습니다.
5) 복제
모든 문서에는 하나의 기본 노드가 있으며, 이 노드에는 두 개 이상의 보조 복제가 있습니다.
6) 집계
효율적인 사용성을 위해 MongoDB에는 일괄 처리를 위한 집계 프레임워크가 있습니다.
7) 그리드 파일 시스템
그리드 파일 시스템이 있어 여러 컴퓨터에 파일을 저장하는 데 사용할 수 있습니다.
8). 샤딩
더 큰 데이터 세트의 경우 샤딩이 가장 좋은 기능입니다. 더 큰 데이터를 여러 컴퓨터에 배포합니다.
9) 고성능
인덱스는 더 빠른 쿼리를 지원하여 고성능을 제공합니다.
4. MongoDB 특징
MongoDB는 요즘 몇 초 만에 TB로 생성되는 NoSQL 데이터를 처리하기 때문에 많은 기능을 가지고 있습니다. 따라서 이 많은 양의 데이터를 처리하고 유용한 정보를 얻기 위해 MongoDB를 사용하고 있습니다.
- 쿼리
- 인덱싱
- 부하 불균형
- 여러 서버 처리
- 파일 스토리지 시스템
- 집합체
- 고성능
1) 쿼리
범위 쿼리, 정규식 및 더 많은 유형의 쿼리 검색을 지원합니다. MongoDB는 임시 및 문서 기반 쿼리를 지원합니다.
쿼리에는 사용자 정의 JavaScript 함수가 포함되며 문서에서 특정 종류의 데이터를 반환할 수도 있습니다. 또한 지정된 크기의 무작위 데이터 샘플을 반환할 수도 있습니다.
2) 인덱싱
문서의 필드는 기본 또는 보조로 인덱싱할 수 있습니다. MongoDB는 또한 데이터의 복제를 처리하고 처리할 수 있습니다. 우리가 알고 있듯이 복제본 세트에는 둘 이상의 복사본이 있는 동일한 데이터가 포함되어 있습니다.
각 복제본은 주 또는 보조 인덱스에 자신을 배치하려고 합니다. 일반적으로 데이터에 대한 모든 읽기 및 쓰기 처리는 기본 인덱스를 사용하여 수행되지만 경우에 따라 복제본의 기본 인덱스가 어떤 이유로 실패할 수 있습니다.
따라서 그 때 복제본 세트는 읽기 또는 쓰기 작업에 의한 추가 처리를 위해 복제본의 보조 인덱스를 선택해야하는 선택 프로세스를 거칩니다. 대부분의 경우 보조 항목은 쓰기 작업에 사용되며 읽기 작업에는 거의 사용되지 않습니다.
3) 부하 불균형
샤딩의 도움으로 MongoDB는 수평으로 확장됩니다. 사용자는 컬렉션의 데이터가 배포되는 방식을 결정할 수 있는 공유 키를 선택할 수 있는 기회가 제공됩니다.
여기서 데이터는 샤드 키를 기반으로 범위로 분할된 다음 여러 샤드에 분산됩니다. 여기서 샤드는 하나 이상의 슬레이브와 함께 마스터 역할을 합니다. 이것은 또한 해싱의 도움으로 수행 할 수 있으며, 이로 인해 데이터가 전체적으로 균일하게 배포 될 수 있습니다.
4) 여러 서버 처리
MongoDB는 중복 데이터를 처리하면서 동시에 여러 서버에서 실행할 수 있으며 하드웨어 오류 가능성이 있는 경우에도 데이터 로드의 균형을 맞출 수 있습니다.
5) 파일 스토리지 시스템
로드를 처리하면서 데이터를 저장하고 여러 사이트에서 동일한 데이터의 복제를 체크 아웃하는 이 메커니즘을 GridFS(그리드 파일 시스템)라고 합니다. 이 기능은 MongoDB 드라이버와 함께 추가되고 있습니다.
GridFS는 mongofiles 유틸리티 또는 다른 종류의 플러그인을 사용하여 액세스 할 수 있습니다. GridFS는 파일을 더 작은 부분으로 나누고 각 부분을 별도의 문서로 저장합니다.
6) 집계
집계를 수행하는 세 가지 방법이 있으며 다음과 같습니다.
- 집계 파이프라인
- Map-Reduce 함수
- 단일 목적 집계 방법.
집계 파이프라인에서는 프로세서가 이상적인 상태가 아니며 각 프로세스가 파이프라인의 이전 프로세스 출력과 관련되도록 파이프라이닝을 사용합니다.
Map-reduce는 데이터의 일괄 처리 및 집계 작업을 수행하는 데에도 사용할 수 있습니다. 그러나 이것은 집계 파이프 라인의 도움으로 잘 처리 할 수 있습니다.
7) 고성능
입력/출력 작업은 관계형 데이터베이스에 비해 실행 시간이 덜 걸립니다. 또한 쿼리는 관계형 데이터베이스에 비해 빠른 속도로 실행되고 있습니다.
5. MongoDB의 장단점
MongoDB의 장점은 다음과 같습니다.
- MongoDB를 설치하고 설정하는 것이 매우 쉽습니다.
- 스키마가 없는 데이터베이스입니다.
- 확장이 매우 쉽습니다.
- NoSQL 데이터베이스이므로 모든 종류의 SQL 삽입으로부터 보호됩니다.
- 응용 프로그램 객체를 데이터 객체에 매핑할 필요가 없습니다.
- 파일 저장 시스템으로 사용할 수 있습니다.
- 정규식 및 필드별 검색도 지원합니다.
- 추론 가능한 문서를 사용할 수 있습니다.
MongoDB의 단점은 다음과 같습니다.
- 트랜잭션을 지원하지 않습니다
- MongoDB는 조인을 지원하지 않습니다.
- RAM 제한이 있습니다.
6. MongoDB와 RDBMS 비교
다음은 MongoDB와 RDBMS의 차이점입니다.
- RDBMS는 관계형 데이터베이스를 가지고 있지만 MongoDB는 비관계형 데이터베이스를 가지고 있습니다.
- RDBMS에서는 테이블을 디자인해야하며 코딩을 시작할 수 있지만 MongoDB에서는 직접 코딩을 시작할 수 있습니다.
- RDBMS는 SQL 언어를 지원하고 MongoDB는 SQL 및 JSON 쿼리 언어를 지원합니다.
- RDBMS는 테이블 기반인 반면 MongoDB는 키-값 기반입니다.
- MongoDB는 문서 기반인 반면 RDBMS는 행 기반입니다.
- RDBMS는 열 기반인 반면 MongoDB는 필드 기반입니다.
- RDBMS는 설정하기가 쉽지 않지만 MongoDB는 비교적 쉽게 설정할 수 있습니다.
- MongoDB는 수평으로 확장 가능한 반면 RDBMS는 수직으로 확장 가능합니다.
- RDBMS는 MongoDB의 비정형 데이터에 비해 데이터를 매우 느리게 처리합니다.
- RDBMS는 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 강조합니다. 반면에 MongoDB는 CAP(Consistency, Availability, Partition tolerance) 정리를 강조합니다.
'프로그래밍 > AI' 카테고리의 다른 글
몽고DB의 주요 기능 설명 (0) | 2024.10.10 |
---|---|
몽고DB 설치 및 환경설정 방법 (0) | 2024.10.10 |
텐서플로의 이해 (TensorFlow) (0) | 2024.10.09 |
머신러닝을 사용한 이미지 분할하는 방법 (0) | 2024.10.08 |
딥러닝과 머신러닝의 차이점 (0) | 2024.10.08 |