이번 시간엔 데이터베이스 종류에 대해 알아보겠다

일반적으론 관계형 데이터베이스(RDB)를 가장 많이 쓰는데 요새는 NoSql이라는 것도 많이 쓰인다.

 

학부 수업시간에는 RDB에 대해서만 배웠었는데

IT 직무에 있으면서 사실 데이터베이스를 모르면 전혀 업무를 할 수 없는 수준이라서 

반드시 알아야 하는 부분이다.

 

나는 RDB에서는 익숙하지만 NoSql에 대해서는 생소한 부분이 있기 때문에 두가지를 

비교해서 이해해보도록 하겠다.

 

 


1. 관계형 데이터베이스 (Relational Database)

- 가장 많이 사용

- 행(Column)과 열(Row)로 표현되는 테이블간의 관계를 나타냄

- 엄격한 스키마 (=structure)

- SQL 질의문을 통해 요청 처리

- Mysql , Oracle, PostgreSql

 

 

2. NoSQL ( Not Only SQL)

- 스키마, 관계없음

- RDB의 확장성 이슈 해결하기 위해 나옴

- MongoDB,hBase

- 보통 key-value 형태

 

가) Document 방식

- Json,XML 과같은 collection 데이터 모델 구조 사용

- MongoDB , CouchDB

 

나) Key-Value 방식

- key-value 의 데이터가 쌍으로 저장

- Redis , Memchached : im-memory DB

 

다) Big Table DB

- key-value 형태에서 발전, column family 데이터 모델 구조사용

- HBase, Cassandra, Hypertable, ScyllaDB

 

 

 

3. 비교

  RDB NoSql
특징

Scale-up

(성능을 높이려면 하드웨어를 고성능으로 교체)

 

중복 불가

Scale-out

(분산컴퓨팅으로 DB성능 높일수 있다)

 

중복 허용

장점

명확하게 정의된 스키마

데이터 무결성 보장

스키마가 없어서 유연, 언제든지 데이터 저장 새 필드 추가 가능

데이터는 어플리케이션이 필요로 하는 형식으로 저장, 따라서 속도가 빠르다.

 

 

단점

유연X, 데이터스키마 항상 사전에 정의 되어야한다.

관계가 있으므로 JOIN문이 많은 복잡한 쿼리

수평적 확장(scale-out)어렵다.

유연성때문에 데이터구조 결정을 하지못한다.

데이터가 여러 컬렉션에 중복되어 있어서 수정을 해야할 경우 모든 컬렌션에서 수정해야한다.

 

 

언제 사용?

관계를 맺고있는 데이터가 수정이 자주 되는 경우 

스키마가 변경 가능성이 적을 때

정확한 데이터 구조를 알 수 없거나, 변경/확장이 될 수 있는 경우

 

Read는 자주하지만 update는 자주 하지 않는 경우

 

막대한 양의 데이터를 다루는 경우(scale-out이 필요한 경우)

 

4. 결론

다양한 경우가 있겠지만,

나라면 RDB와 NoSql을 적당히 섞어서 쓸거 같다.

 

우선 RDB를 사용하되,

특히 고정적인 스키마가 필요한 경우, update가 자주 일어나는 경우에는 RDB를 사용하고

 

빅데이터나, 데이터 구조가 일관적이지 않은 부분은 NoSql을 사용할거 같다

 

그러는 것이 수정할때도, 데이터를 가져올 때의 성능도 좋을 것으로 보인다.

 

 

 


참고 블로그

https://honeyteacs.tistory.com/19

https://siyoon210.tistory.com/130

https://toma0912.tistory.com/83

'DEVELOP > DB' 카테고리의 다른 글

[MariaDB] general log 설정하기  (0) 2020.05.25
DB (mysql) 설정 변경  (0) 2020.03.13
NewSql 이란? All in one DBMS  (0) 2019.12.16
NoSql DB 종류  (0) 2019.12.13
Liquibase 사용법 및 개념  (0) 2019.06.12

+ Recent posts