iamkanguk.dev

[DB] RDBMS와 NoSQL 본문

CS지식/DB

[DB] RDBMS와 NoSQL

iamkanguk 2023. 11. 24. 22:06

오늘은 그냥 가벼운 마음으로 한번 블로그에 써놔야겠다 했었던 RDBMS와 NoSQL은 각각 무엇이고, 장단점은 무엇이 있을지 한번 쭈욱 정리해보려고 한다. 약간 이제... 면접 준비용? 이라고 할 수 있겠다 ㅎㅎ!

 

DB와 SQL 그리고 DBMS

- DB는 컴퓨터 시스템에 전자방식으로 저장되어 있는 구조화된 정보 또는 데이터의 체계적인 집합을 말한다.

- SQL은 Structed Query Language의 약자로 관계형 데이터베이스 관리시스템인 RDBMS의 관리를 위해 제작된 언어이고, 자료의 검색과 재조합 그리고 스키마 생성등 데이터베이스 객체의 접근을 조정하고 관리하기 위해 나온 개념이다.

- DBMS는 Database Management System의 약자로 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어를 말한다.

 

RDBMS는 뭐야?

- Relational Database Management System의 약자로 관계형 데이터베이스 관리 시스템을 의미한다.

- RDB를 관리하는 시스템이다. 참고로 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스를 의미한다.

- RDBMS에서는 테이블끼리 관계를 맺을 수 있는데 이러한 관계를 나타내기 위해 사용하는 키가 바로 외래키(foreign key)이다. 즉, 테이블간의 관계에서 외래키를 활용한 Join이 가능하다는 것이 RDBMS의 가장 큰 특징이다.

- ACID (Atomicity, Consistency, Isolation, Durability) 원칙을 기본으로 구성된 방식이다. (ACID는 나중에 트랜잭션에 대해 자세히 정리할 때 추가하겠다!)

 

그러면 NoSQL은 뭐야?

- Not Only SQL의 약자로 RDB 형태의 관계형 데이터베이스가 아닌 테이블 간 상호관계가 없다는 것이 특징이다. 따라서 관계가 없기 때문에 다른 테이블과 Join도 사용할 수 없다.

- 다시 말해, 관계형 데이터베이스의 형태가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 그래서 RDBMS와는 달라 테이블 간 관계를 정의하지 않는다.

- 빅데이터가 등장하면서 데이터와 트래픽이 빠르게 증가하면서 RDBMS의 단점인 성능을 향상시키기 위해 고안된 기술이다. 

- RDBMS의 성능을 보완하기 위해서는 Scale-Up 기법을 사용해야 한다. 하지만 이는 비용이 많이 발생한다. 따라서 데이터의 일관성은 포기하고 비용을 고려하면서 여러대의 데이터에 분산하여 저장하는 Scale-Out 기법을 목표로 한다.

 

NoSQL에는 여러가지 타입이 있다. 대표적으로 Key-Value Database, Document Database, Wide Column Database, Graph Database가 있다.

 

우리가 자주 접하는 Redis나 Amazon Dynamo DBKey-Value Database에 속하고, MongoDB와 CouthDBDocument Database에 속한다. 이 정도로만 숙지하고 있어도 될 것 같다. 

 

각 타입에 대해 더 자세하게 알아보고 싶다면 아래 필자가 참고한 링크에 들어가서 확인하면 좋을 것 같다!

 

RDBMS와 NoSQL의 장단점

RDBMS

장점

- 정해진 Schema에 따라 데이터를 저장해야 하기 때문에 명확한 데이터 구조를 보장하고 있다.

- 관계는 각 데이터를 중복없이 한 번만 저장할 수 있다.

 

단점

- 테이블 끼리 관계를 맺고 있기 때문에 시스템이 확장하게 된다면 Join문이 많은 복잡한 쿼리가 만들어질 수 있으며 이는 성능저하를 일으킬 수 있다.

- 성능 향상을 위해서는 서버의 성능을 향상시켜야 하는 Scale-Up만 지원한다. 이로 인해서 비용이 급격하게 늘어날 수 있다.

- Schema로 인해서 데이터가 유연하지 못하는데 혹여나 나중에 Schema가 변경되게 되면 골치아프다.

 

NoSQL

장점

- Schema가 없기 때문에 데이터가 유연하고 자유로운 구조를 가질 수 있다. 따라서 저장된 데이터를 쉽게 조정할 수 있고 언제나 새로운 필드를 추가할 수 있다.

- 데이터 분산이 용이하고 성능 향상을 위한 Scale-Up 뿐만 아니라 Scale-Out도 가능하다.

 

단점

- 데이터의 중복이 발생할 수 있고 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 해야한다는 단점이 있다.

- Schema라는 것이 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않고 데이터 구조 결정이 어려울 수 있다.

 

마지막! RDBMS와 NoSQL은 각각 언제 사용하는게 좋을까?

필자는 프로젝트를 이제 시작할 때 항상 고민한다. 어떤 걸 사용해야 할까?

사실 뭐 정답은 없는 것 같다? 아닌가? 사실 모르겠다. 그냥 느낌적으로는 어떤 걸 선택해도 구현은 할 수 있을 것이라고 생각한다.

 

하지만 추구하는 방향(이상향)은 있다고 생각한다. 아리까리 했던 기준을 이제 정리해보자.

 

RDBMS는 데이터 구조가 명확하고 변경될 여지가 없으며 명확한 스키마가 중요하다면 사용하는 것이 좋다. 그리고, 중복된 데이터가 없어서 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하다.

 

반면 NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경 및 확장이 될 수 있는 여지가 있다면 선택하는 것이 좋다. 하지만, 데이터의 중복이 발생할 수 있고 중복된 데이터가 변경되면 모든 컬렉션에서 수정해야 하기 때문에 신중해야 한다. 때문에 UPDATE가 자주 실행되는 애플리케이션은 좋지 않을 것 같고, Database를 Scale-Out 해야되는 시스템에 적합할 것 같다.

 

참고로 필자는 지금까지 RDBMS로만 프로젝트를 해봤는데.. 물론 Redis로 NoSQL을 접한 적도 있다..ㅎ

추후 분명히 더욱 깊이 NoSQL을 접할 일이 있을 것 같은?

 

읽어주셔서 감사!

 

참고 자료

- https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

[Database] RDBMS와 NoSQL의 차이점

이번 포스팅에서는 RDBMS와 NoSQL의 차이점을 알아보려고 합니다. 그전에 RDBMS는 무엇이고 왜 사용하며 NoSQL은 무엇이고 왜 사용을 할까요? 그리고 그 두 DB의 차이점은 무엇이며 서로에 대한 장단점

khj93.tistory.com

- https://superohinsung.tistory.com/110

 

[DataBase] RDBMS와 NoSQL의 차이점

DB 컴퓨터 시스템에 전자 방식으로 저장되어 있는 구조화된 정보 또는 데이터의 체계적인 집합을 말한다. SQL Structed Query Language 관계형 데이터베이스 관리시스템(RDBMS)의 관리를 위해 제작된 언어

superohinsung.tistory.com