RDB(Relational Database) 란?
관계형 데이터베이스(RDB)는 테이블, 행, 열의 정보를 구조화하는 방식의 데이터베이스를 말한다.
RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있기 때문에 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다.
RDB의 장점
- 데이터 구조(스키마)가 명확하게 정의되어 있음
- 데이터 분류, 정렬, 탐색 속도가 빠르다
- 데이터의 무결성을 보장한다
- 정형화되어 있는 데이터에 접근할 때 효율적이다.
RDB의 단점
- 데이터 구조(스키마)를 변경 및 수정하기 어렵다
- 시스템이 커질수록 JOIN이 많은 복잡한 쿼리를 사용할 가능성이 높다
- 수평적 확장(Scale-out)이 용이하지 않음
NoSQL 이란?
NoSQL은 not only SQL, non-SQL으로도 불리며, 관계형 데이터베이스의 전통적인 구조 밖에서 데이터 저장 및 쿼리를 가능하게 하는 데이터베이스 설계 접근법이다.
NoSQL은 전형적인 테이블 구조 대신, JSON 문서와 같은 하나의 데이터 구조 안에 데이터를 보관한다. 때문에 스키마가 필요하지 않으며 일반적으로 비정형의 대규모 데이터 셋을 관리할 수 있는 확장성을 제공한다.
NoSQL의 장점
- RDB와 달리 스키마가 없어 유연하고 자유로운 데이터구조를 가진다
- 데이터구조를 수정하고 추가하기 쉽다
- 수평적 확장이 가능하여 대량의 데이터를 적은 비용으로 처리할 수 있다
- 높은 확장성과 가용성을 가지고 있다.
NoSQL의 단점
- 데이터의 중복이 발생할 수 있기때문에 중복된 데이터 변경 시 모든 컬렉션에서 수정해야 한다
- 스키마가 존재하지 않기 때문에 데이터 구조를 결정하는 작업을 해야 한다.
- 데이터 변경 작업이 느리다
- 데이터의 무결성을 보장하지 않는다
RDB vs NoSQL 선택 기준
관계형(RDB)와 비관계형(NoSQL)의 주요 차이점은 데이터를 저장하고 구성하는 방법에 있습니다.
데이터가 정형화 되어 있고, 신뢰성 있는 데이터를 저장해야 한다면 ACID 특성이 보장되는 RDB를 선택하는 것이 좋고, 데이터의 구조가 자주 변경되거나 추가될 여지가 있으며 빠른 속도, 확장성이 필요하다면 NoSQL 데이터베이스를 선택하는 것이 좋다.
고려 기준1 : 트랜잭션의 ACID 특징
RDB의 경우 트랜잭션을 지원하고, NoSQL의 경우 트랜잭션이 완벽하게 보장되지 않을 수 있다.
은행 계좌에서 돈을 이체하는 작업 등 트랜잭션이 완벽하게 지켜져야 하는 상황에서는 RDB를 사용해야 한다.
고려 기준2 : 수직 또는 수평 확장
데이터 전략이 수직 확장(scale up)을 기초로 하는 경우 RDB가 바람직하다.
RDB의 경우 수평 확장(scale out)을 하기 위해 샤딩과 같은 복잡한 방법이 적용되어야 하기 때문에 수평 확장을 기초로 하는 경우 NoSQL을 선택하는 것이 좋다.
고려 기준3 : 속도
트랜잭션의 ACID 성질을 준수하는 것보다 속도가 더 중요한 경우 NoSQL을 선택하는 것이 좋다.
센서 데이터와 같은 실시간 데이터의 경우, 속도를 위해서 무결성이 일부 손상되는 것이 용인되는 경우 NoSQL이 적절한 선택이 될 수 있다.
마치며
RDB와 NoSQL에 대한 정의와 장단점을 간단하게 살펴보았는데, 하나의 애플리케이션을 개발할 때 꼭 한 종류의 데이터베이스를 사용하기보다 상황에 맞는 여러 데이터베이스를 조합하여 사용하는 것이 중요할 것 같다.
사용자의 정보를 저장하기 위한 데이터베이스로는 RDB를 사용하고 로그인된 사용자의 정보를 저장하는 것은 NoSQL을 사용하는 등 각 데이터베이스의 특징을 극대화하는 방향으로 사용하는 것을 고려해야 할 것 같다.
'CS > 데이터베이스' 카테고리의 다른 글
데이터베이스 키(Key)의 종류 (1) | 2023.12.22 |
---|