mongoDB / 시작 전 배경지식

길고 꾸준하게·2022년 5월 20일
0
post-thumbnail

1 - 들어가기 전에

먼저 알고가야 할 부분이 많다.

DBMS

Database Management System 말그대로.

RDBMS

Relational(관계형) + DBMS

  • 고정된 행 + 열로 구성된 테이블에 데이터를 저장한다.
  • 이때 사전에 테이블의 구조를 정의하기때문에 알맞은 형태의 데이터를 넣어야 하고
  • 이때문에 데이터를 정확히 입력했다면 데이터 사용시 매우 수월하다.
  • 데이터간 '관계'가 있다. 그래서 여러 테이블에 데이터가 분산될수있다.
  • 대표적인 RDBMS : MySQL ORacle SQLite MariaDB 등..

데이터간 관계가 있어 분산될수 있기때문에 디바이스를 추가하는 '수평'확장을 하게되면 그만큼 데이터에 대한 관계를 찾을때 애를먹는다는거다(디바이스가 늘어났으니 찾아야할 장소가 많아진거아녀!)

그래서 일반적으로 확장시에 디바이스의 물리적인 성능을 높이는 수직확장을 한다고 한다


이러한 RDBMS를 위해 만들어진 언어가 SQL이고.
SQL을 이용해서 관계형데이터베이스를 조작한다. 그렇기때문에 RDBMS를 SQL라고 말하는 것도 어느정도는 일리있다

부트캠프때 MySQL을 이용해 테이블 조인하고 프론트에 뿌려주는 작업을 했어서 까먹은 부분이 많지만 나름 친숙하다..

2 - 비관계형 데이터베이스

비관계형이기 때문에 스키마,관계가 없다. => 엄청 유연하겠지?
하지만 각각의 장/단점이 있으니 상황에 맞게 써야할거다.

DB에는 위에 말한 관계형DB 말고도 많은 종류가 있을거다.
비관계형이면 관계형DB를 제외한 모두를 말할것이고.
관계형 DB에서만 SQL을 사용하기때문에. 비관계형 DB는 NoSQL일 것이다.

관계형을 제외한 모든 데이터베이스가 NoSQL이면 종류가 많겠네?
저장되는 데이터의 구조에 따라 나눌수 있다.

  • Key:Value타입
  • 문서형(Document)
  • Wide-Column-Store
  • 그래프(Graph)

3 - 근데.. 왜갑자기 NoSQL이 인기?

사실 NoSQL은 스키마가 없기때문에 데이터의 정확한 처리가 필수적인 기업에서는 관계형DB를 썼고
SQL이라는 언어의 편의성 등 여러 이유때문에 NoSQL은 출시 되고도 잘 쓰이지 않았다고 한다.

하지만 점차 인터넷이 활성화되고 소셜네트워크(SNS) 서비스 등이 등장하면서,
정형데이터가 아닌 비정형데이터를 보다 쉽게 담아서 저장/처리할 수 있는 구조를 가진 DB들이 관심을 받게 되었고, NoSQL이 각광받았다고 한다. 이런 배경때문에 Modern web-scale db라고 불리기도 한단다.

오..

근데 내가 배운 MongoDB는 NoSQL중 문서형 DB의 대표격이니까 문서형만 알아보자 ㅎㅎ

4 - 문서형(Document) 데이터베이스

  • 문서형. 데이터를 테이블이 아닌 문서처럼 저장하는 DB다.
  • 각각의 문서(Document)는 하나의 데이터를 가지고 있다.(데이터 단위라는 소리같은데?)
  • 이러한 문서가 모여서 컬렉션(Collection)이 되고.
  • 컬렉션이 모여서 데이터베이스가 된다

출처

https://www.samsungsds.com/kr/insights/1232564_4627.html
https://hongong.hanbit.co.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-databasedb-dbms-sql%EC%9D%98-%EA%B0%9C%EB%85%90/
https://m.blog.naver.com/sehyunfa/221653357171


이정도를 숙지했으면 이제 MongoDB를 쥐똥만큼이라도 이해하면서 쓸수 있을 것 같다.

profile
작은 나의 개발 일기장

0개의 댓글