티스토리 뷰

흥미/Node.js+MongoDB

#14 NoSQL DB 짧게 정리

RadderNepa 2023. 4. 21. 06:13

- 웹 서비스 개발 시에 이용하는 DB는 대부분 (관계형 DB와 NoSQL DB) 중 하나로 분류된다.
- 관계형 DB의 특징은 아래와 같다.

1. 거의 모든 곳에 사용할 수 있어 범용적
2. 구조화된 데이터의 CRUD에 좋다.(SQL을 이용해 데이터 CRUD)
3. 컬럼의 스키마를 미리 정의하기 때문에 관리가 쉽다.
4. 트랜잭션, 롤백 등의 기능을 이용해 데이터의 무결성을 보존하기 쉽기에 금융, 거래 서비스 등에서는 필수이다.

- 이번 글에서는 NoSQL DB에 대해 간단하게 알아볼 것이다.

1. NoSQL이란?
- SQL 언어 없이도 사용할 수 있는 DB이다.
- (대부분) table에 국한되지 않아 자유로운 형식으로 데이터를 쉽게 분산 저장할 수 있다.

- 물론 MongoDB에서도 Relational Database처럼 관계를 표현해 데이터를 저장할 수 있다.

출처 - https://blog.toktokhan.dev/nosql%EC%9D%80-db%EA%B0%80-%EC%97%86%EB%8A%94%EA%B1%B4%EA%B0%80%EC%9A%94-4b76d7bd088e

2. 종류(여러가지 종류가 있다.)

1). Key-value 모델
- Object, JSON 자료형 형식으로 데이터를 쉽게 저장, 출력 등이 가능하다.(가장 심플)


2). Document 모델
- table 대신 'Collection'이라는 문서 기반으로 데이터를 분류하고 저장한다.(Collection이 table보다 훨씬 유연하다.)
- MongoDB도 Key-value, Document 모델 저장 방식을 차용하고 있다.

3). Graph 모델
- 데이터를 노드 형태로 저장하고 노드간의 흐름 또는 관계를 저장할 수 있다. 

4). Wide-column 모델
- 한 행마다 각각 다른 수, 다른 종류의 열을 가질 수 있다.(스키마가 자유롭다.) 

 

3. 특징

1). Scaling이 쉽다.
- 짧은 시간(찰나의 순간)에 대량의 데이터를 저장해야할 때
- 기존 관계형 데이터베이스는 확장이 매우 어려우며 scale up 이라는 방법으로 서버의 성능을 키워야한다.
- 그러나 대부분의 NoSQL 데이터베이스는 scale out 이라는 방법으로 데이터의 분산저장을 기본적으로 지원한다.
- 따라서 대량의 데이터를 빠르게 입출력해야한다면 NoSQL이 좋다.
cf) 관계형 데이터베이스도 셋팅만 잘 하면 분산저장이 잘 되기는 한다.

2). 다루기가 쉽다.
- SQL 언어를 배우지 않아도 데이터를 쉽게 입출력할 수 있다.(서버에서 쓰던 프로그래밍 언어를 이용해 DB를 다룰 수 있다는 장점)
- js의 {object} 자료형 다루듯이 데이터를 입출력할 수 있으니 편리하다.

- RDB와는 다르게 데이터를 array, object 형태 그대로 DB에 집어넣을 수 있다.
 
3). (대부분) 스키마 정의 없이도 쉽게 쓸 수 있다.
- 관계형 데이터베이스는 각 컬럼마다 데이터 타입을 지정해줘야한다.
- 이것이 무조건적인 장점은 아니므로 MongoDB에서는 스키마를 미리 정의하기 위한 Mongoose 같은 라이브러리를 추가해서 사용하기도 한다.
 
4). NoSQL 데이터베이스는 기본적으로 SQL에서의 JOIN 연산을 적용하는게 어렵다. 
- 따라서 서버 단에서 JOIN 연산을 쉽게 처리해주는 라이브러리를 이용해야한다.


- (관계형 DB와 NoSQL DB)가 여전히 공존하는 이유는 각각의 명확한 장점 때문이다.
- 정규화된 데이터, 안정성 등이 중요하면 관계형 데이터베이스가 적합하다.(금융서비스, 은행 전산시스템 등)
- 일초에 수백만개의 데이터 입출력 요청이 들어오는 SNS 서비스, 서비스 변경이 빈번해 쉽고 유연한 데이터 운영이 중요하면 NoSQL이 적합하다.

cf) Facebook은 대량의 데이터 저장을 위해 HBase DB를 이용해 분산저장한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함