[MongoDB] MongoDB 개요
NoSQL
MongoDB를 배우기 앞서 RDBMS와의 차이점을 확실히 알아두는 것이 혼선이 적을 것같아 기본적인 개념부터 찾아보았다.
NoSQL의 개념
- Not Only SQL 혹은 Non-Relational Operational DataBase의 약자
- 비 관계형 데이터 베이스
- 정형화 된 관계형 데이터 모델 방식과 달리 비정형 데이터를 저장하고 사용
- 스키마 없이 사용하거나 느슨한 스키마를 제공함
이런 구조가 왜 필요한가?
- RDBMS에 비해서 낮은 비용으로 데이터의 분산 처리와 병렬 처리가 가능
- 비정형 데이터 구조를 사용하기에 설계 비용이 감소
- 가변적인 구조로 데이터 저장이 가능하고 데이터 모델의 유연한 변화가 가능
- 빅데이터나 분산 시스템 환경에서 대용량의 데이터를 처리하는데에 적합
다만, 찾아보고 간단한 개념을 익혀본 결과
많은 인덱스를 사용하거나, 복잡한 join 구조를 사용해야하는 결과,
또 일관성이 필요한 경우에는 RDBMS를 사용하는 것이 훨씬 효율적이었다.
또 NoSQL은 ACID 트랜잭션을 지원하지 않는다고 한다 (스키마 디자인을 적절히 제공하면 원자화는 가능)
무엇이 더 좋은 기술인가를 판별하기보다는 각자의 개발 상황과 목적에 따라 선별해서 사용하는 것이 좋은것 같다.
NoSQL의 종류
NoSQL은 한가지 종류의 형식이 아니며, RDBMS vs NoSQL 이분법적으로만 이야기 할 수 없다.
정확한 예시는 아니겠지만 검정색vs흰색 같은 개념이 아니라 검정색vs검정색이아닌색 같다고 이해했다.
따라 NoSQL을 단일화해서 이해하면 안되며, 다양한 방식이 존재함을 인지해야 한다.
- Key-Value Database
- 대표적으로 Redis 등
- 대표적으로 Redis 등
- Document Database
- 대표적으로 MongoDB 등
- 대표적으로 MongoDB 등
- Column Family Database
- 대표적으로 Hbase 등
- 대표적으로 Hbase 등
- Graph Database
- 대표적으로 Sones 등
- 대표적으로 Sones 등
네가지로 분류되는데 각각의 분류의 특성은 해당 유튜브 영상 을 참고해익혔다.
현재 포스팅에서는 MongoDB을 설명하는 것이 중점이니 이외 타입들의 설명은 생략하려한다.
- Document Database (ex. MongoDB)
- Key-Value Database 처럼 데이터가 저장 될때는 Key-Value 타입을 사용
- 차이점은 저장시에는 문서(Document) 타입으로 저장 됨
- 스키마를 따로 정의하지 않으며 document가 곧 스키마
- 문서별 다른 필드를 가질 수 있기에 개발자는 입력을 할때 컬럼,필드,필드 속성 관리를 해야함.
- Key-Value Database 처럼 데이터가 저장 될때는 Key-Value 타입을 사용
정리
따라 실습 및 데이터 파악을 하기전에 기초적으로 알아야 하는 부분은
- 정형화 된 테이블 구조 형식을 버리고 접근해야 할 것
- 따라서 기존 기능 구현시 테이블간 참조나 join 등을 기저에 깔고 진행했던 방식을 초기화하고 새로 이해를 시작해야 함
- 단순 기능 이해보다는 어떻게
테이블컬렉션을 설계하고 도큐먼트를 삽입하는 것이 좋은지를 주요 시점으로 두고 공부할 것
이후는 MongoDB Atlas를 가입하고 더미 데이터들로 형식을 파악해볼것이다.