NoSQL

MongoDB를 배우기 앞서 RDBMS와의 차이점을 확실히 알아두는 것이 혼선이 적을 것같아 기본적인 개념부터 찾아보았다.

NoSQL의 개념

  • Not Only SQL 혹은 Non-Relational Operational DataBase의 약자
  • 비 관계형 데이터 베이스
  • 정형화 된 관계형 데이터 모델 방식과 달리 비정형 데이터를 저장하고 사용
  • 스키마 없이 사용하거나 느슨한 스키마를 제공함

이런 구조가 왜 필요한가?

  1. RDBMS에 비해서 낮은 비용으로 데이터의 분산 처리와 병렬 처리가 가능
  2. 비정형 데이터 구조를 사용하기에 설계 비용이 감소
  3. 가변적인 구조로 데이터 저장이 가능하고 데이터 모델의 유연한 변화가 가능
  4. 빅데이터나 분산 시스템 환경에서 대용량의 데이터를 처리하는데에 적합

다만, 찾아보고 간단한 개념을 익혀본 결과
많은 인덱스를 사용하거나, 복잡한 join 구조를 사용해야하는 결과,
또 일관성이 필요한 경우에는 RDBMS를 사용하는 것이 훨씬 효율적이었다.
또 NoSQL은 ACID 트랜잭션을 지원하지 않는다고 한다 (스키마 디자인을 적절히 제공하면 원자화는 가능)
무엇이 더 좋은 기술인가를 판별하기보다는 각자의 개발 상황과 목적에 따라 선별해서 사용하는 것이 좋은것 같다.

NoSQL의 종류

NoSQL은 한가지 종류의 형식이 아니며, RDBMS vs NoSQL 이분법적으로만 이야기 할 수 없다.
정확한 예시는 아니겠지만 검정색vs흰색 같은 개념이 아니라 검정색vs검정색이아닌색 같다고 이해했다.
따라 NoSQL을 단일화해서 이해하면 안되며, 다양한 방식이 존재함을 인지해야 한다.

  1. Key-Value Database
    • 대표적으로 Redis 등
  2. Document Database
    • 대표적으로 MongoDB 등
  3. Column Family Database
    • 대표적으로 Hbase 등
  4. Graph Database
    • 대표적으로 Sones 등

네가지로 분류되는데 각각의 분류의 특성은 해당 유튜브 영상 을 참고해익혔다.
현재 포스팅에서는 MongoDB을 설명하는 것이 중점이니 이외 타입들의 설명은 생략하려한다.

  • Document Database (ex. MongoDB)
    • Key-Value Database 처럼 데이터가 저장 될때는 Key-Value 타입을 사용
    • 차이점은 저장시에는 문서(Document) 타입으로 저장 됨
    • 스키마를 따로 정의하지 않으며 document가 곧 스키마
    • 문서별 다른 필드를 가질 수 있기에 개발자는 입력을 할때 컬럼,필드,필드 속성 관리를 해야함.

정리

따라 실습 및 데이터 파악을 하기전에 기초적으로 알아야 하는 부분은

  1. 정형화 된 테이블 구조 형식을 버리고 접근해야 할 것
  2. 따라서 기존 기능 구현시 테이블간 참조나 join 등을 기저에 깔고 진행했던 방식을 초기화하고 새로 이해를 시작해야 함
  3. 단순 기능 이해보다는 어떻게 테이블컬렉션을 설계하고 도큐먼트를 삽입하는 것이 좋은지를 주요 시점으로 두고 공부할 것

이후는 MongoDB Atlas를 가입하고 더미 데이터들로 형식을 파악해볼것이다.

Updated: